Nginx项目实战优化

来源:互联网 发布:知其心然后能救其失也 编辑:程序博客网 时间:2024/06/05 00:08
(1)控制缓冲区溢出攻击
编辑nginx.conf,为所有客户端设置缓冲区的大小限制。
# vi /usr/local/nginx/conf/nginx.conf
编辑和设置所有客户端缓冲区的大小限制如下:
## Start: Size Limits & Buffer Overflows ##
client_body_buffer_size  1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
## END: Size Limits & Buffer Overflows ##


(2)控制并发连接
使用NginxHttpLimitZone模块来限制指定的会话或者一个IP地址的特殊情况下的并发连接。编辑nginx.conf:
limit_zone slimits $binary_remote_addr 5m;
limit_conn slimits 5;
上面表示限制每个远程IP地址的客户端同时打开连接不能超过5个。


(3)限制可用的请求方法
GET和POST是互联网上最常用的方法。 Web服务器的方法被定义在RFC 2616。如果Web服务器不要求启用所有可用的方法,它们应该被禁用。下面的指令将过滤只允许GET,HEAD和POST方法:
## Only allow these request methods ##
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
## Do not accept DELETE, SEARCH and other methods ##


(4)拒绝一些User-Agents
你可以很容易地阻止User-Agents,如扫描器,机器人以及滥用你服务器的垃圾邮件发送者。
## Block download agents ##
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
}
##
阻止Soso和有道的机器人:
## Block some robots ##
if ($http_user_agent ~* Sosospider|YodaoBot) {
return 403;
}


(5)防止图片盗链
图片或HTML盗链的意思是有人直接用你网站的图片地址来显示在他的网站上。最终的结果,你需要支付额外的宽带费用。需要封锁,并阻止盗链行为。
# Stop deep linking or hot linking
location /images/ {
valid_referers none blocked www.example.com example.com;
if ($invalid_referer) {
return   403;
}
}


(6)在防火墙级限制每个IP的连接数
网络服务器必须监视连接和每秒连接限制。PF和Iptales都能够在进入你的Nginx服务器之前阻止最终用户的访问。
Linux Iptables:限制每次Nginx连接数
下面的例子会阻止来自一个IP的60秒钟内超过15个连接端口80的连接数。
# /sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –set
# sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –update –seconds 60  –hitcount 15 -j DROP
service iptables save
我设置同一个IP 60秒内只允许10个Nginx链接。


(7)限制Nginx连接传出
黑客会使用工具如wget下载你服务器本地的文件。使用Iptables从nginx用户来阻止传出连接。ipt_owner模块试图匹配本地产生的数据包的创建者。下面的例子中只允许user用户在外面使用80连接。
# /sbin/iptables -A OUTPUT -o eth0 -m owner –uid-owner vivek -p tcp –dport 80 -m state –state NEW,ESTABLISHED  -j ACCEPT
原创粉丝点击