Користувальницькькі налаштування

Налаштування сайту


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації до оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Відео
Допомога проекту
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

1984tech

1984tech - блокування за списком доменів

Завантаження та налаштування

Завантажуємо, та розпаковуємо.

# wget --no-check-certificate https://github.com/nightflyza/1984tech/archive/master.zip
# unzip master.zip
# cd 1984tech-master/

Для використання функціоналу з блокування доменів по їх IP адресах, а саме засобами різноманітних фаєрволів, може бути потрібне встановлення пакунку Net_DNS2 за допомогою pear:

# pear install Net_DNS2

Блокування доменів засобами DNS / ISC-BIND

Робимо конфігурацію cli/1984tech.ini згідно нашого оточення, модифікуючи що найменше BASE_PATH. Та перевіряємо чи все добре банально методом виклику

# php cli/dnsgen --preview

Далі можна переходити до розгортання пресетів

# cat named/append_named.conf >> /var/named/etc/namedb/named.conf
# cp -R named/master/1984tech.db /var/named/etc/namedb/master/

Переконуємось, що в /var/named/etc/namedb/master/1984tech.db нас все влаштовує та включаємо фантазію, як файл зон, що генерується за допомогою php cli/dnsgen –generate чи php cli/dnsgen –preview буде потрапляти у /var/named/etc/namedb/. Як варіант можете для тесту зробити щось на кшталт

# php cli/dnsgen --preview > /var/named/etc/namedb/1984tech.conf

або вірно виставити повний шлях до цього файлу у конфізі cli/1984tech.ini за допомогою опції DNS_ZONES після чого просто виконувати

# php cli/dnsgen --generate

або ж просто використовуйте сімлінки ФС. Загалом, просто увімкніть фантазію та все.

Список завантажуваних доменів, ви можете подивитись за допомогою команди

# php cli/dnsgen --list

А також ознайомитись з усіма опціями що підтримуються, за допомогою

# php cli/dnsgen --help

Не забуваємо, що після внесення змін до named.conf варто перезапустити сервіс методом

# /etc/rc.d/named restart

А після оновлення файлу зон варто зробити

# rndc reload

У випадку, якщо ви вважаєте, що людино-зрозуміле сповіщення про те, що домен заблоковано з якоїсь конкретної причини краще ніж “просто нічого” - можете скористатись веб-заглушкою з директорії webstub. Для простоти конструкції, можете зробити її віртуал-хостом за замовчуванням.

# cp -R webstub /usr/local/www/apache24/data/
# chmod -R 777 /usr/local/www/apache24/data/webstub/log

Блокування доменів засобами DNS / unbound

Працює приблизно таким самим чином, як і блокування за допомогою bind - тобто генеруючи кастомні файли зон. Для цього також використовується скрипт cli/dnsgen з наступними параметрами:

# php cli/dnsgen --preview-unbound

для попереднього перегляду, того що буде згенероване, та

# php cli/dnsgen --generate-unbound

Для генерації файлу зон. Де його буде згенеровано, можна вказати за допомогою опції UNBOUND_DNS_ZONES у конфізі cli/1984tech.ini Далі,необхідно у основний файл конфігурації unbound.conf додати інклуд свіжо згенерованої зони, до секції control:

include: "/var/unbound/1984tech.conf"

Якось так:

Після чого, героїчно це все перезавантажуємо

# unbound-control reload   

Блокування засобами фаєрволу / IPFW

Далі як водиться редагуємо конфіг cli/1984tech.ini з метою встановлення шляхів до ipfw, таблички ipfw у котру будуть пушитись IP адреси доменів зі списку, так вказуємо шлях, по якому буде генеруватись скрипт оновлення фаєрволу. Також не забуваємо вказати DNS сервери, за допомогою яких ми хотіли б резолвити адреси.

Перш за все, нам необхідно буде вирішити, що робити з табличкою, куди буде запхано IP адреси хостів. Можемо просто брутально відправити її в deny, якось так:

# ipfw add 1984 deny ip from any to table\(42\)
# ipfw add 1984 deny ip from table\(42\) to any

або ж використати заворот за допомогою fwd, якось так:

# ipfw add 1984 fwd 127.0.0.1,80 ip from 172.16.0.0/24 to table\(42\) dst-port 80
# ipfw add 1984 fwd 127.0.0.1,443 ip from 172.16.0.0/24 to table\(42\) dst-port 443

Працездатність можна перевірити наприклад подивившись як резолвляться домени

# php cli/ipfwgen --resolve

або як виглядає скрипт, що повинен генеруватись методом

# php cli/ipfwgen --preview

Далі включаємо фантазію, та використовуємо це все методом

# php cli/ipfwgen --generate

або напряму апдейтимо табличку у фаєрволі за допомогою

# php cli/ipfwgen --tableupdate

Блокування засобами Mikrotik

При великому бажанні, можна нагенерувати адрес-лістів для Mikrotik-ів. Робиться це за допомогою скрипта cli/mtgen. Наразі керується він аж двома опціями, а власне MT_LISTNAME, що вказує на ім'я адрес-ліста, що буде згенеровано, та MT_SCRIPT_PATH котрий просто вказує куди ми це бажаємо зберігати на ФС. Детальніше з його опціями, ви можете ознайомитись за допомогою наступної команди:

# php cli/mtgen --help

Візуально ви можете перевірити, що він генерує за допомогою

# php cli/mtgen --preview

У цілому все виглядає аналогічно блокуванню за допомогою фаєрволу ipfw. Також ви можете спробувати скористатись блокуванням за іменем домену, покладаючись на резолв засобами самого Mikrotik:

# php cli/mtgen --listmk

Блокування засобами Mikrotik static DNS records

Для самих маленьких/дуже ледачих або просто якщо спосіб с адрес-лістами вам не підходить з ідеологічних будь-яких міркувань - можна використати можливість створення статичних DNS записів з перенаправленням їх в /dev/null, наприклад, на 127.0.0.1
Зробити то можна наступним способом:

  • візуально можете перевірити генерацію за допомогою
# php cli/mtstaticdnsgen --preview   
  • згенерувати файл (шлях до якого задається опцією MT_DNSSTATIC_SCRIPT_PATH) з готовим скриптом для копіпасту до Mikrotik CLI/Terminal можна так
# php cli/mtstaticdnsgen --generate

Також, для тих, хто працює виключно через Winbox і страшенно боїться Mikrotik CLI/Terminal, є варіант створення файлових чанків(шматків) розміром менше 4Kb з повного списку доменів та імпорту їх за допомогою Mikrotik-скрипта. Скрипт лежить тут mikrotikstaticdns/StaticDNSAdder.rsc. Загалом ця процедура виглядає так:

  • створюємо скрипт StaticDNSAdder.rsc на Mikrotik і копіпастимо в нього вміст одноіменного скрпта mikrotikstaticdns/StaticDNSAdder.rsc
  • створюємо файлові чанки (шлях до каталогу, де буде розміщено чанки, задається опцією MT_DNSSTATIC_CHUNKS_PATH):
# php cli/mtstaticdnsgen --splitchunks
  • кладемо створені чанки, які будуть іменуватись якось так mt_dnsstatic_chunk_<number>.1984t, до Mikrotik /files
  • запускаємо скрипт, уважно дивимось “вихлоп” у Mikrotik Log

Дуже рекомендовано ознайомитись з іншими опціями MT_DNSSTATIC_* в 1984tech.ini
Додатковий мануал тут

Блокування на Linux засобами ipset/iptables

Перш за все, потрібно перевірити опції в cli/1984tech.ini на тему валідності шляхів у IPSET_PATH, IPTABLES_PATH та виставити вірні IPSET_LISTNAME з IPTABLES_CHAIN. Далі створюємо відповідний список ipset та оформлюємо його блокування у фаєрволі за допомогою

# ipset -N blacklist iphash
# iptables -t filter -A FORWARD -m set --match-set blacklist dst -j DROP

Далі ми можемо отримати скрипт оновлення списку в ipset за допомогою команди

# php cli/linuxgen --ipset

У випадку, якщо це потрібно, скрипт cli/linuxgen також може виконати для вас ці скрипти самостійно, наприклад, за допомогою команди

# php cli/linuxgen --ipsetupdate

Також ви можете захотіти (ми не знаємо причин для цього) використовувати для блокування просто iptables. Скрипт для оновлення вашого фаєрволу ви можете отримати за допомогою команди

# php cli/linuxgen --iptables  

Блокування засобами проксі / Squid

Squid - виконує функцію прозорого проксі, без кешування і без підміни сертифіката, тим самим не створює MITM аткаку.

  • При блокуванні HTTP трафіку - клієнтові показується наша сторінка з причиною блокування.
  • При блокуванні HTTPS трафіку - Squid просто скидає з'єднання і браузер показує повідомлення:
Неможливо отримати доступ до сайту

Як це все насправді працює і налаштовується, Павутина все дуже гарно і дохідливо, розписав для вас у окремому рідмі для Squid.

Блокування засобами Juniper

Тут також все типово. Аж одна опція у конфізі JUN_LISTNAME, котра вказує на ім'я префіксліста, котрий буде згенеровано, здоровий набір з set policy-options за допомогою:

# php cli/jungen --preview

Та наступні налаштування фаєрволу:

MX80# set firewall family inet filter blacklist-ip-drop interface-specific
MX80# set firewall family inet filter blacklist-ip-drop term drop from destination-prefix-list blacklist-ip
MX80# set firewall family inet filter blacklist-ip-drop term drop then discard
MX80# set firewall family inet filter blacklist-ip-drop term other then accept
MX80# set interfaces xe-0/0/0 unit 1111 family inet filter output blacklist-ip-drop

Блокування засобами Cisco

Вказуємо за допомогою опції CIS_LISTNUM номер адрес ліста для чорного списку, після чого дивимось що вийшло за допомогою:

# php cli/cisgen --preview

Використовувати це можна за допомогою:

Cisco-6500(config)# access list 101 permit ip any any
Cisco-6500(config)# interface GigabitEthernet 0/24
Cisco-6500(config-if)# ip access-group 101 out

Блокування засобами PDNSD

Для конфігу PDNSD (зазвичай лежить тут /etc/pdnsd.conf) є можливість генерації negation sections, для блокування доменів.

  • візуально можете перевірити генерацію за допомогою
# php cli/pdnsdgen --preview   
  • згенерувати файл (шлях до якого задається опцією PDNSD_SCRIPT_PATH) з готовим скриптом для копіпасту до pdnsd.conf можна так
# php cli/pdnsdgen --generate

Після успіщної генерації файлу просто копіпастимо його вміст до конфігу PDNSD і робимо йому restart.
Детальніше про PDNSD:
https://manpages.debian.org/jessie/pdnsd/pdnsd.conf.5.en.html
https://wiki.archlinux.org/title/pdnsd
https://gist.github.com/gorakhargosh/1119508

1984tech.txt · Востаннє змінено: 2022/09/24 14:39 (зовнішнє редагування)