서버 보안 · 3 min read · Jan 02, 2026

CentOS 5.3/ISPConfig 3에서 SquirrelMail과 함께 fail2ban 구성하기

CentOS 5.3/ISPConfig 3에서 SquirrelMail과 함께 fail2ban 구성하기

소개

이 튜토리얼은 fail2ban을 사용하여 SquirrelMail 웹 로그인에 대한 무제한 로그인 시도를 방지하고 따라서 무차별 대입 공격을 방지하는 방법을 보여줍니다.

1. 요구 사항

CentOS v5.3/ISPConfig 3 머신에 fail2ban과 SquirrelMail이 모두 설치되어 있는지 확인하십시오.

그러나 설치는 간단합니다:

yum install fail2ban squirrelmail

iptables를 방화벽으로 적극적으로 사용해야 합니다. Fail2ban은 무단 소스 IP 주소에 대한 임시 드롭 규칙을 생성하여 작동합니다.

2. SquirrelMail 로깅 구성

CentOS v5.3/ISPConfig 3에서 SquirrelMail (imapd)은 기본적으로 /var/log/maillog에 로그를 기록하지만 IP 주소 127.0.0.1 (localhost)로만 기록됩니다. 특정 소스 주소를 차단하려고 하기 때문에 fail2ban은 이 파일을 사용할 수 없습니다. 따라서 로그인 시도의 실제 소스 주소를 캡처하기 위해 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-2.3-1.2.7  
cp config_example.php config.php

이 플러그인은 Squirrel Logger의 최신 버전이지만, 수정된 버전이 있다면 SquirrelMail 플러그인 사이트에서 직접 다운로드하십시오.

기계가 GMT가 아닌 로컬 시간을 사용하는 경우, vi를 사용하여 config.php에서 $sl_use_GMT = 1을 $sl_use_GMT = 0으로 변경하십시오:

원본 config.php:

...
// Log dates in GMT?  If you do not do this, dates will
// be logged in whatever timezone each user is in (or
// has set in their personal preferences)
//
//    1 = yes
//    0 = no
//
$sl_use_GMT = 1;
...

수정된 config.php:

...
// Log dates in GMT?  If you do not do this, dates will
// be logged in whatever timezone each user is in (or
// has set in their personal preferences)
//
//    1 = yes
//    0 = no
//
$sl_use_GMT = 0;
...

다운로드한 Squirrel Logger gzip 파일을 삭제하십시오:

cd /usr/share/squirrelmail/plugins  
rm squirrel_logger-2.3-1.2.7.tar.gz

SquirrelMail이 Squirrel Logger 플러그인을 사용하도록 구성하십시오:

/usr/share/squirrelmail/config/conf.pl
SquirrelMail 구성 : 읽기: config.php (1.4.0)
---------------------------------------------------------
메인 메뉴 --
1.  조직 기본 설정
2.  서버 설정
3.  폴더 기본값
4.  일반 옵션
5.  테마
6.  주소록
7.  오늘의 메시지 (MOTD)
8.  플러그인
9.  데이터베이스
10. 언어

D.  특정 IMAP 서버에 대한 미리 정의된 설정 설정

C   색상 켜기
S   데이터 저장
Q   종료

명령 >>
선택: 플러그인
SquirrelMail 구성 : 읽기: config.php (1.4.0)
---------------------------------------------------------
플러그인
  설치된 플러그인
    1. delete_move_next
    2. squirrelspell
    3. newmail  

  사용 가능한 플러그인:
    4. listcommands
    5. fortune
    6. filters
    7. translate
    8. abook_take
    9. spamcop
    10. squirrel_logger
    11. mail_fetch
    12. calendar
    13. sent_subfolders
    14. message_details
    15. administrator
    16. info
    17. bug_report

R   메인 메뉴로 돌아가기
C   색상 켜기
S   데이터 저장
Q   종료

명령 >> 
선택: squirrel_logger
SquirrelMail 구성 : 읽기: config.php (1.4.0)
---------------------------------------------------------
플러그인
  설치된 플러그인
    1. delete_move_next
    2. squirrelspell
    3. newmail
    4. squirrel_logger  

  사용 가능한 플러그인:
    5. listcommands
    6. fortune
    7. filters
    8. translate
    9. abook_take
    10. spamcop
    11. mail_fetch
    12. calendar
    13. sent_subfolders
    14. message_details
    15. administrator
    16. info
    17. bug_report

R   메인 메뉴로 돌아가기
C   색상 켜기
S   데이터 저장
Q   종료

명령 >> 
선택: 데이터 저장, 종료

3. Fail2ban 구성

fail2ban 구성 디렉토리로 변경하십시오:

cd /etc/fail2ban

SquirrelMail에 http 전송을 사용한다고 가정하고, vi를 사용하여 jail.conf 파일에 다음 줄을 추가하십시오:

[squirrelmail-iptables]
enabled  = true
filter   = squirrelmail
action   = iptables[name=SquirrelMail, port=http, protocol=tcp]
           sendmail-whois[name=SquirrelMail, dest=you@your_domain.com, sender=fail2ban@your_domain.com]
logpath  = /var/lib/squirrelmail/prefs/squirrelmail_access_log
maxretry = 4

maxretry 및 dest와 sender의 이메일 주소가 요구 사항에 맞게 설정되었는지 확인하십시오.

fail2ban 필터 디렉토리로 변경하십시오:

cd filter.d

filter.d 디렉토리에서 vi를 사용하여 squirrelmail.conf 파일을 다음 내용으로 생성하십시오:

# Fail2Ban 구성 파일
#
# 저자: Bill Landry ((email_protected))
#
# $Revision: 510 $

[정의]

# 옵션: failregex
# 참고: 로그 파일에서 비밀번호 실패 메시지와 일치하는 정규 표현식. 호스트는 "host"라는 그룹으로 일치해야 합니다. 태그 ""는 표준 IP/호스트 이름 일치에 사용될 수 있으며, (?:::f{4,6}:)?(?P\S+)의 별칭입니다.
# 값: 텍스트

failregex = \[LOGIN_ERROR\].*from : Unknown user or password incorrect

# 옵션: ignoreregex
# 참고: 이 정규 표현식과 일치하면 해당 줄이 무시됩니다.
# 값: 텍스트

ignoreregex =

Fail2ban은 squirrelmail_access_log 파일에서 사용된 날짜 형식을 인식해야 합니다.

cd /usr/share/fail2ban/server

vi를 사용하여 datedetector.py 파일을 편집하고 Apache 형식과 Exim 형식 섹션 사이에 다음 줄을 추가하십시오:

# SquirrelMail 09/13/2007 06:43:20
template = DateStrptime()
template.setName("Month/Day/Year Hour:Minute:Second")
template.setRegex("\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}")
template.setPattern("%m/%d/%Y %H:%M:%S")
self.__templates.append(template)
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.