茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1675540 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_DPP_0009.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2010/3/29 10:16:05
在 Linux 系統上的 /var/log/secure 裡面常會發現一些類似底下的紀錄
Jan 21 05:32:32 www sshd[24782]: Invalid user office from ::ffff:210.202.33.129
Jan 20 21:32:32 www sshd[24783]: input_userauth_request: invalid user office
Jan 21 05:32:35 www sshd[24782]: Failed password for invalid user office from ::ffff:210.202.33.129 port 61321 ssh2


可是系統上並沒有office這個使用者,而且這個210.202.33.129還出現在其他連續的多筆記錄上,可以知道這是個嘗試入侵的行為,我們可以寫支 shell script 程式來自動擋掉這些討厭的傢伙。

將底下的程式碼複製存檔為 /root/admin/banip.sh
#!/bin/bash
# Name: banip.sh
# Author: Andowson Chang (andowson [at] gmail [dot] com)
# Version: 0.1
# Last Modified: 2007-01-21

# 修改這邊的參數
EXTERNAL_INTERFACE="ppp0" # you must edit this
BANNEDHOSTFILE="/tmp/bannedhosts.txt" #edit this as required
HISTORYHOSTSFILE="/tmp/history.txt" #edit this as required
IPTABLES="/sbin/iptables"
GREP_PARAM="^[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*"

# 找出攻擊的主機IP
grep "Failed password for invalid user" /var/log/secure | cut -d" " -f13 | sort | uniq | cut -d":" -f4 > /tmp/attack.log
grep "Failed password for invalid user" /var/log/secure | cut -d" " -f14 | sort | uniq | cut -d":" -f4 >> /tmp/attack.log

# 刪除一些不是IP的字,目前發現的有from和port,也可以包含測試用的來源IP
sed -e '/from/d' -e '/port/d' -e '/192.168.1/d' /tmp/attack.log > /tmp/attack.txt

# 加入新增的主機
touch $HISTORYHOSTSFILE
sort /tmp/attack.txt | uniq > /tmp/ip1
sort $HISTORYHOSTSFILE | uniq > /tmp/ip2
comm -23 /tmp/ip[1-2] > $BANNEDHOSTFILE   # 新增站台資料
rm -rf /tmp/ip[1-2]
rm -rf /tmp/attack.*

# 將攻擊的主機IP加到iptables擋掉
for i in $( grep $GREP_PARAM $BANNEDHOSTFILE )
do
	echo "Deny access to host: $i"
	$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -s $i -j DROP
	$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -d $i -j DROP
done

# 將處理過的IP清單加到歷史檔去
cat $BANNEDHOSTFILE >> $HISTORYHOSTSFILE
sort $HISTORYHOSTSFILE | uniq > /tmp/history.tmp
mv -f /tmp/history.tmp $HISTORYHOSTSFILE
rm -rf $BANNEDHOSTFILE


然後chmod 755 /root/admin/banip.sh
接著掛到/etc/crontab讓它每五分鐘執行一次
# ban intruder's ip (2007.01.21)
2 */5 * * * * root /root/admin/banip.sh > /var/log/banip.log


察看目前被擋掉的IP:iptables -L -n
如果有誤加的IP,可以利用類似底下的指令來刪除設定
view sourceprint?1 iptables -D INPUT -i ppp0 -s 192.168.1.5 -j DROP
iptables -D OUTPUT -o ppp0 -d 192.168.1.5 -j DROP


為避免重複加入iptables,已在$HISTORYHOSTSFILE裡面的ip,會被自動過濾掉。可是重開機之後iptables的設定會回到預設值,只剩下開放的服務port的設定,沒有擋掉任何主機的設定。如此一來,重開機後將不會再擋掉先前已在歷史檔內的主機。解決的方法是每次重開機後將歷史檔更名,如改為history.txt-yyyymmdd
vi /etc/rc.local
view sourceprint?1 mv /tmp/history.txt /tmp/history.txt-`date +%Y%m%d`



原文出處:自動擋掉嘗試用ssh入侵Linux的攻擊者IP
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|