好久没有检查过服务器了,今天查看日志的时候发现了异常。在登录日志auth.log文件中发现大量ssh登录失败记录,意识到服务器应该是被爆破攻击了
lastb
或 last -f btmp
查看登录失败日志文件 btmp,发现攻击者不仅长时间爆破,而且使用了伪造ip,或者是肉鸡,因此无法利用iptables禁止攻击者ip
对方还在持续攻击,因此打算安装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远程连接,抓包成功:
没抓到什么有用信息,因为对方一直变换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
但是防火墙规则设置的是DROP,思来想去还是换成REJECT,让对方可以收到我的拒绝回包:
爆破结束了,出于本能,想看一下是谁在攻击,于是将所有爆破记录导出到本地,足足有17MB!
本地打开,狗贼,24万条记录,心疼我那1M的带宽, 8月9号就开始爆破,今天都24号了,持之以恒的品质令我为之感动
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次以上的:
前几个IP的爆破次数竟然达到了5千多次,根据归属地,基本断定是可怜的肉鸡,或是挂了VPN,想反击回去看来是无望了。
扫描一下第一个IP,发现只开启了邮件服务,没戏
第三个开启了ssh,但是小小小字典没有连接上,大字典太费时间放弃
第四个、第五个、第六个……都没有异常端口,最终发现了一个开放多个服务的ip:
这哥们用的宝塔建站,结果站都被删了,扫描http 80端口和888端口都没发现留存的网络路径,可怜的肉鸡
8888端口是控制面板登录,但是最新的宝塔有安全机制,在端口后面加入了8位的随机字符串,用来隐藏后台登录页面,懒得爆破了
还有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 江苏省南京市 百度网讯电信节点