위의 소스를 가지고 몇가지 추가하고 /etc/oops-firewall/user.conf 파일에 중복되는 ip로 파
일 용량이 커지는것을 막기하기 위해서 대충 만들어봤습니다.
denyip.sh
------------------ cut here -------------------
#!/bin/bash
# Script by Yunkiman
# Modified by icworld
days=`date +%d`
# 5회이상 패스워드 입력오류 ip를 추출하는 루틴입니다. ssh의 사전접속을 차단하는데 괜찮
은것 같습니다.
for i in $( cat /var/log/messages | grep "Failed password for" | awk '$2 = $days
{print $13}' | sort | uniq -c | awk '$1 > 5 {print $2}'); do
echo "%-A INPUT -s $i -j DROP" >> /etc/oops-firewall/user.conf
done
# 5회 이상 ftp의 익명계정 접속을 시도하는 ip를 추출하는 루틴입니다.
for j in $( cat /var/log/messages | grep "anonymous" | awk '$2 = $days {print $7}' |
sort | uniq -c | awk '$1 > 5 {print $2}' | awk -F"(" '{print $2}' | awk -F"[" '{print
$1}'); do
echo "%-A INPUT -s $j -j DROP" >> /etc/oops-firewall/user.conf
done
# 3회이상 허용되지 않는 ftp 포트 접속을 시도하는 ip를 추출하는 루틴입니다.
for k in $( cat /var/log/messages | grep "Refused PORT" | awk '$2 = $days {print $7}'
| sort | uniq -c | awk '$1 > 3 {print $2}' | awk -F"(" '{print $2}' | awk -
F"[" '{print $1}'); do
echo "%-A INPUT -s $k -j DROP" >> /etc/oops-firewall/user.conf
done
# 여기서부터는 삽질입니다. -0-;
# user.conf 파일에서 중복되는 ip를 없앤후 temp 파일에 저장해두고 user.bak(사용자 지정
ip가 없는 깨끗한 user.conf 카피파일)을 user.conf로 덮어씁니다.
# 그리고 temp 파일에 저장해둔 ip를 user.conf 파일에 집어넣고 temp파일은 삭제하고 oops-
firewall을 재시작합니다.
for a in $( cat /etc/oops-firewall/user.conf | grep "%-A INPUT -s" | awk '{print $4}'
| sort | uniq -c | awk '{print $2}'); do
echo "%-A INPUT -s $a -j DROP" >> /etc/oops-firewall/temp
done
cp /etc/oops-firewall/user.bak /etc/oops-firewall/user.conf
for b in $( cat /etc/oops-firewall/temp | grep "%-A INPUT -s" | awk '{print $4}' |
sort | uniq -c | awk '{print $2}'); do
echo "%-A INPUT -s $b -j DROP" >> /etc/oops-firewall/user.conf
done
rm -rf /etc/oops-firewall/temp
/etc/init.d/oops-firewall restart
------------------ cut here -------------------
이렇게 하면 로그파일이 rotate되어도 블럭된 ip는 계속 누적되고 로그파일이나 user.conf 파
일용량이 커지는 것을 막을수 있습니다.
crontab에다가 2분마다 한번씩 실행하게 해놓으면 별 무리없이 잘 돌아갈겁니다.
이렇게 소스가 길다보니 삽질한 흔적이 피력하네요. ㅠㅠ
시간나면 소스좀 간결하게 만들어서 다시 올리도록 하겠습니다.
누가 대신 해주셔도 무방~~!! 합니다. 하핫!~(귀차니즘)
출처 : http://oops.org/SERVICE/jsboard/read.php?table=jsboard_oopsFAQ&no=503&page=2 (새 창으로 열기)
Trackback URL : http://apollo89.com/blog/trackback/138
rss