Nginx安全加固

本加固文档适用于nginx中间件。明确了nginx安全配置方面的基本要求。

一.开启SELinux

操作目的

防止大多数系统root级攻击

检查方法

#getsebool –a 查看SELinux设置项

加固方法

# getsebool -a | lessgetsebool -a | grep offgetsebool -a | grep o

然后使用setsebool命令开启需要的配置项

记录

备注

开启SELinux后,在RHEL或CentOS上通常会增加2-8%的系统开销。

二.通过mount参数提供最低权限

操作目的

通过mount参数提供最低权限

检查方法

cat nginx.conf|grep autoindex

加固方法

为/html/php文件创建独立的分区,例如,创建一个/dev/sda5分区挂载在/ngnix上,确定/ngnix使用了noexec,nodev和nosetuid权限挂载。下面是一个挂载实例:

LABEL=/nginx     /nginx          ext3   defaults,nosuid,noexec,nodev 1 2

注意:需要使用fdisk和mkfs.ext3命令创建一个新分区。

记录

备注

三.禁止autoindex

操作目的

禁止目录列出

检查方法

查看nginx配置文件是否禁用autoindex,即autoindex off或者没有配置autoindex

加固方法

在nginx配置文件中 修改 autoindex on 为 autoindex off

记录

备注

四.关闭服务器标记

操作目的

禁止显示服务器的版本和信息

检查方法

# curl -I 某个应用URL  查看是否错误页面都会显示服务器的版本和信息

加固方法

修改nginx.conf配置文件如下:

http{

    include       naxsi_core.rules;

    include      mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    server_tokens off;

    ... ...

记录

备注

五.自定义缓存

操作目的

设置自定义缓存以限制缓冲区溢出攻击

检查方法

#

加固方法

修改nginx.conf配置文件如下:

http{

    ... ...

    server{

        ... ...

        client_body_buffer_size  16K;

       client_header_buffer_size  1k;

        client_max_body_size  1m;

       large_client_header_buffers  4  8k;

        ... ... 

上述的参数不是最优参数,仅供参考

记录

六.设置连接超时

操作目的

设置timeout设低来防御DOS攻击

检查方法

查看nginx.conf 主配置文件是否设置timeout参数

加固方法

修改nginx.conf配置文件如下:

http {

    ... ...

       client_body_timeout   10;

       client_header_timeout  30;

       keepalive_timeout     30  30;

       send_timeout          10;

记录

七.配置日志

操作目的

设置timeout设低来防御DOS攻击

检查方法

#tail -3f /usr/local/nginx/logs/dfh.smartcity.com.log查看Nginx的日志文件是否存在,并且访问应用时,有日志输出。

加固方法

鉴于日志的输出格式还未确定,目前暂时先使用Nginx默认的日志格式。

修改nginx.conf配置文件如下:

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/ access.log  main;

    ... ...

记录

八.限制访问的方法

操作目的

拒绝除了post和get方式请求

检查方法

尝试使用不同的请求方式是否能访问

加固方法

修改nginx.conf配置文件如下:

server{

       ... ...

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

                     return404;

              }

       ... ...

记录

九.限制访问IP

操作目的

限制某些IP地址的客户端访问

检查方法

查看nginx.conf 主配置文件

加固方法

如下范例:

location/ {

    deny  192.168.1.1;

    allow 192.168.1.0/24;

    allow 10.1.1.0/16;

    allow 2001:0db8::/32;

    deny  all;

}

注:规则按照顺序依次检测,直到匹配到第一条规则。 在这个例子里,IPv4的网络中只有 10.1.1.0/16 和 192.168.1.0/24允许访问,但 192.168.1.1除外, 对于IPv6的网络,只有2001:0db8::/32允许访问。

记录

你可能感兴趣的:(安全加固,nginx,web安全)