freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试基础知识:nginx安全配置
2022-04-07 15:31:33
所属地 湖南省

nginx安全配置

隐藏版本号

`http {   server_tokens off;}`

开启HTTPS

server {    
listen 443;  
server_name xxx.com;  
ssl on;  
ssl_certificate /etc/nginx/certs/xxx.com.pem;    
ssl_certificate_key /etc/nginx/certs/xx.com.key;  
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}

ssl on:开启https

ssl_certificate:配置nginx ssl证书的路径

ssl_certificate_key:配置nginx ssl证书key的路径

ssl_protocols:指定客户端建立连接时使用的ssl协议版本,如果不需要兼容TSLv1,直接去掉即可

ssl_ciphers:指定客户端连接时所使用的加密算法,你可以在这里配置更高安全的算法

黑白名单配置

白名单配置

`location /admin/ {   allow 192.168.1.0/24;   deny all;}`

上边表示只允许192.168.1.0/24网段的主机访问,拒绝其他所有。

黑名单配置

`location /uploads/ {   deny 192.168.1.0/24;   allow all;}`
`set $allow false;if ($http_x_forwarded_for = "211.144.204.2") { set $allow true; }if ($http_x_forwarded_for ~ "108.2.66.[89]") { set $allow true; }if ($allow = false) { return 404; }`

账号认证

server {  
location / {  
auth_basic "please input user&passwd";  
auth_basic_user_file key/auth.key;  
}
}

限制请求方法

server 块配置

if ($request_method !~ ^(GET|POST)$ ) {  
return 405;
}

或者

location / {
limit_except GET HEAD POST { deny all; }
}

拒绝User-Agent

if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl) {    
return 444;
}

图片防盗链

location /images/ {  
valid_referers none blocked www.xx.com xx.com;  
if ($invalid_referer) {  
return 403;  
}
}

valid_referers:验证referer,其中none允许referer为空,blocked允许不带协议的请求,除了以上两类外仅允许referer为 www.xx.com或xx.com时访问images下的图片资源,否则返回403也可以给不符合referer规则的请求重定向到一个默认的图片

location /images/ {  
valid_referers blocked www.xx.com xx.com  
if ($invalid_referer) {  
rewrite ^/images/.*.(gif|jpg|jpeg|png)$ /static/qrcode.jpg last;
}
}

控制并发连接数

http {
limit_conn_zone $binary_remote_addr zone=ops:10m;

server {
listen 80;
server_name xx.com;

root /home/project/webapp;
index index.html;
location / {
limit_conn ops 10;
}
access_log /var/log/nginx/nginx_access.log main;
}
}
limit_conn_zone

:设定保存各个键(例如$binary_remote_addr)状态的共享内存空间的参数,zone=空间名字:大小大小的计算与变量有关例如:$binary_remote_addr变量的大小对于记录IPV4地址是固定的4 bytes,而记录IPV6地址时固定的16 bytes,存储状态在32位平台中占用32或者64 bytes,在64位平台中占用64 bytes。1m的共享内存空间可以保存大约3.2万个32位的状态,1.6万个64位的状态

limit_conn

:指定一块已经设定的共享内存空间(例如name为ops的空间),以及每个给定键值的最大连接数上边的例子表示同一IP同一时间只允许10个连接

缓冲区溢出攻击

client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;

Header头设置

通过以下设置可有效防止XSS攻击

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";

禁止访问 htaccess

location ~/\.ht {
deny all;
}

禁止访问多个目录

location ~ ^/(picture|move)/ {
deny all;
break;
}

禁止访问 /data 开头的文件

location ~ ^/data {
deny all;
}

禁止访问单个目录

location /imxhy/images/ {
deny all;
}

*本文章仅供技术交流分享,请勿做未授权违法攻击,雨笋教育不负任何责任。具体请参考《网络安全法》。下篇更新nginx目录结构和配置文件详解。

# 渗透测试 # web安全 # nginx # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者