易君召
发布于 2026-08-08 / 作者:易君召 / 5 阅读
0

Linux 服务器常见安全配置

账号权限、SSH 加固、系统基础、防火墙、日志审计、服务最小化、文件权限、内核安全、入侵防护、定期维护分类整理,生产环境通用,适用于 CentOS、Debian、openEuler、银河麒麟等主流发行版。

一、账号与权限安全

  1. 禁止 root 直接登录

    • SSH 禁止 root 登录,使用普通用户 + sudo 提权。

    • /etc/ssh/sshd_configPermitRootLogin no

  2. 禁用无用账号

    bash

    userdel 废弃用户名
    passwd -l 用户名 #锁定账号
    
  3. sudo 权限精细化

    不直接给 ALL 权限,只分配业务所需命令,编辑/etc/sudoers

  4. 密码策略加固

    • 密码复杂度、有效期、重试次数,修改/etc/security/pam_unix.so/etc/login.defs

    ini

    PASS_MAX_DAYS 90    #密码90天过期
    PASS_MIN_DAYS 7
    PASS_WARN_AGE 14
    
  5. 删除闲置的 UID=0 账号,除 root 外不允许其他用户 UID 为 0。

二、SSH 服务加固(最常用入口)

编辑/etc/ssh/sshd_config

ini

Port 2222                     # 修改默认22端口(可选)
PermitRootLogin no            # 禁止root登录
PasswordAuthentication no     # 关闭密码登录,优先密钥登录
PubkeyAuthentication yes      # 开启密钥认证
MaxAuthTries 3                # 最大尝试次数
AllowUsers user1 user2        # 白名单,仅允许指定用户登录
PermitEmptyPasswords no       # 禁止空密码
X11Forwarding no              # 关闭X11转发
AllowTcpForwarding no         # 不需要端口转发就关闭

修改后重载:systemctl restart sshd

最佳实践:密钥登录,彻底关闭密码登录,避免暴力破解。

三、防火墙配置

firewalld(CentOS/openEuler)

bash

systemctl enable --now firewalld
firewall-cmd --set-default-zone=drop          # 默认拒绝
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

ufw(Debian/Ubuntu)

bash

ufw default deny incoming
ufw allow ssh
ufw allow 80/tcp
ufw enable

原则:默认全部拒绝,只放行业务需要端口,不要直接iptables -F清空规则。

四、系统更新与软件最小化

  1. 定期更新系统补丁

bash

yum update -y       # RHEL系
apt update && apt upgrade -y  # Debian系
  1. 卸载不用的服务、软件包,关闭开机自启

bash

systemctl disable --now avahi-daemon cups rpcbind
  1. 移除不需要的编译工具、telnet、rlogin 等不安全老协议。

生产服务器不要装 gcc、cmake 等编译环境,避免被提权利用。

五、文件与目录权限安全

  1. 关键文件权限锁定

bash

chmod 644 /etc/passwd
chmod 600 /etc/shadow
chmod 644 /etc/group
chmod 600 /etc/ssh/sshd_config
chmod 700 /root
  1. /etc/profile~/.bashrc检查恶意环境变量,防止 PATH 劫持。

  2. 禁止 SUID/SGID 危险文件,定期扫描:

bash

find / -type f \( -perm -4000 -o -perm -2000 \) -ls
  1. 重要配置文件设置不可修改属性

bash

chattr +i /etc/passwd
chattr -i /etc/passwd #取消锁定

六、内核安全参数 (sysctl)

编辑/etc/sysctl.conf,执行sysctl -p生效

ini

# 关闭IP源路由
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 关闭ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

# 禁止响应ICMP广播,防smurf攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1

# 防范syn洪水
net.ipv4.tcp_syncookies = 1

# 内核地址空间随机化,对抗内存漏洞
kernel.randomize_va_space = 2

# 禁止core dump,防止泄露敏感信息
fs.suid_dumpable = 0

七、日志与审计

  1. 开启 rsyslog,保证系统日志留存;重要环境部署auditd 审计服务

bash

systemctl enable --now auditd

auditd 可监控文件修改、用户登录、sudo 操作。

2. 日志远程转发,把 syslog、auth.log 发送到日志服务器,防止攻击者删除本地日志。

3. 重点关注日志:

  • /var/log/secure(RHEL)

  • /var/log/auth.log(Debian)

    定期监控异常登录、暴力破解。

八、防暴力破解

  1. fail2ban:扫描 SSH 等日志,封禁爆破 IP

bash

yum install fail2ban
systemctl enable --now fail2ban

配置 jail,多次密码错误自动 ban IP。

九、关闭危险服务与协议

  • 关闭 telnet、rsh、rlogin,全部替换 ssh

  • 不使用 ftp 明文传输,改用 sftp

  • NFS、RPC 如果不用,直接关闭;业务需要则严格限制 IP 访问

  • 禁用不必要的 systemd socket

十、限制资源与防止 DoS

/etc/security/limits.conf,限制进程数、最大打开文件数,防止账号耗尽资源:

ini

* soft nofile 65535
* hard nofile 65535
* soft nproc 8192
* hard nproc 16384

十一、定时任务安全

  1. 检查全局 crontab,防止恶意定时任务

bash

crontab -l
ls /etc/cron.*
  1. 限制哪些用户可以使用 crontab:/etc/cron.allow/etc/cron.deny

十二、安全基线附加建议

  1. 关闭 SELinux 不推荐,生产尽量开启 SELinux,出现问题做策略放行,不要直接setenforce 0;openEuler / 麒麟也有类似安全模块。

  2. 服务器不要公网暴露不必要端口,优先内网访问,重要服务走堡垒机跳转。

  3. 定期备份,备份文件不要放在本机同一服务器。

  4. 定期安全巡检:账号、计划任务、异常进程、监听端口netstat -tulnp / ss -tulnp

  5. 部署主机安全工具:aide(文件完整性校验),检测文件是否被篡改。

最简安全检查清单(可直接脚本化执行)

  1. 是否允许 root ssh 登录

  2. 是否还在使用密码登录 ssh

  3. 防火墙默认策略是否为拒绝

  4. 是否存在多余 UID=0 账号

  5. 检查异常 SUID 文件

  6. 检查 crontab 异常任务

  7. 检查监听端口,确认没有多余对外服务

  8. 系统包是否长期未更新


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/linux-server-common-security-configuration

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/