修改ssh端口
其实之前也看过相关文章,说要修改ssh默认端口22以提高安全性,但也有文章指出,如果对方有意爆破的话,他也可以扫描你所有端口。
我个人比较认同后面的说法,觉得高强度的长密码才是王道。当然也有懒的原因。
但是还是决定要修改端口号了。
原因是看了这篇文章《虚拟主机和VPS的几个区别》http://www.auiou.com/relevant/00001444.jsp
提到“尤其是Linux主机下的/var/log/btmp文件的增长速度特别快”。
笛声大佬评论说:
你怎么总是纠结 /var/log/btmp 这个文件,这个文件你用 lastb -f /var/log/btmp
看看,里面全是记录了失败的登录,就是说有人一直在爆破你的密码,你把sshd的端口改一下,一般就没人来爆破了,我登录了好几台机器去看了,这个文件大小一直是0。
所以虽然目前我的vps没有被破,但是为了节约磁盘空间,还是说干就干。
第一、修改 /etc/ssh/sshd_config
找到#Port 22,再插入一行设置成你想要的端口号,注意不要跟现有端口号重复。建议一万以上的,当然要小于65535。
第二、重启ssh: systemctl restart sshd
第三、用你刚才的端口登录进去,如果成功了,就注释掉port 22,继续重启ssh。
第四、用端口22登录,发现登不了了,再用新端口,能用,那么就恭喜啦!
另附:清空文件的方法
: > filename
> filename #最简单,推荐
echo "" > filename
echo > filename
1和2两种方式是0字节,3和4两种方式是1字节。
清空多个文件,比如清空多个log:
ls *.log | awk 'NR>1 {print "echo > " $NF }' |sh
为什么要清空文件,而不是删除文件呢?其实还可以写一篇文章,但我还是一并写在这里了。有一次按照网上的文章,删除了许多log文件,但是nginx等却启动不了了,要手动启动。我感觉linux下的软件简直是白莲花,就不能像windows下面的软件一样,自己再生成文件吗?比如Windows下某某软件,我删了他的缓存,启动该软件后,它又重新生成了一堆缓存。感觉自己是习惯了这些流氓行为,而对linux下的白莲花行为不习惯呢!(晕……)
附上勇哥的脚本:
port='3635'; a=''; a2='/etc/ssh/sshd_config'; a1=`cat $a2`; if [[ $a1=~ '#Port 22' ]]; then sed -i "s/#Port 22/Port $port/g" $a2; fi; if [[ $a1 =~ 'Port 22' ]]; then sed -i "s/Port 22/Port $port/g" $a2; fi; if [[ $a1 =~ 'Port ' ]]; then a=''; else sed -i '$a\'"\nPort $port" $a2; fi; reboot;
请修改上述的 port='3635'; 的值.
其实修改了端口也有很大作用的,扫ssh都是机器,它们才懒得换端口,不是22的基本躲过了99%的扫描。
是的,改了端口至少躲了绝大部分扫描,除非他特意针对你。
加个fail2ban完事儿
修改了SSH的端口,确实感觉超棒!但是我发现在Ubuntu、Debian下修改SSH端口没问题,在CentOS 7.6下修改后无法连接SSH。我主要用Ubuntu系统,CentOS 7.6没来得及多测试。
分享一段我写的更改SSH端口的自动修改命令,省得下载、修改、上传了,批量管理VPS的福音:
port='3635'; a=''; a2='/etc/ssh/sshd_config'; a1=`cat $a2`; if [[ $a1 =~ '#Port 22' ]]; then sed -i "s/#Port 22/Port $port/g" $a2; fi; if [[ $a1 =~ 'Port 22' ]]; then sed -i "s/Port 22/Port $port/g" $a2; fi; if [[ $a1 =~ 'Port ' ]]; then a=''; else sed -i '$a\'"\nPort $port" $a2; fi; reboot;
请修改上述的 port='3635'; 的值.
因为你没修改CentOS的SeLinux里面的端口,或者关闭SeLinux也行。
谢谢勇哥,下一个vps可以用一下。
linux下的各种log,我几乎都懒得管。
不过任何一个机子到手,不应该立即改ssh端口吗?
主要是懒。(*^__^*)