티스토리 뷰

개발환경/Server

fail2ban 사용법

돔돔이 2021. 4. 14. 23:52
728x90
반응형

fail2ban : ssh연결 시 지정한 시간 내 지정한 횟수만큼 실패하면 지정한 시간만큼 접속을 차단시킴

로그기반이므로, 로그가 쌓이는 시점으로 계산됨.

 

fail2ban 우분투 설치 : apt-get install fail2ban

설치 후 아무것도 설정되지 않은 패키지 기본값 == SSH연결에 대해 최근 10분간 5회 이상 비밀번호가 틀리면, 10분동안 SSH접속차단됨.

 

fail2ban 환경설정

jail(감옥) 파일을 수정한다.  

jail.conf 해당파일에서 직접 설정 시 업데이트되면 초기화되므로, jail.conf 파일을 직접 수정하지 않고 새로 생성한 설정파일에서 생성.

 

cp /etc/fail2ban/jail.conf  /etc/fail2ban/jail.local

vi /etc/fail2ban/jail.local

 

[DEFAULT]

ignoreip : ban이 절대 되지 않을 아이피를 적는다. (123.234.123.234/32 형태로 적는다. 추가시 스페이스바로 구분) 관리자 ip를 입력하면 됨. 입력한 ip는 차단되지 않음.

bantime : 접속을 차단할 시간. 60=1분, 600=10분, 86400=1일...  (초단위임) 영구차단을 하거나 차단시간을 많이 주면 재부팅시 느려짐.

findtime : 입력시간

maxretry : 인증시도하여 fail된 횟수

[옵션] destemail : 메일 수신자. 다중 수신자는 지원하지 않음.

[옵션] sender : 메일 보낸 사람 (= fail2ban)

[옵션] mta : 메일 전송 프로그램. mta = sendmail

 

/etc/fail2ban/jail.conf 파일을 수정했을 경우 설정적용을 위해  fail2ban을 재시작한다.

 

fail2ban 서비스 재시작: service fail2ban restart

fail2ban 설정확인 : fail2ban-client status sshd

실시간 SSH로그인 실패기록 보기 : journalctl -f

 

ssh연결 로그인 성공/실패 여부는 모두 /var/log/auth.log에 저장된다.

fail2ban이 /var/log/auth.log파일을 읽어 findtime동안 maxretry회 이상 실패 기록이 있으면 bantime동안 연결차단됨.

 

fail2ban이 reload되거나, restart될 때에는 ban목록이 초기화된다. 서버재부팅시 목록이 초기화된다.
fail2ban reload를 하거나 서버재부팅 시에도 로그는 삭제되지 않으니 단번에 로그인할것.

 

만약 bruteforce 공격으로 ssh접속 시도가 엄청나게 많아지면 fail2ban 작동 시 서버가 부하에 걸릴 수도 있다.

728x90
반응형
댓글