使用者工具

網站工具


linux:filterip

簡單過濾IP

開放sshd服務,通常在登入檔內容裡會碰到許多異常IP嘗試暴力登入, 或許有接觸過linux都知道grep及正規表示法可利用解決此問題。本篇利用grep(egrep)及配合正規表示法來找出有存在(/var/log/secure) 檔案內容異常ip。

過濾方法

[root@MyLinux cron.daily]#cat /var/log/secure | grep 'sshd' | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

編寫一個Shell Script

為了過濾異常及不明IP,來達到實際便利需球,特別寫了一個Shell Script。

#!/bin/bash
#過濾的ip群
string=`cat /var/log/secure | grep 'sshd'|egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' |sort|uniq`
#利用for each迴圈方式一筆一筆寫入到指定檔案內容中
for tmp in $string
do
 #判斷過濾的ip是否與檔案內容有重複:沒有就寫入
if ! grep -q $tmp /etc/hosts.deny ; then
echo sshd:$tmp >> /etc/hosts.deny
fi
done

配合簡單系統管理

利用Linux既有的排程方法,在每天AM 4:00執行一次(/var/log/secure)內容過濾。

  • 認識Crontab

[root@MyLinux cron.daily]#vim /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
 
# run-parts
01 * * * * root run-parts /etc/cron.hourly #每小時 01分 執行這個/etc/cron.hourly/資料夾裡的程式
02 4 * * * root run-parts /etc/cron.daily  #每天 4時 02分 執行這個/etc/cron.daily/資料夾裡的程式
22 4 * * 0 root run-parts /etc/cron.weekly #每週日 4時 22分 執行這個/etc/cron.weekly/資料夾裡的程式
42 4 1 * * root run-parts /etc/cron.monthly  #每月 1日 4時 42分 執行這個/etc/cron.monthly/資料夾裡的程式
  • 上一個項目的Shell Script 放置到 /etc/cron.daily/
linux/filterip.txt · 上一次變更: 2013/07/06 01:28 (外部編輯)