Konfiguriranje Fail2Ban v Linuxu za zaščito SSH, Apache, MySQL, Exim

Fail2ban omogoča blokiranje dostopa do strežnika ali izvajanja storitev na podlagi analize dnevnikov in povezav dostopa. Fail2Ban lahko samodejno ustvari pravila požarnega zidu za blokiranje določenih naslovov IP, če so dejanja iz tega IP-ja zaznana kot sumljiva. Torej, Fail2Ban lahko zaščiti vaš strežnik pred ugibanjem gesla prek SSH, DDoS napadov, izkoristi poskuse izkoriščanja in izvaja prepovedana dejanja.

Vsaka strežniška storitev, katere vrata so odprta za zunanji svet, je potencialno ranljiva. Vrata nekaterih storitev se lahko zaprejo, vendar tega ne zmorejo vsi. Na primer, če želite, da vaša e-poštna storitev SMTP deluje v celoti, je ne morete onemogočiti ali blokirati vrat na požarnem zidu in občasno lahko v dnevnikih vidite zapise o poskusu izbire gesla za račun. To se zgodi z drugimi storitvami..

Ponavadi na vseh svojih strežnikih zapiram SSH dostop od zunaj, ker Na strežnike se povežem s svojega statičnega IP naslova ali prek OpenVPN povezave. Vendar to ni vedno mogoče. Zamenjava standardnih vrat je na pomoč ali konfiguriranje na storitvenem strežniku fail2ban. V tem primeru bomo pokazali, kako namestiti in uporabljati fail2ban v CentOS-u, vendar lahko uporabite to navodilo tudi za druge distribucije Linuxa..

Vsebina:

  • Namestitev in začetna namestitev Fail2Ban v CentOS 8/7
  • Uporaba programa Fail2Ban za zaščito SSH pred preverjanjem gesla
  • Dnevniki Fail2Ban
  • Zavarovanje Apache s programom Fail2Ban
  • Konfiguriranje paketov Fail2Ban in Nginx
  • Zaščita MySQL s Fail2Ban
  • Pravila Fail2Ban za Exim
  • Fail2Ban seznam dovoljenih IP, deblokiranje IP

Namestitev in začetna namestitev Fail2Ban v CentOS 8/7

Paket za namestitev fail2ban je v skladišču Epel, povezali ga bomo:

# yum namestite epel-release -y

Ko povežete skladišče, lahko namestite fail2ban prek yum ali dnf (na CentOS 8):

# yum namestite fail2ban -y

Kot vsaka druga storitev, fail2ban Za zagon je treba dodati, da se samodejno zažene ob ponovnem zagonu sistema:

[root @ server ~] # systemctl omogoči fail2ban

Ustvaril symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /usr/lib/systemd/system/fail2ban.service.

Storitev fail2ban shrani konfiguracijske datoteke v imenik / itd / fail2ban. Glavna konfiguracijska datoteka - /etc/fail2ban/jail.conf. Ker lahko to datoteko pri posodabljanju storitve prepisujete, morate delovati, morate ustvariti datoteko zapor.local. Datoteke tudi v imeniku /etc/fail2ban/jail.d/ lahko uporabite za razveljavitev nastavitev v zgornjih datotekah. Datoteke se uporabijo v naslednjem vrstnem redu:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

Uporaba programa Fail2Ban za zaščito SSH pred preverjanjem gesla

Ustvarite datoteko in nastavite:

# nano /etc/fail2ban/jail.local

In vanj dodajte vsebino:

[DEFAULT] # Ban prepoveduje eno uro: bantime = 3600 # Preveri /etc/fail2ban/jail.d/00-firewalld.conf: banaction = iptables-multiport [sshd] omogočeno = res

Ta konfiguracija določa nov čas za blokiranje naslovov IP za vse storitve, nastavlja uporabo iptables za ključavnice in zaščita za sshd je omogočena.

Če želite uporabiti firewalld za filtriranje, podajte:

banaction = požarni zidcmd-ipset

Po spremembi nastavitev znova zaženite storitev:

# systemctl znova zaženite fail2ban

Če si želite ogledati stanje fail2ban in preveriti seznam zaščitenih storitev, zaženite ukaz:

[root @ server ~] # fail2ban-status stranke

Status | - Število zapora: 1 '- Seznam zapora: sshd 

Za določeno storitev lahko zahtevate trenutno stanje zaklepa fail2ban:

# fail2ban-client status sshd

V datoteki jail.conf lahko opiše splošne parametre, ki jih ne bomo preglasili zapor.local.

Odkleni vrstico:

ignoreip = 127.0.0.1/8

Spremenite naslednje vrednosti:
bantime = 10m - čas, za katerega bo IP blokiran
najdba = 10m - čas, v katerem bodo neuspeli poskusi avtorizacije šteti.
maxretry = 3 - število poskusov pred blokiranjem

Če želite prejemati opozorila po e-pošti, morate konfigurirati naslednje možnosti:
destemail = [email protected] -prejemnika
pošiljatelj = [email protected] - pošiljatelj
mta = postfix - SMTP storitev, prek katere pošiljanje

Če želite konfigurirati blokiranje za posamezne storitve, v datoteki /etc/fail2ban/jail.local po bloku [DEFAULT] se ustvari blok za želeno storitev, na primer, kot pri sshd. Dodajte mu nekaj nastavitev:

[sshd] omogočeno = resnično pristanišče = ssh logpath =% (sshd_log) s

Navedli smo, katera vrata blokirati in kam pisati dnevnike blokov. Bodite pozorni na imenik /etc/fail2ban/filter.d, tam so opisani filtri, s pomočjo katerih bodo analizirani vnosi v dnevnik in preverjanje, ali ta ali tisti vnos kaže na neuspešno overjanje. Če datoteke navedete v imeniku, lahko najdete pravila fail2ban za najbolj priljubljene storitve:
# ls /etc/fail2ban/filter.d

Datoteke so opisane zelo podrobno in lahko preučite, kaj morate razumeti, kako poteka preverjanje dnevnika..

Dnevniki Fail2Ban

Za preverjanje dnevnika fail2ban, zaženite ukaz:

# journalctl -b -u fail2ban

Dnevnike lahko preverite tudi v realnem času:

# rep -F /var/log/fail2ban.log

Izhod dnevnika:

2019-12-05 12: 13: 26.914 fail2ban.action [9750]: OBVESTILO [sshd] Obnovi ban 222.186.180.17 2019-12-05 12: 13: 26.930 fail2ban.action [9750]: OBVESTILO [sshd] Obnovi ban 222.186 .180.223 2019-12-05 12: 13: 26.944 fail2ban.action [9750]: OBVESTILO [sshd] Restore Ban 36.72.82.10 2019-12-05 12: 13: 26.958 fail2ban.action [9750]: OBVESTILO [sshd] Restore Prepoved 40.117.135.57 2019-12-05 12: 13: 26.973 fail2ban.action [9750]: OBVESTILO [sshd] Restore Ban 45.55.155.224 2019-12-05 12: 13: 26,988 fail2ban.action [9750]: OBVESTILO [sshd ] Obnovi ban 67.205.135.127 2019-12-05 12: 13: 27,003 fail2ban.action [9750]: OBVESTILO [sshd] Restore Ban 83.171.107.216 2019-12-05 12: 13: 43.362 fail2ban.filter [9750]: INFO [sshd] Najdeno 183.87.134.98 - 2019-12-05 12:13:42 2019-12-05 12: 13: 45.571 fail2ban.filter [9750]: INFO [sshd] Najdeno 183.87.134.98 - 2019-12-05 12 : 13: 45 2019-12-05 12: 15: 46,109 fail2ban.filter [9750]: INFO [sshd] Najdeno 112.64.170.178 - 2019-12-05 12:15:45 2019-12-05 12: 17: 05,317 fail2ban.action [9750]: OBVESTILO [sshd] Unba n 222.186.175.216

Kot vidite, fail2ban deluje in občasno blokira ali odstrani blokiranje za IP naslove.

Če želite preveriti, kateri naslovi IP so blokirani v iptables s strani fail2ban, naredite:

# iptables -L

Kot lahko vidite, s ssh odprtim na zunaj, občasno kdo poišče geslo in se prijavi. Če čez nekaj časa preverite statistiko, lahko vidite, da število blokiranih IP-jev raste.

Zavarovanje Apache s programom Fail2Ban

Če želite prilagoditi fail2ban za svoj apache (httpd) dodajte naslednje nastavitve zapor.local:

# zazna neuspešne poskuse z geslom [apache] omogočeno = resnično pristanišče = http, https filter = apache-auth logpath = / var / log / httpd / error_log maxretry = 3 # blokira IP-je, ki neposredno dostopajo do skriptov s pripono php, asp, exe, pl, cgi, scgi [apache-noscript] omogočeno = true port = http, https filter = apache-noscript logpath = / var / log / httpd / error_log maxretry = 3 # zazna poskusi prelivanja Apache [apache-overflows] omogočeno = true port = http, https filter = apache-overflows logpath = / var / log / httpd / error_log maxretry = 2 # zazna neuspešne poskuse iskanja v domačem imeniku na strežniku [apache-nohome] omogočeno = true port = http, https filter = apache -nohome logpath = / var / log / httpd / * error_log maxretry = 2

Po spremembi konfiguracijske datoteke znova zaženemo storitev in preverimo stanje:

[root @ server ~] # fail2ban-client status apache

Status zapora: apache | - Filter | | - Trenutno ni uspelo: 0 | | - Skupno neuspešno: 0 | '- Seznam datotek: / var / log / httpd / error_log' - Akcije | - Trenutno je prepovedano: 0 | - Skupno prepovedano: 0 '- Seznam prepovedanih IP:

Za test sem namestil na strežnik Joomla, po kateri sem poskusil odpreti neobstoječo datoteko in fail2ban blokiral me:

[root @ server httpd] # fail2ban-client status apache-noscript

Status v zaporu: apache-noscript | - Filter | | - Trenutno ni uspelo: 1 | | - Skupaj ni uspelo: 6 | '- Seznam datotek: / var / log / httpd / error_log' - Akcije | - Trenutno je prepovedano: 1 | - Skupno prepovedano: 1 '- Seznam IP prepovedanih: *. *. *. *

Konfiguriranje paketov Fail2Ban in Nginx

Če ste spletni strežnik nginx in na spletnem mestu so razdelki, ki zahtevajo avtorizacijo, lahko imate tudi težave s poskusi naštevanja gesel. Za fail2ban lahko določimo, da datoteko uporabimo nginx-http-auth.conf, Privzeto je že opisano v konfiguracijski datoteki. /etc/fail2ban/jail.conf:

[root @ server ~] # mačka /etc/fail2ban/jail.conf | grep nginx

[nginx-http-auth] logpath =% (nginx_error_log) s # Če želite uporabiti zapor 'nginx-limit-req', bi morali imeti 'ngx_http_limit_req_module' # in določiti 'limit_req' in 'limit_req_zone', kot je opisano v dokumentaciji nginx # http: / /nginx.org/sl/docs/http/ngx_http_limit_req_module.html # ali na primer glej v 'config / filter.d / nginx-limit-req.conf' [nginx-limit-req] logpath =% (nginx_error_log) s [ nginx-botsearch] logpath =% (nginx_error_log) s logpath =% (nginx_access_log) s

Ali ga moramo vključiti v konfiguracijsko datoteko /etc/fail2ban/jail.local z dodajanjem:

[nginx-http-auth] omogočeno = res

Po vseh nastavitvah ne pozabite znova zagnati storitve:

# systemctl znova zaženite fail2ban

Zaščita MySQL s Fail2Ban

Če želite zaščititi MySQL, morate v konfiguracijsko datoteko dodati ločen blok zapor.local:

[mysqld-auth] omogočeno = resničen filter = mysqld-auth vrata = 3306 logpath = /var/log/mysql/error.log

Ta nastavitev vas bo zaščitila pred ugibanjem gesla za uporabnika mysql (to je zelo pogosta sila).

Pravila Fail2Ban za Exim

Če želite konfigurirati varnost za storitev poštne storitve Exim, naredite naslednjo konfiguracijo:

[exim] omogočeno = resnični filter = exim dejanje = iptables-multiport [ime = exim, port = "25,465,587"] logpath = / var / log / exim / mainlog

Tako lahko prilagodite fail2ban sodelovati s skoraj vsemi priljubljenimi storitvami in vaš strežnik bo postal čim bolj varen.

Fail2Ban seznam dovoljenih IP, deblokiranje IP

Za odklepanje IP-ja, ki je blokiran fail2ban, uporabite ukaz:

# fail2ban-client set SECTION unbanip IP - kjer je SECTION ime razdelka v konfiguracijski datoteki, po pravilih katerega je bil vaš IP naslov blokiran. Na primer:

# fail2ban-client set apache-noscript unbanip 185. *. *. *

Izjemom izjem 2ban (seznam dovoljenih) lahko dodate posebne naslove IP. To naredite v konfiguracijski datoteki jail.conf v vrstico vnesite IP:

ignoreip = 185. *. *. *

S tem, ko sem izjemam dodal svoj IP naslov, sem izvedel več napadov kot prejšnji in blokiranja se ni zgodilo.

Kot vidite, je fai2ban nastavitev precej preprosta, vendar je precej učinkovito sredstvo za dodatno zaščito vašega strežnika pred vsiljivci. V sistemu Windows žal nisem videl brezplačnih programov s podobno funkcionalnostjo (poskusite blokirati IP naslove s pomočjo PowerShell - glejte članek Zaščita RDP pred preverjanjem gesla).