Iptables і фільтраванне трафіку ад бедных і лянівых іншадумцаў

Актуальнасць блакіроўкі наведванняў забароненых рэсурсаў закранае любога адміна, якому могуць афіцыйна прад'явіць невыкананне закону або распараджэнні адпаведных органаў.

Iptables і фільтраванне трафіку ад бедных і лянівых іншадумцаў

Навошта вынаходзіць ровар тады, калі ёсць спецыялізаваныя праграмы і дыстрыбутывы для нашых задач, напрыклад: Zeroshell, pfSense, ClearOS.

Яшчэ адно пытанне аказалася ў начальства: А ці ёсць у прадукту, які выкарыстоўваецца, сертыфікат бяспекі нашай дзяржавы?

У нас быў досвед па працы з пералічанымі дыстрыбутывамі:

  • Zeroshell - распрацоўшчыкі нават падарылі на 2 гады ліцэнзію, але аказалася што цікавы дыстрыбутыў нелагічна для нас выконваў крытычную для нас функцыю;
  • pfSense — павага і пашана, адначасова сумна, прывыканне да каманднага радка файрвала FreeBSD і не дастаткова зручна для нас (думаю справу звычкі, але гэта аказалася не «тым шляхам»);
  • ClearOS - на нашым жалезе апынулася вельмі павольна, да сур'ёзнага тэставання не змаглі дайсці, вось і навошта такія цяжкія інтэрфейсы?
  • Ideco SELECTA. Пра прадукт "Айдэка" асобная размова, цікавы прадукт, але з палітычных меркаванняў не для нас, а яшчэ хочацца "ўкусіць" іх з нагоды ліцэнзіі на той жа лінукс, Roundcube і да т.п. З чаго яны ўзялі, што «напілаваўшы» інтэрфейс у Пітон і адабраўшы правы суперкарыстальніка яны могуць прадаваць скончаны прадукт складзены з распрацаваных і дапрацаваных модуляў інтэрнэт супольнасці якія распаўсюджваюцца па GPL&etc.

Разумею, што цяпер у мой бок пасыпяцца негатыўныя воклічы з патрабаваннямі дэталёва абгрунтаваць свае суб'ектыўныя адчуванні, але хачу сказаць што гэты вузел сеткі таксама з'яўляецца балансавальнікам трафіку на 4 знешнія каналы да сеткі Інтэрнэт, прычым у кожнага канала ёсць свае асаблівасці. Яшчэ краевугольным каменем стала неабходнасць працаваць аднаму з некалькіх сеткавых інтэрфейсаў у розных адрасных прасторах, і я гатовы прызнаць, што ўжываць усюды дзе трэба і не трэба VLANы я не гатовы. У карыстанні ёсць прылады тыпу TP-Link TL-R480T + – паводзяць сябе не ідэальна, увогуле са сваімі нюансамі. Гэтую частку на Linux атрымалася разумна наладзіць дзякуючы оф.сайту Ubuntu IP-Балансіроўка: аб'ядноўваем некалькі інтэрнэт-каналаў у адзін. Прычым кожны з каналаў можа "зваліцца" у любы момант, як і падняцца. Калі цікавіць скрыпт, які працуе на дадзены момант (а гэта варта асобнай публікацыі) - пішыце ў каментарах.

Разгляданае рашэнне не прэтэндуе на ўнікальнасць, але хочацца задаць пытанне: "А навошта на прадпрыемстве прыстасоўвацца пад іншыя сумнеўныя прадукты з сур'ёзнымі апаратнымі патрабаваннямі калі можна разгледзець альтэрнатыўны варыянт?".

Калі ў РФ ёсць спіс Роскомнадзора, ва Украіне - дадатак да Рашэння Савета НацБяспекі (напр. вось), то на месцах кіраўнікі таксама не спяць. Напрыклад, нам быў перададзены спіс забароненых сайтаў, на думку кіраўніцтва якія пагаршаюць прадукцыйнасць працы на працоўным месцы.

Маючы зносіны з калегамі на іншых прадпрыемствах, на якіх па змаўчанні забароненыя ўсе сайты і толькі па запыце з дазволу начальніка можна атрымаць доступ да пэўнага сайта, паважліва ўсміхнуўшыся, падумаўшы і пакурыўшы над праблемай прыйшло разуменне таго, што жыццё ўсёткі добрае і мы пачалі свой пошук.

Маючы магчымасць не толькі аналітычна паглядзець, што пішуць у «кнігах хатніх гаспадынь» пра фільтраванне трафіку, але і паглядзець што адбываецца на каналах розных правайдэраў мы прымецілі наступныя рэцэпты (любыя скрыны крыху абрэзаныя, прашу зразумець прасіць):

Правайдэр 1
- не затлумляецца і навязвае ўласныя ДНС сервера і празрысты проксі-сервер. Ну што?.. затое ў нас ёсць доступ туды куды трэба (калі нам гэта трэба:))

Правайдэр 2
- лічыць што яго верхні правайдэр павінен пра гэта думаць, тэхпадтрымка верхняга правайдэра нават прызналася чаму я не магу адкрыць неабходны мне не забаронены сайт. Я думаю што карцінка вас развесяліць 🙂

Iptables і фільтраванне трафіку ад бедных і лянівых іншадумцаў

Як аказалася, яны імёны забароненых сайтаў пераводзяць у айпі адрасы і блакуюць менавіта IP (не турбуе іх тое, што на гэтым IP адрасе можа размяшчацца і 20 сайтаў).

Правайдэр 3
- Прапускае трафік туды, але назад па маршруце яго не пускае.

Правайдэр 4
- забараняе ўсе маніпуляцыі з пакетамі ў паказаным кірунку.

А што рабіць з ВПН (браўзэру Opera павага) і плягінамі для браўзэраў? Гуляючы спачатку з вузлавым Mikrotik у нас нават з'явіўся рэсурсаёмісты рэцэпт на L7, ад якога ў наступстве прыйшлося адмовіцца (забароненых назоваў можа быць і пабольш, сумна становіцца калі акрамя сваіх прамых абавязкаў па маршрутах, на 3х дзясятках выразаў загрузка працэсара PPC460GT сыходзіць у 100 %).

Iptables і фільтраванне трафіку ад бедных і лянівых іншадумцаў.

Што стала зразумела:
ДНС на 127.0.0.1 абсалютна не панацэя, сучасныя версіі браўзэраў такі дазваляюць абыходзіць падобныя траблы. Абмежаваць усіх карыстальнікаў зрэзанымі правамі нельга, і нельга забываць аб вялікай колькасці альтэрнатыўных ЗНС. Інтэрнэт не статычны, і акрамя новых ДНС адрасоў, забароненыя сайты купляюць новыя адрасы, змяняюць дамены верхняга ўзроўню, могуць дадаць/выдаліць сімвал у сваім адрасе. Але ўсё ж мае права жыць нешта тыпу:

ip route add blackhole 1.2.3.4

Цалкам дзейсным было б атрыманне спісу IP адрасоў са спісу забароненых сайтаў, але па ўказаных вышэй меркаваннях мы перайшлі да меркаванняў аб Iptables. Існаваў ужо жывы балансавальнік на CentOS Linux release 7.5.1804.

Інтэрнэт у карыстача павінен быць хуткім, а Браўзэр не павінен чакаць паўхвіліны, складаючы што дадзеная старонка не даступная. Пасля доўгіх пошукаў мы дашлі да такой мадэлі:
Файл 1 -> /script/denied_host, спіс забароненых назваў:

test.test
blablabla.bubu
torrent
porno

Файл 2 -> /script/denied_range, спіс забароненых адрасных прастор і адрасоў:

192.168.111.0/24
241.242.0.0/16

Файл-скрыпт 3 -> ipt.sh, які выконвае працу з ipables:

# считываем полезную информацию из перечней файлов
HOSTS=`cat /script/denied_host | grep -v '^#'`
RANGE=`cat /script/denied_range | grep -v '^#'`
echo "Stopping firewall and allowing everyone..."
# сбрасываем все настройки iptables, разрешая то что не запрещено
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
#решаем обновить информацию о маршрутах (особенность нашей архитектуры)
sudo sh rout.sh
# циклически обрабатывая каждую строку файла применяем правило блокировки строки
for i in $HOSTS; do
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p tcp -j REJECT --reject-with tcp-reset;
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p udp -j DROP;
done
# циклически обрабатывая каждую строку файла применяем правило блокировки адреса
for i in $RANGE; do
sudo iptables -I FORWARD -p UDP -d $i -j DROP;
sudo iptables -I FORWARD -p TCP  -d $i -j REJECT --reject-with tcp-reset;
done

Ужыванне sudo абумоўлена тым, што ў нас ёсць невялікі хак для кіравання праз WEB інтэрфейс, але як паказаў досвед выкарыстання такой мадэлі тэрмінам больш за год, то WEB не так ужо і патрэбен. Пасля ўкаранення было жаданне пералік сайтаў завесці ў БД і да т.п. Колькасць заблакаваных хастоў больш за 250 + дзесятак адрасных прастор. Сапраўды ёсць праблема пры пераходзе на сайт па https злучэнню, як і сістэмнага адміністратара ў мяне ёсць прэтэнзіі да браўзэраў :), але гэта дзелі выпадкі, большасць спрацоўванняў да адсутнасці доступу да рэсурсу ўсё ткі на нашым боку, гэтак жа паспяхова блакуем Opera VPN, убудовы тыпу friGate і тэлеметрыю ад Майкрасофт.

Iptables і фільтраванне трафіку ад бедных і лянівых іншадумцаў

Крыніца: habr.com

Дадаць каментар