티스토리 뷰
외부에서 접근할 수 있다면, 나뿐만 아니라 다른 사람도 접근을 할 수 있다는 뜻이다.
그럼 언젠가 저장될 내 데이터가 위협을 받을 수 있다. 그래서 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 |

3. fail2ban 설치
- fail2ban과 fail2ban-firewalld 를 설치
| $ sudo dnf install -y 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 |

- 위는 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
- httpServletRequest
- Session
- Binding
- react
- Servlet
- Java Server Page
- 서블릿
- 서브넷팅
- Spring
- nodejs
- 네트워크
- 스프링 시큐리티
- 리액트
- 인가
- 제이쿼리
- CSS 속성
- Redux
- Network
- 미들웨어
- html css
- HTML
- script element
- JSP
- CSS
- 세션
- Spring Security
- javaserverpage
- 내장객체
- 스프링
- el
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |