Биглбон Блек Рев Ц (6. део) – Биглбон Блек као Тор егзит
Водич од првог дана (6. део) – Биглбон Блек као Тор егзит
Аутор: Ненад Марјановић
У неколико претходних бројева писали смо о инсталацији и подешавањима Биглбона ревизије Ц коришћењем Дебијан Линукс дистрибуције. Данас тачку стављамо на сигурност Тор сервера али и самог оперативног система. После инсталације сваког сервера и након само неколико сати, а и раније, провером логова можемо закључити да смо већ на мети хакера. Ово се дешава због присутности великог броја мрежних скенера и алата за брутално пријављивање на SSH сервис. Нажалост, ови напади трају годинама и вероватно ће још дуго бити ту. Анализом пријавних логова, који се у овом случају налазе у /var/log/auth.log фајлу, увек можемо утврдити да ли је неко покушавао да нас нападне. Команде које нам могу олакшати процес провере о покушајима напада на наш сервер су следеће:
cat /var/log/auth.log | grep failed cat /var/log/auth.log | grep failed | wc -l
Кратак опис ових команди је следећи: -cat приказује задржај фајла
-grep тражи жељену реч
-wc -l приказује укупан број
Пример на тек инсталираном серверу након тридесет минута активности:
У претходном броју смо говорили о промени порта за SSH конекцију, али данас настављамо причу употребом геолокализацијског софтвера. Овај софтвер врши рестрикцију приступа серверу према земљама које одаберемо. За ово решење су нам потребне две баш (енг. bash) скрипте и два пакета. Цео процес започињемо инсталацијом geoip пакета и базе.
apt-get install geoip-bin geoip-database
Да бисмо проверили успешност инсталације:
geoiplookup pentester.iz.rs
Прву скрипту креирамо у /usr/local/bin досијеу и подешавамо дозволе за њено извршавање.
nano /usr/local/bin/sshfilter.sh
Затим копирамо следећи садржај:
#!/bin/bash # UPPERCASE space-separated country codes to ACCEPT ALLOW_COUNTRIES="RS FR" if [ $# -ne 1 ]; then echo "Usage: `basename $0` <ip>" 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
Потребно је изменити ALLOW_COUNTRIES у зависности из које се земље редовно конектујемо на сервер. За Србију је то RS, за Француску FR итд. Поштујемо велика слова и размак, а пишемо без зареза уколико уносимо више земаља. Подешавамо дозволу за извршавање скрипте:
chmod +x /usr/local/bin/sshfilter.sh
Закључавање SSH-а
Да бисмо омогућили употребу геолокализације, морамо изменити два системска конфигурациона фајла.
nano /etc/hosts.deny
И на крају додајемо:
sshd: ALL
Затим мењамо садржај у следећем фајлу:
nano /etc/hosts.allow
И на крају фајла додајемо:
sshd: ALL: aclexec /usr/local/bin/sshfilter.sh %a
Провера ефикасности система
Уколико смо ауторизацију за SSH подесили само на Србију, добићемо следеће резултате:
/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)
Да бисмо проверили ефикасност скрипте након неколико минута, покрећемо:
cat /var/log/messages | grep DENY
Добићемо следећи резултат:
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)
Ажурирање GeoIP базе
За ово користимо још једну скрипту и crontab функцију:
nano /usr/local/bin/updategeoip.sh
Копирамо следећи садржај:
#!/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
Подешавамо дозволу за извршавања фајла:
chmod +x /ust/local/bin/updategeoip.sh
Ову базу можемо ажурирати једном месечно и то радимо на следећи начин:
crontab -e
У фајл уписујемо следећу линију:
0 6 15 * * /usr/local/bin/updategeoip.sh
Овим подешавањем имаћемо надоградњу сваког петнаестог у месецу у шест сати. И за крај ћемо решити цурење DNS информација при посети сајтова од стране корисника нашег Тор сервера. За те потребе мењамо Тор конфигурациони фајл и на крај фајла додајемо следећи садржај:
AutomapHostsOnResolve 1 AutomapHostsSuffixes .exit,.onion
За крај поново покренемо SSH и поново учитамо Тор:
service ssh restart && service tor reload
За миграцију Тор сервера обавезно је сачувати /etc/tor/torrc фајл и садржај /var/lib/tor/keys директоријума. У супротном губимо ранг у Тор мрежи и крећемо испочетка.
Овим чланком завршавамо писање о Тор серверу на Биглбон ревизији Ц и прелазимо на поглавље веб сервера и инсталацију најсигурнијег веб сервера данашњице – Хијавата (енг. Hiawatha). До читања.