Når vi har monteret en server med Linux, og vi vil styre den fra internettet via SSH -fjernbetjening, kan det ske, at vi begynder at modtage angreb med det formål at komme ind i systemet og kunne styre det til dets formål. Disse angreb udføres normalt af computerprogrammer (bots), der i lang tid forsøger at få adgang til systemet ved hjælp af brutal kraft.
I tidligere indlæg har jeg talt om, hvordan man konfigurerer SSH -tjenesten, men nogle avancerede bots kommer ikke ind i tjenesten, men de kan dræbe SSH -tjenesten på serveren ved at deaktivere fjernadgang.
Komplet manual til SSH (Secure Shell)
Vi kan undgå det ved at bruge fail2ban værktøj, er meget praktisk og giver en stor sikkerhedsmargin. For at forklare lidt hvordan det fungerer. Det er i stand til at oprette iptables før et mislykket loginforsøg mere end 5 gange i træk, og afvise enhver form for forbindelse, når det er blevet forbudt.
Installer Fail2ban
Installationen kan udføres direkte fra apt. Først opdaterer vi systemet, og derefter installerer vi Fail2ban.
apt-get opdatering && apt-get -y opgradering
apt-get install fail2banDette installerer ikke kun programmet, men lader det også køre og starte med systemet.
Konfiguration af Fail2ban
Fail2ban -tjenesten har sine indstillinger i biblioteket / etc / fail2ban. Du har nogle forudkonfigurerede muligheder i jail.conf, det bedste i dette tilfælde er at kopiere filen og ikke foretage ændringerne direkte i den, når opdatering af fail2ban overskrives disse filer, og du kan miste alle de ændringer, der er foretaget tidligere.
I dette tilfælde kopierer vi filen og kalder den jail.local, så den kan finde den.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localNår det er kopieret, kan vi åbne det og se, hvordan det fungerer.
vim /etc/fail2ban/jail.localInde i filen har vi flere parametre, som vi kan justere. Enhver parameter, der er under [DEFAULT] -tagget, vil blive anvendt på alle de tjenester, der er aktiveret af Fail2ban, såsom SSH, NGINX, APACHE, vi kalder dette globalt, så har vi specifikke sektioner for hver service.
Vi starter med at tilføje parametre til den globale sektion.
ignorip = 127.0.0.1Vi tilføjer vores localhost på denne måde, det ignorerer al lokal trafik, vi kan tilføje yderligere adresser, der adskiller dem med et mellemrum.
bantime = 600Bantime er den periode, hvor klienten vil blive udelukket efter at være blevet blokeret. Enheden er i sekunder 600 sekunder ville være 10 minutter er standardværdien.
findtime = 600 maxretry = 3Så har vi findetid og maxretry. De er ansvarlige for at fastsætte betingelserne for, at en klient som standard kan udelukkes, det kan læses, at enhver bruger med mere end 3 mislykkede forsøg på mindre end 10 minutter vil blive forbudt.
destemail = root @ localhost sendername = Fail2Ban mta = sendmailHvis vi vil oprette advarsler til forbudte brugere, er disse 3 parametre nødvendige, vi definerer destinationen, til hvem vi skal sende advarsels -e -mailen, hvem der skal stå for at sende den, og til sidst mta for at definere, hvilken e -mail -service vi vil bruge .
handling = $ (action_) sHer vil vi definere, hvilken handling der skal foretages, når et forbud er påkrævet. Action_ -værdien er standardhandlingen er baseret på at afvise enhver klientrafik, indtil forbudstiden udløber.
Hvis vi vil sende en advarsel via mail, skal vi ændre værdien til action_mw, men hvis vi også vil have den til at vedhæfte linjer i loggen i mailens brødtekst, vil vi bruge action_mwl. Vi skal være sikre på, at mailindstillingerne er korrekte, før vi ændrer denne værdi.
Indstillinger efter service
Når de globale konfigurationer er gennemført, tilføjer vi de parametre, der udelukkende anvendes på
SSH -service, vi sørger for at tilføje mulighederne under [SSH] -tagget.
aktiveret = sandtSom standard er SSH -tjenesten aktiveret, men vi kan om nødvendigt ændre den i denne indstilling.
Hele dette afsnit kan fungere med de værdier, som jeg vil beskrive senere, men du kan ændre det for at tilpasse det til dine behov eller efterlade dem som standard.
En anden af konfigurationerne er filtre, der angiver, om login var korrekt eller ej og kan tilføjes til andre tjenester, for eksempel har vi en server med nginx, og en del af siden er beskyttet med adgangskode, men en klient angriber med brutal kraft , kan vi stoppe dette ved at tilføje følgende under [nginx-http-auth] -tagget.
[nginx-http-auth] enabled = true filter = nginx-http-auth port = http, https logpath = /var/log/nginx/error.logHvis en bruger nu har mere end 3 mislykkede loginforsøg, afspejles det i logfilerne, og fail2ban vil handle og blokere al brugertrafik.
Testmiljø
Efter at have forstået det grundlæggende, vil vi lave et lille testmiljø, hvor vi vil beskytte SSH og Nginx gennem Fail2ban ved at oprette en forbudspolitik, der giver os besked om den IP, der er blevet forbudt.
Vi installerer Nginx først, hvis det ikke er installeret
apt-get installer nginxvi installerer en mailtjeneste til meddelelser, det kan være sendmail
apt-get install sendmailendelig ønsker vi, at vores iptables skal være vedholdende efter en opstart, vi kan enten oprette et rc.0-script eller installere iptables-persistent-pakken.
apt-get install iptables-persistentDet vil blive installeret.
Etablering af vores firewall
Efter installation af ovenstående skal vi implementere en firewall, så den kan blokere trafikken. Jeg vil oprette en grundlæggende firewall i senere indlæg, jeg vil tale mere om iptables.
Vi tillader etablerede forbindelser, servertrafik såsom opdateringer og trafik bestemt til SSH- og Nginx -portene. Al resterende trafik nægtes.
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT sudo iptables -A INPUT -p tcp --port 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTER sudo iptables -A INPUT -j DROPVi kan se ændringerne med:
iptables -SDet skulle give et lignende resultat.
-P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -ssh -A INPUT -p tcp -m multiport --ports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conrack --ctstate RELATED, ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --port 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -ssh -j RETUR
Justering af Fail2ban -indstillinger
Nu skal vi konfigurere jail.local -filen når det passer os.
vi /etc/fail2ban/jail.localVi kan forlænge den tid, en bruger er udelukket i mindst 30 minutter, husk at indstille værdien i sekunder.
bantime = 1800Vi skal konfigurere en e -mail, der modtager alle fail2ban ban -advarsler, lad os se efter værdien af e -mail i filen og sætte e -mailen.
destemail = [email protected]Vi kan ændre afsenderen, der sender den advarsel, jeg normalt placerer med navnet fail2ban, så vi bedre kan filtrere mellem alle logfiler.
Efter at vi skal ændre handlingsværdien, har vi 2 muligheder:
- action_mw: sender en advarsel med en rapport svarende til whois -kommandoen for den forbudte klient.
- action_mwl: send en meget mere detaljeret advarsel ved at inkludere en log i meddelelsens brødtekst.
I dette vil vi bruge den anden mulighed:
handling =% (action_mwl) sDerefter går vi til sektionen [SSH], og vi kan redigere det maksimale antal forsøg før forbuddet, vi forlader det klokken 5:
maxretry = 5Hvis vi har SSH -tjenesten på en anden havn end 22, hvilket stærkt kan anbefales, skal vi nævne dens port.
port = 45024Derefter leder vi efter [nginx-http-auth] -tagget, vi lader det være som det er.
[nginx-http-auth] aktiveret = sandtVi er færdige og kan gemme og lukke filen.
Genstart af Fail2ban -tjenesten
For alle de ændringer, der skal anvendes, anbefaler jeg, at du stopper tjenesten.
service fail2ban stopSå kan vi starte dem igen
service fail2ban startDette vil tage et stykke tid, efter cirka 5 minutter kan vi se vores regler igen med
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 contrack --ctstate RELATED, ESTABLISHED -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 RETURNVi ser, hvordan fail2ban har tilføjet nye politikker. Det kan variere afhængigt af den konfiguration, du har defineret i /etc/fail2ban/jail.local.
KonklusionerVi har installeret fail2ban og konfigureret til at arbejde med SSH og NGINX i tilfælde af APACHE, vi skal ændre etiketterne og bibliotekets logfiler, men det ligner meget nginx. Vi har kun konfigureret det grundlæggende, du kan oprette filtre og meget mere avancerede regler, jeg anbefaler at læse deres man -side lidt, konfigurationsfilerne er godt kommenteret, jeg anbefaler at gå lidt efter lidt for at opdage alle dens funktioner.
Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt