更改ssh端口
1024以内的端口都不建议,这些是特权端口,改了可能会出问题
sudo nano /etc/ssh/sshd_config找到 #Port 22,改为:比如25963
Port ****(****指具体更改的端口)保存退出(Ctrl+O → Enter → Ctrl+X),然后重启 SSH:
sudo systemctl restart sshd开启防火墙
安装并配置 UFW:
sudo apt update && sudo apt install ufw -y设置默认规则:
sudo ufw default deny incoming # 默认拒绝所有入站
sudo ufw default allow outgoing # 默认允许所有出站放行必要端口(启用前必须做!):
# 先放行当前 SSH 端口 22,否则启用后会把自己锁在外面
sudo ufw allow 22/tcp
# 同时放行你想换的新端口,比如 2222
sudo ufw allow 2222/tcp如果你还跑了 web 服务、代理节点等,也一并加上,比如:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# s-ui 面板端口也记得加启用 UFW:
sudo ufw enable
# 会提示"可能断开连接",输入 y 确认开启fail2ban
安装fail2ban:
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban装完确认在跑:
sudo fail2ban-client status如果上条指令报错,说明系统 SSH 日志是走 systemd journal 而不是传统的 /var/log/auth.log 文件:
在 jail.local 里指定用 journal 后端就能解决:
sudo nano /etc/fail2ban/jail.local写入:(注意这条指令里面的port后面的数字,需要对应你实际的ssh端口,如果你的端口是22,请把25963改成22)
[sshd]
enabled = true
port = 25963
backend = systemd
maxretry = 3
findtime = 10m
bantime = 1h保存后启动:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd应该能看到正常输出,类似:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
`- Actions
|- Currently banned: 0
`- Total banned: 0关闭ipv6
临时禁用
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1写入 sysctl.conf(持久化)
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p修改GRUB 内核参数(最彻底)
nano /etc/default/grub
# 在 GRUB_CMDLINE_LINUX_DEFAULT 里加上:
GRUB_CMDLINE_LINUX_DEFAULT="quiet ipv6.disable=1"
# 然后更新 grub
update-grub # Debian/Ubuntu
# 或
grub2-mkconfig -o /boot/grub2/grub.cfg # CentOS/RHEL