
核心要点(TL;DR)
- 及时更新系统补丁是防止已知漏洞利用的最有效方法。
- 禁用root远程登录并强制使用密钥认证可大幅降低SSH爆破风险。
- 配置防火墙白名单策略,仅开放必要端口,减少攻击面。
- 定期检查账户权限和日志,及时发现异常行为。
为什么你的服务器总成为攻击目标?
很多新手在部署服务器后,往往只关注业务上线,而忽略了基础安全加固。默认配置的Linux系统存在大量风险:SSH允许root密码登录、防火墙未启用、系统补丁陈旧……攻击者利用自动化工具扫描互联网,几分钟就能发现这些弱点。本文总结10个必做的基础加固步骤,每个步骤附带具体命令和检查方法,帮助你快速提升主机安全水位,避免成为“肉鸡”。
1. 及时更新系统与软件补丁
超过80%的入侵源于已知漏洞。攻击者利用未修补的漏洞获取权限,因此补丁管理是安全基石。
操作命令:
# CentOS/RHEL
sudo yum update -y
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y建议启用自动安全更新:CentOS安装yum-cron,Ubuntu配置unattended-upgrades。每月至少手动检查一次内核版本,使用uname -r确认是否需重启生效。
2. 强化SSH访问控制
SSH是服务器的大门,默认配置允许root密码登录,极易被爆破。必须修改以下配置(编辑/etc/ssh/sshd_config):
PermitRootLogin no禁止root直接登录PasswordAuthentication no禁用密码认证,改用密钥Port 2222更改默认端口(可选,减少扫描)AllowUsers deploy限制允许登录的用户
修改后重启服务:sudo systemctl restart sshd。生成密钥对:ssh-keygen -t ed25519,将公钥上传至~/.ssh/authorized_keys。测试新连接成功后再关闭当前会话,避免锁死。
3. 配置防火墙最小化开放
默认策略应拒绝所有入站流量,仅按需开放端口。以firewalld为例:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --set-default-zone=drop
sudo firewall-cmd --reload使用iptables则需设置默认DROP:iptables -P INPUT DROP,然后允许ESTABLISHED连接和特定端口。检查规则:iptables -L -n -v。云服务器还需配置安全组,实现双层防护。
4. 管理账户与权限
清理无用账户,避免共享账号。检查命令:
awk -F: '(>=1000){print }' /etc/passwd列出普通用户passwd -l username锁定账户usermod -L username锁定密码
为sudo用户配置最小权限,编辑/etc/sudoers使用visudo。禁止su到root:echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su,仅允许wheel组切换。
5. 启用日志与监控
日志是发现入侵痕迹的关键。确保rsyslog服务运行,关键日志包括:
/var/log/secure(认证日志)/var/log/auth.log(Debian系)/var/log/cron(计划任务)
使用journalctl -u sshd --since "1 hour ago"查看SSH事件。配置logrotate避免磁盘占满。可安装auditd监控关键文件访问:auditctl -w /etc/passwd -p wa -k passwd_changes。
6. 安装入侵检测与防病毒
基础防护包括:
- Fail2ban:自动封禁暴力破解IP。安装后配置
/etc/fail2ban/jail.local启用sshd规则。 - rkhunter:扫描rootkit和后门。运行
rkhunter --check。 - ClamAV:查杀恶意软件。定期执行
clamscan -r /home。
这些工具能补充系统自身防护,建议每周执行一次扫描。
7. 加固内核参数
调整内核参数可抵御部分网络攻击。编辑/etc/sysctl.conf添加:
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_syncookies = 1
kernel.randomize_va_space = 2执行sysctl -p生效。这些配置能缓解IP欺骗、SYN Flood等攻击。
8. 文件权限与敏感信息保护
确保关键文件权限正确:
/etc/passwd权限644,/etc/shadow权限600- 家目录权限750,避免其他用户读取
- 查找全局可写文件:
find / -type f -perm -o+w -exec ls -l {} \;
使用chmod和chown修正。敏感配置文件(如数据库密码)不应放在Web目录下。
9. 定期备份与恢复演练
备份是最后一道防线。使用rsync或tar定期备份关键数据:
tar -czf /backup/etc-$(date +%F).tar.gz /etc /home /var/www将备份存储到异地或对象存储,并设置保留策略。每季度进行一次恢复演练,确保备份有效。注意备份文件权限,避免泄露。
10. 制定安全基线并持续检查
将上述步骤固化为检查清单,使用自动化工具定期核查。例如,使用lynis进行系统审计:lynis audit system,根据报告修复问题。对于多台服务器,可借助Ansible批量执行加固脚本。考虑使用AegisX的主机安全能力,实时监控异常登录、文件变更和漏洞风险,将被动防御转为主动发现。
行动建议
安全加固不是一次性任务,而是持续过程。建议立即执行以下动作:1)更新所有补丁;2)修改SSH配置禁用密码登录;3)启用防火墙并仅开放必要端口;4)安装Fail2ban;5)创建定期检查任务。完成这10步后,你的服务器安全基线将显著提升,但需记住:安全是动态的,保持学习和监控才能应对不断变化的威胁。
常见问题(FAQ)
新手如何快速检查Linux服务器是否安全?
可以从基础项入手:检查系统补丁是否最新、SSH是否禁用root登录、防火墙是否启用、是否有异常账户或进程。使用命令如`lastb`查看登录失败记录,`netstat -tulnp`检查监听端口,`grep -i 'Failed' /var/log/secure`排查暴力破解。定期执行这些检查能发现大部分常见风险。
为什么必须禁用root的SSH远程登录?
root账户拥有最高权限,一旦被暴力破解或泄露,攻击者可直接控制整台服务器。禁用root远程登录后,攻击者需先破解普通账户再提权,增加了难度。同时应配合密钥认证和Fail2ban等工具,进一步阻断爆破尝试。
防火墙配置应该注意哪些原则?
遵循最小化开放原则:仅允许业务必需的端口(如80、443),其他一律拒绝。默认策略设为DROP,按需添加白名单IP。使用iptables或firewalld时,注意规则顺序,先允许已建立的连接,再拒绝非法流量。定期审查规则,移除过期条目。
如何检测服务器是否被植入后门?
检查异常进程、定时任务、启动项和网络连接。使用`ps aux`查看可疑进程,`crontab -l`检查计划任务,`netstat -antp`观察异常外连。还可使用rkhunter、chkrootkit等工具扫描rootkit。发现异常文件(如/tmp下可执行文件)应立即隔离分析。
安全加固后如何持续维护?
建立定期巡检机制:每周检查补丁更新、日志审计、账户变动;每月进行漏洞扫描和配置核查。使用自动化工具如Ansible批量执行基线检查,或借助AegisX的主机安全模块实时监控异常。同时保留操作记录,便于追溯。