리눅스 fail2ban: Difference between revisions
From IT Wiki
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[분류:리눅스]][[분류:리눅스 프로그램]][[분류:보안]] | |||
;리눅스에서 특정 시스템에 일정 횟수 이상 로그인을 실패하면 일정 시간동안 차단하는 시스템 | |||
== 설정파일 == | |||
/etc/fail2ban/jail.conf | |||
== 설정 == | |||
* jail.conf를 직접 수정하지 않고 jail.local 파일을 생성하여 수정한다. | |||
** jail.conf는 업데이트 과정 등에서 덮어씌워질 수 있다. | |||
<pre> | |||
$ cp ./jail.conf ./jail.local | |||
또는 | |||
$ cp ./jail.conf ./jail.d/custom.local | |||
등 | |||
</pre> | |||
* 차단 옵션을 추가한다. 기본적으로 아무것도 차단하지 않도록 설정되어 있을 수 있다. | |||
<pre> | |||
[DEFAULT] | |||
## 차단하지 않을 IP | |||
ignoreip = 127.0.0.1/8 192.168.10.0/24 | |||
# 3시간 차단 | |||
bantime = 10800 | |||
# 아래 시간동안 amxretry 만큼 실패시 차단 | |||
findtime = 300 | |||
# 최대 허용 횟수 | |||
maxretry = 5 | |||
# 메일 수신자, 다중 수신자는 지원 안 함 | |||
destemail = [email protected] | |||
# 메일 보낸 사람 | |||
sender = [email protected] | |||
# 메일 전송 프로그램 | |||
mta = sendmail | |||
# 차단시 whois 정보와 관련 로그를 첨부하여 메일 전송 | |||
action = %(action_mwl)s | |||
# sshd 서비스 차단 | |||
[sshd] | |||
enabled = true | |||
port = ssh, 10022 | |||
</pre> | |||
* 설정을 마쳤으면 서비스를 재시작하여 변경 사항을 반영한다. | |||
<pre> | |||
$ sudo systemctl restart fail2ban | |||
</pre> | |||
* 차단 정보를 확인한다. | |||
<pre> | |||
$ sudo fail2ban-client status sshd | |||
Status for the jail: sshd | |||
|- Filter | |||
| |- Currently failed: 1 | |||
| |- Total failed: 8 | |||
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd | |||
`- Actions | |||
|- Currently banned: 0 | |||
|- Total banned: 2 | |||
`- Banned IP list: | |||
</pre> | |||
== 트러블 슈팅 == | == 트러블 슈팅 == | ||
Line 34: | Line 99: | ||
== 참고 문헌 == | == 참고 문헌 == | ||
* https://www.lesstif.com/security/fail2ban-ssh | |||
* https://bobcares.com/blog/fail2ban-not-banning/ | * https://bobcares.com/blog/fail2ban-not-banning/ |
Revision as of 21:32, 11 April 2020
- 리눅스에서 특정 시스템에 일정 횟수 이상 로그인을 실패하면 일정 시간동안 차단하는 시스템
설정파일
/etc/fail2ban/jail.conf
설정
- jail.conf를 직접 수정하지 않고 jail.local 파일을 생성하여 수정한다.
- jail.conf는 업데이트 과정 등에서 덮어씌워질 수 있다.
$ cp ./jail.conf ./jail.local 또는 $ cp ./jail.conf ./jail.d/custom.local 등
- 차단 옵션을 추가한다. 기본적으로 아무것도 차단하지 않도록 설정되어 있을 수 있다.
[DEFAULT] ## 차단하지 않을 IP ignoreip = 127.0.0.1/8 192.168.10.0/24 # 3시간 차단 bantime = 10800 # 아래 시간동안 amxretry 만큼 실패시 차단 findtime = 300 # 최대 허용 횟수 maxretry = 5 # 메일 수신자, 다중 수신자는 지원 안 함 destemail = [email protected] # 메일 보낸 사람 sender = [email protected] # 메일 전송 프로그램 mta = sendmail # 차단시 whois 정보와 관련 로그를 첨부하여 메일 전송 action = %(action_mwl)s # sshd 서비스 차단 [sshd] enabled = true port = ssh, 10022
- 설정을 마쳤으면 서비스를 재시작하여 변경 사항을 반영한다.
$ sudo systemctl restart fail2ban
- 차단 정보를 확인한다.
$ sudo fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 8 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 0 |- Total banned: 2 `- Banned IP list:
트러블 슈팅
ban이 이루어지지 않는 경우
- 감지: 로그인 시 아래와 같은 수많은 실패 기록이 보인다.
Last failed login: Sat Apr 4 13:25:31 KST 2020 from 11.11.11.11 on ssh:notty There were 121259 failed login attempts since the last successful login
- 확인: fail2ban의 차단이 동작하고 있는지 확인한다.
- 아래와 같이 나오면 sshd에 대한 ban 옵션이 꺼져 있는 것이다.
# fail2ban-client status Status |- Number of jail: 0 `- Jail list:
- 조치: jail 설정 파일에서 sshd에 대한 차단 옵션을 활성화시켜 준다.
- 설정파일은 일반적으로 /etc/fail2ban/jail.local 또는 /etc/fail2ban/jail.conf 에 있다.
- 아래와 같은 라인이 주석 처리 되어 있다면 주석 처리를 해제한다.
[sshd] enabled = true
- 재기동
- systemctl restart fail2ban.service
- 재확인: fail2ban의 차단이 동작하고 있는지 확인한다.
- 아래와 같이 나오면 sshd에 대한 ban 옵션이 꺼져 있는 것이다.
# fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd