회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


SSH 접속 IP 중 접속 거부된 아이피 차단 스크립트

푸딩뱃살 | 2013.11.18 14:02 | 조회 3439
| SSH 접속 IP 중 접속 거부된 아이피 차단 스크립트

주의!!
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에 다시 저장하여 이메일을 발송.

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