Kuinka estää SSH Brute Force -hyökkäykset SSHGUARDin avulla


SSHGuard on avoimen lähdekoodin demoni, joka suojaa isäntiä raakoja hyökkäyksiä vastaan. Se saavuttaa tämän seuraamalla ja yhdistämällä järjestelmälokeja, havaitsemalla hyökkäykset ja estämällä hyökkääjät käyttämällä yhtä Linuxin palomuuritaustaohjelmista: iptables, FirewallD, pf. > ja ipfw.

Alun perin suunniteltu tarjoamaan ylimääräinen suojaus OpenSSH-palvelulle, SSHGuard suojaa myös monia palveluita, kuten Vsftpd ja Postfix. Se tunnistaa useita lokimuotoja, mukaan lukien Syslog, Syslog-ng ja raakalokitiedostot.

SSHGuard on melko samanlainen kuin Fail2ban, mutta se on kirjoitettu C-kielellä (Fail2ban on kirjoitettu Pythonilla), on kevyempi ja tarjoaa vähemmän ominaisuuksia.

Tässä oppaassa näytämme, kuinka voit asentaa ja määrittää SSHGuardin estämään SSH brute force -hyökkäykset Linux-palvelimessasi.

Vaihe 1: Asenna SSHGuard Linuxiin

Aloitamme SSHGuardin asennuksella Linuxiin.

Asenna SSHGuard Debianiin/Ubuntuun

Päivitä ensin pakettiluettelot ja asenna sitten SSHGuard oletusvarastoista apt-paketinhallinnan avulla.

sudo apt update
sudo apt install sshguard

Kun SSHGuard-palvelu on asennettu, se käynnistyy automaattisesti, ja voit varmistaa tämän komennolla:

sudo systemctl status sshguard

Asenna SSHGuard RHEL Systemsiin

RHEL-pohjaisissa jakeluissa, kuten CentOS, Rocky ja AlmaLinux, aloita asentamalla EPEL-tietovarasto alla olevassa komennossa.

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
sudo dnf install epel-release

Kun EPEL on paikallaan, asenna SSHGuard käyttämällä dnf-pakettienhallintaa.

sudo dnf install sshguard 

Kun olet asentanut, käynnistä ja aseta SSHGuard käynnistymään järjestelmän käynnistyksen tai uudelleenkäynnistyksen yhteydessä.

sudo systemctl start sshguard
sudo systemctl enable sshguard

Varmista, että SSHGuard toimii odotetulla tavalla.

sudo systemctl status sshguard

Vaihe 2: SSHGuard-kokoonpano Linuxissa

SSHGuard valvoo aktiivisesti /var/log/auth.log-, /var/log/secure systemd-lokikirjaa ja syslog-ng lokitiedostot epäonnistuneiden kirjautumisyritysten varalta.

Jokaisesta epäonnistuneesta kirjautumisyrityksestä etäisäntä estetään rajoitetuksi ajaksi, joka oletuksena on 120 sekuntia. Sen jälkeen estoaika pitenee kertoimella 1,5 jokaisella epäonnistuneella kirjautumisyrityksellä.

Aika, jolloin loukkaavat isännät estetään, muiden parametrien lisäksi määritetään sshguard.conf-tiedostossa. Voit käyttää asetustiedostoa vim-editorilla kuvan osoittamalla tavalla.

sudo vim /etc/sshguard/sshguard.conf

RHEL-pohjaisissa jakeluissa konfigurointitiedosto sijaitsee seuraavassa polussa.

sudo vim /etc/sshguard.conf

Tässä on esimerkki määritystiedostosta Ubuntusta/ Debianista tarkasteltuna.

Keskitytään päävaihtoehtoon.

  • BACKEND-käsky viittaa taustaohjelman suoritettavan tiedoston koko polkuun. Tässä esimerkissä näemme, että IPtables on asetettu oletuspalomuurin taustaohjelmaksi.
  • THRESHOLD-direktiivi estää hyökkääjät, kun heidän hyökkäyspisteensä ylittää määritetyn arvon.
  • BLOCK_TIME-vaihtoehto on sekuntien määrä, jonka hyökkääjä estetään jokaisen epäonnistuneen kirjautumisyrityksen jälkeen. Oletuksena tämä on 120 ensimmäisen yrityksen jälkeen. Tämä lisääntyy jokaisella epäonnistuneella kirjautumisyrityksellä.
  • DETECTION_TIME-vaihtoehto viittaa sekunteina ilmoitettuun aikaan, jonka aikana järjestelmä rekisteröi tai muistaa hyökkääjän ennen kuin hänen pisteet nollataan.
  • WHITELIST_file-vaihtoehto osoittaa sen sallittujen luettelon tiedoston koko polkuun, joka sisältää isäntiä, joiden ei pitäisi olla mustalla listalla./li>

Vaihe 3: Määritä SSHGuard estämään SSH Brute Force -hyökkäykset

Voit estää raa'an voiman hyökkäykset määrittämällä seuraavat palomuurit toimimaan sshguardin kanssa.

Estä SSH-hyökkäykset UFW:n avulla

Jos UFW on asennettu ja otettu käyttöön Ubuntu/ Debian-järjestelmässäsi, muokkaa /etc/ufw/before.rules-tiedostoa.

sudo vim etc/ufw/before.rules

Lisää seuraavat rivit heti sallow backback -osion jälkeen.

allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

Tallenna tiedosto ja käynnistä UFW uudelleen.

sudo systemctl restart ufw

Yritä nyt kirjautua sisään palvelimelle toisesta järjestelmästä väärillä tunnistetiedoilla ja huomaa, että sinut lukitaan 120 sekunniksi ensimmäisen epäonnistuneen kirjautumisyrityksen jälkeen.

Voit varmistaa tämän tarkistamalla auth.log-lokitiedoston.

sudo tail -f  /var/log/auth.log

Seuraavan epäonnistuneen lokiyrityksen jälkeen estoaika kasvaa 240 sekuntiin, sitten 480 sekuntiin, sitten 960 sekuntiin ja niin edelleen.

Estä SSH-hyökkäykset palomuurin avulla

Jos käytät palomuuria, varmista, että se on määritetty ja otettu käyttöön. Suorita sitten seuraava komento ottaaksesi sshguard käyttöön haluamallasi vyöhykkeellä.

sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

Ota muutokset käyttöön lataamalla palomuuri ja sshguard.

sudo firewall-cmd --reload
sudo systemctl restart sshguard

Tarkista sitten sääntö seuraavasti:

sudo firewall-cmd —-info-ipset=sshguard4

Estä SSH-hyökkäykset Iptablesin avulla

Jos käytät edelleen Iptablesia, luo ensin uusi ketjusääntö sshguardille Iptablesissa, jotta voit estää pahiksia.

iptables -N sshguard

Päivitä seuraavaksi INPUT-ketju ohjataksesi liikennettä sshguardiin ja estääksesi kaiken liikenteen pahantahtoisilta osapuolilta.

iptables -A INPUT -j sshguard

Estä tiettyjä portteja, kuten SSH, POP ja IMAP väärinkäyttäjiltä, suorittamalla komento:

iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

Ja lopuksi tallenna sääntö, jotta muutokset tulevat voimaan.

iptables-save > /etc/iptables/iptables.rules

Vaihe 4: Kuinka lisätä estettyjen SSH-isäntien luetteloon

Jos haluat lisätä estetyn isännän sallittujen luetteloon, määritä sen isäntänimi tai IP-osoite sallittujen luettelotiedostoon, joka sijaitsee:

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

Muista sen jälkeen käynnistää sshguard-daemon ja palomuuritaustaohjelma uudelleen, jotta muutokset tulevat voimaan.

Tässä oppaassa olemme osoittaneet, kuinka voit estää SSH Bruteforce-hyökkäykset SSHGuard-demonin avulla Linux-palvelimissa. Palautteesi on tervetullutta.