更改ssh端口,开启防火墙,开启fail2ban以及关闭ipv6

更改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

dark
sans