Hlavní navigace

GeoIP firewall na UBUNTU 16.04

3. 10. 2016 19:35 (aktualizováno) | Slavoj Hruska

Pred pad tyzdnami som narazil na problem, kedy som potreboval niektore sluzby na serveri povolit len z urcitych GeoIP lokacii.

Existuju v zasade 3 moznosti:

  1. apache, nginx a iste aj mnohe ine services maju moznost ako obmedzit spojenia podla geoip
  2. ak mate vlastnu serverovnu, riesit to na FW ktory umoznuje firewalling pomocou GeoIP (k tomu snad nabuduce)
  3. pouzit iptables a doplnkove moduly

Ako prve som chcel implementovat prvu moznost, no kedze som primarne potreboval ochranit takto napr SSH pristup, coskoro som moznost 1 zavrhol.

V mojej malej serverovni kde mam server, zakladny FW riesi Mikrotik, na ktorom je prilis komplikovane riesit (nevravim ze nemozne) zlozitejsie FW rules, hlavne ak ide o GeoIP. Samozrejme je mozne definovat address listy atp, ale ich udrzba bola na moj vkus prilis komplikovana, takze krok 2 (v tom okamihu) padal tiez.

Zostala teda moznost riesit to priamo na masine. Dany stroj je UBUNTU server 16.04, takze tu ukazem, ako to riesit na danej platforme:

Ako prve budeme potrebovat dane iptables rules niekte ukladat a restorovat ich:


santa@santa-vyuka-machine:~$ sudo apt-get install iptables-persistent

Dalej budeme potrebovat xtables plugin do itables, a podporne moduly pre pracu s CSV v prele


santa@santa-vyuka-machine:~$ sudo apt-get install xtables-addons-common
santa@santa-vyuka-machine:~$ sudo apt-get install libtext-csv-xs-perl unzip

Dalej si vytvorime script pomocou sudo vi /etc/cron.daily/update_geoip.sh ktory bude obsahovat:


#!/bin/sh
cd /tmp
/usr/lib/xtables-addons/xt_geoip_dl
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

Nasledne zmenime opravnenia


santa@santa-vyuka-machine:~$ sudo chmod 750 /etc/cron.daily/update_geoip.sh

Ked si dany script prvy krat manualne spustime, aktualizuju sa jednotlive IP ranges v databaze s tym, ktore patria ku ktorej krajine…

santa@santa-vyuka-machine:~$ sudo /etc/cron.daily/update_geoip.sh
--2016-10-03 19:11:38--  http://geolite.maxmind.com/download/geoip/database/GeoIPv6.csv.gz
Prevádza sa geolite.maxmind.com (geolite.maxmind.com) na IP adresu... 104.16.38.47, 104.16.37.47, 2400:cb00:2048:1::6810:262f, ...
Pripájanie k geolite.maxmind.com (geolite.maxmind.com)|104.16.38.47|:80... pripojené.
HTTP požiadavka odoslaná, čakám na odpoveď... 200 OK
Dĺžka: 1300354 (1,2M) [application/octet-stream]
Ukladá sa do: „GeoIPv6.csv.gz“

GeoIPv6.csv.gz                                  100%[====================================================================================================>]   1,24M  4,53MB/s    in 0,3s

2016-10-03 19:11:38 (4,53 MB/s) - „GeoIPv6.csv.gz“ uložené [1300354/1300354]

--2016-10-03 19:11:38--  http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
Použije sa existujúce spojenie s geolite.maxmind.com:80.
HTTP požiadavka odoslaná, čakám na odpoveď... 200 OK
Dĺžka: 2132864 (2,0M) [application/zip]
Ukladá sa do: „GeoIPCountryCSV.zip“

GeoIPCountryCSV.zip                             100%[====================================================================================================>]   2,03M  5,84MB/s    in 0,3s

2016-10-03 19:11:38 (5,84 MB/s) - „GeoIPCountryCSV.zip“ uložené [2132864/2132864]

UKONČENÉ --2016-10-03 19:11:38--
Celkový čas: 0,7s
Stiahnutých: 2 súborov, 3,3M za 0,6s (5,26 MB/s)
Archive:  GeoIPCountryCSV.zip
  inflating: GeoIPCountryWhois.csv
172010 entries total
    0 IPv6 ranges for A1 Anonymous Proxy
   31 IPv4 ranges for A1 Anonymous Proxy
    0 IPv6 ranges for A2 Satellite Provider
   37 IPv4 ranges for A2 Satellite Provider
........................
   10 IPv6 ranges for ZW Zimbabwe
   63 IPv4 ranges for ZW Zimbabwe
santa@santa-vyuka-machine:~$

A teraz je cas zacat pridavat rules:

santa@santa-vyuka-machine:~$ sudo netfilter-persistent save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save

santa@santa-vyuka-machine:~$ sudo /etc/iptables/rules.v4

Upravime podla nasledujucich pravidiel, ak chceme povolit napr len SSH z CZ a SK ip ranges… (je tam aj vysledok fail2ban pre ssh…


# Generated by iptables-save v1.6.0 on Mon Oct  3 19:21:49 2016
*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
:f2b-sshd - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# fail2ban
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
# sem sa vrati fail2ban ak je vsetko ok....
-A f2b-sshd -j RETURN
# povolime SSH z CZ a SK ip ranges...
-A INPUT -d 123.123.123.321/32 -p tcp -m geoip --source-country CZ  -m tcp --dport 22 -j ACCEPT
-A INPUT -d 123.123.123.321/32 -p tcp -m geoip --source-country SK  -m tcp --dport 22 -j ACCEPT
COMMIT
# Completed on Mon Oct  3 19:21:49 2016

Tak toto je cca cesta ako to riesit na UBUNTU 16.04 priamo… Nabuduce si snad ukazeme, ako to riesit na urvoni centralneho FW. Budem rad, ak Vam toto posluzi ako inspiracia, pripadne podnet k diskusii.

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

DigiZone.cz: Recenze Prostřeno: cirkus postižených

Recenze Prostřeno: cirkus postižených

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Drahé i levné. Tyhle potraviny nosili na charitu

Drahé i levné. Tyhle potraviny nosili na charitu

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Měšec.cz: Za palivo zaplatíte mobilem (TEST)

Za palivo zaplatíte mobilem (TEST)

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

120na80.cz: 5 přírodních tipů na bolest v krku

5 přírodních tipů na bolest v krku

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život