Hoe u uw SSH-server beveiligt met Fail2Ban [Linux / Ubuntu]
SSH is een goed hulpmiddel voor u om op afstand toegang te krijgen tot uw computer / server en wijzigingen aan te brengen alsof u achter de computer staat. Als u een SSH-server hebt, hebben we u laten zien hoe u een openbare / privésleutel genereert en gebruikt, zodat u veilig verbinding kunt maken met de externe server, maar dat betekent niet dat uw SSH-server veilig is. Integendeel, de meeste SSH-servers zijn kwetsbaar voor brute force-aanvallen en als u niet oplet, kunnen hackers eenvoudig uw server binnendringen en alles vernietigen / stelen.
Fail2Ban is een eenvoudige, maar nuttige tool die uw server kan controleren op kwaadaardige aanvallen en deze kan blokkeren voordat deze schade kunnen aanrichten.
Installatie
Fail2Ban is beschikbaar in de Ubuntu-repository, dus u kunt het eenvoudig installeren met de opdracht:
sudo apt-get install fail2ban
Voor Red Hat- of Centos-gebruikers kunt u Fail2Ban installeren via de EPEL-repository.
Als je Fail2Ban eenmaal hebt geïnstalleerd, is de volgende stap om het configuratiebestand naar een lokale map te verplaatsen, zodat je het hoofdconfiguratiebestand niet per ongeluk verandert.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Configuratie
Na installatie start Fail2Ban automatisch uw server op kwaadaardige aanvallen. In de meeste gevallen zijn de standaardinstellingen voldoende om uw site te beveiligen, maar als u een aangepaste serverconfiguratie hebt (zoals een andere poort voor SSH-toegang) of als u andere services wilt inschakelen, kunt u dit als volgt doen:
sudo nano /etc/fail2ban/jail.local
Het configuratiebestand is verdeeld in verschillende secties. De eerste die je tegenkomt is [DEFAULT].
[DEFAULT] # "ignoreip" kan een IP-adres zijn, een CIDR-masker of een DNS-host ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 # "backend" geeft de back-end aan die wordt gebruikt om bestanden te wijzigen. Beschikbare # opties zijn "gamin", "polling" en "auto". # yoh: om de een of andere reden heeft Debian Python-gamin verzonden werkt niet zoals verwacht # Dit probleem heeft ToDo achtergelaten, dus polling is standaardbackend voor nu backend = auto # # Bestemmings-e-mailadres dat uitsluitend wordt gebruikt voor de interpolaties in # jail. {conf, lokale} configuratiebestanden. destemail = root @ localhost
De paar parameters die je hier moet noteren zijn ignoreip
, bantime
en maxretry
.
- ignoreip - dit is de plaats waar u de IP op de witte lijst plaatst die u niet wilt blokkeren. De standaardinstelling is de localhost (127.0.0.1/8). U kunt extra IP's toevoegen aan het veld, waarbij elk IP-adres wordt gescheiden door een spatie.
- bantime - dit is de hoeveelheid tijd in seconden om te verhinderen dat het IP toegang krijgt tot uw server. De standaardinstelling is 10 minuten (600 seconden)
- maxretry -dit is het aantal mislukte inlogpogingen voordat het IP-adres is geblokkeerd.
Er is ook het veld destemail
waar u een e-mailadres kunt opgeven om te melden waar een kwaadaardige aanval wordt gedetecteerd. Een ding om op te merken is dat dit alleen werkt als je een mailserver hebt geïnstalleerd.
Het volgende gedeelte is de "Acties".
# ACTIONS # # Standaardverbodactie (bijv. Iptables, iptables-new, # iptables-multiport, shorewall, etc.) Het wordt gebruikt om # action_ * variabelen te definiëren. Kan wereldwijd worden opheffen of per # sectie binnen jail.local file banaction = iptables-multiport # email action. Sinds 0.8.1 stroomopwaarts gebruikt fail2ban sendmail # MTA voor de mailing. Wijzig de mta-configuratieparameter in mail # als u wilt terugkeren naar de conventionele 'mail'. mta = sendmail # Standaardprotocolprotocol = tcp # Geef een ketting op waar sprongen moeten worden toegevoegd in iptables- * actions chain = INPUT # # actiesnelkoppelingen. Te gebruiken om actieparameter te definiëren # De eenvoudigste actie die moet worden ondernomen: ban alleen action_ =% (banaction) s [naam =% (__ naam __) s, poort = "% (poort) s", protocol = "% (protocol) s ", chain ="% (chain) s "] # ban & stuur een e-mail met whois-rapportage naar de destemail. action_mw =% (banaction) s [naam =% (__ naam __) s, poort = "% (poort) s", protocol = "% (protocol) s", keten = "% (keten) s"]% (mta) s-whois [name =% (__ naam __) s, dest = "% (destemail) s", protocol = "% (protocol) s", chain = "% (chain) s"] # ban & stuur een e-mail met whois-rapport en relevante logregels # naar de bestemmingspagina. action_mwl =% (banaction) s [naam =% (__ naam __) s, poort = "% (poort) s", protocol = "% (protocol) s", keten = "% (keten) s"]% (mta) s-whois-lines [naam =% (__ naam __) s, dest = "% (destemail) s", logpath =% (logpath) s, chain = "% (chain) s"] # Kies standaardactie. Als u wilt wijzigen, overschrijft u de waarde van 'actie' met de # interpolatie naar de gekozen actiesnelkoppeling (bijvoorbeeld action_mw, action_mwl, enzovoort) in jail.local # globally (sectie [DEFAULT]) of per specifieke sectie action =% (action_) s
De meeste instellingen hier kunnen standaard worden ingesteld, tenzij u de banaction
en het protocol
wilt wijzigen. De standaard "banaction" is via de IPTable. U kunt ervoor kiezen om de instelling met meerdere poorten te gebruiken of hiervoor een nieuwe IpTable te maken. De standaardwaarde voor het "protocol" is tcp, maar u kunt dit naar udp wijzigen, afhankelijk van welke verbinding u gebruikt.
Het laatste deel van het gedeelte "Gevangenis" waar u Fail2Ban kunt configureren om uw Apache-server, FTP-server, mailserver en DNS-server te controleren.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
In de meeste gevallen hoeft u alleen de " enabled = false " -instelling te veranderen in " enabled = true " en deze zal voor die service worden geactiveerd. Als u de gebruikelijke poort 20 voor SSH niet gebruikt, kunt u ook het poortnummer in de bovenstaande instelling wijzigen.
Als u klaar bent met de configuratie, drukt u op "Ctrl + o" om op te slaan en "ctrl + x" om af te sluiten.
Herstart ten slotte de Fail2Ban-service met de opdracht:
sudo service fail2ban opnieuw opstarten
Welke andere manieren gebruik je om je SSH-server te beschermen?