【中间件安全】Nginx 安全加固规范
1. 适用情况
适用于使用Nginx进行部署的Web网站。
2. 技能要求
熟悉Nginx配置,能够Nginx进行部署,并能针对站点使用Nginx进行安全加固。
3. 前置条件
1、 根据站点开放端口,进程ID,确认站点采用Nginx进行部署;
2、 找到Nginx安装目录,针对具体站点对配置文件进行修改;
3、 在执行过程中若有任何疑问或建议,应及时反馈。
4. 详细操作
4.1 日志配置
1、备份nginx.conf 配置文件。
修改配置,按如下设置日志记录文件、记录内容、记录格式,添加标签为main的log_format格式
(http标签内,在所有的server标签内可以调用):
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
2、在server标签内,定义日志路径
access_log logs/host.access.log main
3、保存,然后后重启nginx服务。
4.2 禁止目录浏览
备份nginx.conf配置文件。
编辑配置文件,HTTP模块添加如下一行内容:
autoindex off;
保存,然后后重启nginx服务。
4.3 限制目录执行权限
备份nginx.conf配置文件。
编辑配置文件,在server标签内添加如下内容:
#示例:去掉单个目录的PHP执行权限
location ~ /attachments/.*\.(php|php5)?$ {
deny all;
} #示例:去掉多个目录的PHP执行权限
location ~
/(attachments|upload)/.*\.(php|php5)?$ {
deny all;
}
保存,然后后重启nginx服务。
需要注意两点:
1、以上的配置文件代码需要放到 location ~ .php{...}上面,如果放到下面是无效的;
2、attachments需要写相对路径,不能写绝对路径。
4.4 错误页面重定向
备份nginx.conf配置文件。
修改配置,在http{}段加入如下内容
http {
...
fastcgi_intercept_errors on;
error_page /.html;
error_page /.html;
error_page /.html;
error_page /.html;
error_page /.html;
error_page /.html;
...
}
修改内容:
ErrorDocument /custom400.html
ErrorDocument /custom401.html
ErrorDocument /custom403.html
ErrorDocument /custom404.html
ErrorDocument /custom405.html
ErrorDocument /custom500.html
其中401.html、.html、.html、.html、.html、.html 为要指定的错误提示页面。
保存,重启 nginx 服务生效
4.5 最佳经验实践
4.5.1 隐藏版本信息
备份nginx.conf配置文件。
编辑配置文件,添加http模块中如下一行内容:
server_tokens off;
保存,然后后重启nginx服务。
4.5.2 限制HTTP请求方法
备份nginx.conf配置文件。
编辑配置文件,添加如下内容:
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return ;
}
保存,然后后重启nginx服务。
备注:只允许常用的GET和POST方法,顶多再加一个HEAD方法
4.5.3 限制IP访问
备份nginx.conf配置文件。
编辑配置文件,在server标签内添加如下内容:
location / {
deny 192.168.1.1; #拒绝IP
allow 192.168.1.0/; #允许IP
allow 10.1.1.0/; #允许IP
deny all; #拒绝其他所有IP
}
保存,然后后重启nginx服务。
4.5.4 限制并发和速度
备份nginx.conf配置文件。
编辑配置文件,在server标签内添加如下内容:
limit_zone one $binary_remote_addr 10m;
server
{
listen ;
server_name down.test.com;
index index.html index.htm index.php;
root /usr/local/www;
#Zone limit;
location / {
limit_conn one ;
limit_rate 20k;
}
………
}
保存,然后后重启nginx服务。
4.5.5 控制超时时间
备份nginx.conf配置文件。
编辑配置文件,具体设置如下:
client_body_timeout ; #设置客户端请求主体读取超时时间
client_header_timeout ; #设置客户端请求头读取超时时间
keepalive_timeout ; #第一个参数指定客户端连接保持活动的超时时间,第二个参数是可选的,它指定了消息头保持活动的有效时间
send_timeout10; #指定响应客户端的超时时间
保存,然后后重启nginx服务。
4.6 风险操作项
4.6.1 Nginx降权
备份nginx.conf配置文件。
编辑配置文件,添加如下一行内容:
user nobody;
保存,然后后重启nginx服务。
4.6.2 防盗链
备份nginx.conf配置文件。
编辑配置文件,在server标签内添加如下内容:
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 ;
}
}
保存,然后后重启nginx服务。
4.6.3 补丁更新
1、软件信息
查看软件版本 nginx -v
测试配置文件 nginx –t
2、补丁安装
手动安装补丁或安装最新版本软件
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。
【中间件安全】Nginx 安全加固规范的更多相关文章
- 下一代的中间件必须是支持docker规范的
下一代的中间件必须是支持docker规范的,这是中间件技术走向标准规范化的必经之路. 什么是 Docker? 答案是:Docker 是下一代的云计算模式.Docker 是下一代云计算的主流趋势. Do ...
- web中间件之nginx
web中间件之nginx https://www.jianshu.com/p/d8bd75c0fb1b 对nginx正向代理和反向代理理解特别好的一篇文章. 一.nginx nginx缺点,负载均 ...
- Nginx升级加固SSL/TLS协议信息泄露漏洞(CVE-2016-2183)
Nginx升级加固SSL/TLS协议信息泄露漏洞(CVE-2016-2183) 漏洞说明 // 基于Nginx的https网站被扫描出SSL/TLS协议信息泄露漏洞(CVE-2016-2183),该漏 ...
- 【中间件安全】Jboss安全加固规范
1. 适用情况 适用于使用Jboss进行部署的Web网站. 适用版本:5.x版本的Jboss服务器 2. 技能要求 熟悉Jboss安装配置,能够Jboss进行部署,并能针对站点使用Jboss进行安全加 ...
- 【中间件安全】WebSphere安全加固规范
1. 适用情况 适用于使用WebSphere进行部署的Web网站. 2. 技能要求 熟悉WebSphere安装部署,熟悉WebSphere常见漏洞利用方式,并能针对站点使用WebSphere进行安全加 ...
- 【中间件安全】IIS6安全加固规范
1. 适用情况 适用于使用IIS6进行部署的Web网站. 2. 技能要求 熟悉IIS配置操作,能够利用IIS进行建站,并能针对站点使用IIS进行安全加固. 3. 前置条件 1. 根据站点开放端口.进程 ...
- 【中间件安全】Weblogic 安全加固规范
1. 适用情况 适用于使用Weblogic进行部署的Web网站. 2. 技能要求 熟悉Weblogic安装部署,熟悉Weblogic常见漏洞利用方式,并能针对站点使用Weblogic进行安全加固. 3 ...
- 【中间件安全】Tomcat 安全加固规范
1. 适用情况 适用于使用Tomcat进行部署的Web网站. 2. 技能要求 熟悉Tomcat配置操作,能够利用Tomcat进行建站,并能针对站点使用Tomcat进行安全加固. 3. 前置条件 1.根 ...
- 【中间件安全】IIS7.0 安全加固规范
1. 适用情况 适用于使用IIS7进行部署的Web网站. 2. 技能要求 熟悉IIS配置操作,能够利用IIS进行建站,并能针对站点使用IIS进行安全加固. 3. 前置条件 1. 根据站点开放端口.进程 ...
随机推荐
- Mac如何找到从AppStore下载的正版Xcode安装包、以及Xcode清理缓存
前言:本文介绍在Mac下如何找到AppStore下载的安装包路径,以及如何提取出来供以后使用,希望对大家有所帮助(前提:想要提取某个安装包,前提是你正在从AppStore安装这个程序.比如你想提取im ...
- sqlite 一条记录判断一个字段是否like另一个字段
sql: select * from test where col2 like '%'||col1||'%';
- error LNK1104:无法打开文件"lua51.lib"
今天学习C++与Lua通信,遇到了问题:fatal error LNK1104: 无法打开文件“lua51.lib” 开发环境: VS2012 cocos版本:cocos2d-x-3.0 已经按书&l ...
- Java全栈程序员之03:Ubuntu下安装idea
JetBrains的产品我曾经用过很长一段时间,它们是resharper和dotcover.VS号称宇宙最强IDE,直到它遇到了resharper,我们才知道,原来vs可以更好.DotCover是一个 ...
- CustomJsonDateDeserializer @JsonDeserialize(using = CustomJsonDateDeserializer.class) Jackson 反序列化Date时遇到的问题 java中json日期属性反序列化
public class CustomJsonDateDeserializer extends JsonDeserializer<Date> { @Override public Date ...
- asp.net mvc Session RedisSessionStateProvider锁的实现
最近项目用到了RedisSessionStateProvider来保存session,发现比内存session慢,后来慢慢了解,发现asp.net session是有锁的.我在文章 你的项目真的需要S ...
- nssm和AlwaysUp来包装exe文件为windows服务
最近遇到要把windows exe文件部署为service,因为原先开发为exe程序,现在有不想修改code改为service,但是部署必须是service服务, 所以我们需要一个包装器来包装exe为 ...
- 微信小程序的同步操作
小程序里,大多数操作都是异步操作,一些重要的操作,如从网上获取重要变量值,必须要保证有值,后续操作才有意义.但异步操作,又必须把处理放到回调中,代码可读性降低,而且和大多数正常逻辑相背. 折腾了两天, ...
- 如何成为一名Top DevOps Engineer
软件世界的战场 如果你对devops的概念不是很了解的话,没有关系,可以先跳到维基百科阅读一下DevOps条目.有了模模糊糊的概念之后, 我们先抛开所有市面上对于devops的各种夸大和炒作,首先来思 ...
- CS模式,客户端页面加载
public MainForm() { //1.初始化视图 InitializeComponent(); //2.加载程序 this.Load += new System.EventHandler(t ...