회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인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 | 조회 3426
| 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개(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 [리눅스] e-TRAYz crontab 위치 비밀글 푸딩뱃살 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