防止服务器SSH被暴力破解

防止服务器SSH暴力破解

SH端口为22,如果有看登入记录会发现一旦IP地址暴露到网络,每时每刻都有人在尝试破解密码,每次登录都能看到成百上千,有时甚至几万的失败次数。

而修改端口则是最一劳永逸的办法,只要没有人定点爆破的话基本上就足够安全了。

手动修改端口

修改ssh配置文件并重启ssh服务

1
vi /etc/ssh/sshd_config

找到Port行,去掉头部的#,修改为自定义端口(10000以上)

1
2
3
4
5
# Debian / Ubuntu
service ssh restart

# CentOS / RHEL
service sshd restart

这是方法效率最高,因为90%以上的通过脚本的暴力破解都是盯着22端口去,很少有人会耗费精力扫描其他端口,除非被特殊照顾。

脚本添加ip到host.deny

/var/log/secure中,可以查看所有的ssh访问记录,通过命令行 #cat /var/log/secure | grep Failed 统计失败的ip访问

添加 allow

先把始终允许的IP填入 /etc/hosts.allow,这很重要!比如:

sshd:132.213.:allow

脚本添加 deny

/etc/hosts.deny 中添加禁止ip,脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#Denyhosts SHELL SCRIPT

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"=" $1;}' >/root/blocklist.txt
DEFINE="10"
for i in `cat /root/blocklist.txt`
do
IP=`echo $i|awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ]
then
ipExists=`grep $IP /etc/hosts.deny |grep -v grep |wc -l`
if [ $ipExists -lt 1 ]
then
echo "sshd:$IP" >> /etc/hosts.deny
fi
fi
done

定时任务 10分钟一次

crontab -e

1
*/10 * * * *  sh /usr/local/bin/secure_ssh.sh

在vim中 i表示进入编辑,esc退出编辑 :wq保存退出 :q!不保存退出

最后查看屏蔽列表 cat /root/blocklist.txt

一键脚本Fail2ban

Fail2ban是Github上的一键脚本
功能齐全,支持 Centos 6/7 Ubuntu 14.04/16.10 Debian 7/8 (x86/x64)

  1. 自助修改SSH端口
  2. 自定义最高封禁IP的时间(以小时为单位)
  3. 自定义SSH尝试连接次数
  4. 一键完成SSH防止暴力破解

安装

1
wget https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/fail2ban.sh && bash fail2ban.sh 2>&1 | tee fail2ban.log
  1. 第一步选择是否修改SSH端口。
  2. 第二部输入最多尝试输入SSH连接密码的次数
  3. 第三部输入每个恶意IP的封禁时间(单位:小时)

卸载

1
wget https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/uninstall.sh && bash uninstall.sh

注意事项

如果你需要更改SSH端口,请记得在防火墙或者安全组中开放新的SSH端口
安装完成后请会重启SSH服务,请重新连接SSH会话
若出现SSH无法连接的情况,请检查是否修改过SSH端口,请填写写改后的正确端口进行连接

文章作者: cpacm
文章链接: http://www.cpacm.net/2019/09/23/防止服务器SSH被暴力破解/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cpacm
打赏
  • 微信
  • 支付宝

评论