작성자 : 기술지원부 김 삼 수 kiss@nextline.net Prevent SSH Bruteforce(무차별 공격) 방어 툴 Prevent 이란? /var/log/secure 로그를 살펴보면 일정한 ID를 이용해서 SSH 접속 시도를 하는 것을 볼 수 있으며 이런 공격은 SSH Bruteforce(무차별 공격)로서, 패스워드 사전 파일을 이용해서 미리 지정한 아이디와 대입하여, 접속 계정을 알아 내는 해킹 방법입니다. Prevent은 /var/log/secure 로그의 실시간 분석하여 특정 아이피에서 일정횟수 이상 접속 실패가 이루어지면 공격 아이피에 대한 clipping level을 지정해서 5 level이상 올라가면 아이피을 블록 시키는 툴입니다. prevent 동작원리 /var/log/secure 파일을 분석하여 sshd에 대한 로그분석 후 특정 아이디, 패스워드의 불일치로 접속 실패한 아이피를 /var/log/prevent 디렉토리에 기록 후 카운팅을 합니다. 카운팅은 1~5까지 있는데 이것이 clipping level 이며 level 5 이상이 되었을 시 /etc/denyip 파일에 아이피를 등록하여 해당 아이피가 차단되도록 동작합니다. 단, level 5 이상이 되기전 한번이라도 로그인에 성공하면 해당 아이피에 대한 clipping level 기록이 삭제되며 /etc/denyip 파일에 등록되어 차단된 아이피는 /var/log/prevent 디렉토리의 기록에서 자동 삭제됩니다. ① SSH Bruteforce(무차별 공격) 탐지 [root@nextline log]# cat /var/log/secure


/var/log/secure 로그파일에 기록된 SSH Bruteforce 공격의 형태입니다. ② log rotation 설정 prevent 운영 시 /var/log/secure의 로그가 log rotation 되면 secure 로그를 분석하지 못하는 현상이 나타나므로 /etc/logrotate.d/syslog 파일을 아래와 같이 수정하시기 바랍니다. [root@nextline ~]# cat /etc/logrotate.d/syslog /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/sleep 1 # 1초간 대기한 /root/bin/prevent stop # prevent가 설치된 절대경로 입력 /root/bin/prevent stop # prevent가 설치된 절대경로 입력 /root/bin/prevent start & # prevent가 설치된 절대경로 입력 endscript }
 ③ 다운로드 wget http://manpage.co.kr/zboard/data/down/prevent_0.7.2.tar.gz wget http://manpage.co.kr/zboard/data/down/prevent2_64bit.tgz
 ④ 압축해제 [root@ns ~]# tar zxf prevent_0.7.2.tar.gz
 ⑤ 퍼미션 변경 root 권한으로만 실행될 수 있도록 퍼미션을 변경합니다. [root@ns ~]# chmod 700 prevent [root@ns ~]# ll prevent -rwx------ 1 root root 376812 3월 22 2005 prevent
 ⑥ 경로변경 prevent이 위치할 적당한 경로로 파일을 이동합니다. [root@ns ~]# mv prevent /root/bin/ [root@nextline ~]# ll /root/bin/prevent
 ⑦ /etc/hosts.deny 설정 prevent은 아이피 차단을 위해 /etc/hosts.deny 파일을 사용하므로 /etc/hosts.deny 파일에 아래와 같이 설정되어있어야 합니다. [root@ns ~]# vi /etc/hosts.deny
/etc/denyip 파일에 등록된 아이피는 ssh 접근을 차단시키겠다는 설정이며 denyip 파일은 prevent 실행 시 자동 생성됩니다. 아래의 내용을 입력합니다. sshd: . /etc/denyip
⑧ prevent 시작 실시간으로 /var/log/secure 파일을 분석할 수 있도록 백그라운로 prevent을 실행합니다. [root@nextline ~]# /root/bin/prevent start &
 백그라운드로 정상적으로 실행되고 있는지 확인합니다. [root@nextline ~]# jobs
 ⑨ prevent 중지 [root@nextline ~]# /root/bin/prevent stop
 ⑩ denyip 파일생성 확인 [root@nextline ~]# ll /etc/denyip denyip 파일의 퍼미션은 root만 읽고, 쓰기가 가능하도록 0600으로 설정되어 있습니다.
 ⑪ 아이피 차단테스트 prevent 실행시 자동생성되는 /var/log/prevent 디렉토리로 이동합니다. [root@ns ~]# cd /var/log/prevent/ ssh 접속시 일치하지 않은 패스워드로 1~2차례 접속시도를 하면 아래와 같이 카운트가 시작되며 count 1은 clipping level 1을 의미합니다. [root@ns prevent]# count 1 ssh 접속 실패한 아이피가 clipping level에 등록되면 해당 아이피가 /var/log/prevent 디렉토리에 아이피명으로 파일이 생성됩니다. [root@ns prevent]# ls xxx.xxx.xxx.xxx 해당 파일을 vi 에디터나 cat 명령어로 확인하며 해당 아이피에 대한 clipping level 을 확인 하실 수 있습니다. [root@ns prevent]# cat xxx.xxx.xxx.xxx
 지속적인 접속실패로 clipping level 5 이상이되면 /etc/denyip 파일에 등록되면서 해당 아이피가 차단되며 /var/log/prevent 디렉토리에는 해당 아이피에 대한 기록이 삭제됩니다. /etc/denyip 파일에 아이피가 등록되면서 콘솔상에 뿌려주는 메시지 입니다.
차단 아이피확인 [root@ns prevent]# cat /etc/denyip
⑫ 접속테스트 Prevent에 의해 차단된 아이피로 ssh 접속을 시도하면 아래와 같은 에러메시지를 출력하며 접속이 이루어지지 않습니다.

|
|