회원 로그인
|
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개(1/6페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
113 | [윈도우] onedrive(sharepoint) 네트워크 드라이브 연결 시 | 푸딩뱃살 | 264 | 2021.12.09 15:25 |
112 | [윈도우] 탐색기에서 svn 오버레이 아이콘이 표시가 안될 때 | 푸딩뱃살 | 249 | 2021.10.20 15:17 |
111 | [리눅스] CentOS 설치 후 오류 메시지 - vmwgfx | 푸딩뱃살 | 849 | 2020.06.27 20:00 |
110 | [윈도우] 윈도우 설치 프로그램 관리 (설치 / 삭제) | 푸딩뱃살 | 732 | 2020.05.16 02:15 |
109 | [윈도우] Visual Studio 2019 Community 설치 시 CPU 사용률 | 푸딩뱃살 | 1229 | 2020.04.30 00:41 |
108 | [맥] Mac에서 Windows 전환 | 푸딩뱃살 | 747 | 2020.03.16 22:40 |
107 | [윈도우] batch 실행 명령창 숨기기 | 푸딩뱃살 | 1217 | 2019.10.07 14:45 |
106 | [윈도우] 네트워크 드라이브 연결 batch | 푸딩뱃살 | 823 | 2019.09.24 10:38 |
105 | [윈도우] utorrentie 제거 | 푸딩뱃살 | 805 | 2019.09.01 01:03 |
104 | [리눅스] vi 대소문자 구분 없이 검색 | 푸딩뱃살 | 1260 | 2019.08.09 00:22 |
103 | [윈도우] 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. | 푸딩뱃살 | 823 | 2019.05.24 22:38 |
102 | [리눅스] CUI 해상도 설정 | 푸딩뱃살 | 1219 | 2019.05.14 00:55 |
101 | [리눅스] 리눅스 디렉토리 구조 | 푸딩뱃살 | 1618 | 2019.05.05 22:09 |
100 | [리눅스] Kernel headers not found for target kernel | 푸딩뱃살 | 1988 | 2019.05.05 12:04 |
99 | [윈도우] 맥북용 윈도우10 부팅 USB 만들기 | 푸딩뱃살 | 1854 | 2019.05.03 18:42 |
98 | [맥] 크롬 비밀번호를 맥 키체인에 넣기 | 푸딩뱃살 | 1007 | 2019.02.12 02:29 |
97 | [윈도우] VirtualBox MacOS 설치 | 푸딩뱃살 | 1359 | 2018.10.23 15:20 |
96 | [윈도우] 윈도우즈 디펜더 검출된 리스트 삭제 | 푸딩뱃살 | 1479 | 2018.10.22 00:36 |
95 | [리눅스] openssl 인증서 생성 | 푸딩뱃살 | 1863 | 2018.09.26 15:24 |
94 | [윈도우] 전원 관리 hiberfil.sys 파일 삭제하기 | 푸딩뱃살 | 1197 | 2018.09.09 13:02 |