Linux 服务器初始安全加固指南

新拿到一台 VPS,第一件事不是装服务,而是安全加固。这篇讲讲我的基线配置。

SSH 安全

1. 禁止密码登录

编辑 /etc/ssh/sshd_config

PasswordAuthentication no

PubkeyAuthentication yes

重启 SSH:

systemctl restart sshd
前提:确保公钥已添加,否则会连不上!

2. 换端口

默认 22 端口全是扫描,改成高位端口:

Port 22222

3. 禁止 root 登录

PermitRootLogin no

新建普通用户,用 sudo 提权。

防火墙

UFW(Ubuntu)

# 开启防火墙

ufw enable

只开放必要端口

ufw allow 22/tcp # SSH

ufw allow 80/tcp # HTTP

ufw allow 443/tcp # HTTPS

ufw allow 22222/tcp # 你的 SSH 新端口

查看状态

ufw status verbose

FirewallD(CentOS)

systemctl enable firewalld

firewall-cmd --permanent --add-port=22/tcp

firewall-cmd --permanent --add-port=80/tcp

firewall-cmd --permanent --add-port=443/tcp

firewall-cmd --reload

Fail2Ban

自动封掉暴力破解 SSH 的 IP:

apt install fail2ban

配置

cat > /etc/fail2ban/jail.local << 'EOF'

[sshd]

enabled = true

port = 22222

filter = sshd

logpath = /var/log/auth.log

maxretry = 3

bantime = 3600

EOF

systemctl restart fail2ban

自动更新

apt install unattended-upgrades

dpkg-reconfigure -plow unattended-upgrades

选择自动安装安全更新。

用户管理

添加用户

adduser anna

usermod -aG sudo anna

SSH 公钥

mkdir -p /home/anna/.ssh

chmod 700 /home/anna/.ssh

touch /home/anna/.ssh/authorized_keys

粘贴你的公钥

日志监控

定期检查日志:

# 失败的 SSH 登录

grep "Failed password" /var/log/auth.log | tail -20

最近的登录

last | head -20

我写了定时脚本,每周发邮件汇总异常登录。

总结

安全加固就几点:

- SSH — 公钥登录、换端口、禁 root

- 防火墙 — 只开必要端口

- Fail2Ban — 自动封暴力破解

- 更新 — 自动打补丁

- 监控 — 定期看日志

一套下来,被黑概率降 90%。