Linux服务器安全加固从哪些层面入手
服务器暴露在公网,第一波攻击基本来自扫描器和撞库脚本。安全加固不是装个杀毒软件的事,而是把攻击面逐项收口:SSH入口、账号权限、端口暴露、日志审计。下面按这个顺序给出可直接执行的加固步骤,适用于CentOS、Ubuntu等主流发行版。
SSH安全配置:密钥登录与禁止root远程登录
密码登录被爆破是服务器被入侵最常见的方式。改成密钥登录后,攻击者没有私钥,爆破无从下手。
# 客户端生成密钥对
ssh-keygen -t ed25519 -C "ops@example.com"
# 把公钥拷到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
确认密钥能登录后,修改 /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
Port 2222
改动后重启服务并先保持一个会话不退出,验证新端口能登录再关旧会话:
systemctl restart sshd
ss -tlnp | grep :2222
fail2ban入侵检测:拦截爆破与恶意扫描IP
fail2ban监控日志里的失败登录行为,触发规则后调iptables/nftables临时封禁IP。安装启用:
apt install fail2ban # 或 yum install fail2ban
核心配置 /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 3600
findtime = 600
含义:10分钟内登录失败5次,封禁该IP 1小时。启用并验证:
systemctl enable --now fail2ban
fail2ban-client status sshd
实际观察中,公网服务器sshd一天可能收到几千次失败尝试,bantime调大(如86400)能显著减少骚扰流量。
系统层加固:防火墙、sudo权限与最小化服务
用ufw或firewalld按最小原则开放端口,业务只留SSH、Web、数据库对应端口,其余全部拒绝:
ufw default deny incoming
ufw allow 2222/tcp
ufw allow 80,443/tcp
ufw enable
sudo授权用sudoers单条给,不要给普通账号 ALL 权限。禁用不需要的系统服务,删除没有在用的账号,降低被利用的面。
服务器安全巡检与日志审计方法
定时检查这几个位置,能发现大多数异常:
- /var/log/auth.log(Debian系)或/var/log/secure(RedHat系):登录与sudo记录
- /etc/passwd 最近修改的账号,确认没有多余UID=0的账号
- crontab -l 与 /etc/cron.d:排查定时任务里夹带的可疑脚本
- last / lastb:最近登录成功与失败记录
加固是动态过程,每次上线新服务都要重新过一遍端口和权限清单,配合日志留存(如rsyslog转发到远端),出事才有迹可查。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-zhan-ssh-jia-gu-yu/