Apache, SSL, SSH, telnet, ftp, webmin과 같이 로그인이 필요한 다양한 응용프로그램에 대해서

불법적인 로그인을 시도하면 이를 자동으로 감지해서 자동으로 차단시켜준다.

iptable을 이용하기 때문에 커널을 직접 빌드할 때는 Socket Filtering이 활성화되어 있어야 한다.

이와 같은 구현을 성능상의 문제로 커널단에서 직접 구현해서 최적화하는 경우도 있지만

범용성 보다는 프로토타입 형태인 경우가 많다.
(시도해보고 싶은 분들은 SSH 로그인시도, DoS 공격 시도 같은 것을 탐지해서 차단하는 기능을
커널단에서 직접 구현해보면 된다. 한 가지만 골라서 하는 것이 좋다)

fail2ban은 정규식을 이용한다. 정규식은 학습이 필요하지만 필터를 만들 필요가 있다면 그때가서 사용하고,

기본으로 대부분의 것들을 지원하니 공부하지 말자.

apt-get install fail2ban

한 방이면 된다. 데몬으로 실행되면서 설정까지 끝난다

/etc/fail2ban/jail.conf

에 보면 maxretry 3인데 5로 늘려서, 최대 5번 정도는 봐주자.

bantime은 시도횟수를 초과하면 600초 동안 금지한다. 좀 가혹하게 하고 싶다면 3600으로 설정해서

한시간 동안 접근금지 시키자.

jail.conf에 보면

[ssh]

enabled = true
port  = ssh,sftp
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6

[apache]

enabled = false
port  = http,https
filter  = apache-auth
logpath = /var/log/apache*/*access.log
maxretry = 6

# default action is now multiport, so apache-multiport jail was left
# for compatibility with previous (<0.7.6-2) releases
[apache-multiport]

enabled   = false
port    = http,https
filter    = apache-auth
logpath   = /var/log/apache*/*access.log
maxretry  = 6

[apache-noscript]

enabled = false
port    = http,https
filter  = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6

이렇게 되어 있는데, 각각의 섹션은 [section]으로 되어 있다.

ssh와 apache에도 적용하고 싶다면 enabled = true로 전부 바꿔주자.

출처 : http://www.jiny.kr/jiny/253

Tags: ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.