泷羽Sec-分享网络安全 | 安全产品测评 | 网站建设 - 安全运维
前言Linux 服务器是企业业务的核心载体，从 Web 服务、数据库、中间件到容器集群，绝大多数生产业务都运行在 Linux 系统之上。而互联网暴露面扩大、供应链漏洞频发、定向攻击常态化，让 Linux 服务器成为黑客入侵的首要目标。安全加固的核心目标，是通过最小权限原则、纵深防御体系、持续审计机制，缩小服务器攻击面，阻断攻击路径，提升抗入侵能力 —— 即使边界防护被突破，也能最大程度保护核心数据与业务安全。本文覆盖从账号认证、服务最小化、权限管控到网络防护、日志审计、入侵检测的全维度落地方案，适配 CentOS 7/8/9、RHEL 7/8/9、Ubuntu 20.04/22.04/24.04 等主流企业级发行版，所有操作均配套明确的配置命令、验证方法与回滚方案，可直接落地到生产环境。一、前置核心加固原则所有加固操作需严格遵循以下原则，避免业务中断或防护失效：1、 最小权限原则：仅给用户、服务、进程分配完成任务所需的最小权限，杜绝过度授权2、 最小暴露原则：关闭所有非必要的端口、服务、组件，从根源缩小攻击面3、 纵深防御原则：构建账号、网络、文件、应用多层防护体系，避免单点防护失效4、 可回滚原则：修改配置前必须备份原文件，所有操作均配套回滚方法，避免生产故障5、 持续审计原则：加固不是一次性操作，需定期开展基线检查、漏洞扫描与日志审计，持续优化防护策略【生产环境避坑提示】所有涉及系统核心配置、SSH 服务、防火墙的修改，需先在测试环境验证，再逐步落地生产；修改 SSH 配置后，需先保留当前会话，用新会话测试登录正常后，再关闭原会话，避免服务器失联。二、账号与身份认证安全加固账号与认证是服务器安全的第一道防线，超过 70% 的 Linux 入侵事件，都源于弱口令、账号过度授权、SSH 配置缺陷导致的边界突破。2.1 清理无用账号，消除风险账户系统安装、业务迭代过程中会产生大量无用账号，包括默认创建的程序账号、废弃的运维账号，这些账号往往成为黑客入侵的突破口。# 1、备份原账号配置文件，方便回滚 cp /etc/passwd /etc/passwd.bak.$(date +%Y%m%d) cp /etc/shadow /etc/shadow.bak.$(date +%Y%m%d) # 2、查看系统中所有可登录的账号，排查废弃账号 cat /etc/passwd | grep -E "/bin/bash|/bin/sh|/bin/zsh" # 3、锁定无用账号（推荐，可恢复，比直接删除更安全） usermod -L 废弃用户名 # 解锁账号回滚命令：usermod -U 废弃用户名 # 4、禁用程序账号的登录权限，杜绝账号被滥用 usermod -s /sbin/nologin 程序用户名 # 示例：usermod -s /sbin/nologin apache 2.2 强制配置强密码策略弱口令是黑客暴力破解的首要目标，需通过 PAM 模块强制系统所有用户使用复杂度达标的密码，同时限制密码有效期与重试次数。适配 CentOS/RHEL 系列# 1、安装密码质量检测模块 yum install -y libpwquality # 2、修改密码策略配置文件，强制密码复杂度 vi /etc/security/pwquality.conf # 新增/修改以下配置： minlen = 12 # 密码最小长度12位 minclass = 3 # 必须包含大小写字母、数字、特殊符号中的3种 maxrepeat = 3 # 禁止连续3个相同字符 difok = 5 # 新密码与旧密码至少5个字符不同 enforce_for_root = 1 # 强制root用户也遵循该策略 # 3、配置密码登录失败锁定策略，防止暴力破解 vi /etc/pam.d/system-auth vi /etc/pam.d/password-auth # 在auth字段新增配置，连续5次失败锁定10分钟： auth required pam_fAIllock.so preauth audit silent deny=5 unlock_time=600 auth [default=die] pam_fAIllock.so authfAIl audit deny=5 unlock_time=600 auth sufficient pam_fAIllock.so authsucc audit 适配 Ubuntu/Debian 系列# 1、安装密码质量检测模块 apt install -y libpam-pwquality # 2、修改密码策略配置 vi /etc/pam.d/common-password # 修改pam_pwquality.so行，添加强制规则： password requisite pam_pwquality.so retry=3 minlen=12 minclass=3 maxrepeat=3 enforce_for_root # 3、配置登录失败锁定策略 vi /etc/pam.d/common-auth # 新增配置，连续5次失败锁定10分钟： auth required pam_fAIllock.so preauth audit silent deny=5 unlock_time=600 auth [default=die] pam_fAIllock.so authfAIl audit deny=5 unlock_time=600 auth sufficient pam_fAIllock.so authsucc audit 2.3 SSH 服务全维度安全加固SSH 是 Linux 远程管理的核心协议，也是黑客攻击的头号目标，需从认证方式、访问控制、端口配置等维度完成全量加固。# 1、备份SSH配置文件，方便回滚 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d) # 2、修改SSH核心配置 vi /etc/ssh/sshd_config # 核心加固项如下： Port 22345 # 修改默认22端口，减少全网扫描攻击 PermitRootLogin no # 禁止root用户直接登录 PubkeyAuthentication yes # 开启公钥认证，优先使用密钥登录 PasswordAuthentication no # 关闭密码认证，彻底杜绝暴力破解 PermitEmptyPasswords no # 禁止空密码登录 MaxAuthTries 3 # 最大认证尝试次数3次 ClientAliveInterval 300 # 5分钟无操作自动断开连接 ClientAliveCountMax 2 # 无响应最大次数2次 AllowUsers 运维用户名@192.168.1.0/24 # 配置IP白名单，仅允许指定网段的指定用户登录 # 禁止使用不安全的加密算法与协议 KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com # 3、验证SSH配置语法是否正确，避免配置错误导致服务崩溃 sshd -t # 配置无报错后，重启SSH服务生效 # CentOS/RHEL：systemctl restart sshd # Ubuntu/Debian：systemctl restart ssh # 4、验证加固效果，用新会话测试登录，确认白名单、密钥认证正常生效 2.4 Sudo 提权权限精细化管控绝大多数提权攻击都利用了 sudo 的过度授权，需严格限制普通用户的 sudo 权限，杜绝直接给用户分配 ALL 权限。# 1、备份sudo配置文件 cp /etc/sudoers /etc/sudoers.bak.$(date +%Y%m%d) # 2、使用visudo命令编辑sudo配置（自带语法检查，避免配置错误） visudo # 错误配置（禁止使用）：运维用户名 ALL=(ALL) ALL # 正确配置：仅给用户分配完成工作所需的最小命令权限，示例： 运维用户名 ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/tAIl -f /var/log/nginx/access.log # 禁止用户通过sudo修改sudo配置、切换root、执行高危命令 Defaults !visiblepw Defaults always_set_home Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin Defaults env_reset # 禁止sudo执行su、vim、bash等可直接提权的命令 运维用户名 ALL=(ALL) !/usr/bin/su, !/usr/bin/bash, !/usr/bin/vim /etc/sudoers, !/usr/bin/visudo 三、系统服务与组件最小化加固系统运行的服务越多，开放的端口与攻击面就越大，黑客可利用的漏洞点就越多。最小化加固的核心，是只保留业务必需的服务与组件，关闭所有非必要内容。3.1 关闭非必要服务，缩小攻击面# 1、查看系统当前运行的所有服务 systemctl list-units --type=service --state=running # 2、停止并禁用非必要服务，示例如下（根据业务实际情况调整） # 禁用打印服务 systemctl stop cups systemctl disable cups # 禁用蓝牙服务 systemctl stop bluetooth systemctl disable bluetooth # 禁用IPv6相关服务（业务不使用IPv6时） systemctl stop ip6tables systemctl disable ip6tables # 禁用rpcbind服务（不使用NFS共享时） systemctl stop rpcbind systemctl disable rpcbind # 3、验证服务状态，确认已停止并禁用 systemctl status cups 3.2 定时任务安全管控定时任务是黑客权限维持的常用载体，需严格管控定时任务的创建权限，定期排查异常任务。# 1、限制允许使用crontab的用户，仅白名单用户可创建定时任务 echo "root" > /etc/cron.allow echo "运维用户名" >> /etc/cron.allow # 不在cron.allow中的用户，一律禁止使用crontab # 2、定期排查所有定时任务，发现异常立即处置 # 查看系统级定时任务 ls -la /etc/cron.d/ /etc/cron.hourly/ /etc/cron.dAIly/ /etc/cron.weekly/ /etc/cron.monthly/ # 查看所有用户的定时任务 cat /etc/passwd | cut -f1 -d: | xargs -I {} crontab -l -u {} 2>/dev/null # 3、给定时任务配置文件添加不可变属性，防止黑客篡改 chattr +i /etc/crontab chattr +i /etc/cron.allow 3.3 软件包与仓库安全加固# 1、删除非官方、不可信的软件源，仅保留官方仓库 # CentOS/RHEL：查看仓库配置 ls /etc/yum.repos.d/ # Ubuntu/Debian：查看仓库配置 ls /etc/apt/sources.list.d/ # 2、配置官方源的HTTPS协议，防止源劫持 # Ubuntu/Debian示例： sed -i 's/http://https://g' /etc/apt/sources.list # 3、禁止内核版本自动更新，避免生产业务兼容性故障 # CentOS/RHEL：yum install -y yum-plugin-versionlock && yum versionlock kernel* # Ubuntu/Debian：apt-mark hold Linux-image-generic Linux-headers-generic # 4、定期清理无用的软件包与依赖，减少攻击面 # CentOS/RHEL：yum autoremove -y # Ubuntu/Debian：apt autoremove -y 四、文件系统与权限安全加固Linux 的一切皆文件，文件权限管控是系统安全的核心，黑客入侵后往往通过文件权限漏洞实现提权、持久化、数据窃取。4.1 关键系统文件权限严格管控# 1、核心账号配置文件权限加固 chmod 644 /etc/passwd chmod 600 /etc/shadow chmod 644 /etc/group chmod 600 /etc/gshadow chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow # 2、SSH配置文件权限加固 chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys chown root:root /root/.ssh /root/.ssh/authorized_keys chmod 600 /etc/ssh/sshd_config chown root:root /etc/ssh/sshd_config # 3、sudo配置文件权限加固 chmod 440 /etc/sudoers chown root:root /etc/sudoers # 4、全局查找全局可写的危险文件，排查权限漏洞 find / -type f -perm -0002 ! -type l -ls 2>/dev/null # 全局查找SUID权限的可执行文件，排查提权风险点 find / -perm -4000 -type f -ls 2>/dev/null 4.2 敏感文件不可变属性锁定通过 chattr 命令给核心配置文件添加不可变属性，即使是 root 用户，也无法修改、删除文件，防止黑客篡改系统配置、植入后门。# 1、锁定核心账号配置文件，禁止账号新增、修改 chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow # 2、锁定SSH与sudo配置文件，防止黑客修改认证规则 chattr +i /etc/ssh/sshd_config /etc/sudoers # 3、锁定定时任务配置，防止黑客植入持久化后门 chattr +i /etc/crontab # 4、查看文件的扩展属性，确认锁定生效 lsattr /etc/passwd # 回滚方法：如需修改文件，先解除锁定 chattr -i 文件名 4.3 分区挂载安全加固通过分区挂载参数，限制高危操作，防止缓冲区溢出、提权攻击，生产环境建议单独给 /boot、/home、/tmp、/var 分区，避免根目录占满导致业务故障，同时配置安全挂载参数。# 1、修改/etc/fstab文件，配置分区安全挂载参数 vi /etc/fstab # 核心加固参数示例： # /tmp分区：禁止SUID、禁止设备文件、禁止可执行程序、禁止强制访问控制 /dev/sdb1 /tmp ext4 defaults,noexec,nosuid,nodev 0 0 # /var分区：禁止SUID、禁止设备文件 /dev/sdb2 /var ext4 defaults,nosuid,nodev 0 0 # /home分区：禁止SUID、禁止设备文件 /dev/sdb3 /home ext4 defaults,nosuid,nodev 0 0 # 2、重新挂载分区，使配置生效 mount -o remount /tmp mount -o remount /var mount -o remount /home # 3、验证挂载参数是否生效 mount | grep /tmp 4.4 核心文件完整性监控部署文件完整性监控工具，实时检测核心文件的修改行为，一旦出现非计划内的变更，立即触发告警，第一时间发现黑客的篡改行为。# 1、安装AIDE文件完整性监控工具 # CentOS/RHEL：yum install -y aide # Ubuntu/Debian：apt install -y aide # 2、初始化AIDE数据库，生成系统文件基线 aide --init mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz # 3、执行完整性检查，对比基线发现文件变更 aide --check # 4、配置定时任务，每天凌晨自动执行检查，发送告警邮件 echo '0 0 * * * root /usr/sbin/aide --check | mail -s "服务器文件完整性告警" 运维邮箱地址' > /etc/cron.d/aide_check 五、网络与防火墙安全加固网络层是阻断外部攻击的关键屏障，通过防火墙、内核参数加固，过滤恶意流量，防止端口扫描、DDoS 攻击、内网横向渗透。5.1 防火墙规则精细化配置根据业务实际需求，配置白名单规则，仅开放业务必需的端口，默认拒绝所有其他访问，这是网络防护的核心原则。适配 CentOS/RHEL 系列（firewalld）# 1、启动firewalld服务并设置开机自启 systemctl start firewalld systemctl enable firewalld # 2、配置默认规则：默认拒绝所有入站流量，允许所有出站流量 firewall-cmd --set-default-zone=drop firewall-cmd --permanent --zone=drop --set-target=DROP # 3、仅开放业务必需的端口，示例： # 开放自定义SSH端口22345，仅允许内网网段访问 firewall-cmd --permanent --zone=drop --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22345" accept' # 开放Web服务80、443端口，允许全网访问 firewall-cmd --permanent --zone=drop --add-port=80/tcp firewall-cmd --permanent --zone=drop --add-port=443/tcp # 开放数据库3306端口，仅允许业务服务器IP访问 firewall-cmd --permanent --zone=drop --add-rich-rule='rule family="ipv4" source address="172.16.1.10/32" port protocol="tcp" port="3306" accept' # 4、重载防火墙规则，使配置生效 firewall-cmd --reload # 5、验证防火墙规则是否生效 firewall-cmd --list-all 适配 Ubuntu/Debian 系列（ufw）# 1、安装并启动ufw防火墙 apt install -y ufw systemctl start ufw systemctl enable ufw # 2、配置默认规则 ufw default deny incoming ufw default allow outgoing # 3、开放业务必需的端口，示例： # 自定义SSH端口22345，仅允许内网网段访问 ufw allow from 192.168.1.0/24 to any port 22345 proto tcp # 开放Web服务80、443端口 ufw allow 80/tcp ufw allow 443/tcp # 开放数据库3306端口，仅允许业务服务器访问 ufw allow from 172.16.1.10/32 to any port 3306 proto tcp # 4、启用防火墙并验证规则 ufw enable ufw status verbose 5.2 内核网络参数安全加固通过修改 /etc/sysctl.conf 内核参数，开启系统自带的网络防护能力，抵御 SYN 洪水、IP 欺骗、ICMP 攻击等常见网络攻击。# 1、备份sysctl配置文件 cp /etc/sysctl.conf /etc/sysctl.conf.bak.$(date +%Y%m%d) # 2、修改内核参数配置 vi /etc/sysctl.conf # 新增/修改以下核心加固配置： # 开启SYN Cookies，抵御SYN洪水攻击 net.ipv4.tcp_syncookies = 1 # 禁用IP源路由，防止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 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.default.secure_redirects = 0 # 开启反向路径过滤，防止IP地址欺骗 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # 禁用IP转发，非网关服务器必须关闭 net.ipv4.ip_forward = 0 net.ipv6.conf.all.forwarding = 0 # 忽略广播ICMP请求，防止Smurf攻击 net.ipv4.icmp_echo_ignore_broadcasts = 1 # 忽略所有ICMP请求，业务不需要时开启 # net.ipv4.icmp_echo_ignore_all = 1 # 开启TCP洪水攻击防护 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2 # 开启地址空间布局随机化，抵御缓冲区溢出攻击 kernel.randomize_va_space = 2 # 3、使内核参数配置生效 sysctl -p 六、日志审计与入侵防御体系建设6.1 日志全量审计与远程同步本地日志可被黑客删除篡改，必须配置日志远程同步，将所有系统日志、认证日志、业务日志实时同步到不可篡改的远程日志平台，这是溯源攻击行为的核心根基。# 1、配置rsyslog日志远程同步，将日志发送到远程日志服务器 vi /etc/rsyslog.conf # 新增配置，将所有日志通过TCP协议发送到远程日志服务器192.168.1.200的514端口 *.* @@192.168.1.200:514 # 2、重启rsyslog服务生效 systemctl restart rsyslog # 3、配置日志轮转，防止日志占满磁盘空间 vi /etc/logrotate.conf # 核心配置： rotate 30 # 保留30天的日志 daily # 每天轮转一次 compress # 压缩历史日志 missingok # 日志文件不存在不报错 notifempty # 空日志不轮转 6.2 系统操作行为全量审计通过 auditd 审计服务，监控所有敏感操作，包括账号修改、文件篡改、命令执行、权限变更，所有操作都会被记录，即使黑客清理了 Shell 历史，也无法删除审计日志。# 1、安装auditd审计服务 # CentOS/RHEL：yum install -y audit # Ubuntu/Debian：apt install -y auditd audispd-plugins # 2、启动服务并设置开机自启 systemctl start auditd systemctl enable auditd # 3、配置审计规则，监控核心敏感操作 vi /etc/audit/rules.d/audit.rules # 新增核心审计规则： # 监控账号配置文件修改 -w /etc/passwd -p wa -k passwd_modify -w /etc/shadow -p wa -k shadow_modify -w /etc/group -p wa -k group_modify # 监控认证配置修改 -w /etc/ssh/sshd_config -p wa -k sshd_modify -w /etc/sudoers -p wa -k sudo_modify # 监控定时任务修改 -w /etc/crontab -p wa -k cron_modify -w /etc/cron.d/ -p wa -k cron_dir_modify # 监控root用户的命令执行 -a exit,always -F arch=b64 -F euid=0 -S execve -k root_exec # 监控SUID提权操作 -a always,exit -F arch=b64 -S execve -F path=/usr/bin/su -k su_exec -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec # 4、重载审计规则生效 augenrules --load # 5、查看审计日志，排查异常操作 ausearch -k passwd_modify ausearch -k sshd_modify 6.3 入侵防御工具部署1、 部署 fail2ban，自动封禁暴力破解 IP：监控 SSH、Web 服务的登录失败日志，连续多次失败后自动封禁 IP，杜绝暴力破解攻击。2、 部署 rkhunter 与 chkrootkit，定期检测 rootkit 后门：每周执行一次全盘扫描，检测黑客植入的 rootkit、后门程序。3、 部署 ClamAV 开源杀毒软件，定期扫描恶意文件：配置定时任务，每天凌晨扫描 Web 目录、临时目录，查杀 WebShell、恶意程序。七、持续运营与应急响应安全加固不是一次性操作，而是持续的运营过程，需建立完整的基线检查、漏洞管理、应急响应机制：1、 每月执行一次系统安全基线检查，对比加固基线，发现配置偏移立即修复2、 每周执行一次系统漏洞扫描，及时安装系统与软件的安全补丁，高危漏洞需 24 小时内完成修复3、 每天审计系统日志与告警信息，发现异常登录、文件修改、端口扫描行为，立即启动应急排查4、 定期备份核心配置文件与业务数据，制定完整的应急响应预案，发生入侵事件时可快速隔离、溯源、恢复业务结尾Linux 服务器安全加固的核心，是构建 “事前预防、事中阻断、事后溯源” 的完整防护体系。没有绝对安全的系统，但通过最小权限、纵深防御、持续审计的加固思路，可最大程度提升服务器的抗入侵能力，将黑客攻击的成本提升到最高，攻击成功率降到最低。