2023. 7. 8. 16:46ใSystem ์์ ์ค/LINUX
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ ์ฐ๋ถํฌ(Ubuntu) Fail2ban ๋ณด์ ์ค์
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
์ด๋ฒ์๋ Fail2ban์ด๋ผ๋ ๊ฒ์ ํตํด ๊ธฐ๊น๋๋ ์ฌ๋๋ค ๋ด๋ถ ์๋ฒ์ ๋ณด์์ ์ข ๋ ๊ฒฌ๊ณ ํ๊ฒ ํ๋ ์์
์ ํด๋ณด๋ ค๊ณ ํด์.
๐ฆ Fail2ban์ด๋?
Fail2ban์ ์นจ์
์ฐจ๋จ Software Framework(์ํํธ์จ์ด ํ๋ ์์ํฌ)๋ก Python(ํ์ด์ฌ) ์ธ์ด๋ก ๊ฐ๋ฐ๋ ํ๋ก๊ทธ๋จ์ด์์.
Log(๋ก๊ทธ), iptables๋ฅผ ์ด์ฉํ์ฌ ์ ์ ์๋๋ฅผ ํ์ธํ๊ณ , ์ฐจ๋จํ์ฌ ๋ฌด์ฐจ๋ณ ๋์
๊ณต๊ฒฉ์ผ๋ก ๋ถํฐ System(์์คํ
)์ ๋ณดํธํ๋ ์ญํ ์ ํด์.
Packet(ํจํท) ์ ์ด ์์คํ
์ด๋, Local Firewall(๋ก์ปฌ ๋ฐฉํ๋ฒฝ; iptalbes ๋๋ TCP wrapper)์์ Interface(์ธํฐํ์ด์ค)๋ฅผ ๊ฐ๋ POSIX ์์คํ
์์ ์ฌ์ฉํ ์ ์๊ณ , GNU General Public License(GNU GPL ๋๋ GPL) v2+ License(๋ผ์ด์ผ์ค)๊ฐ ์ ์ฉ๋ Open Source(์คํ ์์ค)๋ก ๋ฐฐํฌ(Release) ๋๊ณ ์์ด์.
์ด๋ฒ์ ์ฃผ๋๋ ์๋ ๋จ๊ณ๋ฅผ ํตํด ์ค์น๋ฅผ ์งํํ ๊ฑฐ์์.
โ apt ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ์ฌ fail2ban ์ค์น
โ fail2ban ์ ์ ์ค์น ์ฌ๋ถ ํ์ธ
โ systemctl ๋ช
๋ น์ด๋ฅผ ํตํ fail2ban Service(์๋น์ค) ๊ด๋ฆฌ
โ fail2ban ์ค์
โ fail2ban ์ฌ์ฉ ๋ฐฉ๋ฒ
๐ฆ apt ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ fail2ban ์ค์น
์ต์ด ์ค์น๋ฅผ ์ํด Package(ํจํค์ง) ์ต์ ํ๋ฅผ ์งํํด ์ค๊ฒ์.
๐ฆ fail2ban ์ ์ ์ค์น ์ฌ๋ถ ํ์ธ
์์ ๊ฐ์ด Version ์ ๋ณด๊ฐ ๋์จ๋ค๋ฉด ์ ์ ์ค์น ๋ ๊ฒ์ด์์.
๐ฆ systemctl ๋ช ๋ น์ด๋ฅผ ํตํ fail2ban Service(์๋น์ค) ๊ด๋ฆฌ
# 1.fail2ban service ์ค์ ๋ฐ์
$ sudo systemctl daemon-reload
# 2.fail2ban service ์์
$ sudo systemctl start fail2ban.service
# 3.fail2ban service ์ค์ง
$ sudo systemctl stop fail2ban.service
# 4.fail2ban service ์ฌ์์
$ sudo systemctl restart fail2ban.service
# 5.fail2ban service ์ค์ ์ฌ์ ์ฉ
$ sudo systemctl reload fail2ban.service
# 5.fail2ban service ์ํ ์กฐํ
$ sudo systemctl status fail2ban.service
# 6.fail2ban service ํ์ฑํ(๋ถํ
์ ์๋ ์์)
$ sudo systemctl enable fail2ban.service
# 7.fail2ban service ๋นํ์ฑํ
$ sudo systemctl disable fail2ban.service
# 8.fail2ban service ๋ฐ ๊ด๋ จ ํ๋ก์ธ์ค ๋ชจ๋ ์ค์ง
$ sudo systemctl kill fail2ban.service
์ฃผ๋๋ ์์ ๊ฐ์ด fail2ban์ ์์ํ์ฌ ์ฃผ์์ด์.
๐ฆ fail2ban ์ค์
์ ๋ด์ฉ์ด Default Value์ธ๋ฐ, ์ฐ๋ถํฌ์ ๊ฒฝ์ฐ ufw๋ฅผ ๋ฐฉํ๋ฒฝ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํด ์ฃผ์์ด์.
----------------------------------------
[DEFAULT]
# ์ฐจ๋จ ์์ธ IPs, ์ถ๊ฐ ์ ์คํ์ด์ค๋ก ๊ตฌ๋ถ
ignoreip = 127.0.0.1/8
# ์ ์ ์ฐจ๋จ ์๊ฐ, 1๋ถ = 60, ์๋ ์์ ๋ 1์ผ, -1 ์ค์ ์ ์๊ตฌ ์ฐจ๋จ
bantime = 86400
# ์ค์ ์๊ฐ ๋ด maxretry ์ค์ ๋งํผ ์ ์ ์คํจ ์ ์ฐจ๋จ
findtime = 86400
# ์ต๋ ํ์ฉ ํ์
maxretry = 3
# ์ฐจ๋จ ๋ฐฉ๋ฒ, firewalld ์ฌ์ฉ ์ 'firewallcmd-new', iptables ์ฌ์ฉ ์ 'iptables-multiport'
banaction = iptables-multiport
[sshd]
enabled = true
----------------------------------------
์ฃผ๋๋ ์์ ๊ฐ์ด ์ค์ ํด ์ฃผ์์ด์.
์ฐธ๊ณ ๋ก /etc/fail2ban/fail.conf File(ํ์ผ)์ Update(์
๋ฐ์ดํธ) ์ ์ด๊ธฐํ ๋๊ธฐ ๋๋ฌธ์, /etc/fail2ban/jail.d/*conf ๋๋ /etc/fail2ban/jail.local ํ์ผ ์์ฑ ๋ค ์ค์ ํ๋ ๊ฒ์ ์ถ์ฒํด์.
์ฌ๊ธฐ๊น์ง ํด ์ฃผ์๋ค๋ฉด ์ ์ฅํ๊ณ , ๋์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์์ ๊ฐ์ด Log๊ฐ ๋จ์ auth.log ํ์ผ์ ๋น ํ์ผ๋ก ๋ง๋ค์ด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ๊ถํ์ ์์ ํด ์ฃผ์์ด์.
๊ทธ๋ฆฌ๊ณ , ์์ ๊ฐ์ด Service๋ฅผ ์ฌ ์์ํด ์ฃผ์์ด์.
์ฌ๊ธฐ์ ์ฐธ๊ณ ํด์ผ ํ ์ ์ ์ฌ ์์ํ ๋ ๋ง๋ค, ban Lise(๋ฒค ๋ชฉ๋ก) ์ฆ, ์ฐจ๋จํ๋ ํ์ ๋ฑ์ด ์ด๊ธฐํ ๋๋ ์ ์ด์์.
์ ๋ช
๋ น์ด๋ก ์ค์๊ฐ ssh Login(๋ก๊ทธ์ธ) ์คํจ ๊ธฐ๋ก์ ํ์ธํ ์ ์์ด์.
์์ง ์ด ์๋ฒ์ ๋๊ตฐ๊ฐ ์ ๊ทผํ ํ์ ์ ์๋๋ณด๋ค์.
๐ฆ fail2ban ์ฌ์ฉ ๋ฐฉ๋ฒ
์ต์ด ์ฐจ๋จ ๋ชฉ๋ก ์กฐํ๋ฅผ ํด ๋ณผ๊ฒ์.
SSH ๋ฅผ ํตํด ์ ์ ์๋๋ฅผ ํ๊ณ , ์ ์ฑ
์ ์๊ฑฐํ์ฌ ์ฐจ๋จํ ํด๋ผ์ด์ธํธ ๋ด์ฉ์ ์ด๋ ๊ฒ ํ์ธํ ์ ์์ด์.
๋ง์ฝ ํน์ IP์ ๋ํด SSH ์ ์ ์ฐจ๋จ์ ํ์ด์ฃผ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด ๋ฉ๋๋ค.
# fail2ban-client set sshd unbanip <Client IP>
Fail2ban ๊ด๋ จ ๋ก๊ทธ๋ ์ด๋ ๊ฒ ํ์ธํ ์ ์์ด์.
๐ง ์ฐธ๊ณ ์๋ฃ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."