z0nek

关于我

1、屏蔽版本

修改/隐藏Nginx的相关信息将在一定程度上可以增大攻击者的攻击难度,也可以骗过一些自动化攻击工具,两种方式

1)

在Linux平台下以源码方式安装Nginx时,可以通过修改“src/core/nginx.h”中的信息来达到隐藏或自定义Banner信息的目的。

[root@CentOS www]# vim /opt/nginx-1.6.1/src/core/nginx.h

例如可修改为:

#define NGINX_VERSION      “1.0”

#define NGINX_VER          “Webserver/” NGINX_VERSION

修改完成后,重新编译Nginx,然后安装即可。

2)

nginx.conf配置如下:

server {

listen       80;

server_name  10.11.11.201;

server_tokens off;

}

 

2、Nginx启动帐号

使用普通权限的账户启动,禁止使用root帐号启动。如

user nginx nginx;

 

3、日志记录

开启Web的access log日志记录功能,同时请对日志按日进行切割打包压缩收集存储。Nginx的日志默认存放在安装目录的logs目录下,首先要修改日志的默认保存路径,然后设置只允许管理员有日志存放目录的完全控制权限。

 

4、预防Php 解析隐患

如果Nginx启用了php fastcgi功能,强烈建议添加如下配置,以预防文件名解析漏洞:

server {

….

if ( $fastcgi_script_name ~ \..*\/.*php ) {

return 403;

}

….

}

上述配置将拦截类似这样的请求:

/1.jpg/x.php

/my.dir/x.php

 

5、Web目录权限设置

Nginx启动帐号应对web目录下所有文件及子目录无写权限,如果web应用需写日志文件,不应该放在web目录下。

 

6、上传目录禁止执行

如果web应用确实需要支持文件上传功能,nginx启动帐号需要对web某些目录具有写权限,应在nginx里面限制上传目录无脚本执行权限。

注:这里指的不是去除文件系统rwx权限中的x,文件系统权限中的x可以保留,无影响。

假设上传目录为”/upload”,配置示例如下:

server {

….

location ~ ^/upload/.*\.php {

return 403;

}

….

location ~ \.php$ {

fastcgi_pass *;

}

}

注:”location ~ ^/upload/.*\.php”必须写在前面!对于location的正则表达式,nginx是按照先后顺序来匹配的,具体可参见http://wiki.nginx.org/HttpCoreModule#location

 

7、禁止访问敏感扩展名文件

在nginx.conf中添加配置

location ~* \.( rar|zip|gz|tar|tgz|tar.gz|7z|z|bz2|tar.bz2|sql|log|rar|ini|bak|conf|

DS_Store|idea|swp|svn/entries|git/config)$ {

deny all;

}

 

8、屏蔽非法的HTTP方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {

return 444;

}


标签:运维安全

评论
© z0nek | Powered by LOFTER