Iptables: фильтрация по доменным именам

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

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

Mixer[MsK]
Сообщения: 315
ОС: Gentoo Linux

Iptables: фильтрация по доменным именам

Сообщение Mixer[MsK] »

Здравствуйте. Хочется странного: есть некий домен - предположим test.ru . У него есть поддомены для клиентских машин - например user1.test.ru , user2.test.ru, user3.test.ru . Причем клиентские машины находятся в разных сетях. Хочется сделать правило для iptables , дабы оно распространялось на все машины, адреса которых резольвятся как поддомены test.ru. В манах ничего похожего не нашел.
Phenom II X4 945 & 2 GB DDR3 > Gentoo 2008.0 > 2.6.30-gentoo-r5 > KDE 4.3.1
Asus eee 1003HAG > eeebuntu 3 Standart(Ubuntu 9.04) > 2.6.28-14 > GNOME 2.26.1
Спасибо сказали:
MIX2000
Сообщения: 58
ОС: Ubuntu

Re: Iptables: фильтрация по доменным именам

Сообщение MIX2000 »

Вроде, iptables не работает на уровне доменных имен. Для отдельных случаев может подойти прозрачный прокси, например SQUID. Еще можно с портами баловаться, или с VPN но это уже, другое дело.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Iptables: фильтрация по доменным именам

Сообщение butch »

как понимаю, заранее неизвестно сколько там будет поддоменов и какие у них будут имена?
наверное нужно курить в сторону разрешения всех поддоменов указанного домена, после чего делать правила для списка полученных хостов.
если заранее известно какие будут домены 3его уровня - то все проще =)
Спасибо сказали:
MIX2000
Сообщения: 58
ОС: Ubuntu

Re: Iptables: фильтрация по доменным именам

Сообщение MIX2000 »

butch писал(а):
17.06.2009 15:25
как понимаю, заранее неизвестно сколько там будет поддоменов и какие у них будут имена?
наверное нужно курить в сторону разрешения всех поддоменов указанного домена, после чего делать правила для списка полученных хостов.


Может получится так, что в подсетях этих хостов окажутся хосты не имеющие отношения к домену, на них правила iptables тоже подействуют.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Iptables: фильтрация по доменным именам

Сообщение butch »

MIX2000 писал(а):
17.06.2009 15:44
в подсетях этих хостов окажутся хосты не имеющие отношения к домену, на них правила iptables тоже подействуют.

это уж как правила будут написаны. мы ведь речь о хостах ведем, причем тут подсети? =)
Спасибо сказали:
MIX2000
Сообщения: 58
ОС: Ubuntu

Re: Iptables: фильтрация по доменным именам

Сообщение MIX2000 »

butch писал(а):
17.06.2009 16:22
это уж как правила будут написаны. мы ведь речь о хостах ведем, причем тут подсети? =)


Ну, так, если через iptables правила писать. Не помню, что бы в нем можно было прописывать правила для доменов.
Впрочем если можно, тогда, я не понимаю какие могут быть проблемы: просто пишите правила для домена 2го уровня, по идее, они должны распространятся и на домены более высоких уровней, относящихся к этому домену.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Iptables: фильтрация по доменным именам

Сообщение butch »

MIX2000, вообще в руководстве иптэблс не советуют применять доменные имена для правил.
лично я делаю сначала резолвинг имен, после чего в правила подставляю получившиеся адреса хостов.
такие правила можно обновлять переодически.
я в общем то говорил об этом.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Iptables: фильтрация по доменным именам

Сообщение pelmen »

На хостинге (фактически на 1 ип адресе) могут быть разные сайты, и ты сразу на все режешь доступ. Для меня - это не решение
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Iptables: фильтрация по доменным именам

Сообщение danger08 »

pelmen писал(а):
17.06.2009 17:48
На хостинге (фактически на 1 ип адресе) могут быть разные сайты, и ты сразу на все режешь доступ. Для меня - это не решение

В iptables нет изящного решения этой проблемы - уровня доменных имен. Оно просто не нужно. Его не для этого делали.

Хотите фильтровать доступ к виртуальным HTTP-хостам - заворачивайте HTTP-трафик на squid, и фильтруйте там.
Для всех остальных протоколов (не-HTTP и иже с ним) - доменные имена не передаются и учитывать их смысла не имеет. Доступ идет по IP-адресу, отресольвенному из запрошенного доменного имени, во всех протоколах (роутер даже не "знает", запросили вы host1.ru или host2.ru, если у них одинаковый IP-адрес).
Блогосайт - http://www.fateyev.com
Спасибо сказали:
expdot
Сообщения: 176
ОС: Fedora 13, Win Vista

Re: Iptables: фильтрация по доменным именам

Сообщение expdot »

можно попробовать поиграться с классификатором string

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

-m string --string "example"

вместо example подставить требуемое доменное имя
Спасибо сказали:
Mixer[MsK]
Сообщения: 315
ОС: Gentoo Linux

Re: Iptables: фильтрация по доменным именам

Сообщение Mixer[MsK] »

MIX2000 писал(а):
17.06.2009 15:18
Вроде, iptables не работает на уровне доменных имен. Для отдельных случаев может подойти прозрачный прокси, например SQUID. Еще можно с портами баловаться, или с VPN но это уже, другое дело.

Требуется дать доступ к некоему порту на одной машине для других. Решение на уровне сквида видется гемороем, если честно.

MIX2000 писал(а):
17.06.2009 16:29
butch писал(а):
17.06.2009 16:22
это уж как правила будут написаны. мы ведь речь о хостах ведем, причем тут подсети? =)


Ну, так, если через iptables правила писать. Не помню, что бы в нем можно было прописывать правила для доменов.
Впрочем если можно, тогда, я не понимаю какие могут быть проблемы: просто пишите правила для домена 2го уровня, по идее, они должны распространятся и на домены более высоких уровней, относящихся к этому домену.

Эм. Мне казалось, что резольвит доменное имя и использует в правиле полученный IP-адрес, нет?


expdot писал(а):
17.06.2009 19:25
можно попробовать поиграться с классификатором string

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

-m string --string "example"

вместо example подставить требуемое доменное имя


Попробую, спасибо.
Phenom II X4 945 & 2 GB DDR3 > Gentoo 2008.0 > 2.6.30-gentoo-r5 > KDE 4.3.1
Asus eee 1003HAG > eeebuntu 3 Standart(Ubuntu 9.04) > 2.6.28-14 > GNOME 2.26.1
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Iptables: фильтрация по доменным именам

Сообщение danger08 »

Mixer[MsK] писал(а):
17.06.2009 21:05
MIX2000 писал(а):
17.06.2009 15:18
Вроде, iptables не работает на уровне доменных имен. Для отдельных случаев может подойти прозрачный прокси, например SQUID. Еще можно с портами баловаться, или с VPN но это уже, другое дело.

Требуется дать доступ к некоему порту на одной машине для других. Решение на уровне сквида видется гемороем, если честно.

Ну так вот, и разрешайте правилом (указывайте нужный IP и порт в правиле).
Доменные имена придуманы исключительно для удобства людей, доступ везде ведется по IP.

Mixer[MsK] писал(а):
17.06.2009 21:05
Эм. Мне казалось, что резольвит доменное имя и использует в правиле полученный IP-адрес, нет?

Может ресольвить, да. Но что мешает вам самому отресольвить имя, и подставить полученный IP в правило?

Mixer[MsK] писал(а):
17.06.2009 21:05
expdot писал(а):
17.06.2009 19:25
можно попробовать поиграться с классификатором string

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

-m string --string "example"

вместо example подставить требуемое доменное имя

Попробую, спасибо.

Вот как раз-таки это решение видится мне геморойным (неизвестно, где косяки вылезут, с использованием шаблона "example").
Блогосайт - http://www.fateyev.com
Спасибо сказали:
expdot
Сообщения: 176
ОС: Fedora 13, Win Vista

Re: Iptables: фильтрация по доменным именам

Сообщение expdot »

danger08 писал(а):
18.06.2009 13:05
Вот как раз-таки это решение видится мне геморойным (неизвестно, где косяки вылезут, с использованием шаблона "example").

да, конечно, но можно комбинировать и со статусом, например только для пакетов со статусом NEW, чтобы меньше проблем возникало
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Iptables: фильтрация по доменным именам

Сообщение danger08 »

expdot писал(а):
18.06.2009 13:36
danger08 писал(а):
18.06.2009 13:05
Вот как раз-таки это решение видится мне геморойным (неизвестно, где косяки вылезут, с использованием шаблона "example").

да, конечно, но можно комбинировать и со статусом, например только для пакетов со статусом NEW, чтобы меньше проблем возникало

Ничего подобного.
Пакеты, содержащие строку "example" в запросе типа:

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

GET / HTTP/1.0
Host: example.com

с большой долей вероятности УЖЕ не будут иметь флага NEW (на этом этапе соединение справедливо считается установившимся, и флаг NEW сброшен).
К моменту передачи пакетов с HTTP-заголовками, состояние соединения будет ESTABLISHED.
Блогосайт - http://www.fateyev.com
Спасибо сказали: