티스토리 뷰

서버

fail2ban 설치하기

dev23 2023. 8. 12. 17:31
반응형

외부에서 접근할 수 있다면, 나뿐만 아니라 다른 사람도 접근을 할 수 있다는 뜻이다. 

그럼 언젠가 저장될 내 데이터가 위협을 받을 수 있다. 그래서 fail2ban 이라는 서비스를 설치해 내 서버를 보호할 것이다.

fail2ban은 비인가된 사용자가 무작위로 접근을 시도하려 할때 설정한 시도 횟수를 초과하면 차단되도록 하는 서비스다. 이것은 필수인 것 같다.

 

그럼, 설치를 해 보자.

 

1. 방화벽 체크

 - fail2ban은 기본적으로 방화벽을 이용한다고 하는 것 같다. 그래서 방화벽 서비스가 동작하고 있는지 확인해 보자.

$ systemctl status firewalld

방화벽 동작 확인

 - 방화벽이 켜져 있지 않다면 다음 명령어를 통해 방화벽을 시작하도록 한다.

$ systemctl start firewalld
$ systemctl enable firewalld

 - 방화벽 서비스를 켜고 "enable" 명령어를 통해 서버가 재시작되어도 방화벽 서비스가 자동으로 시작될 있도록 한다.

 - 만약 root 계정으로 진행하고 있지 않다면 다음과 같이 인증이 필요할 수도 있다.

관리자 계정이 아닌 계정으로 시도 시

 

2. EPEL 설치

 - fail2ban을 설치하기 위해 RHEL 기반 배포를 위한 패키지를 제공하는 EPEL 저장소를 설치해야 한다.

$ sudo dnf install -y epel-release

epel-release 패키지 설치

 

3. fail2ban 설치

 - fail2ban과 fail2ban-firewalld 를 설치

$ sudo dnf install -y fail2ban fail2ban-firewalld

fail2ban, fail2ban-firewalld 설치

 

4. fail2ban 서비스 시작

 - 설치가 완료되면 서비스를 시작하고, 서비스가 자동으로 시작될 수 있도록 "enalbe"을 실행한다.

$ sudo systemctl start fail2ban; sudo systemctl enable fail2ban

서비스 시작 및 활성화

 

5. fail2ban 동작 확인

 - 서비스를 시작했으면 정상적으로 동작하는지 확인한다.

$ systemctl status fail2ban

 

6. fail2ban 구성

 - 의도대로 작동하려면 fail2ban을 구성해야 하며, 이상적으로는 기본 구성 파일인 /etc/fail2ban/jail.conf 파일을 수정한다. 그러나 이 방법은 권장되지 않고 jail.conf 파일의 내용을 복사한 jail.local 파일을 사용하여 구성한다.

 - /etc/fail2ban 디렉토리로 이동하여 fail2ban을 구성해 보자.

$ cd /etc/fail2ban
$ sudo cp jail.conf jail.local
$ vi jail.local

- 파일을 열었으면 DEFAULT 속성에 다음 설정이 표시되는지 확인한다.

  * bantime : 실패한 인증 시도 클라이언트가 차단되는 기간을 지정
  * findtime : fail2ban 반복되는 잘못된 암호 시도를 고려할 고려하는 기간
  * maxretry : 원격 클라이언트가 서버에 액세스하지 못하도록 차단되기 전에 잘못된 비밀번호를 시도할 있는 최대 횟수

- 주로 위 속성을 통해 구성하는 것 같다.

 

- 기본적으로 fail2ban은 iptables에서 작동하지만, 지금은 사용하지 않는다고 한다. iptables 대시 firewalld와 함께 작동하도록 fail2ban을 구성해야 한다.

- 다음 경로로 이동하여 설정하자.

$ cd /etc/fail2ban/jail.d
$ sudo mv 00-firewalld.conf 00-firewalld.local

- 변경 사항을 적용하기 위해 fail2ban을 재시작한다.

$ sudo systemctl restart fail2ban

 

 

7. SSH 서비스 보안

 - 기본적으로 fail2ban은 서비스에 대한 감옥(jail)을 구성하기 전까지 원격 호스트를 차단하지 않는다.

 - 감옥 구성은 /etc/fail2ban/jail.d 경로에 지정되며 jail.local 파일에 지정돼 구성을 재정의 한다.

 - vi 를 이용해 sshd.local 파일을 열어 내용을 넣는다.

$ cd /etc/fail2ban/jail.d
$ sudo vi sshd.local

- 파일을 열면 다음 내용을 추가한다.

[sshd]
enabled = true
 
# Override the default global configuration
# for specific jail sshd
bantime = 1d
maxretry = 3

- 위 구성은 3번의 SSH 로그인 시도 실패 시 1일 동안 접근이 금지되도록 한다.

- 변경사항을 저장하고 fail2ban을 재시작한다.

 

8. 구성상태 확인

 - fail2ban-client 명령어로 감옥 구성 상태를 확인한다.

$ sudo fail2ban-client status

1개의 감옥이 존재

 - 위는 sshd 라는 서비스에 대해 구성된 1개의 감옥이 있음을 알 수 있다.

 - 감옥의 상태를 보고 싶으면 다음과 같이 명령어를 입력하면 된다.

$ sudo fail2ban-client status sshd

 

감옥 상태 확인

 

 - 이제 차단된 사용자는 "Banned IP list " 에 나타날 것이다...

 

참고 : 
https://ko.linux-console.net/?p=2492#gsc.tab=0

 

Rocky Linux 및 AlmaLinux에 Fail2ban을 설치하는 방법

Rocky Linux 및 AlmaLinux에 Fail2ban을 설치하는 방법 Python으로 작성된 Fail2ban은 서버를 보호하는 무료 오픈 소스 침입 방지 시스템(IPS)입니다. 무차별 대입 공격에 대해. 지정된 횟수만큼 잘못된 암호를

ko.linux-console.net

 

반응형

'서버' 카테고리의 다른 글

docker 설치하기  (0) 2023.08.12
sudo 설정하기  (0) 2023.08.12
semanage package  (0) 2023.08.12
SSH 설정  (0) 2023.08.12
Rocky8 IP 설정하기  (0) 2023.08.12
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함