- iptables를 이용한 방법[ https://sys4.de/ ]
1. 이메일 서버에 인증 없이 메일 발송이 되지 않도록 해 놓았는데 계속 시도하면서 서버에
부하을 일으키는 스패머가 있어 차단 방법(공통 키워드 EHLO ylmf-pc)
설정 후 적용 리스트
# iptables -A INPUT -p tcp -dport 25 -m string --string 'ylmf-pc' --algo bm -j DROP
적용되면 메일 로그에서 지속적으로 발송 시도하던 로그는 말끔히 사라진다.
※추가로 해당 로그만 별도 보기를 원할 경우 아래와 같이 추가하면 된다.
EHLO ylmf-pc 문자열이 확인 되면 SMTP 오류를 발생하고 180초간 3번의 오류 발생시 로그 생성
# iptables -I INPUT -p tcp --dport 25 -m string --to 90 \
--string "EHLO ylmf-pc" --algo bm -m recent \
--name SMTP_ERROR --set
# iptables -I INPUT -m recent --name SMTP_ERROR \
--rcheck --seconds 180 --hitcount 3 -j DROP
# iptables -I INPUT -p tcp --dport 25 -m string --to 90\
--string "EHLO ylmf-pc" --algo bm -j LOG \
--log-level info --log-prefix "SMTP_ERROR "
# iptables -I INPUT -p tcp --dport 25 -m string --algo bm --string 'ylmf-pc' -j DROP
커널 로그(kern.log)에 아래와 같이 표시됨.
SMTP_ERROR IN=eth0 OUT= MAC=..:..:..:..:..:..:..:..:..:..:..:..:..:.. SRC=x.x.x.x DST=x.x.x.x LEN=54 TOS=0x00 PREC=0x00 TTL=111 ID=3363 DF PROTO=TCP SPT=3677 DPT=25 WINDOW=65501 RES=0x00 ACK PSH URGP=0
2. 포트 포워딩 설정
# iptables -A PREROUTING -p tcp -m tcp --dport {서버접속포트} -j DNAT\
--to-destination {서비스서버IP:서비스포트}
3. iptables 설정값 저장 및 restore
# iptables-save > /etc/iptables.rule
# iptables-restore < /etc/iptables.rule
4. 설정된 리스트 조회
# iptables -L
# iptables -t nat <-- 포트포워드 규칙이 있을 경우
- fail2ban을 이용하는 방법[ https://serverfault.com/ ]
# vi /etc/fail2ban/jail.conf
[postfix-ddos]
enabled = true
port = smtp,ssmtp
filter = postfix-helo
logpath = /var/log/mail.log
maxretry = 5
# vi /etc/fail2ban/filter.d/postfix-helo.conf
[INCLUDES]
before = common.conf
[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 504 5.5.2
ignoreregex =