更多服务器知识,尽在hostol.com
嘿,各位服务器的"守护者"们!当你拿到一台崭新的Linux服务器,或者接手一台正在运行的服务器时,脑子里是不是会闪过一丝丝关于安全的担忧?"我的服务器安全吗?""会不会有什么漏洞被人利用?"这些问题可一点都不过分!在网络世界里,安全就像给你的数字城堡装上坚固的门窗和警报系统。今天,Hostol就为你准备了这份详尽的Linux服务器安全基线Checklist,它就像一份装修指南,告诉你哪些地方必须加固,哪些习惯必须养成。让我们一起动手,把安全工作做到位!
一、用户账户与密码策略:守好第一道门
用户账户是进入服务器的第一道关卡,这里的安全措施可不能马虎。
1. 禁用 root 用户直接SSH登录
root
用户权限太高,就像是万能钥匙,一旦被坏人拿到,后果不堪设想。我们应该用普通用户登录,需要时再通过sudo
提权。
操作: 编辑SSH配置文件 /etc/ssh/sshd_config
,找到或添加下面这行:
PermitRootLogin no
然后重启SSH服务:sudo systemctl restart sshd
(或 sudo service ssh restart
)。从此,root
想直接敲门进来?没门!
2. 创建强密码的普通用户并使用sudo
为自己创建一个日常使用的普通账户,密码一定要复杂,包含大小写字母、数字和特殊符号,长度至少12位以上。忘记密码复杂度要求?想想那些让你抓狂的网站注册密码规则就对了!
$ sudo adduser your_username
$ sudo usermod -aG sudo your_username # 将用户添加到sudo组
3. 定期审计用户账户
时不时检查一下服务器上有哪些用户(cat /etc/passwd
),特别是那些你不认识的或者不再需要的账户,及时清理或禁用 (sudo passwd -l username
来锁定账户)。
4. 强制定期更换密码 (可选,但推荐)
虽然SSH密钥更推荐,但如果仍使用密码,可以设置密码过期策略,比如使用chage
命令。这就像银行卡密码,隔段时间换换更安心。
$ sudo chage -M 90 your_username # 设置your_username密码90天后过期
二、SSH 服务加固:远程连接的安全通道
SSH是我们远程管理服务器的主要方式,它的安全至关重要。
5. 更改默认SSH端口 (有争议,但可作为一层模糊)
默认的22端口是攻击者最先扫描的目标。虽然改端口不能从根本上阻止专业攻击,但能挡掉不少脚本小子。就像把贵重物品从客厅显眼位置挪到卧室,小偷不一定第一时间找到。
操作: 编辑 /etc/ssh/sshd_config
,修改 Port 22
为一个不常用的端口 (例如 Port 2222
)。记得在防火墙里放行新端口哦!
6. 禁用SSH密码认证,强制使用密钥认证
SSH密钥对认证远比密码认证安全。密码可能会被暴力破解,而私钥掌握在你手里,没它谁也进不来。
操作: 在 /etc/ssh/sshd_config
中设置:
PasswordAuthentication no
PubkeyAuthentication yes
确保你已经正确配置了SSH密钥对并能成功登录后再禁用密码认证!不然把自己锁在门外就尴尬了。
7. 限制SSH登录用户
只允许特定的用户或用户组通过SSH登录。
操作: 在 /etc/ssh/sshd_config
中添加 (示例):
AllowUsers your_username another_user
# 或者 AllowGroups ssh_allowed_group
8. 使用 Fail2Ban 防止暴力破解
Fail2Ban能监控系统日志,自动封禁那些多次尝试登录失败的IP地址。它就像一个警惕的保安,发现可疑分子就直接拉黑。
$ sudo apt install fail2ban # Debian/Ubuntu
$ sudo systemctl enable --now fail2ban
可以根据需要配置 /etc/fail2ban/jail.local
文件。
三、系统更新与补丁管理:填补已知的漏洞
软件漏洞是黑客入侵的常见途径,及时打补丁非常重要。
9. 定期更新系统和软件包
养成定期检查并安装系统和应用软件更新的好习惯。这就像给你的操作系统和应用打"疫苗"。
$ sudo apt update && sudo apt upgrade # Debian/Ubuntu
$ sudo yum update # CentOS/RHEL (或 dnf upgrade)
10. (可选) 配置自动安全更新
对于某些关键的安全更新,可以考虑配置系统自动安装。比如Ubuntu下的unattended-upgrades
包。
四、防火墙配置:网络边界的守护神
防火墙是控制服务器网络流量进出的第一道防线,默认拒绝所有,按需开放。
11. 启用并配置防火墙 (如UFW或firewalld)
UFW (Uncomplicated Firewall) 是Ubuntu上简单易用的防火墙工具。CentOS/RHEL常用firewalld。
UFW示例:
$ sudo ufw default deny incoming # 默认拒绝所有入站连接
$ sudo ufw default allow outgoing # 默认允许所有出站连接
$ sudo ufw allow ssh # 允许SSH (如果你改了端口,这里也要改,如 ufw allow 2222/tcp)
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw enable # 启用防火墙
只开放你确实需要的服务端口,其他的一律关掉!
五、服务与端口最小化:减少攻击面
运行的服务越少,系统暴露的潜在攻击面就越小。
12. 禁用不必要的服务
检查系统上运行的服务 (sudo systemctl list-units --type=service --state=running
),把那些用不上的服务禁用掉 (sudo systemctl disable --now service_name
)。这就像家里没人时关掉不必要的电器,既安全又省资源。
13. 检查监听的网络端口
使用 ss -tulnp
或 netstat -tulnp
查看哪些端口正在监听,确保都是你预期中的服务。
六、日志审计与监控:洞察异常的眼睛
日志文件记录了系统运行的蛛丝马迹,是排查问题和发现安全事件的重要依据。
14. 确保关键日志正常记录
例如 /var/log/auth.log
(或 /var/log/secure
) 记录认证信息,/var/log/syslog
(或 /var/log/messages
) 记录系统消息。
15. 定期审查日志
虽然枯燥,但定期看看日志,特别是登录尝试、错误信息等,可能会发现异常。
16. (进阶) 文件完整性监控
工具如 AIDE (Advanced Intrusion Detection Environment) 可以创建系统文件的快照,并定期比较,发现未经授权的更改。这就像给重要文件拍了照,有人动过手脚就能看出来。
七、(可选) 内核参数调整:更深层的防御
通过调整sysctl
参数,可以增强系统抵抗某些网络攻击的能力。
17. 例如启用SYN Cookies、禁用IP源路由等
编辑 /etc/sysctl.conf
或在 /etc/sysctl.d/
目录下创建自定义配置文件。例如:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
修改后执行 sudo sysctl -p
使其生效。这些参数比较专业,修改前请确保理解其含义。
八、定期备份:灾难恢复的生命线
这虽然不是直接的"防御"措施,但却是安全策略中不可或缺的一环!
18. 制定并执行可靠的备份策略
定期备份你的重要数据和系统配置,并确保备份文件存储在安全的地方(最好是异地)。万一服务器被黑或者发生硬件故障,备份就是你最后的救命稻草。
搞定!这份Checklist是不是让你对服务器安全有了更清晰的认识?记住,安全不是一劳永逸的事情,它是一个持续的过程,需要你定期检查、更新和调整。就像给你的数字城堡定期巡逻、加固城防一样。把这些好习惯融入日常运维中,你的服务器就能更从容地应对网络世界的风风雨雨。在Hostol,我们也非常重视服务器的安全,希望这份指南能助你一臂之力!如果你还有其他安全方面的疑问,欢迎随时交流!