[ Ubuntu Web Server ] fail2ban 을 이용하여 SSH 서버 보안 강화하기

시작하기 전에…

 

안녕하세요 공대생의 오아시스입니다. ^^

개인 서버를 운영하다보면 수많은 보안 공격을 받게되는데요, 가장 대표적인 것은 역시 무차별 대입 공격이라고 할 수 있습니다.

무차별 대입 공격(Brute-force attack)이란, 비밀번호를 바꿔가며 로그인을 성공할 때까지 시도하는 가장 무식하면서도 단순한 방법을 말합니다.

 

눈에 직접 보이지 않아서 아직 잘 모르겠다구요?

SSH에 접속해서 lastb (로그인 실패 기록을 확인) 명령어만 실행해봐도 무수한 로그인 요청을 확인하실 수 있을 겁니다. ^^;

 

 

lastb

 

root, Admin, testuser… 가지각색으로 로그인을 시도해왔네요 ㅎㅎ;

이번에 알아볼 것은 이러한 공격으로부터 서버를 보호해주는 편리한 프로그램 ‘fail2ban’입니다.

 

 

fail2ban 설치와 설정

 

대부분의 패키지가 다 그렇듯이, 명령어 한 줄이면 손쉽게 fail2ban을 설치할 수 있습니다.

 

 

그 다음 jail.conf 파일을 통해 입맛에 맞게 규칙을 수정하실 수 있는데… 아직 fail2ban이 뭐하는 프로그램인지 말씀드리질 않았네요.

fail2ban은 같은 ip로 일정 횟수만큼 로그인에 실패하면 지정 시간동안 그 ip를 차단(ban)해주는 프로그램입니다.

‘일정 횟수’‘지정 시간’을 설정할 수 있는 파일이 바로 jail.conf 인 것이구요.

 

jail.conf 파일은 아래 명령어를 통해 접근할 수 있습니다.

 

 

fail2ban-jail.conf

 

파일을 열면 위와 같은 화면이 나올텐데요, 주요 설정 항목과 그 의미는 다음과 같습니다.

 

ignoreip : 절대 차단당하지 않는 예외 ip

bantime : 차단 시간

findtime : 이 시간 내에 설정 횟수만큼 로그인에 실패하면 차단당합니다.

maxretry : 최대 로그인 재시도 가능 횟수입니다. 이 횟수를 넘어가면 차단당합니다.

 

이외에도 여러가지 설정 변수가 존재하니 원하는대로 설정값을 변경하여 사용하시면 됩니다.

 

설정 변경이 끝난 뒤에는 변경 내용 적용을 위해 fail2ban을 재시작해주셔야 합니다.

 

 

 

 

fail2ban 동작 확인

 

fail2ban은 규정 위반 ip에 대한 iptables rule을 추가하는 방식으로 차단을 하는 프로그램입니다.

따라서 다음과 같은 명령어를 통해 fail2ban이 잘 동작하는지 확인할 수 있습니다.

 

 

iptables-L

 

f2b-sshd 라는 이름의 체인 아래로 차단당한 ip의 rule이 줄줄이 이어지네요.

 

시험삼아 제일 위에 보이는 49.88 ip의 접속 실패 기록을 찾아보니 아주 그냥 가관입니다.

 

lastb-grep

 

그래도 제대로 차단이 되는 것을 보니 fail2ban이 일을 잘 하고 있군요. ^^

 

참고로 fail2ban 설치 직후에는 f2b-sshd라는 체인이 안 뜰 수도 있으니 어느 정도 시간이 지난 후 확인하시기 바랍니다.

 

 

내 아이피가 차단되었을 때

 

현재 차단 현황 보기

 

차단 풀어주기

 

 

주의사항

 

SFTP를 이용하시는 경우 마찬가지로 fail2ban 규정이 적용되므로 로그인에 주의하셔야합니다.

만약 실수 혹은 프로그램의 자동 로그인 재시도 기능에 의해 자신의 ip가 차단되었다면 서버를 재시작하시면 됩니다.

다만 로그 파일과 findtime은 그대로이기 때문에 충분한 시간 뒤에 혹은 한번에 로그인에 성공하셔야 합니다.

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다