본문 바로가기

리눅스

라즈베리파이 fail2ban 설치하여 외부 접근 시도 막기(보안 강화)

라즈베리파이를 포트포워딩 하여 외부 인터넷으로 노출해두신 분들이라면 내 서버로 어마어마한 접근 시도들이 있는걸 로그로 보실 수 있습니다. (특히 포트가 잘 알려진 22, 80, 443과 같은 포트인 경우)

 

포트를 10000번대 이후로 변경하더라도 때때로 누군가 이마저 찾아내어 들어오려고 하는 로그를 본 적이 있습니다.

사실 해커들은 로봇으로 무작위 대입을 해보기 때문에 포트 변경을 하더라도 봇으로 다 찾아냅니다..

 

그래서 이번엔 라즈베리파이에 fail2ban 을 설치하여 접근을 시도하는 해커들로부터 보안을 강화해 보려 합니다.

 

 

fail2ban 이란?

외부 침입자들로부터 계정 또는 비밀번호 시도 횟수 초과시 특정 시간동안 아예 접근을 못하도록 막아버리는 프로그램

 

fail2ban 은 ssh, apache 등 여러가지 프로토콜의 보안을 강화 시켜줄 수 있는데 이번 시간엔 ssh 로 로그인을 시도하는 해커들이 더이상 찝쩍(?) 일 수 없도록 만들어 보겠습니다.

 

 

sudo apt install fail2ban

fail2ban 을 설치해 줍니다.

 

vi /etc/fail2ban/jail.conf

위의 경로의 jail.conf 를 열어 줍니다.

 

그 후 파일에서 살짝 내리다보면

 

[DEFAULT] 부분에 위와 같은 bantime 과 findtime 이 있는걸 보실 수 있습니다.

 

findtime 은 maxretry(최대 재시도 횟수) 횟수를 시도하는 총 시간 으로, 예를들어 maxretry=5, findtime=600 이면 10분동안 5번 시도까지 허용을 하고 6번째 또 시도를 하면 block 시켜버립니다.

 

bantime 은 block 이 된 IP에 대해 얼마(시간)동안 접근을 못하게 막을 것인지에 대한 시간으로, bantime=600 이면 10분동안 block 된 IP로는 접근을 할 수 없게 됩니다.

 

따라서 우린 라즈베리파이의 비번을 잘 알고 있기 때문에 위의 bantime과 findtime 수치를 확 올려 줍니다.

 

저의 경우는

 

bantime=604800 (일주일)

findtime=6000 (100분)

 

으로 설정했습니다. 

 

maxretry 는 사실 내가 비밀번호를 잘못쳐서 몇번 틀릴 수 있기 때문에 5회까지 가능하도록 해 두었습니다.

(5회씩 연속적으로 틀일 일은 없기 때문에..)

 

이제 100분동안 5회 비번 try 를 하는 공격자가 있다면 6번째 시도를 하려고 하는 순간 block 이 되고 일주일간 다시는 나의 라즈베리서버에 접근조차 하지 못하게 됩니다.

 

 

이제,

systemctl retstart fail2ban

서비스를 재기동 해 줍니다.

 

이제 config 가 반영되었습니다.

 

현재 fail2ban 의 block이나 상태 확인을 하고 싶다면,

sudo fail2ban-client status sshd

위 명령어를 수행해보시면 sshd 에 대해

 위와 같이 현재 비밀번호 시도 실패 횟수, total 실패 횟수 그리고 그로 인한 banned(block) 횟수, banned 된 IP 까지 상세하게 보실 수 있습니다.

 

 

 

보통 해커가 직접 비밀번호를 하나하나 쳐보는 것이 아닌 로봇으로 랜덤값을 돌리며 시도하고, 또 접근IP도 1개만 사용하는것이 아닌 vpn 으로 바꿔가면서 지속적으로 시도합니다.

 

따라서 한번 공격 당할때 어마어마하게 많은 IP로 부터 공격 당하게 될 것이며 그 수많은 IP들이 시도를 하다가 전부 block 되어 일주일간 막히게 될 것입니다. (로그로 직접 본적이 있습니다)

 

일주일씩 해 둔 이유는 장시간 막혀있으면 타겟이 바뀌어 그 후 시도가 안들어오는 경향이 있는 것 같아서 입니다.

 

더 길게 또는 maxretry 를 짧게 하시도 싶으신 분들은 입맛에 맞게 config 수정을 해 주시면 됩니다!

 

 

끝.