četvrtak, 26 decembra, 2024
Hardver

Biglbon Blek Rev C (6. deo) – Biglbon Blek kao Tor egzit

Vodič od prvog dana (6. deo) – Biglbon Blek kao Tor egzit

Autor: Nenad Marjanović

U nekoliko prethodnih brojeva pisali smo o instalaciji i podešavanjima Biglbona revizije C korišćenjem Debijan Linuks distribucije. Danas tačku stavljamo na sigurnost Tor servera ali i samog operativnog sistema. Posle instalacije svakog servera i nakon samo nekoliko sati, a i ranije, proverom logova možemo zaključiti da smo već na meti hakera. Ovo se dešava zbog prisutnosti velikog broja mrežnih skenera i alata za brutalno prijavljivanje na SSH servis. Nažalost, ovi napadi traju godinama i verovatno će još dugo biti tu. Analizom prijavnih logova, koji se u ovom slučaju nalaze u /var/log/auth.log fajlu, uvek možemo utvrditi da li je neko pokušavao da nas napadne. Komande koje nam mogu olakšati proces provere o pokušajima napada na naš server su sledeće:

cat /var/log/auth.log | grep failed cat /var/log/auth.log | grep failed | wc -l

Kratak opis ovih komandi je sledeći: -cat prikazuje zadržaj fajla
-grep traži željenu reč
-wc -l prikazuje ukupan broj

Primer na tek instaliranom serveru nakon trideset minuta aktivnosti:
U prethodnom broju smo govorili o promeni porta za SSH konekciju, ali danas nastavljamo priču upotrebom geolokalizacijskog softvera. Ovaj softver vrši restrikciju pristupa serveru prema zemljama koje odaberemo. Za ovo rešenje su nam potrebne dve baš (eng. bash) skripte i dva paketa. Ceo proces započinjemo instalacijom geoip paketa i baze.

apt-get install geoip-bin geoip-database

Da bismo proverili uspešnost instalacije:

geoiplookup pentester.iz.rs


Prvu skriptu kreiramo u /usr/local/bin dosijeu i podešavamo dozvole za njeno izvršavanje.

nano /usr/local/bin/sshfilter.sh

Zatim kopiramo sledeći sadržaj:

#!/bin/bash # UPPERCASE space-separated country codes to ACCEPT ALLOW_COUNTRIES="RS FR" if [ $# -ne 1 ]; then echo "Usage:  `basename $0` " 1>&2 exit 0 # return true in case of config issue fi COUNTRY=`/usr/bin/geoiplookup $1 | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1` [[ $COUNTRY = "IP Address not found" || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE="ALLOW" || RESPONSE="DENY" if [ $RESPONSE = "ALLOW" ] then exit 0 else logger "$RESPONSE sshd connection from $1 ($COUNTRY)" exit 1 fi

Potrebno je izmeniti ALLOW_COUNTRIES u zavisnosti iz koje se zemlje redovno konektujemo na server. Za Srbiju je to RS, za Francusku FR itd. Poštujemo velika slova i razmak, a pišemo bez zareza ukoliko unosimo više zemalja. Podešavamo dozvolu za izvršavanje skripte:

chmod +x  /usr/local/bin/sshfilter.sh

Zaključavanje SSH-a

Da bismo omogućili upotrebu geolokalizacije, moramo izmeniti dva sistemska konfiguraciona fajla.

nano  /etc/hosts.deny

I na kraju dodajemo:

sshd: ALL

Zatim menjamo sadržaj u sledećem fajlu:

nano  /etc/hosts.allow

I na kraju fajla dodajemo:

sshd: ALL: aclexec /usr/local/bin/sshfilter.sh %a

Provera efikasnosti sistema

Ukoliko smo autorizaciju za SSH podesili samo na Srbiju, dobićemo sledeće rezultate:

/usr/local/bin/sshfilter.sh 8.8.8.8 April 13 16:02:37 pi root: DENY sshd connection from 8.8.8.8 (US)

Da bismo proverili efikasnost skripte nakon nekoliko minuta, pokrećemo:

cat  /var/log/messages | grep DENY

Dobićemo sledeći rezultat:

April 13 17:59:54 pi logger: DENY sshd connection from 82.221.102.185 (IS) April 13 17:47:54 pi logger: DENY sshd connection from 220.227.123.122 (IN) April 13 17:43:51 pi logger: DENY sshd connection from 221.229.166.252 (CN) April 13 16:49:04 pi logger: DENY sshd connection from 221.208.245.226 (CN)

Ažuriranje GeoIP baze

Za ovo koristimo još jednu skriptu i crontab funkciju:

nano  /usr/local/bin/updategeoip.sh

Kopiramo sledeći sadržaj:

#!/bin/bash cd /tmp wget -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz if [ -f GeoIP.dat.gz ] then gzip -d GeoIP.dat.gz rm -f /usr/share/GeoIP/GeoIP.dat mv -f GeoIP.dat /usr/share/GeoIP/GeoIP.dat else echo "The GeoIP library could not be downloaded and updated" fi

Podešavamo dozvolu za izvršavanja fajla:

chmod +x  /ust/local/bin/updategeoip.sh

Ovu bazu možemo ažurirati jednom mesečno i to radimo na sledeći način:

crontab -e

U fajl upisujemo sledeću liniju:

0 6 15 * *  /usr/local/bin/updategeoip.sh

Ovim podešavanjem imaćemo nadogradnju svakog petnaestog u mesecu u šest sati. I za kraj ćemo rešiti curenje DNS informacija pri poseti sajtova od strane korisnika našeg Tor servera. Za te potrebe menjamo Tor konfiguracioni fajl i na kraj fajla dodajemo sledeći sadržaj:

AutomapHostsOnResolve 1 AutomapHostsSuffixes .exit,.onion

Za kraj ponovo pokrenemo SSH i ponovo učitamo Tor:

service ssh restart && service tor reload

Za migraciju Tor servera obavezno je sačuvati /etc/tor/torrc fajl i sadržaj /var/lib/tor/keys direktorijuma. U suprotnom gubimo rang u Tor mreži i krećemo ispočetka.

Ovim člankom završavamo pisanje o Tor serveru na Biglbon reviziji C i prelazimo na poglavlje veb servera i instalaciju najsigurnijeg veb servera današnjice – Hijavata (eng. Hiawatha). Do čitanja.