
核心要点(TL;DR)
- 禁用root远程登录并修改SSH端口可大幅降低暴力破解风险。
- 配置防火墙仅开放必要端口,默认拒绝所有入站流量。
- 定期更新系统补丁并启用自动安全更新是基础防护。
- 使用fail2ban等工具监控日志并自动封禁恶意IP。
为什么你的服务器总成为攻击目标?
很多运维和站长在服务器上线后只关注业务部署,却忽略了基础安全加固。默认配置的SSH允许root密码登录、防火墙未启用、系统补丁滞后,这些都会让服务器在几小时内被扫描器盯上。本文提供一份针对CentOS/Ubuntu的15项必做基线配置清单,每项都给出具体命令和检查方法,帮你快速堵住常见漏洞。
1. 账户与权限加固
1.1 禁用root远程登录
编辑/etc/ssh/sshd_config,设置PermitRootLogin no,然后重启sshd:systemctl restart sshd。检查:sshd -T | grep permitrootlogin应返回permitrootlogin no。
1.2 创建普通管理账户并配置sudo
使用useradd -m -s /bin/bash admin创建账户,passwd admin设置强密码,然后usermod -aG wheel admin(CentOS)或usermod -aG sudo admin(Ubuntu)赋予sudo权限。
1.3 锁定系统账户
运行 可通过检查SSH配置、防火墙状态、账户权限、日志审计等关键项来验证。例如运行`sshd -T | grep permitrootlogin`查看root登录是否禁用,`firewall-cmd --list-all`或`ufw status`查看防火墙规则,`awk -F: '(==0)' /etc/passwd`检查UID为0的账户。建议使用自动化工具如Lynis进行基线扫描。 主要区别在于包管理器和防火墙工具:CentOS使用yum/dnf和firewalld,Ubuntu使用apt和ufw。此外,SELinux默认在CentOS启用,而Ubuntu使用AppArmor。但核心加固原则相同,如SSH配置、账户权限、日志管理等。本文命令同时涵盖两者,注意替换对应工具即可。 首先确保防火墙已放行新端口,并保留当前SSH会话不要断开。然后使用新端口测试连接,如`ssh -p 新端口 user@ip`。若连接失败,可通过控制台登录服务器,检查sshd配置和防火墙规则。建议在修改前先备份配置文件,并确保有备用访问方式(如VNC)。 在firewalld中可使用rich规则:`firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'`,然后重载。在ufw中可执行:`ufw allow from 192.168.1.100 to any port 22`。这样仅允许指定IP连接SSH,大幅降低攻击面。 是的,安全加固不是一劳永逸的。需要定期更新系统补丁、审查日志、检查账户权限、更新防火墙规则等。建议每月进行一次安全巡检,关注CVE漏洞公告,并及时应用安全更新。可设置自动化任务如`unattended-upgrades`(Ubuntu)或`yum-cron`(CentOS)来辅助。awk -F: '(常见问题(FAQ)
如何检查服务器是否已经进行了安全加固?
CentOS和Ubuntu在安全加固上有哪些主要区别?
修改SSH端口后无法连接怎么办?
如何设置防火墙只允许特定IP访问SSH?
服务器安全加固后需要定期维护吗?