11강 / 20강

fail2ban — 두드리는 손을 자른다

로그를 읽어 공격 IP 를 자동 차단

fail2ban — 두드리는 손을 자른다
사람은 비밀번호를 다섯 번씩 틀리지 않습니다. 반복 실패는 공격의 신호입니다.

10강에서 비밀번호 로그인을 껐지만, 현실에선 켜 둬야 하는 서비스도 있습니다 (웹 관리자 로그인, 메일 등). 그런 곳을 위한 방어가 fail2ban 입니다.

원리는 놀랍도록 단순합니다 — 로그를 계속 읽다가, 같은 IP 가 짧은 시간에 여러 번 실패하면 방화벽에 차단 규칙을 꽂아 버립니다. 사람은 비밀번호를 열 번씩 틀리지 않으니까요.

먼저, 공격의 흔적을 봅니다

7강에서 무차별 대입을 당했다면, 그 흔적이 /var/log/auth.log 에 남습니다. 공격자를 차단하려면 먼저 그 로그를 읽을 줄 알아야 해요.

한 IP 가 몰아서 실패했다면 무차별 대입입니다.
🖥️ 내 가상 서버 브라우저 안에서 실행 (계산용)
한 IP 의 실패 횟수 — 사람이라면 이렇게 많이 틀리지 않습니다.
🖥️ 내 가상 서버 브라우저 안에서 실행 (계산용)

fail2ban 을 켭니다

이제 이 반복 실패를 자동으로 잘라 내게 합시다.

sshd jail 이 auth.log 를 감시하기 시작합니다.
🖥️ 내 가상 서버 브라우저 안에서 실행 (계산용)

이제 공격자가 다시 무차별 대입을 시도하면 어떻게 되는지 봅시다. 관점을 🥷 공격자로 두세요.

maxretry 횟수에서 fail2ban 이 IP 를 차단합니다.
🥷 공격자 브라우저 안에서 실행 (계산용)
'Host seems down' — 실제로는 fail2ban 이 막은 것.
🥷 공격자 브라우저 안에서 실행 (계산용)
fail2ban 실습실 — jail 설정을 바꾸고 공격이 언제 잘리는지 본다
불러오는 중…
🤔 확인 문제
fail2ban 이 공격 IP 를 차단하는 방식은?
🤔 확인 문제
fail2ban 만으로 SSH 방어가 충분하지 않은 이유는?