보안 · 4 min read · Dec 29, 2025
Debian Lenny 5.0/ISPConfig 3에서 SquirrelMail과 함께 fail2ban 구성하기
Debian Lenny 5.0/ISPConfig 3에서 SquirrelMail과 함께 fail2ban 구성하기
이 기사에서는 Squirrel Logger 플러그인을 사용하여 SquirrelMail 웹 로그인에 대한 무차별 대입 공격을 방지하는 방법을 보여줍니다.
1. 요구 사항
Debian Lenny/ISPConfig 3 머신에 fail2ban과 SquirrelMail이 설치되어 있는지 확인하십시오.
ISPConfig 3 + SquirrelMail을 설치하려면 이 가이드를 따르십시오.
fail2ban을 설치하려면 이 가이드를 따르십시오.
2. Squirrel Logger
Squirrel Logger를 다운로드하고 설치하십시오:
cd /usr/share/squirrelmail/plugins
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fsquirrel_logger-2.3-1.2.7.tar.gz
tar zxvf squirrel_logger-2.3-1.2.7.tar.gz
cd squirrel_logger
cp config_example.php config.phpSquirrel Logger를 구성하십시오:
vi config.php서버가 GMT 로컬 시간을 사용하지 않는 경우, $sl_use_GMT = 1을 $sl_use_GMT = 0으로 변경하십시오:
...
// 로그 날짜를 GMT로 기록합니까? 이렇게 하지 않으면 날짜는
// 각 사용자가 있는 시간대(또는
// 개인 설정에서 설정한 시간대)로 기록됩니다.
//
// 1 = 예
// 0 = 아니오
//
$sl_use_GMT = 0;
...로그 파일의 위치를 $sl_logfile = $data_dir . ‘squirrelmail_access_log’;에서 $sl_logfile = ‘/var/log/squirrelmail.log’;로 변경하십시오:
...
// 파일에 기록할 때 로그 파일의 위치입니다.
// 웹 서버가 실행되는 사용자가 이 파일에 쓸 수 있는지 확인하십시오.
// 로그 파일을 SquirrelMail 데이터
// 디렉토리에 배치하려면 $data_dir 변수를 사용하십시오.
//
// $sl_logs에 "file"이 포함될 때만 적용됩니다.
//
// $sl_logfile = $data_dir . 'squirrelmail_access_log';
$sl_logfile = '/var/log/squirrelmail.log';
...날짜 형식을 fail2ban 정규 표현식과 일치하도록 $sl_dateformat = ‘m/d/Y H:i:s’;에서 $sl_dateformat = ‘M j H:i:s’;로 변경하십시오:
...
// 원하는 날짜 형식을 지정하십시오.
//
// 도움을 받으려면 PHP 매뉴얼의 날짜 함수에서 확인하십시오.
// http://www.php.net/manual/function.date.php
//
// 예시:
//
// 'm/d/y H:i:s' == 03/10/2001 05:16:08
// 'F j, Y, g:i a' == March 10, 2001, 5:16 am
// 'D M j Y H:i:s T' == Sat Mar 10 2001 15:16:08 CDT
//
// $sl_dateformat = 'm/d/Y H:i:s';
$sl_dateformat = 'M j H:i:s';
... /var/log/에 새로운 squirrelmail.log 파일을 생성하십시오:
touch /var/log/squirrelmail.log
chown www-data:www-data /var/log/squirrelmail.log
chmod 640 /var/log/squirrelmail.log설치를 정리하십시오:
cd ..
rm squirrel_logger-2.3-1.2.7.tar.gzSquirrelMail이 Squirrel Logger 플러그인을 사용하도록 구성하십시오:
squirrelmail-configure...
7. 메시지의 날 (MOTD)
8. 플러그인
9. 데이터베이스
...“플러그인”을 선택하고, 제 경우에는 번호 8입니다.
...
18. spamcop
19. squirrel_logger
20. squirrelspell
21. test
...squirrel_logger를 선택하고, 제 경우에는 번호 19입니다.
...
설치된 플러그인
1. delete_move_next
2. squirrelspell
3. newmail
4. squirrel_logger
...이제 squirrel_logger가 설치된 플러그인의 일부입니다.
데이터를 저장하려면 “S”를 누르고 종료하려면 “Q”를 누르십시오.
3. Fail2ban 구성
fail2ban이 SquirrelMail 로그를 사용하도록 구성하십시오:
cd /etc/fail2banjail.local 파일을 열고 다음 줄을 추가하십시오. 이 파일이 없으면 기본 jail.conf를 사용하십시오.
vi jail.local[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/log/squirrelmail.log
bantime = 300
maxretry = 4 bantime(초 단위)와 maxretry가 요구 사항에 맞게 설정되어 있는지 확인하십시오.
filter.d 디렉토리에서 squirrelmail.conf 파일을 다음 내용으로 생성하십시오:
cd filter.d
vi squirrelmail.conf# Fail2Ban 구성 파일
#
# 작성자: Bill Landry ((email_protected))
#
# $Revision: 510 $
[Definition]
# 옵션: failregex
# 주의: 로그 파일에서 비밀번호 실패 메시지와 일치하는 정규 표현식입니다.
# 호스트는 "host"라는 그룹으로 일치해야 합니다. 태그 ""는
# 표준 IP/호스트 이름 일치에 사용될 수 있으며,
# (?:::f{4,6}:)?(?P)의 별칭입니다.
# 값: 텍스트
failregex = \[LOGIN_ERROR\].*from : Unknown user or password incorrect
# 옵션: ignoreregex
# 주의: 무시할 정규 표현식입니다. 이 정규 표현식과 일치하면 해당 줄은 무시됩니다.
# 값: 텍스트
ignoreregex = 중요: 영어가 아닌 다른 언어를 사용하는 경우, 5번에서 squirrelmail.log에 표시되는 텍스트로 “failregex” 줄을 변경하십시오.
예: 스페인어를 사용하면 로그 파일에서 다음과 같이 표시됩니다.
Aug 20 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto. 따라서 이 변경을 합니다:
failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto …그리고 fail2ban을 재시작합니다.
/etc/init.d/fail2ban restart5. 설치 테스트
cd /var/log
tail -f squirrelmail.logSquirrelMail 웹 인터페이스에 “잘못된 비밀번호”로 “3”번 로그인하십시오.
이 절차는 터미널 창에서 실패한 로그인 시도를 보여줍니다:
Aug 19 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.
Aug 19 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.
Aug 19 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.squirrelmail.log 파일을 닫습니다:
Ctrl-cfail2ban-regex가 이러한 오류를 잡을 수 있는지 확인하십시오:
fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.conf테스트 실행 중
=============
정규 표현식 파일 사용: /etc/fail2ban/filter.d/squirrelmail.conf
로그 파일 사용: /var/log/squirrelmail.log
결과
=======
Failregex
|- 정규 표현식:
| [1] \[LOGIN_ERROR\].*from : Unknown user or password incorrect
|
`- 일치 수:
[1] 3 match(es)
Ignoreregex
|- 정규 표현식:
|
`- 일치 수:
요약
=======
발견된 주소:
[1]
200.113.105.235 (Wed Aug 19 13:57:20 2009)
200.113.105.235 (Wed Aug 19 13:57:34 2009)
200.113.105.235 (Wed Aug 19 13:57:46 2009)
날짜 템플릿 적중:
3 hit(s): Month Day Hour:Minute:Second
0 hit(s): Weekday Month Day Hour:Minute:Second Year
0 hit(s): Weekday Month Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
성공, 총 일치 수는 3입니다.
그러나 위의 '테스트 실행' 섹션을 확인하십시오. 중요한 정보가 포함될 수 있습니다. 이 줄이 보이면 모든 것이 정상입니다: 성공, 총 일치 수는 3입니다.
6. Fail2ban 테스트해 보겠습니다
SquirrelMail 웹 인터페이스에 “잘못된 비밀번호”로 “4”번 로그인하십시오(또는 maxretry 설정에 따라 더 많이).
차단되면 로그인 페이지를 볼 수 없다는 의미입니다. 다음을 실행하십시오:
iptables -L이제 iptables 출력에서 차단된 IP xxx-xxx-xxx-xxx를 볼 수 있습니다.
Chain fail2ban-squirrelmail (1 references)
target prot opt source destination
DROP all -- xxx-xxx-xxx-xxx.your.isp.info anywhere
RETURN all -- anywhere anywhere 행운을 빕니다 ;)
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.