ssh日志分析

登录日志

ubuntu

ssh登陆日志在/var/log/auth.log
可以通过查看登录日志,如果存在大量异常IP高频率尝试登录,则他一定在爆破弱口令.

centos

centos下可以通过/var/log/secure来看登录日志.可以通过失败记录找出攻击者:

1
2
3
4
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
998 47.101.42.58
12 41.232.216.155
5 47.101.155.144

很明显看到有多少攻击者,都是阿里云的ip在抓鸡.

last命令查看

last命令ubuntu和centos都可以用.

lastlog

lastlog:列出所有用户最近登录的信息.lastlog引用的是/var/log/lastlog文件中的信息,包括login-name,port,last login time.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Username         Port     From             Latest
root pts/2 121.229.106.142 Fri Sep 13 21:53:39 +0800 2019
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
operator **Never logged in**
games **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
systemd-bus-proxy **Never logged in**
systemd-network **Never logged in**
dbus **Never logged in**
polkitd **Never logged in**
tss **Never logged in**
sshd **Never logged in**
postfix **Never logged in**
chrony **Never logged in**
ntp **Never logged in**
nscd **Never logged in**
tcpdump **Never logged in**
www **Never logged in**
mysql **Never logged in**
dockerroot **Never logged in**
redis **Never logged in**

last

last命令:列出当前和曾经登入系统的用户信息.默认读取的是/var/log/wtmp文件的信息.输出的内容包括:用户名,终端位置,登录源信息,开始时间,结束时间,持续时间.注意最后一行输出的是wtmp文件起始记录的时间.当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp,/var/run/utmp.

1
2
3
4
root     pts/3        49.94.35.174     Sat Sep 14 00:02   still logged in   
root pts/2 121.229.106.142 Fri Sep 13 21:53 still logged in
root pts/2 121.229.106.142 Fri Sep 13 21:19 - 21:53 (00:33)
root pts/2 121.229.106.142 Fri Sep 13 21:10 - 21:19 (00:09)

lastb

lastb命令:列出失败尝试的登录信息.和last命令功能完全相同,只不过它默认读取的是/var/log/btmp文件的信息.当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp,/var/run/utmp.
不查不知道,居然有一个同一段ip的阿里云服务器想日我,访问一下,是他的博客,电话和qq就在上面,都不需要社工…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root     ssh:notty    47.101.42.58     Mon Sep  9 04:09 - 04:09  (00:00)    
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)
root ssh:notty 47.101.42.58 Mon Sep 9 04:09 - 04:09 (00:00)

防范

改端口

1
2
sudo vim /etc/ssh/sshd_config
Port 5000

限制ip

linux限制IP访问ssh

在/etc/hosts.allow输入
(其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24)
sshd:192.168.10.88:allow

在/etc/hosts.deny输入(表示除了上面允许的,其他的ip 都拒绝登陆ssh)
sshd:ALL

iptables

更多参数在iptables查找.
这里就列举常用的.

1
2
封禁单个ip
iptables -I INPUT -s 47.101.42.58 -j DROP

-i:insert
INPUT链:处理输入数据包。
-s:指定要匹配的数据包源ip地址
-j:指定要跳转的目标;
DROP:丢弃数据包。