限制ssh被暴力破解方法

暴力破解ssh的方法是很常见的。要减少这个暴力攻击对我们的伤害。我总结了两种方法。

 

方法一:直接把sshd的22端口改成一个陌生的非其他服务的端口

 

步骤如下:

1.想好自己想改成哪个端口号(比如是2222)

2.先写好防火墙开发端口(如果是阿里云和腾讯云等,要加一步,到平台上配置开放2222端口)

   iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

3.修改sshd文件

 vim /etc/ssh/sshd_config

大概在17行,有这样的代码,意思是默认sshd端口是22端口

#Port 22

把他改成

Port 2222

重启服务

systemctl restart sshd

方法二:用/etc/hosts.allow 和/etc/hosts.deny来控制

  思路:我们可以写一个脚本,通过/var/log/secure中,通过统计访问失败的ip,超过四次就将他加入到/etc/hosts.deny中,加入之后就不能登录到服务器了,即使密码正确,必须要管理员来把他删掉才可以进入。把这个脚本加入crontab里。

 步骤如下:

1.先写/etc/hosts.allow。这个很关键。可以把我们日常登录的ip都写上,以免登录出错多了,登录不进去。

(不知道自己ip,可以去百度138ip等网站,查看自己ip)

比如我的ip是33.33.33.33

我们可以这样写

vim /etc/hosts.allow

#####################
sshd:33.33.33.33:allow

假如我们想让一个网段都写进去的话,可以这样写:

vim /etc/hosts.allow

####################
sshd:33.33.33.:allow

2.写脚本。

#!/bin/bash

cat /dev/null > /root/black.deny

awk '/Failed/{time[$(NF-3)]++}END{for(ip in time) if(time[ip]> 4)print ip}' 
/var/log/secure >> /root/black.deny

for i in `cat /root/black.deny`
do
	grep $i /etc/hosts.deny > /dev/null
	if [ $? -ne 0 ]
	then
		echo "sshd:$i:deny" >> /etc/hosts.deny
	fi
done


解释一下: 先把文件清空一次,加快下面循环的运行速率。通过awk命令,用/Failed/,Failed字段,建立time[]数组统计ip出现次数,如果ip出现次数大于4,就打印出来。重定向到/root/black.deny文件中。

循环是用于把/etc/hosts.deny文件里面的没有的ip加进去(因为grep一个没有的东西$?为1)

3.加入到crontab中

crontab -e 

0 */1 * * * sh /root/cron_sh/sshd_failed_4.sh

4.重启sshd服务

systemctl restart sshd

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值