我的 Centos 7.5 服务器在过去几天收到了数千次传入 SSH 登录尝试,今天我无法登录到我的 VNC 客户端,因为它只是说“太多安全故障”。所以想请问一下我有什么办法可以解决这个问题?我读到隧道可以解决这个问题,但我只是不想使用它,因为它太麻烦了。
答案1
SSH
禁用直接 root 访问:
cat /etc/ssh/sshd_config | grep PermitRootLogin
应设置为:
PermitRootLogin no
强制执行 SSH 协议版本 2:
cat /etc/ssh/sshd_config | grep Protocol
应设置为:
Protocol 2
将端口更改为随机端口,例如 56789:
cat /etc/ssh/sshd_config | grep Port
应设置为:
Port 56789
在防火墙上打孔:
sudo iptables -A INPUT -p tcp -m tcp --dport 56789 -m comment --comment "SSH custom port" -j ACCEPT
生成新的公钥/私钥对:
ssh-keygen -t rsa -b 4096
添加此密钥并验证没有其他密钥:
eval $(ssh-agent -s) ssh-add ssh-add -l
将导致:
4096 SHA256:gibberish /home/fictional_user/.ssh/id_rsa (RSA) 4096 SHA256:gibberish fictional_user@fictional_computer (RSA)
将公钥导入到将维护服务器的客户端计算机上:
ssh-copy-id fictional_user@public_ip -p 56789
然后,完全禁用密码验证:
cat /etc/ssh/sshd_config | grep PasswordAuthentication
应设置为:
PasswordAuthentication no
虚拟网络控制器
您应该只允许特定的 IP 地址范围,例如仅对于默认本地网络,它会类似于(带有iptables
):
sudo iptables -A INPUT -p tcp -m tcp --dport 5900 -m comment --comment "VNC on desktop: local network only" -m iprange --src-range 192.168.0.1-192.168.0.254 -j ACCEPT