Fail2ban auttaa suojautumaan esimerkiksi koputtelijoilta, jotka kuormittavat palvelinta kokeilemalla kymmeniä erilaisia polkuja etsiessään haavoittuvia tiedostoja tai palveluita. Kun Fail2ban huomaa, että tietystä IP-osoitteesta tulee paljon pyyntöjä, niin Fail2ban blokkaa tilapäisesti IP-osoitteen palomuurista, joka hidastaa ja vaikeuttaa koputtelijan toimintaa.
Tarvitset fail2banin asentamiseen EPEL-pakettikirjaston. Jos koneellasi ei ole EPEL-pakettikirjastoa, niin asenna se kuten Apachen ohjeessa.
Asenna Fail2ban komennolla:
sudo yum install fail2ban
Luo tiedosto /etc/fail2ban/jail.local ja liitä tiedostoon koodi
[DEFAULT] ignoreip = 127.0.0.1/8 [my-sshd-auth] enabled = true port = ssh logpath = /var/log/secure bantime = 20h findtime = 10m maxretry = 3 [my-sshd-flood] enabled = true port = ssh logpath = /var/log/secure bantime = 20h findtime = 10m maxretry = 10 [my-apache-badbots] enabled = true port = http,https logpath = /var/log/httpd/access_log bantime = 48h findtime = 10m maxretry = 1 [my-apache-nofile] enabled = true port = http,https logpath = /var/log/httpd/access_log bantime = 60m findtime = 10m maxretry = 10 [my-apache-flood] enabled = true port = http,https logpath = /var/log/httpd/access_log bantime = 30m findtime = 1m maxretry = 300 [my-apache-errors] enabled = true port = http,https logpath = /var/log/httpd/error_log bantime = 60m findtime = 10m maxretry = 3
Tallenna seuraavat tiedostot /etc/fail2ban/filter.d-hakemistoon.
my-apache-badbots.conf
[Definition]
badbots = Go-http-client|Mozilla/5\.0 zgrab|python-requests|Custom-AsyncHttpClient|l9explore|masscan|Mozilla/5\.0 Keydrop|Gregarius|Expanse|redtail-http
badfiles = \.env|\.git/+config
failregex = ^[-0-9A-Za-z.]* <HOST> - - \S+ "([^\\"]|\\.)*" \d+ (\d+|-) ".*" "(?:%(badbots)s).*"$
^[-0-9A-Za-z.]* <HOST> - - \S+ "\S+ /+(?:%(badfiles)s).*" \d+ (\d+|-) ".*" ".*"$
^[-0-9A-Za-z.]* <HOST> - - \S+ "([^\\"]|\\.)* HTTP/1.0" \d+ (\d+|-) ".*" ".*"$
ignoreregex =
datepattern = ^[^\[]*\[({DATE})
my-apache-errors.conf
[INCLUDES] before = apache-common.conf [Definition] failregex = ^%(_apache_error_client)s (?:(?:AH01623: )?client method denied by server configuration|(?:AH01630: )?client denied by server configuration|(?:AH10244: )?invalid URI path|(?:AH001[23][456]: )?Invalid (method|URI) in request\b|(?:AH00565: )?request failed: URI too long \(longer than \d+\)|request failed: erroneous characters after protocol string:|(?:AH00566: )?request failed: invalid characters in URI\b) ignoreregex =
my-apache-flood.conf
[Definition]
# Täsmää aivan kaikkiin pyyntöihin access_log tiedostossa.
# Huomaa, että ao. rivi olettaa, että Apachen vhost on määritelty tulostumaan rivin alkuun!
failregex = ^[-0-9A-Za-z.]* <HOST> - - \S+ "([^\\"]|\\.)*" \d+ (\d+|-) ".*" ".*"$
ignoreregex =
datepattern = ^[^\[]*\[({DATE})
my-apache-nofile.conf
[Definition]
# Täsmää pyyntöihin access_log tiedostossa, joissa palvelin palauttaa 404 virhekoodin.
# Huomaa, että ao. rivi olettaa, että Apachen vhost on määritelty tulostumaan rivin alkuun!
failregex = ^[-0-9A-Za-z.]* <HOST> - - \S+ "([^\\"]|\\.)*" 404 (\d+|-) ".*" ".*"$
ignoreregex =
datepattern = ^[^\[]*\[({DATE})
my-sshd-auth.conf
[Definition] # Täsmää epäonnistuneisiin kirjautumisyrityksiin failregex = sshd(-session)?\[\d+\]: (Invalid user \S* from|Disconnected from authenticating user \S*|Connection (reset|closed) by authenticating user \S*) <HOST> port \d+ ignoreregex =
my-sshd-flood.conf
[Definition] # Täsmää kaikkiin yhteydenottoihin failregex = sshd(-session)?\[\d+\]: (Received disconnect from|Connection (closed|reset) by( \S+ user \S*)?|Disconnected from \S+ user \S*|Unable to negotiate with) <HOST> port \d+ # Ohita onnistuneesti kirjautuneiden käyttäjien toiminta ignoreregex = disconnected by user$
Käynnistä fail2ban ja aseta se käynnistymään automaattisesti
sudo systemctl start fail2ban sudo systemctl enable fail2ban
Tarkista lokista, että fail2ban käynnistyy oikein ja blokkaa haluttuja kutsuja
sudo tail -f /var/log/fail2ban.log
Jos blokkaat vahingossa oman IP-osoitteen, niin voit vapauttaa se komennolla
sudo fail2ban-client unban 80.82.77.202
missä 80.82.77.202 on oma IP-osoitteesi. Jos filterissa on korjattavaa, niin voit vapauttaa kaikki filtterin blokkaamat osoitteet kerralla
sudo fail2ban-client reload --unban my-apache-badbots
Tämä kirjoitus on kuudes osa seikkailua Rocky Linux 9:n parissa. Lue edellinen osa tästä blogista!
Päivitys 9.6.2026: sshd-prosessin nimi my-sshd-flood.conf ja my-sshd-auth.conf tiedostoissa päivitetty sisältämään sshd-session -prosessin