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 fail2banTas 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.localKad tas ir nokopēts, mēs varam to atvērt un redzēt, kā tas darbojas.
vim /etc/fail2ban/jail.localFailā 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.1Mē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 = 600Bantime 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 = 3Tad 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 = sendmailJa 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ībaPē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.logTagad, 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 nginxmēs instalēsim pasta pakalpojumu paziņojumiem, tas var būt sendmail
apt-get instalēt sendmailvisbeidzot, 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-persistentTas 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 DROPMēs varam redzēt izmaiņas ar:
iptables -STam 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.localMē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 = 1800Mums 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) sPē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 = 5Ja SSH pakalpojums ir citā ostā, nevis 22, kas ir ļoti ieteicams, mums ir jāpiemin tā osta.
osta = 45024Tad mēs meklēsim tagu [nginx-http-auth], atstāsim to tādu, kāds tas ir.
[nginx-http-auth] enabled = trueMē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 stopTad mēs varam tos sākt no jauna
pakalpojuma fail2ban startTas 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 RETURNMē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