標籤:linux shell centos shell指令碼 惡意登入
最近學習到linux系統日誌和計劃任務,下班回家的地鐵上有了靈感,嘗試編寫了自己的第一個指令碼,監測如果有惡意登入伺服器的話,發郵件通知管理員。暫時還沒學習到如何發郵件給管理員,目前只是命令列的提醒和日誌記錄;指令碼的內容也比較簡單,都是學習過的基本知識,活學活用。
1、首先編寫一個指令碼:
定義一個變數LT,變數的值為lastb命令列出的行數(即無效登入的次數,如有惡意登入的話行數會變多);
執行一個if判斷語句,如果定義的值大於15次的話,判斷為惡意登入,通知管理員。
指令碼內容如下:
[[email protected] ~]# 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
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />
2、編寫一個計劃任務
每隔一分鐘自動執行上面的指令碼
[[email protected] ~]# crontab -l*/1 * * * * /bin/sh /root/lt.sh
3、查看效果
超過15次登入在當前命令列模式會提示,有一封新郵件在/var/spool/mail/root下;
[[email protected] ~]# You have new mail in /var/spool/mail/root
查看新郵件,會發現指令碼裡面的內容,證明有人在嘗試登入主機;
[[email protected] ~]# tail -2 /var/spool/mail/root somebody try to login please check log
執行lastb命令查看發現很多登入失敗的記錄
[[email protected] ~]# lastb |headuser1 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=user1Apr 21 22:03:36 localhost sshd[1499]: Failed password for user1 from 192.168.22.1 port 50591 ssh2Apr 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 ssh2Apr 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 ssh2Apr 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 ssh2Apr 21 22:03:52 localhost sshd[1499]: Failed password for user1 from 192.168.22.1 port 50591 ssh2Apr 21 22:03:54 localhost sshd[1500]: Received disconnect from 192.168.22.1: 0:
根據訪問日誌的來源IP,我們可以對來源設定iptables規則,禁止訪問伺服器的22連接埠,或者封閉ip地址;
暫時只有這麼多,小小的驕傲一下,給自己增加點自信心,相信之後的學習中會更加深入瞭解linux;
和大家分享一下,共勉之。
本文出自 “模範生的學習部落格” 部落格,請務必保留此出處http://8802265.blog.51cto.com/8792265/1636847
第一個shell指令碼-監測惡意登入遠程伺服器