2009. 9. 19. 15:27
11. SSH 접속 차단 스크립트 ( 5번 패스워드 틀리면 자동 차단)
2009. 9. 19. 15:27 in 쉘스크립트
1 #!/bin/bash
2 days=`date +%d`
3 savedir='/z_bjh/denylist'
4 for i in $( cat /var/log/secure | grep "Failed password for" | awk '$2 = $days {print $13}' | sort | uniq -c | awk '$1 > 5 {print $2}'); do
5 denyip=${i#::ffff:}
6 echo "ALL:$denyip" >> $savedir
7 done
8 for a in $( cat /etc/hosts.deny | grep "ALL : " | awk '{print $3}' | sort | uniq -c | awk '{print $2}'); do
9 echo "ALL : $a" >> $savedir
10 done
11 cp /etc/hosts.deny-before /etc/hosts.deny
12 for b in $( cat $savedir | grep "ALL : " | awk '{print $3}' | sort | uniq -c | awk '{print $2}'); do
13 echo "ALL : $b" >> /etc/hosts.deny
14 done
15 cat $savedir >> /etc/hosts.deny
16 rm -f $savedir
2 days=`date +%d`
3 savedir='/z_bjh/denylist'
4 for i in $( cat /var/log/secure | grep "Failed password for" | awk '$2 = $days {print $13}' | sort | uniq -c | awk '$1 > 5 {print $2}'); do
5 denyip=${i#::ffff:}
6 echo "ALL:$denyip" >> $savedir
7 done
8 for a in $( cat /etc/hosts.deny | grep "ALL : " | awk '{print $3}' | sort | uniq -c | awk '{print $2}'); do
9 echo "ALL : $a" >> $savedir
10 done
11 cp /etc/hosts.deny-before /etc/hosts.deny
12 for b in $( cat $savedir | grep "ALL : " | awk '{print $3}' | sort | uniq -c | awk '{print $2}'); do
13 echo "ALL : $b" >> /etc/hosts.deny
14 done
15 cat $savedir >> /etc/hosts.deny
16 rm -f $savedir
일단 이 스크립트를 작성하기 전에 한가지ㄱㅏ 필요하다
/etc/hosts.deny 를 /etc/hosts.deny-before 라고 하나 복사해야한다.
그리고 /z_bjh/denylist 라는 파일을 하나 만들어주어야 한다.( 디렉토리는 마음대로 수정 )
하도 예전에 인터넷 여기저기 보고 만들어놓은 것인지라 .
위에서는 라인번호를 같이 표시했다. ( 왜냐하면 저걸 그대로 복사하면 라인이 바뀌게 되고 그럼 스크립트가 실행이 안되므로 ㅋㅋ )
원리는 간단하다 /var/log/secure 파일을 읽어서 접속 Fail 메시지를 count 해서 그 아이피만 추출하여
/etc/hosts.deny 에 등록해주는 것이다.
상용서버에도 돌려봤는데 정말 리눅스 해킹시도는 엄청나다.
이걸 사용하든지 아예 /etc/hosts.deny 에 ALL:ALL 로 해놓고 접속하는 곳의 아이피를 /etc/hosts.allow 에
등록시켜 놓고 사용하는게 편하다 ^^ㅋ
(1) 실사용방법은 위의 스크립트를 deny_ip.sh 라고 작성하여 만들고
(2) /etc/hosts.deny 를 복사하여 /etc/hosts.deny_defore 라고 하나 만들어주고
(3) touch /z_bjh/denylist 라고 하나 만들어줌
사용되다가 실제로 5번이 틀리면 자동으로 /etc/hosts.deny 에 아이피가 등록되고 접속이 아예할 수 없게 된다.
5분마다 /var/log/secure 파일을 검색해서 다시 추가해준다.
만약 secure 파일이 지나가버려서 새로운 secure 파일로 생성될 때에는
초기화가 된다.
'쉘스크립트' 카테고리의 다른 글
파일들의 확장자만 변경 (0) | 2010.04.22 |
---|---|
15. 텍스트 파일 포맷 변경 (2) | 2009.12.22 |
14. 지난 파일 압축하고 삭제하기 (2) | 2009.12.18 |
13. 파일 비교 스크립트 4 (2) | 2009.11.05 |
12. 파일 개수 비교해서 삭제하는 스크립트 (3) | 2009.10.21 |
10. 파일비교 스크립트2 (3) | 2009.09.18 |
9. 여러 파일 하나의 txt 파일로 합치기 스크립트 (3) | 2009.09.10 |
8. 파일 내용 비교1 (3) | 2009.09.10 |
스크립트 문제 (0) | 2009.06.01 |
7. sed 란? (2) | 2009.03.31 |