网站服务器修改SSH默认22端口

默认ssh端口为 22,总是被人扫描登录。每天都有来自全国各地的不法分子非法暴力破解我的服务器密码,极为耗费资源。本文介绍我修改默认端口号的方法。


服务器日志显示很多的异地iP尝试暴力破解我的服务root账号。

0x1首先找到SSH服务位置

0x2 打开配置文件


会出现如下提示,大家能够看到#port 22,代表默认端口22。按下键盘的i,vi命令中i是编辑,你按下i之后进入插入状态,这时候可以用键盘的上下键移动绿色光标并用键盘的delete键删除前面的#号,注释掉22端口。

为什么要先把port 22前面的 # 去掉呢?因为在配置文件中,# 是linux的注释,凡是#后的代码都不会执行。而SSH默认的端口为22,所以配置文件在默认的情况下以#出现。当你需要更改为其它端口或添加多端口同时SSH访问时,就要删掉注释符号,让程序能够执行你的命令。

0x3添加新的端口号

另起一行手动添加新的端口(自定义端口建议选择5位数端口如:10000-65535之间 ),保留22是为了防止防火墙屏蔽了其它端口导致无法连接VPS,比如你注释了端口22,新添加的12366端口防火墙也没放行,那么恭喜你给自己挖坑了,可能下次你就无法通过SSH连接VPS了。为了防止这种尴尬的情况发生,就要给自己留条后路,等到新端口可以正常连接SSH了,再删除22端口也不迟。
这时候按键盘的“ESC”键退出当前状态,再输入“:wq”命令保存退出。

0x4重启SSH服务并重新连接

退出当前连接的SSH窗口,连接新的端口号。


这时候悲催的发现连不上服务器了,分析了一下是因为没有把9856端口添加到服务器的防火墙里面导致的,好在刚才给自己留了后门!所以再重复上面第四步把SSH的端口号改回到22,登陆到服务器。

0x5添加防火墙放行端口

CentOS7使用firewall工具管理防火墙,代替了原来的iptables

如果是老版的CentOS,防火墙可能是iptables,可以用下面的方法。

添加新的端口,就是设置的SSH的端口号。修改配置文件后重启防火墙。

我的服务器用了最新的firewall工具管理防火墙,所以传统的方式不管用。
操作步骤如下:

常用的firewall命令常用命令介绍

firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
firewall-cmd --remove-port=80/tcp --permanent ##永久移除80端口
firewall-cmd --list-ports ##查看已经开放的端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助

0x6查看防火墙状态并检测是否成功更换端口


可以看到已经有新的端口放行了。
下面重复0x4步里面的修改SSH软件端口的步骤,改为9856端口,连接服务器。弹出提示中选择“接受并保存”,以后再连接服务器就不会有这个提示了。
当新端口能正常登陆后,重复上面第一步的操作,把刚才留的后门22端口删除掉。然后按照上面第三步的命令重启SSH。


下面总结一下知识点