петак, 19 априла, 2024
Хардвер

Биглбон Блек Рев Ц (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). До читања.