Вопрос или проблема
Итак, я хочу включить файл с более чем 80 тысячами URL-адресов, основанный на https://github.com/StevenBlack/hosts, в правило IPTABLES. Есть способ сделать это вручную, но, как вы понимаете, вручную обрабатывать 80 тысяч записей будет головной болью.
filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :upnp - [0:0] :vpnlist - [0:0] :bfplimit - [0:0] :maclist - [0:0] :urllist - [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -i br0 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state INVALID -j DROP -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT -A INPUT -p icmp ! --icmp-type echo-request -j ACCEPT -A FORWARD -i br0 -o br0 -j ACCEPT -A urllist -p tcp -m webstr --url "ada.com aaa.com ffff.com" -j REJECT --reject-with tcp-reset -A FORWARD -i br0 -j urllist -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -m state --state INVALID -j DROP -A FORWARD -i br0 -j ACCEPT -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT COMMIT
Жирная часть — это то, что я хочу заполнить всеми URL-адресами или включить файл
Есть идеи, как это сделать?
iptables, насколько я знаю, не понимает URL-адреса или домены. Вам сначала нужно конвертировать все URL-адреса в IP-адреса. Используйте этот онлайн инструмент http://domaintoipconverter.com/index.php
Чтобы извлечь IP-адреса из предыдущих результатов, используйте этот онлайн инструмент https://www.ipvoid.com/ip-extractor/
Сохраните ваши IP-адреса в текстовый файл (list.txt
например), по одному запису в строке. Ваш файл list.txt
должен выглядеть примерно так:
$ cat list.txt
145.14.145.222
145.14.144.69
192.243.59.20
192.243.59.12
150.242.210.158
150.242.210.187
122.226.186.3
Затем используйте простой скрипт bash с циклом “for”, чтобы добавить все IP-адреса из файла list.txt
в iptables:
#!/bin/bash
for i in $(cat list.txt);
do
iptables -A OUTPUT -d "$i" -j DROP
done
# Сохраните правила
service iptables save
iptables позволит вам фильтровать пакеты по их содержимому, но только до тех пор, пока они не зашифрованы.
Поскольку вы хотите использовать это как блокировщик рекламы:
- это не будет работать для https-соединений
- каждый пакет будет сопоставляться с более чем 80 тысячами правил
Пожалуйста, рассмотрите альтернативу (например, https://pi-hole.net/).
Ответ или решение
Вопрос о включении файла с более чем 80 тысячами URL-адресов в правила iptables поднимает несколько важных аспектов, которые необходимо учитывать, чтобы обеспечить оптимальную работу вашей системы безопасности и сетевого фильтра. Ниже приведено детальное руководство, которое охватывает все ключевые моменты.
1. Преобразование URL в IP-адреса
Для начала важно понимать, что iptables не может напрямую работать с доменными именами или URL-адресами. Следовательно, перед тем как добавить адреса в правила, необходимо преобразовать их в IP-адреса. Это можно сделать с помощью различных онлайн-инструментов, например:
После преобразования вы должны сохранить IP-адреса в текстовом файле (давайте назовем его list.txt
), где каждая строка будет содержать один IP-адрес. Например:
145.14.145.222
145.14.144.69
192.243.59.20
2. Добавление IP-адресов в правила iptables
С помощью простого Bash-скрипта вы можете автоматически добавить все IP-адреса из вашего файла в правила iptables. Пример скрипта:
#!/bin/bash
for i in $(cat list.txt);
do
iptables -A INPUT -d "$i" -j REJECT
done
# Сохраните правила
service iptables save
Этот скрипт последовательно добавляет каждое правило для блокировки IP-адресов. Обратите внимание, что здесь используется цепочка INPUT
, что соответствует ситуации, когда вы хотите запретить входящие соединения на указанные IP-адреса.
3. Производительность и ограничения
Прежде чем продолжить, важно отметить, что добавление 80 тысяч правил в iptables может значительно снизить производительность вашей системы. Каждый пакет будет проверяться на соответствие всем этим правилам, что может вызвать задержки. Имеет смысл рассмотреть альтернативные решения для фильтрации, такие как:
- Pi-hole: эффективное решение для блокировки рекламы на уровне DNS.
- Suricata или Snort: системы обнаружения вторжений, которые могут работать с более сложной логикой фильтрации.
4. Ограничения работы с IP-адресами
Также учтите, что:
- HTTPS: Фильтрация по IP-адресам может быть неэффективной для HTTPS, так как данные шифруются, и настоящий домен не виден.
- Динамические IP-адреса: Многие сервисы могут менять свои IP-адреса, поэтому такая фильтрация может быстро устаревать.
Заключение
В результате, несмотря на то что возможно добавить URL-адреса в iptables через предварительное преобразование в IP-адреса и последующее добавление правил с помощью скрипта, настоятельно рекомендуется рассмотреть альтернативные решения для более эффективной и производительной фильтрации. Внедрение специального ПО, такого как Pi-hole, не только упростит задачу, но и сделает вашу сеть более безопасной.