'sshd 불법 접속 시도 차단'에 해당되는 글 1건

  1. 2009/01/07 sshd 불법접속 시도 차단 스크립트 (1)
Computer/linux2009/01/07 14:40
 예전에 쓴 글중에 php 로 제작되있는 ssh 불법 접속시도 차단 스크립트를 올린적 있는데.

 모든 서버에 php가 올라가있는것도 아니고  php를 올리는것도 그래서 . bash shell 로 만들어 보았다.

#!/bin/bash

#현재시간에서 10분전 시간을 구한다.
ten_date_ago=`date -d "10 min ago" +"%d %H:%M"`

# ten_date_ago 변수에서 시간만 추출한다.

ten_min=`echo ${ten_date_ago} | awk '{print $2}'`

# ten_date_ago 변수에서 날짜만 추출한다.

ten_day=`echo ${ten_date_ago} | awk '{print $1}'`


# 로그에 입력할 시간을 변수에 입력한다.
now_date=`date +"%D -- %R"`


# awk 를 이용하여 불펍 접속 시도된 아이피를 추출한다.
# centos 5.2 기준으로 시스템에 등록되지 않은 ID 로 접속시도를 할경우 invalid 를 출력하여 예외처리
# 굵게 표시된 10 으로 접속 시도 차단 을 결정한다.
ip_count=`awk '$2=='${ten_day}' && $3 >= "'${ten_min}'" && $6 == "Failed" && $7 == "password" && $NF == "ssh2" {if($9 == "invalid") print $13; else print $11}' /var/log/secure | sort | uniq -c | awk '$1 > 10 {print $2}'`

# 차단 된 IP를 별도의 로그에 저장한다.
if [ "${ip_count}" ]
then
echo "########################
 ## ${now_date} ##
########################" >> /data/log/Illegal_ip.log
echo $ip_count >> /data/seols/log/Illegal_ip.log
fi

# 난 그냥 iptables 를 이용해서 전부 차단해버린다 ㅋㅋ
for i in ${ip_count}
do
      iptables -A INPUT -s ${i} -j DROP
done

exit 0
#끝..............


 추출 부분에서 아직 완벽하지는 않지만 그냥 대충 추출은 가능한것으로 보인다. 월 비교를 하지 않아서 좀 거시기 하지만. syslog 로 어짜피 분활되니깐 그건 신경안쓰기로 하고 별도의 로그에 카운트까지 저장하고 싶지만 한줄 더써주는게 귀찮아서 대충 저래 쓰다가 언젠간 수정해야지......

이글 보시고 수정할점이나 더 좋은 방법이 있으신분은 알려주세요 ^^


저작자 표시 비영리 동일 조건 변경 허락
Posted by LEtham

댓글을 달아 주세요

  1. 오...님 좀 짱인듯...
    배껴감...

    2009/04/10 13:57 [ ADDR : EDIT/ DEL : REPLY ]