Защита на сървър чрез Geoip – Блокиране на SSH връзки извън България

Инсталирайте geoip

sudo apt-get install geoip-bin geoip-database

Подсигурете се, че работи:

boyanweb@boyanweb:/Files150G$ geoiplookup boyan.website
GeoIP Country Edition: BG, Bulgaria

Този скрипт забранява ssh от небългарски ip адреси, сложете го в /usr/local/bin/.

#!/bin/bash
ALLOW_COUNTRIES=”BG

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)”
echo “$RESPONSE sshd connection frem $1($COUNTRY)” >> /home/ПОТРЕБИТЕЛ/sshLOG

exit 1
fi

Във файла /etc/hosts.deny добавете реда:

sshd: ALL

Във файла /etc/hosts.allow добавете реда:

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

Не е нужно да рестарирате sshd процеса, директно може да направите тест:

boyanweb@boyanweb:~$ /usr/local/bin/sshfilter.sh 8.4.8.4
boyanweb@boyanweb:~$ cat sshLOG
DENY sshd connection from 8.4.8.4(US)
boyanweb@boyanweb:~$ /usr/local/bin/sshfilter.sh 8.4.8.8
boyanweb@boyanweb:~$ cat sshLOG
DENY sshd connection from 8.4.8.4(US)
DENY sshd connection from 8.4.8.8(US)

За ъпдейт на geoip може да използвате следния скрипт. Дори и току що да сте го изтеглили е добре да се подсигурите, че сте на най-новата възможна версия.

!/bin/bash
cd /tmp
wget -q https://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