Instalējiet Fail2ban un saistiet to ar SSH un Nginx

Kad esam uzstādījuši serveri ar Linux un vēlamies to pārvaldīt no interneta, izmantojot SSH tālvadības pulti, var gadīties, ka sākam saņemt uzbrukumus ar mērķi iekļūt sistēmā un spēt to kontrolēt tās vajadzībām. Šos uzbrukumus parasti veic datorprogrammas (roboti), kas ilgu laiku mēģina piekļūt sistēmai, izmantojot brutālu spēku.

Iepriekšējos ierakstos esmu runājis par to, kā konfigurēt SSH pakalpojumu, taču daži uzlaboti roboti pakalpojumā neiekļūst, bet tie var nogalināt SSH pakalpojumu serverī, atspējojot attālo piekļuvi.

Pilnīga SSH (Secure Shell) rokasgrāmata

Mēs varam no tā izvairīties, izmantojot fail2ban rīks, ir ļoti praktisks un piedāvā lielu drošības rezervi. Lai nedaudz paskaidrotu, kā tas darbojas. Tas spēj izveidot iptables pirms neveiksmīga pieteikšanās mēģinājuma vairāk nekā 5 reizes pēc kārtas, noraidot jebkāda veida savienojumu, kad tas ir aizliegts.

Instalējiet Fail2ban


Instalēšanu var veikt tieši no apt. Vispirms mēs atjauninām sistēmu un pēc tam instalējam Fail2ban.
 apt-get update && apt-get -y upgrade
 apt-get install fail2ban
Tas ne tikai instalē programmu, bet arī ļauj tai darboties un sākt ar sistēmu.

Fail2ban konfigurēšana


Pakalpojuma Fail2ban iestatījumi atrodas direktorijā / etc / fail2ban. Jail.conf jums ir dažas iepriekš konfigurētas iespējas, labākais šajā gadījumā ir kopēt failu un neveikt izmaiņas tieši tajā, atjauninot fail2ban, šie faili tiek pārrakstīti un jūs varat zaudēt visas iepriekš veiktās izmaiņas.

Šajā gadījumā mēs nokopējam failu un nosaucam to par jail.local, lai tas varētu to atrast.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Kad tas ir nokopēts, mēs varam to atvērt un redzēt, kā tas darbojas.
 vim /etc/fail2ban/jail.local
Failā ir vairāki parametri, kurus mēs varam pielāgot. Jebkurš parametrs, kas atrodas zem [DEFAULT] taga, tiks piemērots visiem pakalpojumiem, ko iespējo Fail2ban, piemēram, SSH, NGINX, APACHE, mēs to sauksim par globālu, tad mums būs īpašas sadaļas katram pakalpojumam.

Mēs sāksim, pievienojot parametrus globālajai sadaļai.

 ignorēt = 127.0.0.1
Mēs pievienojam savu vietējo saimnieku šādā veidā, tas ignorēs visu vietējo trafiku, mēs varam pievienot papildu adreses, atdalot tās ar atstarpi.
 bantime = 600
Bantime ir laika periods, kurā klients tiks bloķēts pēc bloķēšanas. Vienība ir sekundēs 600 sekundes būtu 10 minūtes, noklusējuma vērtība.
 atraduma laiks = 600 maksimums = 3
Tad mums ir atradums un maksimālais laiks. Viņi ir atbildīgi par nosacījumu noteikšanu klienta aizliegšanai pēc noklusējuma, var izlasīt, ka tiks aizliegts jebkurš lietotājs ar vairāk nekā 3 neveiksmīgiem mēģinājumiem mazāk nekā 10 minūtēs.
 destemail = root @ localhost sendername = Fail2Ban mta = sendmail
Ja mēs vēlamies izveidot brīdinājumus aizliegtajiem lietotājiem, šie 3 parametri ir nepieciešami, mēs definēsim galamērķi, kam nosūtīt brīdinājuma e -pastu, kurš būs atbildīgs par tā nosūtīšanu, un visbeidzot mta, lai definētu, kādu e -pasta pakalpojumu mēs izmantosim .
 darbība = $ (action_) s
Šeit mēs definēsim, kādas darbības jāveic, ja ir nepieciešams aizliegums. Darbības_ vērtība ir noklusējuma darbība, kuras pamatā ir jebkādas klientu trafika noraidīšana līdz aizlieguma laika beigām.

Ja mēs vēlamies nosūtīt brīdinājumu pa pastu, mums ir jāmaina vērtība uz action_mw, bet, ja arī vēlamies, lai tā pievienotu žurnāla rindiņas pasta pamattekstā, mēs izmantosim action_mwl. Pirms šīs vērtības maiņas mums jābūt pārliecinātiem, ka pasta iestatījumi ir pareizi.

Iestatījumi pēc pakalpojuma


Kad globālās konfigurācijas būs pabeigtas, mēs pievienosim parametrus, kas tiks piemēroti tikai

SSH pakalpojums, mēs noteikti pievienojam opcijas zem [SSH] taga.

 iespējots = taisnība
Pēc noklusējuma SSH pakalpojums ir iespējots, taču, ja nepieciešams, šajā opcijā mēs to varam mainīt.

Visa šī sadaļa varētu darboties ar vērtībām, kuras es sīkāk aprakstīšu vēlāk, bet jūs varat mainīt, lai pielāgotu to savām vajadzībām vai atstātu tās visas pēc noklusējuma.

Vēl viena konfigurācija ir filtri, kas norāda, vai pieteikšanās bija pareiza vai nē, un to var pievienot citiem pakalpojumiem, piemēram, mums ir serveris ar nginx un daļa lapas ir aizsargāta ar paroli, bet klients uzbrūk ar brutālu spēku. , mēs to varam apturēt, pievienojot zem taga [nginx-http-auth] sekojošo.

 [nginx-http-auth] enabled = true filter = nginx-http-auth port = http, https logpath = /var/log/nginx/error.log
Tagad, ja lietotājam ir vairāk nekā 3 neveiksmīgi pieteikšanās mēģinājumi, tas tiek atspoguļots žurnālos, un fail2ban rīkosies un bloķēs visu lietotāju trafiku.

Pārbaudes vide


Kad būsim sapratuši pamatus, mēs izveidosim nelielu testa vidi, kurā mēs aizsargāsim SSH un Nginx, izmantojot Fail2ban, izveidojot aizliegšanas politiku, kas paziņos mums par aizliegto IP.

Mēs vispirms instalēsim Nginx, ja tas nav instalēts

 apt-get instalēt nginx
mēs instalēsim pasta pakalpojumu paziņojumiem, tas var būt sendmail
 apt-get instalēt sendmail
visbeidzot, mēs vēlamies, lai mūsu iptables būtu noturīgas pēc sāknēšanas, mēs varam vai nu izveidot rc.0 skriptu, vai instalēt iptables-persistent pakotni.
 apt-get install iptables-persistent
Tas tiks uzstādīts.

Mūsu ugunsmūra izveide


Pēc iepriekš minētā instalēšanas mums jāievieš ugunsmūris, lai tas varētu bloķēt satiksmi. Es izveidošu pamata ugunsmūri vēlākos ierakstos, vairāk runāšu par iptables.

Mēs atļausim izveidotos savienojumus, servera trafiku, piemēram, atjauninājumus, un SSH un Nginx portiem paredzēto trafiku. Visa atlikušā satiksme tiks liegta.

 sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, SAISTĪTS -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP
Mēs varam redzēt izmaiņas ar:
 iptables -S
Tam vajadzētu dot līdzīgu rezultātu.
 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --valsts SAISTĪTA, IESTATĪTA -j PIEŅEMT -A IEVADE -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --port 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -ssh -j ATGRIEZTIES

Fail2ban iestatījumu pielāgošana


Tagad mums jākonfigurē fails jail.local mums ērtā laikā.
 vi /etc/fail2ban/jail.local
Mēs varam pagarināt laiku, kad lietotājs tiek aizliegts, vismaz uz 30 minūtēm, neaizmirstiet iestatīt vērtību sekundēs.
 bantime = 1800
Mums ir jākonfigurē e -pasts, kurā tiek saņemti visi brīdinājumi par fail2 fail aizliegumu, meklēsim failā e -pasta vērtību un ievietojam e -pastu.
 destilpasts = [email protected]
Mēs varam mainīt sūtītāju, kurš nosūtīs manis parasti ievietoto brīdinājumu ar nosaukumu fail2ban, lai mēs varētu labāk filtrēt starp visiem žurnāliem.

Pēc tam, kad mums ir jāmaina darbības vērtība, mums ir 2 iespējas:

  • action_mw: nosūta brīdinājumu ar ziņojumu, kas līdzīgs aizliegtā klienta komandai whois.
  • action_mwl: nosūtiet daudz detalizētāku brīdinājumu, ziņojuma pamattekstā iekļaujot žurnālu.

Šajā gadījumā mēs izmantosim otro iespēju:

 darbība =% (action_mwl) s 
Pēc tam mēs dosimies uz sadaļu [SSH] un varēsim rediģēt maksimālo mēģinājumu skaitu pirms aizlieguma, atstāsim to 5:
 maxretry = 5
Ja SSH pakalpojums ir citā ostā, nevis 22, kas ir ļoti ieteicams, mums ir jāpiemin tā osta.
 osta = 45024
Tad mēs meklēsim tagu [nginx-http-auth], atstāsim to tādu, kāds tas ir.
 [nginx-http-auth] enabled = true
Mēs esam pabeiguši un varam saglabāt un aizvērt failu.

Fail2ban pakalpojuma restartēšana


Lai piemērotu visas izmaiņas, iesaku pārtraukt pakalpojumu.
 pakalpojums fail2ban stop 
Tad mēs varam tos sākt no jauna
 pakalpojuma fail2ban start
Tas prasīs kādu laiku, pēc apmēram 5 minūtēm mēs atkal varēsim redzēt savus noteikumus
 iptables -S
 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -nginx -http -auth -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban -nginx -http -auth -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate SAISTĪTS, IZVEIDOTS -j ACCEPT -A INPUT -p tcp -m tcp - -dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -nginx -http -auth -j RETURN -A fail2ban -ssh -j RETURN
Mēs redzam, kā fail2ban ir pievienojis jaunas politikas; tas var atšķirties atkarībā no konfigurācijas, kuru esat definējis /etc/fail2ban/jail.local.

SecinājumiMēs esam instalējuši fail2ban un konfigurēti darbam ar SSH un NGINX APACHE gadījumā mums ir jāmaina etiķetes un žurnālu direktorijs, taču tas ir ļoti līdzīgs nginx. Mēs esam konfigurējuši tikai pamatus, jūs varat izveidot filtrus un daudz sarežģītākus noteikumus, iesaku mazliet izlasīt viņu rokasgrāmatu, konfigurācijas faili ir labi komentēti, iesaku pamazām iet, lai atklātu visas tās funkcijas.

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave