์๋
ํ์ธ์,
์คํจํ ์ธ์ฆ/๋ก๊ทธ์ธ ์๋๋ฅผ ๊ธ์งํ๋ ค๊ณ ํฉ๋๋ค. ํํ ๋ฆฌ์ผ/ํ์ฐํฌ๊ฐ ์์ง๋ง ์ผ์ข
์ ๊ตฌ์ ์ ๊ท์์ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๊น?
/etc/fail2ban # fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/dovecot-pop3imap.conf
Running tests
=============
Use failregex filter file : dovecot-pop3imap, basedir: /etc/fail2ban
ERROR: No failure-id group in '(?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*'
https://wiki.dovecot.org/HowTo/Fail2Ban ๋ฐ https://www.fail2ban.org/wiki/index.php/Dovecot ๋ ๋ณด๊ณ ์์์ต๋๋ค
๋ ๋ฒ์งธ ํ์ด์ง์ ์์ ์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ง๋ง ์ค์ ๋ก ์ํ๋ ์์ ์ ์ํํ๋์ง ํ์คํ์ง ์์ต๋๋ค.
dovecot ์ํค์ ์ค๋ช ๋ ๋๋ก dovecot-pop3imap.conf๋ฅผ ๋ง๋ญ๋๋ค.
์คํจํ ๋ก๊ทธ์ธ/์ธ์ฆ ์๋๋ฅผ ๊ธ์งํฉ๋๋ค.
์ ๊ท์์ด ์๋ํ์ง ์์ต๋๋ค.
์ด์ ์ฐ๋ถํฌ ์๋ฒ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ณ ์๋ก์ด ๋ฒ์ ์ fail2ban์ ์ค์นํ์ต๋๋ค. ๊ทธ ์ดํ๋ก ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ์ ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค.
_ loglevel = 4
fail2ban์ ์คํํ๋ ๋์ ์ป๋ ๊ฒ์ด ์ข์ต๋๋ค _
2018-05-16 14:20:09,136 fail2ban.filter [31796]: ERROR No failure-id group in '(?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*'
2018-05-16 14:20:09,136 fail2ban.transmitter [31796]: WARNING Command ['set', 'dovecot-pop3imap', 'addfailregex', '(?: pop3-login|imap-login): (?:Authentication failure|Aborted login \\(auth failed|Aborted login \\(tried to use disabled|Disconnected \\(auth failed).*rip=(?P<host>\\S*),.*'] has failed. Received Rege
xException("No failure-id group in '(?: pop3-login|imap-login): (?:Authentication failure|Aborted login \\(auth failed|Aborted login \\(tried to use disabled|Disconnected \\(auth failed).*rip=(?P<host>\\S*),.*'",)
2018-05-16 14:20:09,137 fail2ban [31796]: ERROR NOK: ("No failure-id group in '(?: pop3-login|imap-login): (?:Authentication failure|Aborted login \\(auth failed|Aborted login \\(tried to use disabled|Disconnected \\(auth failed).*rip=(?P<host>\\S*),.*'",)
(?P<host>\S*)
๊ฐ์ ๋ ์ด์ ์ ํจํ์ง ์์ต๋๋ค(0.10์ IPv6 ์ง์ ์ดํ, ์ต์ ๋ฒ์ ์ fail2ban์๋ DNS/IPv4/IPv6์ ๋ํ ๋ค๋ฅธ ์ฒ๋ฆฌ ๋ฐ ์ ๊ท ํํ์์ด ์์ต๋๋ค. ์ผ์นํ๋ ๋์ ์ด ๊ทธ๋ฃน์ ๊ตฌ๋ณํ๊ธฐ ๋๋ฌธ์
๋๋ค).
๋ฐ๋ผ์ <HOST>
(๋ชจ๋ ์์ ๋์ ), <ADDR>
(ips ์ ์ฉ) ๋๋ <DNS>
(dns-hosts ์ ์ฉ)๋ฅผ ๋์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ใ
ใ
. ๋ณด๊ฐ <HOST>
๋ ๋ค์ ์ ๊ท์์ ๋ํ "๋ณ์นญ"์
๋๋ค.
(?:(?:::f{4,6}:)?(?P<ip4>(?:\\d{1,3}\\.){3}\\d{1,3})|\\[?(?P<ip6>(?:[0-9a-fA-F]{1,4}::?|::){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):))\\]?|(?P<dns>[\\w\\-.^_]*\\w))
DISLIKE ๋ฒํผ์ ์ด๋์ ์์ต๋๊น? ์ฐ๋ถํฌ๋ฅผ ์ ๋ฐ์ดํธ ํ ํ ๋์ผํ ๋ฌธ์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
fail2ban.filter [8151]: ERROR No failure-id group in '(?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<host>\S*),.*'
2018-08-15 14:19:18,200 fail2ban.transmitter [8151]: WARNING Command ['multi-set', 'dovecot-pop3imap', 'addfailregex', ['(?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \\(auth failed|Aborted login \\(tried to use disabled|Disconnected \\(auth failed|Aborted login \\(\\d+ authentication attempts).*rip=(?P<host>\\S*),.*', '.*(?:pop3-login|imap-login):.*(?:Authentication failure|Aborted login \\(auth failed|Aborted login \\(tried to use disabled|Disconnected \\(auth failed|Aborted login \\(tried to use disallowed plaintext auth).*\\s+rip=(?P<host>\\S*),.*', 'pam.*dovecot.*(?:authentication failure).*\\s+rhost=<HOST>(?:\\s+user=.*)?\\s*$']] has failed. Received RegexException("No failure-id group in '(?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \\(auth failed|Aborted login \\(tried to use disabled|Disconnected \\(auth failed|Aborted login \\(\\d+ authentication attempts).*rip=(?P<host>\\S*),.*'",)
2018-08-15 14:19:18,200 fail2ban [8151]: ERROR NOK: ("No failure-id group in '(?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \\(auth failed|Aborted login \\(tried to use disabled|Disconnected \\(auth failed|Aborted login \\(\\d+ authentication attempts).*rip=(?P<host>\\S*),.*'",)
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์ sebres๋ ์ด๊ฒ์ ๋ ผํํฉ๋๋ค.
(?:(?:::f{4,6}:)?(?P<ip4>(?:\\d{1,3}\\.){3}\\d{1,3})|\\[?(?P<ip6>(?:[0-9a-fA-F]{1,4}::?|::){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):))\\]?|(?P<dns>[\\w\\-.^_]*\\w))
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์ sebres๋ฅผ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ๋ณต๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋ ์ฌ๋์ด ์์ต๋๋ค. ๋์ ๊ฐ๋ฐ์๋ค์ด ์ด๋ฐ ์ผ์ ๊ทธ๋ง๋ ๋ " (?:(?:::f{4,6}:)?(?P
๊ทธ๋ฆฌ๊ณ ์๋ฃจ์ ์ ์ ๊ณตํ์ญ์์ค. ์๋ํ๋ 100 % ๊ด์ฐฎ์ ๋งค๋ด์ผ. ๋ด์ผ ๊ฒฝ์ฐฐ์ ๊ฐ์ผ ํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๋น์ ์ด ๋ง๋ฆฌํ๋๋ฅผ ํผ์ฐ๋ ๊ฒ์ ๋ณด๊ณ ๊ฐ์ฅ์ ๊ฐ๋๋ค. ๋ฌธ์ ๋ sebres๊ฐ ๊ฐ์ฅ์ ๊ฐ๋ ์ด์ ์ ๋๋ค. ๋๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค. 100% ์ ์ ํ ์ค๋ช ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฐจ์ด์ ์ sebres๋ ๊ฒฝ์ฐฐ์ ์ ๊ณ ํ๊ณ PEOPLES๋ sebres์ ๊ฐ์ ๋์ ๊ฐ๋ฐ์๋ฅผ ์ ๊ณ ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ๋๋ ์ฌ๋๋ค์ด ๋์ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค๋๋ก ํฌํํฉ๋๋ค. ๋ชจ๋๊ฐ ๋งค์ผ ๋์ ๊ฐ๋ฐ์ด ๋๋ค๋ ๊ฒ์ ๋ณด๊ฒ ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ sebres๊ฐ ๊ฒฝ์ฐฐ ๊ฐ์ฅ์ ๊ฐ๊ฑฐ๋ ์ฌ๋๋ค์ด ๋ถํํ๋ ๋ฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ sebres๋ ๋ค์์ ๋ฃ์ ์๊ฐ์ด ์์ต๋๋ค.
๊ทธ๋์ ๋น์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค
์: sebres๋ฅผ ์์ฑํ๋ ๋ฐ ์๊ฐ์ด ์ผ๋ง๋ ๊ฑธ๋ฆด์ง ์:
1 ๋ถ. sebres์ ๋นํด fail2ban ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ dovecot-pop3imap์ ํธ๋ ๋ฐ ์คํจํ๋ฉด ์์คํ ๋ก๊ทธ๊ฐ ํ๋ฌ๋ฉ๋๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค.
์ง๊ธ '์ซ์ด์'๊ฐ ๋ณด์ด์๋์...
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์ sebres๋ ์ด๊ฒ์ ๋ ผํํฉ๋๋ค ...
์๋, "๊ฐ๋ฐ์ sebres๋"์ฃผ์ - ํ ํฐ์ ์ฌ์ฉ <HOST>
๋์ (?P<host>\S*)
.
์ ๊ท์ (?P<host>\S*)
๋ ์ด์จ๋ ๋ฌธ์ํ๋์ง ์์ ๊ธฐ๋ฅ์ด์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ์์ง ํ์ด๋์ง ์์ ์๋๋ถํฐ)... ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , ์ผ๋ถ ๋ฌธ์ํ๋์ง ์์ ๊ธฐ๋ฅ์ด ์ด์ ์ ์๋ํ ๊ฒฝ์ฐ์๋ ๋์ผํ๊ฒ ์๋ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์ต์ ๋ฒ์ , ํนํ changelog๊ฐ ์๋จ์ ๊ตต์ ๊ตต์ ๊ธ์จ๋ก ํ์๋๋ ๊ฒฝ์ฐ:
https://github.com/fail2ban/fail2ban/blob/e2a255d104f947f149cc34b17e778c05175e9f78/ChangeLog#L9 -L22
๊ทธ๋๋ ๋ค์:
(?P<host>\S*)
- ์๋์.<HOST>
, <ADDR>
, <DNS>
- ์.0.10 ์ดํ์ fail2ban์ด IPv4์ IPv6์ ๊ตฌ๋ถํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ค์ ์์ฑ๋์์ต๋๋ค.
๋ฐ๋ผ์ (?P<host>\S*)
๋ํ ์ ์ ํ ์ ๊ท์ ๊ธฐ๋ฐ ๋์ฒด๋ ๋ ๋ณต์กํฉ๋๋ค.
<HOST>
์ผ๋ฐ ํ๊ทธ ์ธ์๋ <ADDR>
, <IP4>
, <IP6>
๋ฐ DNS
์ ๊ฐ์ด ํ์ฌ ๊ฐ๋ฅํ ๋ค๋ฅธ ํ๊ทธ๊ฐ ๋ง์ด ์์ต๋๋ค.
์คํจ ID์ ๋ํ IP๋ก ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ ค๋ฉด wiki :: ์ฌ์ฉ์๋ ๋ฉ์ผ ๋ฑ๊ณผ ๊ฐ์ ํธ์คํธ(IP ์ฃผ์)๋ก ๋ค๋ฅธ ๊ฒ์ ๊ธ์งํ๋ ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ธ์
sebres๋ฅผ ์์ฑํ๋ ๋ฐ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆด์ง ์:
๋๋ฌด ๋ง์ต๋๋ค(๋ฌด๋ฃ์ด๊ธฐ ๋๋ฌธ์). ๊ทธ๋ฌ๋ ๊ทธ(๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค)๋ ์ด๋ฏธ ์ถฉ๋ถํ ์์ (์์ ์ํค ์ฐธ์กฐ), docu ๋ฐ changelog ํญ๋ชฉ(์๋ฌด๋ ์ฝ์ง ์์)์ ์์ฑํ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ค์ํ ๊ฒ์ - ์์ด๋ฅผ ๋ฐฐ์ฐ๋ ค๊ณ ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋๊ธ์ ๋ต์ ์ดํดํ ์ ์์ ๊ฒ์ ๋๋ค.
<HOST>
(๋ชจ๋ ์์ ๋์ ), <ADDR>
(ips ์ ์ฉ) ๋๋ <DNS>
(dns-hosts ์ ์ฉ)๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.์์ฝ?
์ธ์ ๊ฐ ์ฌ๋์ด ์์ ํ๋ก๊ทธ๋จ์ ๋ค์ ์์ฑํ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ง๊ธ '์ซ์ด์'๊ฐ ๋ณด์ด์๋์...
์๋, "๊ฐ๋ฐ์ sebres๋"์ฃผ์ - ํ ํฐ์ ์ฌ์ฉ
<HOST>
๋์(?P<host>\S*)
.์ ๊ท์
(?P<host>\S*)
๋ ์ด์จ๋ ๋ฌธ์ํ๋์ง ์์ ๊ธฐ๋ฅ์ด์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ์์ง ํ์ด๋์ง ์์ ์๋๋ถํฐ)... ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , ์ผ๋ถ ๋ฌธ์ํ๋์ง ์์ ๊ธฐ๋ฅ์ด ์ด์ ์ ์๋ํ ๊ฒฝ์ฐ์๋ ๋์ผํ๊ฒ ์๋ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์ต์ ๋ฒ์ , ํนํ changelog๊ฐ ์๋จ์ ๊ตต์ ๊ตต์ ๊ธ์จ๋ก ํ์๋๋ ๊ฒฝ์ฐ:https://github.com/fail2ban/fail2ban/blob/e2a255d104f947f149cc34b17e778c05175e9f78/ChangeLog#L9 -L22
๊ทธ๋๋ ๋ค์:
(?P<host>\S*)
- ์๋์.<HOST>
,<ADDR>
,<DNS>
- ์.0.10 ์ดํ์ fail2ban์ด IPv4์ IPv6์ ๊ตฌ๋ถํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ค์ ์์ฑ๋์์ต๋๋ค.
๋ฐ๋ผ์
(?P<host>\S*)
๋ํ ์ ์ ํ ์ ๊ท์ ๊ธฐ๋ฐ ๋์ฒด๋ ๋ ๋ณต์กํฉ๋๋ค.<HOST>
์ผ๋ฐ ํ๊ทธ ์ธ์๋<ADDR>
,<IP4>
,<IP6>
๋ฐDNS
์ ๊ฐ์ด ํ์ฌ ๊ฐ๋ฅํ ๋ค๋ฅธ ํ๊ทธ๊ฐ ๋ง์ด ์์ต๋๋ค.์คํจ ID์ ๋ํ IP๋ก ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ ค๋ฉด wiki :: ์ฌ์ฉ์๋ ๋ฉ์ผ ๋ฑ๊ณผ ๊ฐ์ ํธ์คํธ(IP ์ฃผ์)๋ก ๋ค๋ฅธ ๊ฒ์ ๊ธ์งํ๋ ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ธ์
๋๋ฌด ๋ง์ต๋๋ค(๋ฌด๋ฃ์ด๊ธฐ ๋๋ฌธ์). ๊ทธ๋ฌ๋ ๊ทธ(๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค)๋ ์ด๋ฏธ ์ถฉ๋ถํ ์์ (์์ ์ํค ์ฐธ์กฐ), docu ๋ฐ changelog ํญ๋ชฉ(์๋ฌด๋ ์ฝ์ง ์์)์ ์์ฑํ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ค์ํ ๊ฒ์ - ์์ด๋ฅผ ๋ฐฐ์ฐ๋ ค๊ณ ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋๊ธ์ ๋ต์ ์ดํดํ ์ ์์ ๊ฒ์ ๋๋ค.
<HOST>
(๋ชจ๋ ์์ ๋์ ),<ADDR>
(ips ์ ์ฉ) ๋๋<DNS>
(dns-hosts ์ ์ฉ)๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.์์ฝ?