회원 로그인
|
SSH 접속 IP 중 접속 거부된 아이피 차단 스크립트
| SSH 접속 IP 중 접속 거부된 아이피 차단 스크립트
/root/refused_ip 폴더의 refused_ip_list.txt와 input_iptables_list.txt 파일
주의!! windows에서 작성된 쉘스크립트를 사용할 시 syntax error가 나올 수 있다. linux용 파일이여야 하는데 windows라 에러가 난다. 그땐 linux의 텍스트 편집기를 열어 복사한 후 다시 저장하면 된다. |
#!/bin/bash # # SSH 접속시도 아이피중 여러차례 접속거부된 아이피 차단 스크립트 # 하루에 한번 실행(crontab으로 23:59분에 실행시켜 주세요.) ADMIN_EMAIL=***@*** #보고 받을 이메일 주소 REFUSED_IP_LIST='refused_ip_list.txt' #접속거부된 아이피 리스트 SAVE_DIR='/root/refused_ip' #기록될 디렉토리 INPUT_IPTABLES='input_iptables_list.txt' #차단 아이피 리스트(iptables에 리스트업 대상) COUNT=5 #거절횟수정의 onCE="Y" #오늘의 거절 리스트 유/무 확인 변수 #저장될 디렉토리 생성 mkdir -p $SAVE_DIR #저장될 디렉토리가 없다면 if [ -z `/usr/bin/find $SAVE_DIR -name $REFUSED_IP_LIST` ]; then touch $SAVE_DIR/$REFUSED_IP_LIST touch $SAVE_DIR/$INPUT_IPTABLES fi # 오늘날짜 DATE="$(date +%Y-%m-%d)" #영문표시를 위한 LANG='POSIX'; 추가 (2013.11.28 수정) TODAY="$(LANG='POSIX'; date '+%b %e')" #오늘 실행 여부 확인(중복 실행 방지) CHECK_TODAY=`/bin/grep "$DATE" $SAVE_DIR/$REFUSED_IP_LIST` #오늘 처음실행 했다면(한번만 실행 하도록 체크) if [ "$CHECK_TODAY" != "$DATE" ]; then #messages 로그에서 거절된 IP 찾기 (기존) #REFUSED_LIST=`/bin/grep "$TODAY" /var/log/messages |grep ssh |grep refused |awk '{print $9}'` #secure 로그에서 거절된 IP 찾기 (2013.11.28 수정) REFUSED_LIST=`/bin/grep "$TODAT" /var/secure |grep "sshd" |grep "Failed password" |awk -F "from" '{print $2}' |awk '{print $1}'` if [ "$REFUSED_LIST" == "" ]; then exit 0 fi echo $DATE >> $SAVE_DIR/$REFUSED_IP_LIST for i in $REFUSED_LIST do #거절횟수 카운터 IP_COUNT=`/bin/grep -c $i $SAVE_DIR/$REFUSED_IP_LIST` #접속거부된 아이피 리스트에 없다면 if ! /bin/grep $i $SAVE_DIR/$REFUSED_IP_LIST ;then #허가된 아이피가 아니라면 if (! /bin/grep $i /etc/hosts.allow) && (! /bin/grep $i /etc/hosts) ;then #접속차단 아이피 리스트에 기록 echo $i >> $SAVE_DIR/$REFUSED_IP_LIST fi else #지정된 거부 횟수를 초과한다면 if (($IP_COUNT > $COUNT - 1));then #접속차단 아이피 리스트에 없다면 if (! grep $i $SAVE_DIR/$INPUT_IPTABLES) && (! grep $i $SAVE_DIR/INPUT_IPTABLES_TEMP) ;then #날짜기록을 위해 한번만 실행 if [ "$onCE" = "Y" ];then echo "" >> $SAVE_DIR/INPUT_IPTABLES_TEMP /bin/date >> $SAVE_DIR/INPUT_IPTABLES_TEMP echo "=============================" >> $SAVE_DIR/INPUT_IPTABLES_TEMP fi #임시 접속차단 리스트에 기록 echo iptables -A INPUT -i eth0 -p tcp -s $i --dport 22 -j DROP >> $SAVE_DIR/INPUT_IPTABLES_TEMP #iptables에 기록(※주의:스크립트로 자동 등록은 권장하지 않습니다.그래서 주석처리 했씀다.) #/sbin/iptables -A INPUT -i eth0 -p tcp -s $i --dport 22 -j DROP export onCE="N" fi else #접속거부 아이피 리스트 기록 echo $i >> $SAVE_DIR/$REFUSED_IP_LIST fi fi done #접속 차단된 아이피가 있다면 메일 발송 if [ "$onCE" = "N" ];then cat $SAVE_DIR/INPUT_IPTABLES_TEMP >> $SAVE_DIR/$INPUT_IPTABLES /bin/mail -v $ADMIN_EMAIL -s "$DATE Today's refused IP Lists log" < $SAVE_DIR/INPUT_IPTABLES_TEMP rm -rf $SAVE_DIR/INPUT_IPTABLES_TEMP fi fi원리 (2013.11.28)
/root/refused_ip 폴더의 refused_ip_list.txt와 input_iptables_list.txt 파일
refused_ip_list.txt - 접근 실패한 ip 리스트
input_iptables_list.txt - 하루에 5번 접근 실패한 리스트 (차단할 ip 리스트)
crontab에 한번만 실행
secure 로그에서 오늘 날짜의 sshd를 찾아 로그인 실패한 ip를 refused_ip_list.txt 임시 저장 후 저장된 ip의 갯수가 5번 실패한 ip를 input_iptables_list.txt에 다시 저장하여 이메일을 발송.
- ssh_ip_drop.sh (3.9KB) (1)
댓글 0개
| 엮인글 0개
113개(5/6페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
33 | [윈도우] 윈도우즈 레지스트리 - 값, API 명령어 | 푸딩뱃살 | 3041 | 2014.05.26 17:09 |
32 | [리눅스] 서버 포트 확인 nc / nmap | 푸딩뱃살 | 5029 | 2014.04.02 17:38 |
31 | [리눅스] 열려있는 포트 사용중인 프로세스 확인 lsof | 푸딩뱃살 | 3444 | 2014.01.19 16:38 |
30 | [리눅스] 싱크(동기화) rsyncd | 푸딩뱃살 | 4304 | 2013.12.23 02:04 |
29 | [리눅스] ssh 원격 접속 | 푸딩뱃살 | 2341 | 2013.12.19 12:54 |
28 | [리눅스] 열린 포트 확인 netstat | 푸딩뱃살 | 6241 | 2013.12.01 23:55 |
27 | [리눅스] shot_open_tag (php.ini) | 푸딩뱃살 | 1738 | 2013.11.30 00:56 |
26 | [리눅스] 보안을 위한 시스템 파일 퍼미션 설정 | 푸딩뱃살 | 2104 | 2013.11.18 15:45 |
>> | [리눅스] SSH 접속 IP 중 접속 거부된 아이피 차단 스크립트 | 푸딩뱃살 | 3427 | 2013.11.18 14:02 |
24 | [리눅스] repository 설정하기 - Red Hat에서 CentOS로 바뀐 사연 | 푸딩뱃살 | 6403 | 2013.11.14 02:47 |
23 | [리눅스] Apache(httpd) 설치 | 푸딩뱃살 | 851 | 2013.11.14 02:11 |
22 | [리눅스] 초보가 설치하는 Red Hat Enterprise Linux 5.x | 푸딩뱃살 | 4267 | 2013.11.08 01:21 |
21 | [리눅스] 네트워크 보안 | 푸딩뱃살 | 2807 | 2013.11.07 02:09 |
20 | [리눅스] 사용자 웹계정 접속 시 404 Forbidden 에러 해결 chcon | 푸딩뱃살 | 4426 | 2013.09.12 18:08 |
19 | [리눅스] Ubuntu 다운로드 | 푸딩뱃살 | 2345 | 2013.09.04 16:07 |
18 | [윈도우] Windows 7 USB/DVD 다운로드 도구 | 푸딩뱃살 | 2393 | 2013.08.04 20:40 |
17 |
[리눅스] |
푸딩뱃살 | 18 | 2013.07.29 14:53 |
16 | [리눅스] 최고관리자 명령 sudo | 푸딩뱃살 | 2023 | 2013.08.04 02:19 |
15 | [리눅스] 계정 소속 확인 id | 푸딩뱃살 | 1907 | 2013.08.04 01:31 |
14 | [리눅스] e-TRAYz mySQL DB 일일 백업 | 푸딩뱃살 | 2833 | 2013.08.03 15:01 |