最近学习到linux系统日志和计划任务,下班回家的地铁上有了灵感,尝试编写了本身的第一个脚本,监测若是有恶意登陆服务器的话,发邮件通知管理员。暂时还没学习到如何发邮件给管理员,目前只是命令行的提醒和日志记录;脚本的内容也比较简单,都是学习过的基本知识,活学活用。linux
一、首先编写一个脚本:bash
定义一个变量LT,变量的值为lastb命令列出的行数(即无效登陆的次数,若有恶意登陆的话行数会变多);服务器
执行一个if判断语句,若是定义的值大于15次的话,判断为恶意登陆,通知管理员。ssh
脚本内容以下:ide
[root@localhost ~]# cat lt.sh #! /bin/bash #定义变量LT,记录无效登陆的次数; LT=`lastb |wc -l |cut -d ' ' -f 1` if [ $LT -gt "15" ] #判断无效登陆的次数若是大于15的话,执行下面的操做; then echo "somebody try to login please check log" #打印有人尝试登陆系统请检查日志 fi
二、编写一个计划任务学习
每隔一分钟自动执行上面的脚本ui
[root@localhost ~]# crontab -l */1 * * * * /bin/sh /root/lt.sh
三、查看效果url
超过15次登陆在当前命令行模式会提示,有一封新邮件在/var/spool/mail/root下;spa
[root@localhost ~]# You have new mail in /var/spool/mail/root
查看新邮件,会发现脚本里面的内容,证实有人在尝试登陆主机;命令行
[root@localhost ~]# tail -2 /var/spool/mail/root somebody try to login please check log
执行lastb命令查看发现不少登陆失败的记录
[root@localhost ~]# lastb |head user1 ssh:notty 192.168.22.1 Tue Apr 21 22:04 - 22:04 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 22:04 - 22:04 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 22:03 - 22:03 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 22:03 - 22:03 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 22:03 - 22:03 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 22:03 - 22:03 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 22:03 - 22:03 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 21:29 - 21:29 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 21:29 - 21:29 (00:00) user1 ssh:notty 192.168.22.1 Tue Apr 21 21:29 - 21:29 (00:00)
查看/var/log/secure 日志也会发现有屡次登陆失败的记录
Apr 21 22:03:35 localhost unix_chkpwd[1501]: password check failed for user (user1) Apr 21 22:03:35 localhost sshd[1499]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.22.1 user=user1 Apr 21 22:03:36 localhost sshd[1499]: Failed password for user1 from 192.168.22.1 port 50591 ssh2 Apr 21 22:03:39 localhost unix_chkpwd[1502]: password check failed for user (user1) Apr 21 22:03:41 localhost sshd[1499]: Failed password for user1 from 192.168.22.1 port 50591 ssh2 Apr 21 22:03:44 localhost unix_chkpwd[1503]: password check failed for user (user1) Apr 21 22:03:46 localhost sshd[1499]: Failed password for user1 from 192.168.22.1 port 50591 ssh2 Apr 21 22:03:49 localhost unix_chkpwd[1504]: password check failed for user (user1) Apr 21 22:03:51 localhost sshd[1499]: Failed password for user1 from 192.168.22.1 port 50591 ssh2 Apr 21 22:03:52 localhost sshd[1499]: Failed password for user1 from 192.168.22.1 port 50591 ssh2 Apr 21 22:03:54 localhost sshd[1500]: Received disconnect from 192.168.22.1: 0:
根据访问日志的来源IP,咱们能够对来源设置iptables规则,禁止访问服务器的22端口,或者封闭ip地址;
暂时只有这么多,小小的骄傲一下,给本身增长点自信心,相信以后的学习中会更加深刻了解linux;
和你们分享一下,共勉之。