2024-03-11
Linux
00
请注意,本文编写于 36 天前,最后修改于 36 天前,其中某些信息可能已经过时。

目录

Nginx 安全加固配置规范
修改默认端口
禁止服务信息泄露
开启 SSL/TLS 加密
防止 DDOS 攻击
设置NGINX缓冲区
日志配置
Nginx日志切割
错误页面重定向
防止 SQL 注入攻击
限制HTTP请求方法
限制IP访问
限制并发速度
控制超时时间timeout
Nginx降权
防盗链
Nginx配置WAF模块

Nginx 安全加固配置规范

Nginx 是目前应用最广泛的 Web 服务器之一,但是在使用过程中,我们也需要注意 Nginx 的安全问题。本文将介绍一些 Nginx 安全加固规范。

修改默认端口

默认情况下,Nginx 使用的是 80 和 443 端口。攻击者可以利用这个漏洞进行端口扫描和攻击。因此,我们需要修改默认端口,增加服务器的安全性。

禁止服务信息泄露

攻者可以通过查看服务版本信息来了解服务器的漏洞和弱点。因此,我们需要禁止服务信息泄露。具体方法为,在 Nginx 配置文件中http模块添加以下代码:

autoindex off; #禁止目录浏览 server_tokens off; #隐藏版本信息

开启 SSL/TLS 加密

SSL/TLS 加密可以保护数据传输过程中的机密性和完整性,防止数据被窃取或篡改。因此,我们应该开启 SSL/TLS 加密功能。具体方法为,在 Nginx 配置文件中添加以下代码:

listen 443 ssl; ssl_certificate /path/toyour/cert.pem; ssl_certificate_key /path/to/your/key.pem;

防止 DDOS 攻击

DDOS 攻击是指利用多个主机向目标服务器发送大量请求,以达到消耗服务器资源、拒绝服务等目的。为了防止 DDOS 攻击,我们可以在 Nginx 配置文件,在http模块中添加以下代码:

limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 100;

设置NGINX缓冲区

目的:防止缓冲区溢出攻击

#编辑nginx配置文件,在server模块中需要限制的location中添加以下参数 client_body_buffer_size 1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;

日志配置

目的:统一使用规定好的日志格式

#编辑nginx配置文件,在http模块中添加如下参数 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' access_log logs/host.access.log main;

Nginx日志切割

目的:切割nginx日志,避免日志文件过大

#新建日志切割脚本 如下: #!/bin/bash #设置日志文件存放目录 logspath="/usr/local/nginx/logs/" #设置pid文件 pidpath="/usr/local/nginx/nginx.pid" #重命名日志文件 mv ${logspath}access.log ${logspath}access$(date -d "yesterday" +"%Y%m%d").log #向nginx主进程发信号重新打开日志 kill -USR1 `cat ${pidpath}`

错误页面重定向

目的:nginx默认错误页面包含服务器版本信息,使用自定义错误页面避免版本信息泄露

#新建错误页面,放到静态目录中,编辑Nignx配置文件, #在http模块中添加如下参数: fastcgi_intercept_errors on; errorpage 401 /401.html; errorpage 402 /402.html; errorpage 403 /403.html; errorpage 404 /404.html; errorpage 405 /405.html; errorpage 500 /500.html

防止 SQL 注入攻击

SQL 注入攻击是指通过构造恶意 SQL 语句来访问、修改或数据库中的数据。为了防止 SQL 注入攻击,我们应该对输入进行过滤和验证,并使用参数化查询等安全措施。

限制HTTP请求方法

目的:限制nginx请求方法,仅允许常用的get post head

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

限制IP访问

目的:限制访问IP,仅允许指定ip访问指定资源

location / { deny 192.168.1.1; #拒绝IP allow 192.168.1.0/24; #允许IP allow 10.1.1.0/16; #允许IP deny all; #拒绝其他所有IP }

限制并发速度

目的:限制用户连接数及速度来预防DDOS攻击

limit_zone one $binary_remote_addr 10m; server { listen 80; server_name down.test.com; index index.html index.htm index.php; root /usr/local/www; #Zone limit; location / { limit_conn one 1; limit_rate 20k; } ……… }

控制超时时间timeout

目的:设低来防御DOS攻击,保护服务器资源,硬件cpu、mem

# 在http模块下,配置如下配置,具体时间根据业务需要进行调整; client_body_timeout 10; # 设置客户端请求主体读取超时时间 client_header_timeout 10; # 设置客户端请求头读取超时时间 keepalive_timeout 5 5; # 第一个参数指定客户端连接保持活动的超时时间,第二个参数是可选的,它指定了消息头保持活动的有效时间 send_timeout10; # 指定响应客户端的超时时间

Nginx降权

user nobody;

防盗链

目的:防止第三方引用链接访问我们的图片,消耗服务器资源和网络流量

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ { valid_referers none blocked server_names *.nsfocus.com http://localhost baidu.com; if ($invalid_referer) { rewrite ^/ [img]http://www.XXX.com/images/default/logo.gif[/img]; # return 403; } }

Nginx配置WAF模块

目的:nginx配置waf模块,提升服务器的安全性

#下载waf模块,wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip #配置waf相关Lua规则、目录、脚本等, (nginx需要加载nginx_lua_module模块) #编辑nginx配置文件,在http模块中添加如下参数: lua_package_path “/usr/local/nginx/conf/waf/?.lua”; lua_shared_dict limit 10m; init_by_lua_file /usr/local/nginx/conf/waf/init.lua; access_by_lua_file /usr/local/nginx/conf/waf/waf.lua; #新建攻击日志目录 mkdir -p /data/logs/hack/ chown -R nobody:nobody /data/logs/hack/ chmod -R 755 /data/logs/hack/ #重启Nignx服务

以上就是 Nginx 安全加固规范的介绍。希望本文能够帮助大家更好地保护服务器安全。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:XiaoWang0777

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

本网站由 又拍云Logo 提供CDN加速/云存储服务 萌ICP备20240377号