SSH是Linux经常使用的一个功能,但因为其具有的高权限,同时也是成为了一个经常被攻击的目标,很多攻击者都是使用穷举法,不停暴力测试25端口的root密码,为了避免这种攻击,最简单的方法就是将SSH的默认25端口改为一个不常见的端口,如果再配合防火墙的黑名单功能(自动同步SSH恶意攻击黑名单),基本可以杜绝针对SSH的攻击
想要查看自己是否被SSH攻击,可以使用下面的命令
[callout class="info" title="查询SSH是否被攻击攻击"]
- # SSH攻击IP排序
- grep -i -o -E -r -e "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/secure | sort -n | uniq -c | sort -n
- grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
- # SSH 错误登录排序
- lastb | awk '{ print $3}' | sort | uniq -c | sort -nr | more
CentOS 6和CentOS 7系统修改SSH端口的方法
1、首先,为了避免麻烦和出错,先关闭SElinux,我们可以输入下面的命令,快速关闭:
- sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
2、查看SElinux是否返回为disable
- sestatus
- 返回:SELinux status: disable
3、修改ssh的配置文件(如果您不熟悉vi,也可以使用操作比较简单的WinSCP修改)
- vi /etc/ssh/sshd_config
4、#port 22前面的注释#删除,然后添加一行port 12345(新的SSH端口,本文以12345为例,之后不再解释,数字可以随意设置,为防止和常用端口冲突,建议设置为10000-65535之间的端口),如下:
- Port 22
- Port 12345
5、设置防火墙放行ssh新端口:
- # CentOS 6:
- /sbin/iptables -I INPUT -p tcp --dport 12345 -j ACCEPT
- /etc/rc.d/init.d/iptables save
- /etc/rc.d/init.d/iptables restart
- # CentOS 7:
- firewall-cmd --permanent --zone=public --add-port=12345/tcp
- firewall-cmd --reload
6、查看ssh新端口是否已打开:
- # CentOS 6:
- /etc/init.d/iptables status
- # CentOS 7:
- firewall-cmd --permanent --query-port=12345/tcp
7、重启sshd服务:
- # CentOS 6:
- service sshd restart
- # CentOS 7:
- systemctl restart sshd.service
8、删除步骤3、4中的port 22,并使用步骤7的命令再次重启sshd服务
[callout class="warning" title="注意"]修改SSH端口存在一定风险,如果新端口无法登录SSH,千万不要删除22端口,否则将导致无法登录SSH!