티스토리 뷰
외부에서 접근할 수 있다면, 나뿐만 아니라 다른 사람도 접근을 할 수 있다는 뜻이다.
그럼 언젠가 저장될 내 데이터가 위협을 받을 수 있다. 그래서 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
'서버' 카테고리의 다른 글
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
- el
- Java Server Page
- 세션
- FMT
- 네트워크
- 미들웨어
- HTML
- react
- Session
- Servlet
- 리액트
- a 태그
- CSS
- Binding
- CSS 속성
- Spring
- 제이쿼리
- Spring MVC
- httpServletRequest
- nodejs
- 서블릿
- Redux
- JSP
- html css
- 스프링
- 서브넷팅
- javaserverpage
- script element
- Network
- 내장객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |