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_log
和log_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有三个常见的漏洞防御模式,modsecurity
、Naxsi
和ngx_lua_waf
,可通过安装这些模块来提升安全性
emmmm留个坑之后再学