iptables - как заблокировать домены по маске. Например, все домены yandex ?

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

jobfox
Сообщения: 142

iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение jobfox »

iptables - как заблокировать домены по маске. Например, все домены yandex ???

Например указываем yandex и все домены содержащие yandex блокируются.

Как пишется такое правило?
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение pelmen »

Мне для этого понадобилось делать прозрачный прокси и в нем блокировать
Спасибо сказали:
pasis
Сообщения: 22
ОС: Gentoo Linux

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение pasis »

pelmen писал(а):
31.12.2009 11:34
Мне для этого понадобилось делать прозрачный прокси и в нем блокировать

Согласен, если поднять squid как прозрачный прокси, то он позволяет творить довольно полезные вещи. Squid позволяет не только блокировать домены, все его поддомены, но и писать регулярные выражения. Кстати мой друг написал до десятка таких регулярных выражений, которые банят большую часть рекламы.

Что касается именно iptables, то это пакетный файервол и он работает с ip адресами, ему нельзя указать имена хостов. По крайней мере еще не создали такого расширения, ведь оно требует связки с DNS сервером, а это прикладной уровень.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение Ленивая Бестолочь »

pasis писал(а):
31.12.2009 16:06
ему нельзя указать имена хостов

ну, строго говоря можно, они будут преобразовываться в ip, но регулярные выражения туда впихнуть нельзя.
Address can be either a network name, a hostname (please note that specifying any name to be resolved with a
remote query such as DNS is a really bad idea), a network IP address (with /mask), or a plain IP address.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
pasis
Сообщения: 22
ОС: Gentoo Linux

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение pasis »

Ленивая Бестолочь писал(а):
31.12.2009 17:01
pasis писал(а):
31.12.2009 16:06
ему нельзя указать имена хостов

ну, строго говоря можно, они будут преобразовываться в ip, но регулярные выражения туда впихнуть нельзя.
Address can be either a network name, a hostname (please note that specifying any name to be resolved with a
remote query such as DNS is a really bad idea), a network IP address (with /mask), or a plain IP address.


Я говорил про то, что сам файервол не хранит имена, а только ip. И преобразовывает имена в адреса и наоборот уже прикладная программа iptables при добавлении или просмотре правил. А если изменится запись в DNS или одно имя ресолвится в несколько адресов, то выходит бяка =). Яркий пример: я хотел забанить vkontakte.ru, для этого нада добавить приличную стопку адресов в файервол или использовать прикладное ПО. Т.е. файервол в ядре не предназначен для поставленной задачи. Я понял суть темы именно в этом.
PS а так да, вы правы, можно писать имена вместо ip, но разницы не будет, если вы запишете ip адрес.
PPS вы конечно поправьте если я в чем-то не прав.
Спасибо сказали:
yaleks
Сообщения: 2121
Статус: вне статуса
ОС: Gentoo ~

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение yaleks »

Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение Ленивая Бестолочь »

pasis писал(а):
31.12.2009 17:33
я хотел забанить vkontakte.ru, для этого нада добавить приличную стопку адресов в файервол или использовать прикладное ПО.

смотрите:
сохраняю старые правила:

Код: Выделить всё

rakul@misa:/$ sudo iptables-save > /tmp/1

добавляю что-то типа "забанить vkontakte.ru":

Код: Выделить всё

rakul@misa:/$ sudo iptables -A INPUT --src vkontakte.ru -j DROP

сравниваю старые правила и новые:

Код: Выделить всё

rakul@misa:/$ diff /tmp/1 /tmp/2 |grep DROP
> -A INPUT -s 93.186.227.130/32 -j DROP
> -A INPUT -s 93.186.229.3/32 -j DROP
> -A INPUT -s 93.186.227.129/32 -j DROP
> -A INPUT -s 93.186.224.238/32 -j DROP
> -A INPUT -s 93.186.229.2/32 -j DROP
> -A INPUT -s 93.186.227.123/32 -j DROP
> -A INPUT -s 93.186.231.222/32 -j DROP
> -A INPUT -s 93.186.227.126/32 -j DROP
> -A INPUT -s 93.186.231.218/32 -j DROP
> -A INPUT -s 93.186.231.221/32 -j DROP
> -A INPUT -s 93.186.226.4/32 -j DROP
> -A INPUT -s 93.186.226.5/32 -j DROP
> -A INPUT -s 93.186.231.220/32 -j DROP
> -A INPUT -s 93.186.226.129/32 -j DROP
> -A INPUT -s 93.186.225.6/32 -j DROP
> -A INPUT -s 93.186.231.219/32 -j DROP
> -A INPUT -s 93.186.224.239/32 -j DROP
> -A INPUT -s 93.186.227.125/32 -j DROP
> -A INPUT -s 93.186.227.124/32 -j DROP
> -A INPUT -s 93.186.226.130/32 -j DROP
> -A INPUT -s 93.186.225.211/32 -j DROP
> -A INPUT -s 93.186.225.212/32 -j DROP
rakul@misa:/$

мне кажется, что пачка ай-пи - это разные айпишки vkontakte.ru.
насчет того, в какой именно момент происходит преобразование из имени в айпи - не скажу, гуглить лень :-)
вполне вероятно, что и в процессе добавления.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение neol »

iptables -I OUTPUT -p tcp --dport 80 -m string --string "yandex.ru" --algo kmp --from 32 --to 300 -j REJECT
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: iptables - как заблокировать домены по маске. Например, все домены yandex ?

Сообщение Ленивая Бестолочь »

neol писал(а):
31.12.2009 21:38
iptables -I OUTPUT -p tcp --dport 80 -m string --string "yandex.ru" --algo kmp --from 32 --to 300 -j REJECT

есть мнение, что использование string в промышленных целях невозможно, т.к. сильно нагружает систему, кроме того далеко не все протоколы передают строки прям вот так дословно.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали: