본문 바로가기

개발/BACK

[Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기

728x90
				sudo vi /etc/fail2ban/jail.conf​

 


각설

 

이번에 보안의 중요성에 대해 실전에서 배웠다

 

클라우드 서버를 운영하면서 소위 무작위 대입 공격이라고 불리는 Brute Force 공격으로 인해

 

root 계정이나 서버에 설정해놓은 배치파일 등 제어할 수 없는 상태가 되어

 

구축했던 서버를 재구축하는 일이 발생했다

 

전혀 예측할 수 없었던 일이었지만, 이 일로 인해 공격에 대해 예방을 해놓아야 한다고 생각했다

 

심지어 서버 이미지를 무중단 배포나 로그 관리 배치 파일등을 설정하기 이전에 버전으로 백업해 두어서

거의 처음부터 서버 설정을 다시했다 ..

 


1

SSH 무작위 대입 공격은?

 

일단 Brute Force 공격은 특정 서버가 아닌 여러 서버에 대해,

SSH 원격 접속 시도를 비밀번호를 마구잡이로 대입해서 접속해낸 후,

 

해당 서버의 root 비밀번호,설정 정보등을 무작위로 변경해버린다

 

그래서 다른 클라우드 서버를 무작위로 공격한다거나 해당 서버를 빼앗아 해킹범 자신이 제어해버리기도 한다

 

이번에 공격 받았을 때는, 클라우드 서버 내에 구축되어있는 내부 웹 서버나 WAS에는 접근할 수 없도록 

 

막혀있었고, Cloud 서비스 사 측에서 모니터링을 통해 바로 해당 IP를 차단시켜 피해가 거의 없었다

 

하지만 서버를 재구축해야하는 내 입장에서는 피해가 크다

 


2

Fail2Ban 이란 ?

 

fail2ban은 이러한 무작위 대입공격을 피해가 생기기 전에, 미리 막을 수 있는 프레임워크다

 

SSH에 접속하여 비밀번호를 무제한으로 입력할 때, 해당 비밀번호를 입력할 수 있는 기회를 제한하고,

 

해당 기회 내에서 접속하지 못했다면, 해당 IP를 차단해버리는 기능을 가지고 있다

 

이렇게 된다면 무작위로 대입하는 방법은 사용할 수가 없기 때문에, 서버구축을 진행할 때는, 

 

fail2ban, sshguard 등 접속을 제한할 수 있는 시스템을 구축해놓자

 

다음은 구축방법이다

 


3

Fail2Ban 구축 방법

 

3.1

서비스 설치

 

			sudo apt update && sudo apt install fail2ban -y

 

3.2

jail.conf 파일 수정 ( fail2ban 상세 설정 파일 )

 

				sudo vi /etc/fail2ban/jail.conf

 

jail.conf 41번 째줄 DEFAULT 에 입력

 

  • ignoreip : 해당 SSH에 접속할 때, 비밀번호를 틀려도 제한을 두지않는 아이피를 설정한다 
  • bantime : 비밀번호를 초과해서 틀렸을 때, 해당 아이피를 얼마나 차단할지 입력한다 (초 단위)
  • findtime : 비밀번호를 findtime 내에 초과했을 때, 차단하는 기능 (초 단위)
  • maxretry : 비밀번호 틀린 횟수

그리고 DEFAULT 항목 maxretry 아래에 해당 문구를 입력한다

 

				banaction = iptables-multiport

 

이 문구는 비밀번호를 초과해서 틀렸을 때, iptables로 차단할 때 사용한다

 

 

해당 설정까지 다 했다면, 서버 내에서 구동될 fail2ban 설정을 최소한으로 완료했다

 

이제 구동시켜보자

 

 

fail2ban 설정을 반영한다

				sudo systemctl daemon-reload

 

 

fail2ban 실행

				sudo systemctl start fail2ban.service

 

서버 부팅 시, 자동으로 fail2ban 실행을 하도록 설정

				sudo systemctl enable fail2ban.service
728x90