🙊
关于作者
  • 个人简历
  • 联系作者
  • 运维日常记录
    • RAID 磁盘阵列
    • MBR 与 GPT 分区
    • Linux 命令行判断GPT和MBR分区
    • CentoS 7 系统 扩容根分区
  • Linux运维学习笔记
    • 计算机网络基础知识
    • Linux 系统启动过程
    • Linux 命令基本格式
    • Linux 文件删除原理
    • Linux 目录结构说明
    • Linux 查看命令帮助信息
    • Linux Yum 命令
    • Linux Apt 命令
  • Linux 运维管理
    • Linux 硬件管理
    • Linux 软件管理
    • Linux 磁盘管理
    • Linux 系统管理
    • Linux 网络管理
    • Linux 用户和组管理
    • Linux 文件与目录管理
    • Linux 文件压缩与解压缩管理
    • Linux SSL证书自动更新管理
  • 运维环境搭建
    • CentOS 7 安装与优化
    • CentOS 安装高版本Node.js
    • CentOS 升级安装Python2.7.X
    • CentOS 安装 Python3.8.X
    • CentOS 安装 PHP7.4.X
    • CentOS 安装 Mysql 8.0
    • CentOS 安装 Zabbix 5.0
    • Windows Server 部署 IIS
    • Cronsun 任务管理器部署
    • Teltport 堡垒机部署
    • Jump Server 堡垒机搭建及使用
    • CI & CD 持续集成部署
    • ELK6.5.0+Filebeat 日志系统部署
    • Lustre 分布式并行文件系统部署
  • 系统安全加固
    • Linux 操作系统加固
    • Windows 操作系统安全加固
    • Password 安全加固
    • OpenSSL 安全加固
    • NFS 服务安全加固
    • Rsync 服务安全加固
    • IIS 服务安全加固
    • PHP 语言环境安全加固
    • Apache 服务安全加固
    • Nginx 服务安全加固
    • Tomcat 服务安全加固
    • MySQL 服务安全加固
    • PostgreSQL 服务安全加固
    • Redis 服务安全加固
    • MongoDB 服务安全加固
    • 暴力破解攻击和防御
  • 云原生运维教程
    • Docker 理论
    • Docker 基本架构
    • Docker 基本概念
    • Docker 基本使用
      • 容器
      • 镜像
      • 仓库
    • Docker 存储
    • Docker 网络
    • Docker 安装
  • Linux 系统故障排查
    • Linux 系统重置密码方法
    • Linux 系统误操作修改目录权限为 777 修复方法
  • Windows 系统故障排查
    • Windows 和 Windows Server 中启用/禁用 SMBv1、SMBv2 和 SMBv3
    • Windows10建立映射网络驱动器报错,无法挂载共享文件系统,解决办法
  • 运维工具使用
    • 常用 Git 命令简介及使用
    • 常用 SVN 命令简介及使用
    • 常用 Vi / Vim 文本编辑工具简介及使用
    • 国内常用加速源使用及配置
    • 软碟通制作U启动和再生龙恢复Linux系统及备份
    • 常用JetBrains系列IDE快捷键
  • 中间件教程学习
    • Nginx 极简教程
    • Nginx 安装
    • Nginx 配置
    • Nginx 问题集
    • Mysql 教程
    • Mysql 运维
    • Mysql 原理
    • Redis 教程
    • Redis 持久化
    • Redis 复制
    • Redis 哨兵
    • Redis 集群
    • Redis 运维
    • PostgreSQL 教程
    • H2 教程
    • SqLite 教程
    • 数据库中间件 flyway
  • Nginx 入门教程
  • MySQL 入门教程
  • Nosql 数据库
  • 常用工具快捷键
    • Windows10常用快捷键大全
  • Group 1
由 GitBook 提供支持
在本页
  • 一、 普通用户启动服务
  • 二、限定非法主机访问
  • 三、限定非法文件访问
  • 四、限定非法目录访问
  • 五、修改默认服务端口
  • 六、隐藏服务器版本号
  • 八、控制缓冲区溢出攻击
  • 九、控制并发连接数
  • 十、限制可用的请求方法
  • 十一、漏洞补丁
  • 十一、操作系统配置

这有帮助吗?

  1. 系统安全加固

Nginx 服务安全加固

上一页Apache 服务安全加固下一页Tomcat 服务安全加固

最后更新于3年前

这有帮助吗?

博客作者:联系请,搬运不易,希望请作者喝咖啡,可以点击

一、 普通用户启动服务

名称:以非特权用户启动服务

实施目的:以特定用户运行服务,不要使用系统管理员帐号启动Nginx。

问题影响:越权使用造成非法攻击

系统当前状态:使用系统命令或使工具查看Nginx进程是否使用管理员或使特权用户启动的。

User nginx;
Worker_processes 8;

实施步骤:一般情况下,Nginx是由Root来安装和运行的。如果Nginx:worker进程具有Root用户特权,那么它将给系统的安全构成很大的威胁,应确保Nginx进程以最可能低的权限用户来运行。

通过修改nginx.conf 文件中的下列选项,以nginx用户运行worker达到相对安全的目的。

  1. 备份 nginx.conf文件

  2. 取消nginx 用户对所有目录的的读取权限,然后添加对网站目录的读取权限

chmod o-r –R /
chmod o+r –R html/

3. 取消 nginx 对于/bin/sh 的执行权限

chmod 776 /bin/sh

4. 重启nginx

二、限定非法主机访问

名称:控制哪些主机能够访问服务器

实施目的:防止恶意攻击

问题影响:非法访问

系统当前状态:通过查看nginx.conf配置文件确定系统当前状态

实施步骤:在nginx配置文件中强制限定允许某个网段或者某个IP接入服务器。

location /
{
deny 192.168.1.1;
 allow 192.168.1.0/24;
 allow 10.1.1.0/16;
 deny all;
}

三、限定非法文件访问

名称:限定非法文件访问

实施目的:禁止nginx访问某类型的文件。

问题影响:非法访问,恶意攻击。

实施步骤:编辑nginx.conf配置文件

如,Nginx下禁止访问*.txt文件

location ~* \.(txt|doc)${
root /var/InfiNET/web /test;
deny all;
}
禁止下载以点开头的文件
location ~ /\..+ {
deny all;
}

四、限定非法目录访问

名称:限定非法目录访问

实施目的:禁止nginx访问Web目录之外的任何文件。的IP地址等内容。

问题影响:非法访问,恶意攻击。

实施步骤:

location ~ ^/(WEB-INF)/
{deny all;
}

备注:

1、判定条件

无法访问Web目录之外的文件。

2、检测操作

访问服务器上不属于Web目录的一个文件,结果应无法显示。

五、修改默认服务端口

名称:更改默认端口

实施目的:更改nginx服务器默认端口,防止非法访问。

问题影响:恶意攻击。

实施步骤:

(1)修改nginx.conf配置文件,更改默认端口到6666。

server{
listen 6666 ;
server_namelocalhost;

(2)重启Nginx服务

备注:

1、判定条件

使用 6666 端口页面成功

2、检测操作

登陆http://ip:6666

六、隐藏服务器版本号

名称:隐藏服务器版本号

实施目的:隐藏服务器版本号,防备Nginx的版本漏洞被扫描到并利用

问题影响:恶意攻击。

实施步骤:

(1)修改 nginx.conf 配置文件,增加

server_tokens off http {
server_tokens off;

(2)重启 Nginx 服务

备注:访问一个不存在的页面,错误页面404 NotFound 中不显示nginx版本号

八、控制缓冲区溢出攻击

名称:控制缓冲区溢出攻击

实施目的:控制缓冲区大小,防备溢出攻击

问题影响:恶意攻击。

实施步骤:

1、参考配置操作

(1)修改 nginx.conf 配置文件,修改缓冲区大小

## Start: Size Limits & Buffer Overflows ## client_body_buffer_size1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;

## END: Size Limits & Buffer Overflows ##

(2)重启 Nginx 服务

九、控制并发连接数

名称:控制并发连接数

实施目的:控制并发连接数,防备Ddos攻击

问题影响:恶意攻击。

实施步骤:

(1)修改 nginx.conf 配置文件,修改单个 IP 的并发连接数大小

### 1m can handle 32000 sessions limit_zone slimits $binary_remote_addr 5m; limit_conn slimits 64;

上面表示限制每个远程 IP地址的客户端同时打开连接不能超过64个。

(2)重启 Nginx 服务

十、限制可用的请求方法

名称:限制可用的请求方法

实施目的:限制可用的请求方法,防备利用应用漏洞攻击

问题影响:恶意攻击。

实施步骤:

(1)下面的指令将过滤只允许 GET,HEAD 和 POST 方法:

## Only allow these request methods ##
if($request_method !~ ^(GET|HEAD|POST)$ ) {
return444;
}

(2)重启 Nginx 服务

十一、漏洞补丁

名称:补丁修复

实施目的:升级Nginx修复漏洞

问题影响:容易引起恶意攻击。

系统当前状态:使用nginx -V查看版本。

备注:升级补丁的风险极高,如当前版本没有漏洞不建议升级

十一、操作系统配置

名称:操作系统配置

实施目的:配置操作系统保护Web服务器

问题影响:控制攻击危害

系统当前状态:查看防火墙、用户权限以及Selinux配置

实施步骤:

1、Nginx以用户nginx运 行 , 但是根目录(/nginx或者/usr/local/ nginx/html)不应该设置属于用户 nginx或对用户nginx可写。

2、配置操作系统防火墙限制,下面的例子中只允许 user 用户在外面使用80连接,如果某个IP在60秒尝试连接到80端口的次数超过了15, iptables将会丢掉来自它的入站连接。

iptables -A OUTPUT -o eth0 -m owner --uid-owner vivek -p tcp --dport 80 -m state --state NEW,ESTABLISHED-j ACCEPT
iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –update –seconds 60  –hitcount 15 -j DROP service iptables save

实施步骤:到 查看公开的Nginx安全漏洞。

3、配置SELinux策略加固Nginx ,从下载 SELinux策略包并安装,用于强化 Linux 服务器上的 nginx 网络服务器的针对性 SELinux 策略。

点击
联系博客作者
Nginx 官网
项目主页