Sshguard

From EIK wiki


Mis on SSHGUARD ja mida see teeb?

Sshguard on teenus mis kaitseb masinal jooksvaid võrguteenuseid (näiteks ssh, imap, pop) erinevate rünnakute eest. Sshguard teeb seda jälgides konstantselt erinevaid süsteemilogisid (näiteks syslog,syslog-ng,metalog, multilog,raw messages). Rünnaku avastamisel kasutab Sshguard masinas asuvat tulemüüri realiseerimaks teatud ajaks blokeeringut ründaja IP aadressile. Linuxis oskab Sshguard kasutada netfilter/iptables tulemüüre. Esimene blokeering kestab 7 minutit, järgmine juba 14 minutit ning suureneb kaks korda iga järgneva rünnaku tundemärgi avastamisel.

Näiteks kui sshguard avastab et aadress X tegi midagi kahtlast või halba teenusele Y, käivitab sshguard masina tulemüüris reegli blokeerimaks aadressi X. Sshguard hoiab aadressi X blokeerituna 7 min ning seejärel vabastab ta blokeeringust. Kui sshguard avastab et aadress X tegi uuesti midagi kahtlast või halba teenusele Y, blokeeritakse aadress X 14 minutiks.

NB! Olenemata oma nimest Sshguard kaitseb ta ka teisi teenuseid kui SSH

Erinevalt sarnasest lahendusest fail2ban on sshguard lihtsam, väiksem, kirjutatud C keeles mistõttu kasutab ta vähem süsteemiresursse.

Instaleerimine

SSHguard'il ei ole konfiguratsioonifaili. Kogu konfigureerimine mida peab tegema on luua ahel "Sshguard" ning lisada reegel INPUT ahelasse iptable'is. Seejärel teha suunamine kõigile sissetulevatele pakettidele läbi sshguard ahela, mis tagab et kogu logi sisenevate pakettide kohta jõuab sshguardini. Sshguard saab seejärel sisestada tulemüüri reegleid blokeerimaks sissetulevaid pakette mis saabuvad keelatud hostidelt.

Sshguard installeerimise eelduseks on iptables olemasolu. Iptables on olemas kõigil Ubuntu distributsioonidel. Mõne teise Linuxi distributsiooni korral peab eelnevalt kontrollima kas iptables on paigaldatud. Kui iptables tulemüür puudub tuleb see installeerida.

Seejärel võib installeerida sshguard'i

apt-get install ssh-guard

Algseadistus

Nagu öeldud ei ole Sshguardil konfiguratsioonifaili. Kõigepealt peab looma uue ahela nimega "sshguard" iptables tulemüüri:

iptables -N sshguard

Seejärel tuleb modifitseerida INPUT ahelat nii, et ta saadaks kogu sissetuleva võrguliikluse edasi Sshguardile:

iptables -A INPUT -j sshguard

Kui soovitakse jälgida mingeid kindlaid porte siis peab iptables INPUT ahelasse tegema reegli mis suunab sshguard ahelasse edasi vaid paketid mis saabuvad portidel mida tahetakse jälgida.

Järgnev reegel määrab sshguard ahelasse edasi suunama vaid SSH, FTP, POP, IMAP portidele saabuvad tcp paketid:

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

Whitelisting

Sshguard pakub ka aadresside ja hostide whitelistingut. Whitelistis olevatelt aadressidel ja hostidelt tulevad paketid lastakse läbi tulemüüri isegi siis kui nad genereerivad kahtlast liiklust. See lihtsustab süsteemiadminni tööd sellevõrra, et ei pea firma sisevõrgus end vale parooliga lootusetult autentida püüdvate töötajate arvutite sisevõrgu aadressidelt blokeeringut eemaldama. Whitelisti saab määrata nii üksikud IP aadressid, hostid kui ka IP aadresside vahemiku subnet maskiga.

Määrame whitelisti üksiku IP aadressi:

sshguard -w 192.168.1.50

Määrame whitelisti üksiku hosti:

sshguard -w sobralik.host.ee

Hosti nimedele tehakse DNS päringud ühe korra sshguard käivitumisel. Kui hostile vastab mitu aadressi, siis lisatakse need kõik whitelisti.

Määrame whitelisti kogu firma sisevõrgu:

sshguard -w 192.168.0.0/24

Käske võib ka kombineerida - ühes käsus võib määrata nii IP aadressi, hosti kui ka aadressi vahemiku:

sshguard -w 192.168.1.50 -w sobralik.host.ee -w 192.168.0.0/24

Logide jälgimine

Sshguard oskab jälgida erinevates formaatides logisid: syslog, syslog-ng, metalog, multilog, raw log. Jälgimine toimub mitmest logist korraga. Samuti jälgitakse logifailide ümbertõstmist, kadumist(kustutamist) ning nende taasilmumist.

Määrame jälgimiseks kolm logifaili:

sshguard -l /var/log/maillog -l /var/log/auth.log -l /opt/myapp/logging.fifo

Kui jälgima pole määratud ühtegi logi, võtab sshguard logikandeid ikkagi vastu stantardsisendisse. Stantardsisendit saab ka määrata nagu iga teist logifaili. Stantardsisendi võtmeks on "-":

sshguard -l -

Sshguard automaatkäivitus

Et sshguard käivitkus süsteemi bootupil automaatselt peab looma järgmise skripti ning salvestama selle /etc/init.d/sshguard kausta:

#! /bin/sh
# this is a concept, elaborate to your taste
case $1 in
start)
   /usr/local/sbin/sshguard -l /var/log/auth.log &
   ;;
stop)
   killall sshguard
   ;;
*)
   echo "Use start or stop"
   exit 1
   ;;
esac

Kasutatud kirjandus

http://www.sshguard.net/docs/setup/

http://www.sshguard.net/docs/setup/getlogs/log-sucker/

http://www.sshguard.net/docs/whitelist/

http://www.sshguard.net/docs/faqs/

https://wiki.archlinux.org/index.php/Sshguard

http://linuxaria.com/recensioni/protect-your-server-with-sshguard?lang=en

http://felipeferreira.net/?p=1062