化解自己的阿里云服务器被黑客攻击-暴力破解

Posted by Yancy on 2016-06-29

说明下:因为阿里云服务器我是用来自己搭建blog 的做了一些简单的监控。

因为防止被攻击瘫痪,做到安全防范,可是今天晚上吃完饭,发现又被人攻击,是印度和巴西IP地址暴力破解方式一直在尝试破解我密码。

1
还好我在阿里云上面使用了云盾告警,其实它这个一般般,只能提醒,不能有效阻止黑客攻击。

收到告警以后,马上打开电脑去云盾上面查看下。

然后看了以后发现问题不大,可是上机器查看,发现有不断的攻击痕迹。
日志查看到很多来历不明的IP。德国🇩🇪 巴西 印度。


看到这个,我就写了个脚本记录被攻击留下的保存指定文件夹,我看下是否还在继续攻击了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#Denyhosts SHELL SCRIPT
#2016-2-18
cat /var/log/secure|awk '/Failed/{print $(NF- 3)}'|sort|uniq -c|awk '{print $2"=" $1;}' >/root/bin/Denyhosts.txt
DEFINE="10"
for i in `cat /root/bin/Denyhosts.txt`
do
IP=`echo $i|awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ]
then
grep $IP /etc/hosts.deny >/dev/null
if [ $? -gt 0 ];
then
echo "sshd:$IP" >> /etc/hosts.deny
fi
fi
done

因为保存到其他的txt文件下面:

1
2
3
4
[root@iZ28by3xm9eZ bin]# ll
总用量 4
-rwxr-xr-x 1 root root 535 2月 17 21:38 Denyhosts.sh
-rw-r--r-- 1 root root 0 2月 17 21:45 Denyhosts.txt

查看里面有不断攻击的IP :

1
2
3
4
5
6
7
8
9
[root@iZ28by3xm9eZ bin]# vim Denyhosts.txt
101.69.252.146=1
115.196.20.181=11
117.243.176.226=6
186.208.19.61=5
186.251.118.71=3
89.238.64.148=2
94.215.141.101=1

这里我记录了攻击的多少次也有的。

可是发现的确在继续攻击,我在想如何阻止被破解呢。

主要是依靠denyhost软件。稳重所讲的是下载安装包安装,实际上可以从直接使用yum或者apt安装,找到相应的源就可以。下边是帖子原文: DenyHosts官方网站为:http://denyhosts.sourceforge.net

这里下载最新的版本是2008年 2.6 版本的 一直没更新。不过已经足够强大。 1. 安装

1
2
3
# tar -zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# python setup.py install

默认是安装到/usr/share/denyhosts目录的。

1.配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# vi denyhosts.cfg
PURGE_DENY = 50m #过多久后清除已阻止IP
HOSTS_DENY = /etc/hosts.deny
#将阻止IP写入到hosts.deny
BLOCK_SERVICE = sshd
#阻止服务名
DENY_THRESHOLD_INVALID = 1
#允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10
#允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 5
#允许root登录失败的次数
WORK_DIR = /usr/local/share/denyhosts/data
#将deny的host或ip纪录到Work_dir
DENY_THRESHOLD_RESTRICTED = 1
#设定 deny host 写入到该资料夹
LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
HOSTNAME_LOOKUP=NO #是否做域名反解 ADMIN_EMAIL = #设置管理员邮件地址
DAEMON_LOG = /var/log/denyhosts #自己的日志文件
DAEMON_PURGE = 10m #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间。

2.设置启动脚本

1
2
3
# cp daemon-control-dist daemon-control
# chown root daemon-control
# chmod 700 daemon-control

完了之后执行daemon-contron start就可以了。

1
# ./daemon-control start

如果要使DenyHosts每次重起后自动启动还需做如下设置:

1
2
3
# ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig --add denyhosts
# chkconfig denyhosts on

然后就可以启动了:

1
# service denyhosts start

可以看看/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。

启动出现错误解决:

1
./daemon-control start

出现:starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg DenyHosts could not obtain lock (pid: ) [Errno 17] File exists: '/var/lock/subsys/denyhosts' 使用:

1
2
3
4
5
6
7
touch /private/var/log/system.log
touch /var/lock/subsys/denyhosts
rm -f /var/lock/subsys/denyhosts
./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py –daemon –config=/usr/share/denyhosts/denyhosts.cfg
OK!

启动完成啦。 你可以使用

1
service denyhosts status来查看运行状态

DenyHosts is running with pid = 25874 表示已经启动起来了。
接下来就可以使用

1
cat /etc/hosts.deny来查看记录了

然后启动成功以后,我自己测试了下,

1
2
3
4
5
6
7
ssh root@115.28.175.207
root@115.28.175.207's password:
Permission denied, please try again.
root@115.28.175.207's password:
cPermission denied, please try again.
root@115.28.175.207's password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

发现自己登陆不上去了,然后只能去阿里控制台操作查看原因。

原来发现 cat /etc/hosts.deny来查看记录了

然后去掉,115IP 发现就可以登陆了。 所以我做的设置是root尝试破解4次以上,被锁定。