검색결과 리스트
글
리눅스 Burute Force 공격에 대한 iptables 설정으로 방어하기
리눅스 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
'Linux' 카테고리의 다른 글
리눅스 서버 마지막 부팅시간 확인하기 (0) | 2015.10.20 |
---|---|
Linux Log 관리를 위한 logrotate 명령으로 로그 관리하기 (0) | 2015.10.20 |
리눅스 shell 작성하기 (0) | 2015.10.20 |
리눅스 중요 디렉토리(폴더) 정보 (0) | 2015.10.20 |
리눅스 디스크(파티션) 용량 확인 (0) | 2015.10.20 |