今天有一位朋友的服务器IP被爆露了,然后,它的ssh端口一直被攻击,主要是被爆破,提示“自上次成功登录以来,发生了1651次失败的登录尝试。”
虽然说他网站也做了CDN,但还是被破解了。毕竟CDN也不是100%能防住的,有时候也需要数据回源。
解决这个问题:
最快的方法肯定就是修改ssh端口号,虽然还有其它的解决方法,例如:可以用密钥来登陆,甚至是禁root登陆,这里就暂时不讲了。
一、关闭防火墙
这里主要是告诉新人,防火墙开着,结果没关闭,你又已经改了ssh端口号了,到时候你会登陆不上服务器的。虽然说你也可以从服务器控制面板再改回来,但是麻烦。
如果你的服务器没有启动任何防火墙,这步就可以直接跳过。
以我的centos7为例子,防火墙主要用的就是:firewalld,可能有些人用的是iptables。命令如下:
关闭FirewallD防火墙:
systemctl stop firewalld #停止服务
systemctl disable firewalld #禁止开机启动
关闭iptables防火墙命令:
systemctl enable iptables
二、修改ssh配置文件
1、打开 /etc/ssh/sshd_config
[root@localhost ]# vim /etc/ssh/sshd_config
2、找到 Port ,先注释掉再添加一行新的,例如:在#Port 22后添加Port 25533
最好选择端口在20000以上的没有用到的端口,防止被轻易破解!
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
Port 25533
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
三、重启ssh服务
重启SSH服务,让ssh配置文件生效。
[root@localhost ]# systemctl restart sshd
或
[root@localhost ]# /etc/rc.d/init.d/sshd restart
四、启动防火墙
以我的Centos7防火墙firewalld为例子,启动FirewallD防火墙服务命令如下:
[root@localhost ]# systemctl enable firewalld #设置开机启动
[root@localhost ]# systemctl start firewalld #开启服务
五、测试是ssh修改端口否成功?并让防火墙开放新的端口
这里为了保险起见,必须先测试成功后,再让防火墙开放端口。可能很多人并没有做任何测试?直接就防火墙开放了,这样也不是不可以,但是不够稳当。
1、用Xshell工具连接是正常的,说明没问题。
2、现在你可以把ssh修改端口再次放行到防火墙中。
以我的Centos7防火墙firewalld为例子,命令如下:
[root@localhost ]# firewall-cmd --zone=public --add-port=25533/tcp --permanent #作用域是public,开放tcp协议的25533端口,一直有效
[root@localhost ]# firewall-cmd --reload #重启firewall防火墙服务
总结:
对于老手来说,其实很简单,一句话其实就可以讲明白。文章讲的步骤还有点啰嗦,主要是怕新手不懂,只能把操作步骤写详细点。
2022年08月27日 18:16:03 沙发
第一步不应该有,否则第四步执行不了,防火墙关闭状态下无法放行端口
2022年08月27日 19:23:53 1层
@dd 重新开启一下防火墙就行了,我文章内容已经更新了。