记一次云服务器ssh爆破维护实例

好久没有检查过服务器了,今天查看日志的时候发现了异常。在登录日志auth.log文件中发现大量ssh登录失败记录,意识到服务器应该是被爆破攻击了

记一次云服务器ssh爆破维护实例_第1张图片
lastblast -f btmp 查看登录失败日志文件 btmp,发现攻击者不仅长时间爆破,而且使用了伪造ip,或者是肉鸡,因此无法利用iptables禁止攻击者ip

记一次云服务器ssh爆破维护实例_第2张图片
对方还在持续攻击,因此打算安装rpcapd用wireshark进行远程抓包分析,但是Linux上没有集成好的包,需要自己下载编译,相关命令如下

wget http://www.winpcap.org/install/bin/WpcapSrc_4_1_2.zip
unzip WpcapSrc_4_1_2.zip
cd winpcap/wpcap/libpcap
chmod +x configure runlex.sh
CFLAGS=-static ./configure
make
cd rpcapd
make

./rpcapd -n -d

CFLAGS=-static ./configure 步骤出现了问题,提示未安装flex:

configure: error: Your operating system's lex is insufficient to compile
 libpcap.  flex is a lex replacement that has many advantages, including
 being able to compile libpcap.  For more information, see
 http://www.gnu.org/software/flex/flex.html .

使用命令 apt-get install flex 安装flex,再次编译运行,成功启动rpcapd服务,本地使用wireshark远程连接,抓包成功:

记一次云服务器ssh爆破维护实例_第3张图片
记一次云服务器ssh爆破维护实例_第4张图片
没抓到什么有用信息,因为对方一直变换IP,那就换一种思路吧,既然不能禁对方的指定IP,就设置白名单算了,暂时把我常用的ip添加进去。(当然还有一种更好的方法就是使用密钥登陆)

在iptables中添加22端口入站规则,只允许目前我常用的2个IP访问,其余的全部DROP:

root@VM-1-3-ubuntu:/var/log# iptables -I INPUT -p tcp --dport 22 -s 122.97.179.71 -j ACCEPT
root@VM-1-3-ubuntu:/var/log# iptables -I INPUT -p tcp --dport 22 -s 113.200.107.85 -j ACCEPT
root@VM-1-3-ubuntu:/var/log# iptables -A INPUT -p tcp --dport 22 -j DROP
root@VM-1-3-ubuntu:/var/log# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  113.200.107.85       anywhere             tcp dpt:ssh
ACCEPT     tcp  --  122.97.179.71        anywhere             tcp dpt:ssh
DROP       tcp  --  anywhere             anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

记一次云服务器ssh爆破维护实例_第5张图片
再次查看btmp文件,攻击时间定格在了11点44分:

记一次云服务器ssh爆破维护实例_第6张图片
但是防火墙规则设置的是DROP,思来想去还是换成REJECT,让对方可以收到我的拒绝回包:

记一次云服务器ssh爆破维护实例_第7张图片
爆破结束了,出于本能,想看一下是谁在攻击,于是将所有爆破记录导出到本地,足足有17MB!

记一次云服务器ssh爆破维护实例_第8张图片
本地打开,狗贼,24万条记录,心疼我那1M的带宽, 8月9号就开始爆破,今天都24号了,持之以恒的品质令我为之感动

记一次云服务器ssh爆破维护实例_第9张图片
Python写脚本吧,统计一下对方使用次数最多的IP信息,指不定哪个就是真实IP,贴出拙劣的代码:

import requests
from bs4 import BeautifulSoup

# 读取日志文件,取出ip和尝试次数,返回值:字典
def readFile():
    ipDict = {
     }
    with open(r"C:\Users\13714\Desktop\sshLogin.txt", "r") as f:
        try:
            for line in f.readlines():
                ip = line.split()[2]
                if ip not in ipDict:
                    ipDict[ip] = 1
                else:
                    ipDict[ip] += 1
        except:
            pass
    return ipDict

# 通过访问次数对ip进行排序,返回值:列表
def storeIP(ipDict, min = 200):
    result = sorted(ipDict.items(), key = lambda kv:(kv[1], kv[0]), reverse=True)
    resultList = []
    for i in result:
        ip = str(i).split(", ")[0].strip("(").strip("'")
        count = str(i).split(", ")[1].strip(")")
        if int(count) >= min:
            resultList.append([ip, count])
            # print("%-20s\t%s" %(ip, count))
    return resultList

# 查找ip归属地,返回值:列表
def searchLocation(ipList, min = 200):
    resultList = []
    url = "http://ip.tool.chinaz.com"
    for i in ipList:
        ip = i[0]
        if int(i[1]) >= min:
            requestUrl = url + "/" + ip
            response = requests.get(requestUrl, )
            html = response.text
            bs = BeautifulSoup(html, "html.parser")
            spanList = bs.find_all("span")
            try:
                msg = "%-15s\t%-5s\t%s" %(ip, i[1], spanList[19].string)
                resultList.append(msg)
                # print(msg)
            except:
                pass
    return resultList

if __name__ == "__main__":
    IP = readFile()
    ipList = storeIP(IP)
    resultList = searchLocation(ipList)
    for i in resultList:
        print(i)

脚本运行结果部分截图,中间的数字是爆破次数,只统计了攻击200次以上的:

记一次云服务器ssh爆破维护实例_第10张图片
前几个IP的爆破次数竟然达到了5千多次,根据归属地,基本断定是可怜的肉鸡,或是挂了VPN,想反击回去看来是无望了。

扫描一下第一个IP,发现只开启了邮件服务,没戏

记一次云服务器ssh爆破维护实例_第11张图片
第二个,同样没戏

记一次云服务器ssh爆破维护实例_第12张图片
第三个开启了ssh,但是小小小字典没有连接上,大字典太费时间放弃

记一次云服务器ssh爆破维护实例_第13张图片
第四个、第五个、第六个……都没有异常端口,最终发现了一个开放多个服务的ip:

记一次云服务器ssh爆破维护实例_第14张图片
这哥们用的宝塔建站,结果站都被删了,扫描http 80端口和888端口都没发现留存的网络路径,可怜的肉鸡

记一次云服务器ssh爆破维护实例_第15张图片
8888端口是控制面板登录,但是最新的宝塔有安全机制,在端口后面加入了8位的随机字符串,用来隐藏后台登录页面,懒得爆破了

记一次云服务器ssh爆破维护实例_第16张图片
还有ftp、ssh都是要爆破,算了算了,就这样吧,阻断攻击就行了。

没有反转,只是阻断了攻击,并没有成功复仇,还是太菜了。再一个就是爆破既麻烦又费时间,也缺一个好的字典,所以就懒得爆破了。

OK,本次的服务器维护之旅就到此,大家保护好自己的服务器鸭,多看日志,多检查开启的端口服务和进程,尽早发现问题及时止损,别被搞了。

最后贴出攻击200次以上的肉鸡IP,有遇到的就 Ban 了吧。

58.208.85.143  	6470 	江苏省苏州市 电信
45.141.84.10   	5761 	美国  
185.153.196.230	4948 	摩尔多瓦  
52.183.97.14   	3685 	美国 加利福尼亚州圣克拉拉microsoft公司
58.198.176.152 	3340 	上海市 华东师范大学
58.87.111.107  	3075 	天津市 腾讯云
113.140.17.62  	2828 	陕西省西安市 电信
223.99.14.18   	2357 	山东省 移动
58.42.212.8    	2215 	贵州省六盘水市 电信
58.216.8.85    	2171 	江苏省常州市 电信
58.87.118.13   	2028 	天津市 腾讯云
58.87.108.129  	1451 	天津市 腾讯云
222.141.207.246	1346 	河南省洛阳市 电信idc机房
219.151.22.15  	1190 	贵州省贵州市 
111.67.207.38  	1103 	北京市 零色沸点网络科技有限公司
116.236.2.254  	992  	上海市长宁区 /普陀区电信
103.214.171.14 	818  	亚太地区  
190.3.183.49   	750  	智利  
185.217.1.246  	702  	瑞典  
58.65.135.186  	674  	巴基斯坦  
198.12.32.123  	666  	阿根廷  
122.156.225.54 	584  	黑龙江省大庆市 联通
180.76.153.46  	518  	北京市 北京百度网讯科技有限公司bgp节点
111.93.235.74  	438  	印度  
202.103.140.186	322  	广东省广州市从化市 电信
118.24.208.24  	313  	重庆市 腾讯云
45.95.168.201  	312  	欧盟  
62.234.110.91  	309  	北京市 腾讯云
213.32.92.57   	307  	法国 ovh sas
111.67.197.115 	301  	北京市 主机屋网络科技有限公司 bgp
51.210.182.187 	299  	英国 社会保险安全部
117.176.104.102	296  	未知地址
59.175.148.123 	295  	湖北省武汉市 电信
114.67.116.190 	290  	上海市 京东云
188.131.131.59 	289  	天津市 腾讯云
46.101.204.20  	286  	德国 黑森州法兰克福digitalocean数据中心
164.68.98.214  	286  	美国 森林湖大学
34.80.135.20   	285  	台湾省 彰化县google云计算数据中心
193.228.91.123 	282  	奥地利  
93.51.176.72   	281  	意大利  
128.199.81.160 	280  	新加坡 digitalocean数据中心
58.213.198.74  	275  	江苏省南京市白下区 电信
177.85.172.145 	273  	巴西  
217.182.253.249	271  	重庆市大渡口区 魔幻森林网吧(八桥镇翠华园小区11号)
106.12.91.209  	271  	江苏省南京市 百度网讯电信节点
212.64.80.169  	268  	上海市 腾讯云
203.245.29.159 	268  	韩国  
1.214.220.227  	267  	韩国 lg dacom
138.68.24.88   	266  	美国 纽约市digitalocean云公司
218.201.102.250	264  	山东省青岛市 移动
128.199.182.19 	262  	新加坡 digitalocean数据中心
77.47.130.58   	260  	乌克兰  
60.29.132.93   	260  	天津市 联通
49.233.3.177   	260  	北京市 腾讯云
37.139.4.138   	259  	荷兰 北荷兰省阿姆斯特丹digitalocean数据中心
129.211.185.246	259  	江苏省南京市 腾讯云
106.12.84.63   	259  	江苏省南京市 百度网讯电信节点
211.159.186.152	258  	广东省广州市 腾讯云
39.109.127.67  	256  	香港 cn2机房 亿速云www.yisu.com
111.231.103.192	256  	上海市 腾讯云
119.28.21.55   	255  	香港 腾讯云
132.232.112.96 	254  	四川省成都市 腾讯云
103.61.102.73  	254  	印度  
1.232.156.19   	254  	韩国 sk broadband数据中心
136.49.109.217 	253  	美国 google光纤
133.242.231.162	253  	日本  
183.238.0.242  	252  	广东省深圳市 移动
139.155.79.24  	252  	四川省成都市 腾讯云
54.37.66.7     	251  	美国 新泽西州(merck公司)
75.134.60.248  	250  	美国 密苏里州圣路易斯市charter通信公司
45.80.64.246   	250  	欧盟  
209.198.180.142	250  	美国  
118.27.19.93   	246  	日本 gmo
36.37.157.250  	245  	柬埔寨  
34.217.115.227 	243  	美国 俄勒冈州波特兰amazon数据中心
182.61.20.166  	243  	广东省广州市 百度bgp节点
104.131.55.92  	242  	美国 纽约市digitalocean云公司
59.102.73.82   	240  	澳大利亚  
54.38.183.181  	240  	法国 ovh数据中心
47.245.4.87    	240  	日本 东京阿里云
106.55.163.249 	240  	广东省广州市 腾讯云
51.75.28.134   	239  	法国 格拉沃利讷ovh数据中心
51.255.35.41   	239  	法国 ovh
107.175.150.83 	238  	北美地区  
119.45.162.48  	236  	江苏省南京市 腾讯云
103.84.71.238  	236  	印度  
178.33.67.12   	235  	法国 ovh
142.93.34.237  	233  	加拿大  
134.175.132.12 	231  	广东省广州市 腾讯云
190.144.182.85 	230  	哥伦比亚  
91.176.4.187   	229  	比利时  
191.234.163.117	229  	巴西  
121.131.232.156	229  	韩国 kt电信
103.105.128.194	229  	印度尼西亚  
95.165.155.175 	228  	俄罗斯  
18.163.13.5    	227  	香港 amazon数据中心
177.25.84.91   	227  	巴西  
217.111.239.37 	225  	西班牙  
157.245.231.62 	224  	美国 加利福尼亚州旧金山digitalocean数据中心
54.36.98.129   	223  	法国 格拉沃利讷ovh数据中心
116.247.81.99  	223  	上海市 电信
58.33.49.196   	222  	上海市浦东新区 电信
5.135.101.228  	222  	法国 ovh机房sas硬盘bgp主机
37.59.55.14    	221  	法国 北部-加来海峡大区鲁贝ovh数据中心
218.144.252.85 	220  	韩国  
106.51.80.198  	218  	印度  
111.229.226.212	217  	上海市 腾讯云
49.235.221.172 	216  	上海市 腾讯云
165.22.43.225  	215  	美国  
104.225.155.47 	215  	美国 加利福尼亚州洛杉矶it7网络
200.54.150.18  	214  	智利  
111.229.73.244 	212  	上海市 腾讯云
46.188.90.104  	211  	俄罗斯  
218.75.110.41  	211  	浙江省杭州市 电信idc机房
162.244.77.140 	208  	美国  
111.160.216.147	208  	天津市 联通
51.68.89.100   	206  	法国 格拉沃利讷ovh数据中心
200.119.112.204	206  	哥伦比亚  
183.237.175.97 	206  	广东省佛山市 移动
124.89.2.42    	205  	陕西省咸阳市 联通
106.12.209.117 	204  	北京市 百度网讯电信节点
101.95.86.34   	204  	上海市 电信
27.150.22.44   	201  	福建省 电信
194.180.224.103	200  	德国  
106.12.87.149  	200  	江苏省南京市 百度网讯电信节点

你可能感兴趣的:(Linux,运维,ssh,Linux运维,Linux)