CentOS7.9系统安全加固
2026/5/22 3:41:12 网站建设 项目流程

1.摘要

本文基于实际项目中的安全整改经验,记录适用于 CentOS 7.9 等 Linux 发行版的系统与中间件的安全加固。

2. 系统加固

2.1 禁止 root 用户直接登录

编辑/etc/ssh/sshd_config配置文件,将PermitRootLogin修改为no

sed-i's/PermitRootLogin yes/PermitRootLogin no/'/etc/ssh/sshd_configgrepPermitRootLogin /etc/ssh/sshd_config# 检查

2.2 只允许 wheel 组用户使用 su

建议提前将一个普通用户加入 wheel 组。

sed-i's/^#\s*\(auth\s\+required\s\+pam_wheel.so use_uid\)/\1/'/etc/pam.d/su# 取消 auth required pam_wheel.so use_uid 这行的注释greppam_wheel.so /etc/pam.d/su# 检查

2.3 设置账号有效期为 90 天

sed-i's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS\t90/'/etc/login.defsgrepPASS_MAX_DAYS /etc/login.defs

2.4 设置过期前 10 天提醒

sed-i's/^PASS_WARN_AGE.*/PASS_WARN_AGE\t10/'/etc/login.defsgrepPASS_WARN_AGE /etc/login.defs

2.5 设置密码复杂度

关于用户密码方面的配置会涉及到两个类似功能的配置文件,分别为/etc/pam.d/password-auth/etc/pam.d/system-auth

它们的核心区别:

  • password-auth:管理远程认证服务的策略。
  • system-auth:管理远程认证和本地认证的策略。

编辑/etc/pam.d/system-auth文件,定位到pam_pwquality.so行,在后面添加minlenminclass参数。

password requisite pam_pwquality.so try_first_pass local_users_onlyretry=3authtok_type=minlen=12minclass=3

参数说明:

  • minlen=8:密码最小长度(此配置经过测试,会受minclass配置影响)。
  • minclass=3:密码最少包含的字符类别数(数字、大写、小写、特殊符号)。
  • retry=3:用户最多尝试输入密码的次数。
  • difok=5:新密码与旧密码相比,至少需要修改的字符数。
  • dcredit=-1:密码中至少需要包含的数字个数。
  • ucredit=-1:密码中至少需要包含的大写字母个数。
  • lcredit=-1:密码中至少需要包含的小写字母个数。
  • ocredit=-1:密码中至少需要包含的特殊字符个数。
  • maxrepeat=0:密码中连续相同字符的最大允许次数。0 表示不限制。
  • maxclassrepeat=0:密码中同一类字符连续出现的最大次数。0 表示不限制。
  • gecoscheck:是否检查密码与 GECOS 字段(全名)的相似。0 表示不限制。
  • dictpath:字典文件路径。用于字典攻击检查。

2.6 配置登录超时时间

编辑/etc/profile文件,添加TMOUT=300

vim/etc/profileTMOUT=300

3. Nginx 安装加固

3.1 限制客户端并发数

http块中定义共享内存区域。

http{# 定义一个名为 addr 的共享内存区域,大小 10m,用于存储键值(如客户端 IP)limit_conn_zone$binary_remote_addrzone=addr:10m;}

server块中添加以下配置。

server{limit_conn addr10;}

3.2 限制客户端传输速率

server块中添加以下配置。

server{limit_rate 500k;}

3.3 自定义 Nginx 返回的错误信息

server配置中添加以下配置。

server{error_page404400/40x.html;# 指定 404、400 的错误页面为 40x.html 文件error_page500502503504/50x.html;# 与上同理location=/50x.html{root /usr/share/nginx/html;# 自定义错误信息页面存放位置}

3.4 隐藏 Nginx 版本信息

http块中添加以下配置。

http{server_tokens off;}

3.5 配置超时时间

http块中添加以下配置。

http{client_body_timeout 30s;client_header_timeout 30s;}

Nginx 全部超时时间参数解释:

  • client_body_timeout:设置客户端向服务器发送请求体的超时时间,单位为秒。
  • client_header_timeout:设置客户端向服务器发送请求头的超时时间,单位为秒。
  • send_timeout:设置服务器向客户端发送响应的超时时间,单位为秒。
  • keepalive_timeout:设置服务器与客户端之间保持连接的超时时间,单位为秒。
  • proxy_connect_timeout:设置代理服务器与后端服务器建立连接的超时时间,单位为秒。
  • proxy_read_timeout:设置代理服务器从后端服务器读取数据的超时时间,单位为秒。
  • proxy_send_timeout:设置代理服务器向后端服务器发送数据的超时时间,单位为秒。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询