LANMP安全配置之Nginx安全配置

0x00 前言

比起前几篇的Apache安全配置、PHP安全配置、Mysql安全配置,对Nginx的了解巨少,没怎么用过除了知道Nginx解析漏洞就啥也不知道了
好了,开始学习

0x01 账户权限管理

1.1 更改默认用户名
nginx默认nobody,可更改默认用户名防止他人利用

1.2 新增用户
(1)新增组
groupadd -g 108 -r nginx
(2)新增用户
useradd -u 108 -r -g 108 nginx
(3)id nginx

1.3 限制账户目录权限
防止某账户权限过大,可提前设置,步骤如下:
(1)chmod o-r -R / 让该账户失去所有权限
(2)chmod o-r -R html/ 单独赋予Web目录权限
(3)执行命令 chmod 776 /bin/sh 限制账户命令执行权限
nginx默认nobody,没有访问目录权限,设置网站目录对于nobody的权限为可读、可执行。上传目录和写入目录给读取和写入权限,不要给执行权限!

0x02 限制IP访问

打开配置文件,按下图设置语法来设置禁止访问IP和允许访问IP

0x03 文件目录设置

3.1 文件权限
通过chmod命令将web目录设置成可执行脚本,但不可以写入。一个目录不能同时有写入和执行权限。

3.2 目录访问限制
打开nginx配置文件

autoindex on; //添加此行 目录列表展示

3.3 目录执行权限
打开nginx配置文件,以上传目录为例,加入下面代码对上传目录加以限制。

3.4 限制TXT文件被访问
这里是指具体的文件被禁止访问,你也可以设置成其他文件

同时设置多个文件语法:

location ~* \.(txt|doc)$ //表示禁止访问*.txt和*.doc文件 

0x04 日志文件设置

4.1 开启日志默认配置
error_log 前的“#”去掉,记录错误日志

access_loglog_format前的“#”去掉,记录访问日志

  • 补充:Nginx访问日志主要有两个参数控制
  • log_format #用来定义记录日志的格式(可以定义多种日志格式,取不同名字即可)
  • access_log #用来指定日至文件的路径及使用的何种日志格式记录日志

详细访问日志设置参考:https://www.cnblogs.com/xuyuQAQ/p/8728773.html

4.2 日志文件限制
具体设置格式同上一条txt文件

4.3 访问日志的权限设置
假如日志目录为/app/logs,则授权方法如下:

chown -R root.root /app/logs chown -R 700 /app/logs 

0x05 关闭报错信息

关闭Nginx版本号
打开配置文件,插入如下代码

0x06 WAF扩展

Nginx有三个常见的漏洞防御模式,modsecurityNaxsingx_lua_waf,可通过安装这些模块来提升安全性
emmmm留个坑之后再学