Инсталирайте 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
fiCOUNTRY=`/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/ПОТРЕБИТЕЛ/sshLOGexit 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