리눅스 Burute Force 공격에 대한 iptables 설정으로 방어하기

Linux 2015. 10. 20. 17:55
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

리눅스 Burute Force 공격에 대한  iptables 설정으로 방어하기



 

l  구현 환경  - 리눅스 CentOS

l  해킹툴  -  HYDRA (hydra)  -  http://www.thc.org

 

-       Hydra 해킹툴은 ssh, ftp 등의 로그인을 하여 세션을 맺는 데몬등에 접속하도록,

불특정 user 계정과 password가 들어있는 txt 파일을 이용하여 순차적 대입방식

( user계정 한 개당 password에 있는 내용을 전부 대입)으로 불법적 세션을 맺으려 시도한다.

공격 발생시 ssh 데몬이 암호화 계산을 하게되어 cpu의 부하가 늘어나게되어 심할경우

서버가 마비 될 수도 있다.

 

l  Hydra 설치

-       다운로드 폴더로 경로 이동.  다운로드 된 hydra 압축을 푼다

Ex > $tar xvzf ./hydra-7.2-src.tar.gz

-       압축이 풀리면 hydra-7.2-src 라는 폴더가 생성 된다.

-       hydra-7.2-src폴더로 이동 ./configure 명령을 실행하여 설치 준비를 한다.

-       configure 과정이 끝나면 vi 명령으로 Makefile을 열어 다음과 같이 수정 한다.

Ex > vi ./Makefile

XLIBPATHS=-L/usr/lib -L/usr/local/lib -L/lib -L/usr/lib -L/usr/lib64 -L/usr/lib -L/usr/local/mysql/lib/mysql

XIPATHS= -I/usr/local/mysql/include/mysql

-       make make install 명령을 이용하여 설치한다.

Ex > make && make install

 

l  hydra 사용 방법

-       hydra 설치 경로로 이동 하여 옵션을 맞게 주고 실행하여 공격 하는 형태이다.

-       먼저 로그인 시도 할 user 목록과 password 목록을 txt 형식으로 준비한다.

Ex > user.txt  ,   password.txt   (각 한줄 당 아이디 또는 비밀번호 한 개씩)

-       다음의 형식과 같이 실행 명령을 옵션,공격지, 사용할 user, password 목록을 명시해준다.

Ex > hydra -l ./user.txt -p ./passwd.txt -o result.log -v [해킹 시도 할 ip 주소] ssh

 

옵션 설명각 옵션 뒤에 옵션에 상응하는 설정이 온다.

 

-l   로그인 시 사용 할 user 목록 파일

-p  로그인 시 사용 할 password 목록

-o  로그인 성공 시 쌍이 맞는 user password 저장 로그 파일 이름

-v  로그인의 시도 결과에 대한 자세한 정보 표시

l  방화벽(iptables) 을 이용한 Brute Force 방어

-       iptables 조작 시 root 권한이 필수 이므로 root 로 로그인 또는 권한을 부여한다.

-       /etc/sysconfig/  밑의 iptables 파일을 vi 명령어로 열어 다음과 같이 내용을 추가 한다.

Ex >  blacklist ssh 라는 체인을 생성,

 

 blacklist ssh 라는 체인을 생성,

       -N blacklist

      -N ssh

blacklist ssh 라는 체인을 생성,

      -A INPUT -m state --state NEW -p tcp --dport ssh -j ssh

blacklist 체인에서는 recent 모듈로 “blacklist”라는 목록에 접속 주소를 기록하고 접속을 거부

      -A blacklist -m recent --set --name blacklist

      -A blacklist -j REJECT

       Blacklist 체인에 있는 접속자의 경우 600 10 안에 접속

시도 1 이상일 접속 거부

      -A ssh -m recent --update --seconds 600 --hitcount 1 --name blacklist -j REJECT

접속 주소를 “ssh” 목록에 기록합니다

      -A ssh -m recent --set --name ssh

       20 안에 5 이상의 접속 시도시 blacklist 등록

      -A ssh -m recent --update --seconds 20 --hitcount 5 --name ssh -j blacklist

위의 모든 규칙을 통과한 경우 ssh 대한 접속 허가

      -A ssh -j ACCEPT

 

 

-       전체 스크립트 내용

 

      -N blacklist
      -N ssh
      -A INPUT -m state --state NEW -p tcp --dport ssh -j ssh
      -A blacklist -m recent --set --name blacklist
      -A blacklist -j REJECT
      -A ssh -m recent --update --seconds 600 --hitcount 1 --name blacklist -j REJECT
      -A ssh -m recent --set --name ssh
      -A ssh -m recent --update --seconds 20 --hitcount 5 --name ssh -j blacklist
      -A ssh -j ACCEPT

 

l  방화벽(iptable) 재시작

-       방화벽을 재시작 하여 위에 Brute Force 공격을 방어하기 위한 규칙을 활성화.

Ex > service iptables restart