SSh登陆失败的日志查看与攻击预防 grep

之前因为服务器里没有什么重要的东西,也就一直没有关注过登陆日志,刚才在配置ssh chroot出现错误是才去看的auth.log,记得这个文件就是个登陆日志,而且我之前偶尔查看时都很少内容,所以就直接cat查看了,谁知道竟然是 满屏满屏的,"Failed password for root XXX.XXX.XXX.XXX",等了将近一分钟仍然不见底,最后只好Ctrl+c提前结束,然后写条命令了下,看看究竟有多少个IP在暴利破解我的 root:
ubuntu:    grep "Failed password for root" /var/log/auth.log* | awk '{print $11}' | sort | uniq -c | sort -nr | more

centos:    grep "Failed password for root" /var/log/secure* | awk '{print $11}' | sort | uniq -c | sort -nr | more

命令很简单,也就不过多做解释了,直接看看结果:
4540 86.122.189.166
855 61.1.84.12
576 61.164.145.33
304 184.32.139.224
284 200.195.151.82
222 110.234.129.177
210 200.62.142.142
202 213.152.176.153
202 129.121.32.94
42 122.228.197.134
38 119.161.145.215
30 79.174.68.97
15 82.166.223.235
13 76.28.73.184
1 119.68.246.2

最多的4000多次,还行,估计离解出我的密码还有段距离,可是为了防范未然,也让我的auth.log文件能清净一些,索性就加些防范措施。
至于预防措施到时多种多样,我这里说几种我刚才尝试过的,或者尝试了放弃的
1、修改SSh端口,禁止root登陆


这个比较简单,只需要修改/etc/ssh/sshd_config文件就好了
sudo vi /etc/ssh/sshd_config
Port 4484
#这里就该为你认为别人猜不到的端口号
PermitRootLogin no
#这里改为no即为禁止root登陆

最后保存,重启
sudo /etc/init.d/ssh restart

2、禁用密码登陆,仅用证书密钥登陆


在客户端生成密钥
ssh-keygen -t rsa

把公钥拷贝至服务器
ssh-copy-id -i .ssh/id_rsa.pub server

也可以手动将.shh/id_rsa.pub拷贝至服务器用户目录的.ssh中,记得修改访问权限
scp .shh/id_rsa.pub server:~/.ssh

在服务器中
cd ./.ssh/
mv id_rsa.pub authorized_keys
chmod 400 authorized_keys

最后修改/etc/ssh/sshd_config
RSAAuthentication yes
#RSA认证
PubkeyAuthentication yes
#开启公钥验证
AuthorizedKeysFile    .ssh/authorized_keys
#验证文件路径
PasswordAuthentication no
#禁止密码认证
PermitEmptyPasswords no
#禁止空密码
UsePAM no
#禁用PAM

最后保存,重启
sudo /etc/init.d/ssh restart

3、安装denyhosts


这个方法比较省时省力,这个小工具现今各个发行版软件库里基本都有,而且也不需要过多配置,傻瓜易用。
这里简单说下几个主要发行版的安装方法
Debian/Ubuntu:


sudo apt-get install denyhosts

Archlinux


yaourt denyhosts

ReHaT/Centos


yum install denyhosts

Gentoo

emerge -av denyhosts

这个工具默认配置就能很好的工作,如要个性化设置请自行修改/etc/denyhosts.conf
SECURE_LOG = /var/log/auth.log
#ssh 日志文件,它是根据这个文件来判断的。
HOSTS_DENY = /etc/hosts.deny
#控制用户登陆的文件
PURGE_DENY =
#过多久后清除已经禁止的
BLOCK_SERVICE  = sshd
#禁止的服务名
DENY_THRESHOLD_INVALID = 5
#允许无效用户失败的次数
DENY_THRESHOLD_VALID = 10
#允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 1
#允许root登陆失败的次数
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
#运行目录
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
#是否进行域名反解析
LOCK_FILE = /var/run/denyhosts.pid
#程序的进程ID
ADMIN_EMAIL = root@localhost (可以将这里改成常用的邮箱)
#管理员邮件地址,它会给管理员发邮件
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h


分享到: 微信 更多