The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"iptables: динамические ACL (в виде файлов в /proc?)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 31-Июл-09, 17:56 
Привет всем.

[Вводная часть]

Есть CentOS 5.3 с OpenVPN. Клиенты получают адреса динамически. Хочется вести acl в виде:

RDP (разрешить tcp-соединения на RDP-порт, ip-адрес z): ip-адрес1, ip-адрес2, ...
site1 (разрешить tcp-соединения на порт x, ip-адрес y): ip-адрес3, ip-адрес4, ...
и т.д.

Первое решение: создать в цепочке FORWARD правила типа:
-p tcp --dport 3389 --dst z -j ACL_RDP
-p tcp --dport x --dst y -j ACL_SITE1

и динамически добавлять/удалять ip-адреса в цепочки ACL_*
Но imho это не совсем эстетично, существуют проблемы синхронизации правил в /etc/sysconfig/iptables-save и в ядре (netfilter): добавили вручную правило в /etc/sysconfig/iptables-save, загрузили (iptables-restore), все ACL_* очистились, клиентам нужно переконекчиваться, сохранили правила из netfilter в /etc/sysconfig/iptables-save (iptables-save), теперь правила в ACL_* будут постоянными (запишутся на диск). Вообщем, выглядит хрупким и чревато сложностями.

[Основная часть]

Хотелось бы иметь какие-то файлы в /proc (RDP.txt, site1.txt), куда скриптами добавлять/удалять ip-адреса, а в iptables будут неизменные правила типа

-p tcp --dport 3389 --dst z --проверить_в_файле RDP.txt -j ACCEPT
-p tcp --dport x --dst y --проверить_в_файле site1.txt -j ACCEPT

Вроде пакет ipset это делает, но в CentOS 5.3 его нет, а патчить пакеты из дистибутива не хочется (imho некошерно). Может кто знает аналогичные модули iptables (полдня провел в гугле, не смог ничего найти) или аналогично красивое решение для изначальной задачи (вести динамические acl с помощью iptables)?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от gennadys email(??) on 06-Авг-09, 13:46 
>[оверквотинг удален]
>ip-адреса, а в iptables будут неизменные правила типа
>
>-p tcp --dport 3389 --dst z --проверить_в_файле RDP.txt -j ACCEPT
>-p tcp --dport x --dst y --проверить_в_файле site1.txt -j ACCEPT
>
>Вроде пакет ipset это делает, но в CentOS 5.3 его нет, а
>патчить пакеты из дистибутива не хочется (imho некошерно). Может кто знает
>аналогичные модули iptables (полдня провел в гугле, не смог ничего найти)
>или аналогично красивое решение для изначальной задачи (вести динамические acl с
>помощью iptables)?

А что есть еще клиенты какие-то, кроме тех, кто получает адреса динамически? Почему нельзя просто добавить такие правила для всей подсети?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 06-Авг-09, 13:56 
правила разные, бОльшая часть клиентов с минимальным правами, нескольким клиентам нужен доступ к RDP-серверу, к нескольким сайтам, ssh, и выход наружу. Все эти права могут сочетаться в произвольном порядке.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от ze6ra (ok) on 06-Авг-09, 14:16 
>правила разные, бОльшая часть клиентов с минимальным правами, нескольким клиентам нужен доступ
>к RDP-серверу, к нескольким сайтам, ssh, и выход наружу. Все эти
>права могут сочетаться в произвольном порядке.

OpenVPN Позволяет запускать скрипты при подключениях отключениях клиентов в качестве аргументов передаются различные параметры клиента. Почему бы от туда и не менять правила.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 06-Авг-09, 14:23 
>OpenVPN Позволяет запускать скрипты при подключениях отключениях клиентов в качестве аргументов передаются
>различные параметры клиента. Почему бы от туда и не менять правила.

мне казалось что это само собой разумеется когда писал
"динамически добавлять/удалять ip-адреса в цепочки ACL_*",
но если неудачно выразился, то расшифровываю -- использую learn-address, ну и дальше в соответствии с написанным ранее.

Вопрос не как запускать iptables, а как это организовать правила/цепочки просто и надежно.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от ze6ra (ok) on 06-Авг-09, 15:56 
>>OpenVPN Позволяет запускать скрипты при подключениях отключениях клиентов в качестве аргументов передаются
>>различные параметры клиента. Почему бы от туда и не менять правила.
>
>мне казалось что это само собой разумеется когда писал
>"динамически добавлять/удалять ip-адреса в цепочки ACL_*",
>но если неудачно выразился, то расшифровываю -- использую learn-address, ну и дальше
>в соответствии с написанным ранее.
>
>Вопрос не как запускать iptables, а как это организовать правила/цепочки просто и
>надежно.

iptables-restore предназначен для запуска при загрузке системы для начальной установки iptables. iptables-save для сохранения того что будет загружено потом при старте. Ничего красивого организовать с их помощью не выйдет. Как вариант загружать основу при запуске системы, а openVPN будет через скрипт из learn-address управлять своими цепочками ДИНАМИЧЕСКИ. При старте например можно также запустить скрипт который почистит цепочки от openvpn тут насколько фантазии хватит. Запуск iptables-restore на работающей системе это не нормально. Правда есть ещё iptables-restore ключик -n (--noflush)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 06-Авг-09, 16:58 
можно привести другой пример: добавили правило
--src x --dport y -j ACCEPT
после этого vpn сбойнул (или по каким-то другим причинам не отработал скрипт удаления правила для ip x)
после запуска openvpn кто-то другой получает ip-адрес x, и для него уже есть правило (осталось от предыдущего клиента). В iptables к сожалению нет возможности просто выполнить
iptables -D FOWRAWD --src x *
(wildcards не поддерживаются)
нужно четко задавать правила, а парсить вывод iptables -nv, а потом на основе полученного генерировать параметры для iptables -D ... чревато один лишний параметр не подхватил и правило не удалилось. Надо что-то простое как молоток.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от ze6ra (ok) on 06-Авг-09, 17:26 
>можно привести другой пример: добавили правило
>--src x --dport y -j ACCEPT
>после этого vpn сбойнул (или по каким-то другим причинам не отработал скрипт
>удаления правила для ip x)

А если при старте vpn он будет чистить свои цепочки. Ну если vpn "сбойнул" то при рестарте
vpn он почистит цепочки, а клиенты при переподключении автоматом добавятся в цепочки (смысл хранить привила при рестарте vpn клиентам всё равно переподключаться). Скрипт не завист от работы vpn, демон либо работает и скрипт пускается и работает не зависимо от него, либо vpn не работает.    
>после запуска openvpn кто-то другой получает ip-адрес x, и для него уже
>есть правило (осталось от предыдущего клиента). В iptables к сожалению нет
>возможности просто выполнить
>iptables -D FOWRAWD --src x *
>(wildcards не поддерживаются)
>нужно четко задавать правила, а парсить вывод iptables -nv, а потом на
>основе полученного генерировать параметры для iptables -D ... чревато один лишний
>параметр не подхватил и правило не удалилось. Надо что-то простое как
>молоток.

Чистка цепочек при запуске которыми будет управлять vpn, с последующим добавлением и удалением правил при подключении и отключении клиентов разве не достаточно молоткообразное решение. А так "по каким-то другим причинам" может не отработать что угодно. Сомневаюсь что openvpn при нормальной работе будет пускать соответствующие скрипты через раз при добавлении или отключении клиента, ну да скрипт придётся скорей всего писать самому, вот внём конечно надо будет учитывать нюансы.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 06-Авг-09, 17:41 
>А если при старте vpn он будет чистить свои цепочки. Ну если
>vpn "сбойнул" то при рестарте
>vpn он почистит цепочки, а клиенты при переподключении автоматом добавятся в цепочки
>(смысл хранить привила при рестарте vpn клиентам всё равно переподключаться).

Я думал над этим, но в сборке под RHEL (из epel) нет возможности привязать запуск скриптов к старту конкретного openvpn-процесса (у меня два openvpn-демона). На выходных пришла мысль создавать цепочку имени ip-адреса (например, для ip a.b.c.d цепочку a-b-c-d) и при подключении клиента делать iptabless -F a-b-c-d, но что-то в этой идее не понравилось (сейчас не могу вспомнить что конкретно, попробую еще подумать).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от ze6ra (??) on 06-Авг-09, 21:20 
>[оверквотинг удален]
>>vpn "сбойнул" то при рестарте
>>vpn он почистит цепочки, а клиенты при переподключении автоматом добавятся в цепочки
>>(смысл хранить привила при рестарте vpn клиентам всё равно переподключаться).
>
>Я думал над этим, но в сборке под RHEL (из epel) нет
>возможности привязать запуск скриптов к старту конкретного openvpn-процесса (у меня два
>openvpn-демона). На выходных пришла мысль создавать цепочку имени ip-адреса (например, для
>ip a.b.c.d цепочку a-b-c-d) и при подключении клиента делать iptabless -F
>a-b-c-d, но что-то в этой идее не понравилось (сейчас не могу
>вспомнить что конкретно, попробую еще подумать).

а если задействовать параметры up и down. Поскольку каждый демон на своём интерфейсе то при поднтии интерфейса чистка цепочки соответствующего демона с дальнейшим заполнением при подключении клиентов.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 07-Авг-09, 10:48 

>а если задействовать параметры up и down. Поскольку каждый демон на своём
>интерфейсе то при поднтии интерфейса чистка цепочки соответствующего демона с дальнейшим
>заполнением при подключении клиентов.

хм, мне казалось, что эти скрипты выполняются при коннекте с клиентом, сейчас проверил -- ошибался. Буду думать, спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от ze6ra (ok) on 06-Авг-09, 16:40 
Есть ещё iplist и moblock
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 06-Авг-09, 16:59 
>Есть ещё iplist и moblock

это вроде для простой блокировки списков ip?..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от ze6ra (ok) on 06-Авг-09, 17:40 
>это вроде для простой блокировки списков ip?..

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 06-Авг-09, 17:55 
>>это вроде для простой блокировки списков ip?..
>
>оба используют NFQUEUE так что можно и достаточно хитрые правила делать.
>хотя опыт пользования этими программами не большой, так что подробного описания возможностей
>и подводных камней дать не могу.

посмотрел iplist, imho программа жестко заточенная под блокировку ip-адресов, вторая давно не обновляется.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от ALex_hha (ok) on 06-Авг-09, 14:17 
>правила разные, бОльшая часть клиентов с минимальным правами, нескольким клиентам нужен доступ
>к RDP-серверу, к нескольким сайтам, ssh, и выход наружу. Все эти
>права могут сочетаться в произвольном порядке.

Если клиентов не очень много выдавайте им статические адреса, для которых пропишите правила в iptables. Для всех остальных по дефолту разрешите доступ к необходимым ресурсам

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 06-Авг-09, 14:26 
>>правила разные, бОльшая часть клиентов с минимальным правами, нескольким клиентам нужен доступ
>>к RDP-серверу, к нескольким сайтам, ssh, и выход наружу. Все эти
>>права могут сочетаться в произвольном порядке.
>
>Если клиентов не очень много выдавайте им статические адреса, для которых пропишите
>правила в iptables. Для всех остальных по дефолту разрешите доступ к
>необходимым ресурсам

этот вариант, описанный в howto openvpn, как раз последнее, что рассматривал и похоже, это самое надежное решение, хотя и не самое удобное. От предыдущего админа досталась система, где на каждого клиента нужно заводить ccd-файл, жутко напрягает. Но если ничего не придет в голову нового или ничего не посоветуют, остановлюсь на этом, скорее всего.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от pavel_simple (ok) on 07-Авг-09, 11:49 
man iptables

find recent

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "iptables: динамические ACL (в виде файлов в /proc?)"  +/
Сообщение от lithium (ok) on 07-Авг-09, 12:16 
>man iptables
>
>find recent

вот же ... когда искал в гугле, все примеры про recent были про динамичекское создание правил из самого netfilter, про работу с файлами ничего не было, а еще думал, почему слово такое знакомое! Похоже, это оно, спасибо большое! :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру