Правила адаптированы под router/server общего назначения.
1. Используетсь три bash скрипта:
1.1. Стартующий скрипт
1.2. Скрипт-библиотека.
1.3. Скрипт-настройка под конкретный хост.
2. Правила настраиваются запуском одного скрипта.
3. Правила потом можно сохранить.
4. Хост может иметь более одного внешнего интерфейса
5. Хост может иметь более одного внутреннего интерфейса
6. Хост может иметь более одного одного VPN интерфейса (KLIPS openswan, GRE).
7. Скрипт предполагает конфигурацию MultiHome (более одного проайдера за раз)
8. Скрипт предполагает использование VPN через нескольких провайдеров (повышенная отказоустойчивасть)
Хост считается достаточно производительным, что-бы не экономить каждый такт процессора.
Может быть использовано сообществом как готовое решение при минимальной адаптации под свои нужды
Если нужно нарисовать в заголовке GPL лицензию - без проблем...
Вы должны быть достаточно разумны что-бы не запустить скрипт сразу после скачивания. Реальные адреса из скрипта настроек убраны и заменены шаблонами. Вы получите ошибку выполнения...
Скрипт предполагается оптимизировать по производительности, но это - следующий этап.
Уже проработана концепция и принципы построения пользовательских цепочек, но еще нет реализации...
| Прикрепленный файл | Размер |
|---|---|
| a.zip | 7.53 кб |
Re: Настройки iptables для server/router (all in one) #1
Сергей! Так где же сам скрипт?!
Re: Настройки iptables для server/router (all in one) #2
Он есть, но еще не опубликован и для твоей учетной записи недоступен...
Значит, еще не прошел соответствующую экспертизу ...
Нужно ждать ...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #3
Пролистай пост Сергея до конца. В самом низу поста будет "Вложенный файл(ы):"
Re: Настройки iptables для server/router (all in one) #4
Я специально отлогинился что-бы посмотреть...
анонимусу точно недоступен...
Доступен ли обычному пользователю - не знаю.
Нужно завести клон...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #5
А сейчас? Вроде должно появится...
Re: Настройки iptables для server/router (all in one) #6
Слава, я очень надеялся, что перед публикацией скрипт пройдет аудит
Может баги всплывут ...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #7
Сергей, я был в полной уверенности, что аудит не нужен и скрипт виден всем... уверенность испарилась минут 15 назад...
Re: Настройки iptables для server/router (all in one) #8
Слава, верить нельзя никому..., даже мне.
Ребята, посмотрите скрипт на досуге, пожалуйста.
Я очень надеюсь получить Ваше заключение как экспертов ...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #9
Сегодня скрипт доступен даже анонимусу!
А скрипт посмотрю сегодня-же.
Re: Настройки iptables для server/router (all in one) #10
Первые впечатления.
1) В скриптах отсутствуют секции start | stop | save, т.е. средствами самих скриптов правила можно только включить, но не сохранить и не выключить. Это неудобно.
2) Маловато комментариев (т.е. их много, но есть неочевидные вещи, смысл которых неясен из текста).
Так, например, я не понял, что hostname в iptables.hostname.set нужно заменить на имя хоста, пока не запустил стартовый скрипт.
3) Вопреки ожиданиям Сергея правила прекрасно стартуют без всякой правки iptables.hostname.set, хотя на моем хосте вовсе нет 172.16.х.х, а вовсе даже 192.168.х.х, нет интерфейсов sec и gre, и вообще есть один физический интерфейс с двумя дополнительными алиасами на другие сети и tun0 для OpenVPN туннеля. Тем не менее я видел цепочки правил для gre интерфейса. Загадка.
Rem: Загадка разгадана, это не интерфейс, а тип IP пакетов (хотя я в своем файле /etc/protocols не нашел типа sec, а правила для него генерируются).
4) При поверхностном взгляде пока неясно, каким образом можно "на ходу" менять правила, если возникнет такая необходимость. Да и не "на ходу" тоже не совсем очевидно, т.к. поиск где и как взводятся переменные ${PROTO}, ${IFACE}, $SERVICES даже в трех скриптах достаточно труден, если юзер не "на ты" с shell-программами, а уж о совсем слабом пользователе я просто молчу.
Более подробно создавшиеся правила пока не анализировал.
Совершенно непонятно, что означают и для чего предназначены переменные homeLN, homeVOLIA, homeLAN и какие значения там нужно прописывать. По крайней мере изменение
#export homeLAN="xxx.xxx.xxx.0/24,172.16.xxx.xx,172.16.xxx.xx"
export homeLAN="192.168.10.0/24"
не привело к изменению создавшихся правил, по крайней мере я не заметил:
правила
iptables -L | grep 172.1
DROP all -- 172.16.0.0/12 172.16.0.0/12
DROP all -- 172.16.0.0/12 172.16.0.0/12
DROP all -- 172.16.0.0/12 172.16.0.0/12
(зачем трижды?!) создавались при обоих способах, а насчет 192.168... как не было ничего, так и не появилось.
Правила записи значений других переменных в iptables.hostname.set также совсем непонятны, а комментариев нет
Опять же, без серьезного анализа скриптов неясно, что, где и как менять для своих нужд пользователю другого типа VPN (OpenVPN, как у меня, например).
Пожалуй на этом эксперименты пока закончу, т.к. Сергею проще поправить свои скрипты, нежели мне в них разобраться...
Re: Настройки iptables для server/router (all in one) #11
Скрипт предназначен для настройки правил. Но предусмотрен откат на старые правила в случае ошибки...
Сохранение удалено преднамеренно ...
Если в правилах возникает ошибка, то восстановление старых правил производится.
root# service iptables restart
Если все устраивает, то
root# service iptables save
2) Маловато комментариев (т.е. их много, но есть неочевидные вещи, смысл которых неясен из текста).
Ну..., как бы да.
Да, это позволяет делать привязку к хосту...
Я старался
Зарезервировано для тунелей GRE через ipsec (http://www.openswan.org/)
Извините, это моя домашняя LAN, которая внешняя для этого хоста и является одной из сетей, доступной через ipsec.
Устройства ipsec0,ipsec1, ... - это сетевые устройства ipsec, которые превносятся модулем KLIPS (http://www.openswan.org/)
В отличие от нативного IPSEC ядра 2.6, KLIPS позволяет разделять шифрованный и нешифрованный потоки...
http://lartc.org/howto/lartc.tunnel.gre.html
tun0 в Вашей конфигурации - это аналог ipsec+ или gre+ в моей конфигурации. Выполняют одни задачи.
GRE over IPSEC... и никакого мошенничества. Возможность проброса через криптованный канал траффика, отличного от IP.
Протоколы 50 и 51 - это IPSEC
Настройка правил осуществляется только в стартовом скрипте: RUN.iptables*
Библиотека(статична): iptables.rules*
Файл настроек: iptables.`hostname`.set - привязка к хосту.
Там где все эти "страшные" скрипты, ничего менять не следует..., тем более юзеру.
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #12
Совершенно непонятно, что означают и для чего предназначены переменные homeLN, homeVOLIA, homeLAN и какие значения там нужно прописывать. По крайней мере изменение
#export homeLAN="xxx.xxx.xxx.0/24,172.16.xxx.xx,172.16.xxx.xx"
export homeLAN="192.168.10.0/24"
не привело к изменению создавшихся правил, по крайней мере я не заметил:
правила
iptables -L | grep 172.1
DROP all -- 172.16.0.0/12 172.16.0.0/12
DROP all -- 172.16.0.0/12 172.16.0.0/12
DROP all -- 172.16.0.0/12 172.16.0.0/12
(зачем трижды?!) создавались при обоих способах, а насчет 192.168... как не было ничего, так и не появилось.
Правила записи значений других переменных в iptables.hostname.set также совсем непонятны, а комментариев нет
Опять же, без серьезного анализа скриптов неясно, что, где и как менять для своих нужд пользователю другого типа VPN (OpenVPN, как у меня, например).
Пожалуй на этом эксперименты пока закончу, т.к. Сергею проще поправить свои скрипты, нежели мне в них разобраться...
Re: Настройки iptables для server/router (all in one) #13
Область использования переменных LANS
#export homeLAN="xxx.xxx.xxx.0/24,172.16.xxx.xx,172.16.xxx.xx"
#export otherLAN="yyy.yyy.yyy.yyy"
заканчивается переменной VPNLANS
export VPNLANS="${lanHOME},${otherLAN}"
Она содержит список подсетей, которые соединены с этим рутером по VPN...
Подсеть 172.16.xxx.xx зарезервирована для интерфейсов GRE (смотри iproute2) и IPSec...
Должны игнорироваться, если export "isVPNrouter=no"
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #14
Настройка правил осуществляется только в стартовом скрипте: RUN.iptables*
Библиотека(статична): iptables.rules*
Файл настроек: iptables.`hostname`.set - привязка к хосту.
Там где все эти "страшные" скрипты, ничего менять не следует..., тем более юзеру.
А если меня не совсем устраивают iptables.rules?
Кроме того, я не увидел (это не значит, что этого нет, но не увидел...) возможности настройки отдельных правил для отдельных хостов в локальной сети (я имею ввиду разрешение/запрещения конкретных сервисов для разных юзеров) и доступа к конкретным сервисам локальной сети для доверенных хостов извне.
И вообще,
tcpClientOfOutside domain,ntp,whois,snmp,www,https,smtp,ssh,pop3,8080,8081
udpClientOfOutside domain,ntp,whois,snmp
Как-то это негибко...
Re: Настройки iptables для server/router (all in one) #15
заканчивается переменной VPNLANS
export VPNLANS="${lanHOME},${otherLAN}"
Она содержит список подсетей, которые соединены с этим рутером по VPN...
Подсеть 172.16.xxx.xx зарезервирована для интерфейсов GRE (смотри iproute2) и IPSec...
Должны игнорироваться, если export "isVPNrouter=no"
Во-первых, переменной otherLAN вовсе нет в архивном iptables.hostname.set.
Во-вторых, а почему, собственно, подсеть 172.16.xxx.xx зарезервирована только для интерфейсов GRE? А если у юзера как раз эти адреса используются для локальной сети? А для VPN - что-то из 192.168.х.х или 10.х.х.х?
И в-третьих, ну все равно непонятно
Re: Настройки iptables для server/router (all in one) #16
Вы имеете полное право его изменить.

Я объявляю, что эти скрипты публикуются под GPL
Нужно будет сделать соответствующие правки в заголовках.
Как правило, эти ограничения настраиваются правилами самих сервисов... То есть, от LAN firewall не защищает.
WAN (сети через VPN) не защищает, но протоколирует. INET - полная защита.
Доступ к внутренним хостам LAN - через VPN...
Зато емко ... Смысл: этому хосту разрешено осуществлять клиентские запросы наружу по протоколу TCP для получения
1. разрешения имен.
2. получения точного времени
...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #17
Ее там действительно нет. Я ее добавил прямо сейчас, что-бы показать синтаксис конкатезации списков...
Скрипт - заготовка...

Вы вправе изменить его под свои нужды
Не сердитесь ...
Кстати, а Вы внимательно смотрели журналы старта скрипта? Я думаю, что ошибки были, но Вы их просто не заметили. Ошибки не "бросаются" на консоль, а пишутся в журнал.
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #18
Вы имеете полное право его изменить.
Нужно будет сделать соответствующие правки в заголовках.
Моя исходная посылка - это непонятность скриптов. Право на именение есть, возможности изменить нет, т.к. нет понимания.
Как правило, эти ограничения настраиваются правилами самих сервисов... То есть, от LAN firewall не защищает.
WAN (сети через VPN) не защищает, но протоколирует. INET - полная защита.
Я имел ввиду вовсе не это, хотя и локальные сервисы можно защитить от доступа из LAN. Я имел ввиду ограничение доступа внутренних клиентов к внешним сервисам, например запрет использования аськи для части хостов.
Вы можете создать дополнительные абстракции, типа LLAN,
которые будут реализовывать дополнительные уровни контроля.
Доступ к внутренним хостам LAN - через VPN...
Хе-х, у меня VoIP сервис, и обмен траффиком осуществляется со многими клиентами и партнерами. По-вашему мне нужно создать VPN-туннели ко всем? Думаю, что с одним-двумя удастся договориться. Впрочем, а нахрен мне это? Мне не нужно, чтобы они имели доступ в мои LAN, мне нужно ТОЛЬКО разрешить им определенные сервисы на одном-двух хостах.
Зато емко ... Смысл: этому хосту разрешено осуществлять клиентские запросы наружу по протоколу TCP для получения
1. разрешения имен.
2. получения точного времени
...
Ну, вот видите! А я думал, что эти правила разрешают доступ ИЗВНЕ к этим сервисам...
Re: Настройки iptables для server/router (all in one) #19
Я вовсе не сержусь, я пишу о том, что мне кажется неудобным/непонятным/недостаточным. Это вы не сердитесь
.
Ошибки, как я понимаю, длжны попасть в
RUN.iptables.rcXX.sh.err | 0|Авг 28 11:10.
Я привел строку для этого файла из окна mc.
В RUN.iptables.rcXX.sh.log есть предупреждения типа
Warning: wierd character in interface `eth0:2' (No aliases, :, ! or *).
Если я не вношу изменений в ваш iptables.hostname.set, а просто копирую его в свой iptables.name.set, то даже предупреждений нет.
Кстати, это тоже настораживает...
Re: Настройки iptables для server/router (all in one) #20
Приговор (неокончательный, может быть обжалован):
лично мне скрипты, построенные на основе скриптов, приведенных в IptablesTutorial, кажутся более естественными, понятными, более гибкими в тонких настройках/подстройках. Их легче адаптировать к личным нуждам каждого. Правда, они и не претендуют на универсальность.
С другой стороны, они в своей совокупности, ИМХО, оказываются более универсальными, т.к. из их совокупности легче собрать свой скрипт, удовлетворяющий именно частные запросы.
Re: Настройки iptables для server/router (all in one) #21
Должны, но нужно смотреть оба файла и *.err и *.log
Дело в том, что физически устройства eth0:2 не существует...
Это синоним, просто символьная метка и не более того.
Смотрите iproute2. Вам не следует использовать синонимы... для конфигурирования firewall.
Кстати, Вы можете назначить еще один адрес на сетевое устройство через `ip` без параметра "метка" и тогда синонима не будет, хотя дополнительный адрес будет назначен...
Скажите мне имя сетевого устройства, которым Вы подключены в интернет... Возможно, оно совпадает с тем, что в конфигурации... Возможно нет ...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #22
На тестовом хосте я подключен единственным физическим учтройством eth0. Локальная сеть включена в ADSL роутер Dlink DSL-504T.
ifconfig
eth0 Link encap:Ethernet HWaddr 4C:00:10:54:2C:28
inet addr:192.168.10.31 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:660 errors:0 dropped:0 overruns:0 frame:0
TX packets:832 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:318954 (311.4 Kb) TX bytes:74897 (73.1 Kb)
Interrupt:3 Base address:0x9c00
eth0:1 Link encap:Ethernet HWaddr 4C:00:10:54:2C:28
inet addr:10.8.8.7 Bcast:10.8.8.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:3 Base address:0x9c00
eth0:2 Link encap:Ethernet HWaddr 4C:00:10:54:2C:28
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:3 Base address:0x9c00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1284 (1.2 Kb) TX bytes:1284 (1.2 Kb)
tun0 Link encap:Point-to-Point Protocol
inet addr:10.1.0.2 P-t-P:10.1.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:35 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:3275 (3.1 Kb) TX bytes:2711 (2.6 Kb)
Re: Настройки iptables для server/router (all in one) #23
У Вас есть два сетевых устройства исключая lo:
eth0
tun0
Это все, что Вы можете использовать в качестве входящих/исходящих интерфейсов ...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #24
eth0 inet addr:192.168.10.31 Bcast:192.168.10.255 Mask:255.255.255.0
eth0:1 inet addr:10.8.8.7 Bcast:10.8.8.255 Mask:255.255.255.0
eth0:2 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
Почему так много сетей делят одну физическую среду?
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #25
К вашему скрипту это не имеет отношения. Если бы мне не было лень с ним разбираться, я бы выключил все лишние (мешающие) субинтерфейсы, и сконфигурировал бы свою сеть для работы с ним. Ковыряться в чужом скрипте, да еще когда после этого нужно менять свою конфигурацию для проверки, да еще когда он откровенно бедно откомментирован - это уж слишком, не так ли?
192.168.1.0/24 - для общения с виртуальной виндой (использую bridget network adapter в VMWare)
)
Для чего 10.8.8.0/24 - сейчас уже не упомню, возможно делал какие-то эксперименты, да и забыл выключить
Re: Настройки iptables для server/router (all in one) #26
Вспомнил! В ADSL модемах от D-Linlk эта подсеть используется для общения со встроенным FTP-сервером. Если прошивка начинает глючить (бывает при экспериментах с прошивками), то реанимировать модем можно только через это FTP-сервер.
Re: Настройки iptables для server/router (all in one) #27
Данные скрипты поставляются "КАК ЕСТЬ". Вы можете их использовать или не использовать.
Скрипты распространяются под лицензией GPL.
Когда я просил об аудите скриптов, то рассчитывал получить заключение людей, которым это может быть интересно...
Лично меня интересуют замечания по поводу идеологии, существующих и потенциальных "дыр" в защите...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #28
Мне кажется, что вы обиделись. Это неконструктивно.
Да, я не высказался по поводу дыр в защите, но это именно потому, что я так и не смог загрузить (и проанализировать) все задуманные вами правила. Конечно, можно прочитать скрипт, но именно это сделать достаточно сложно вследствие вашей позиции - скрипты поставляются as is, и комментировать я ничего не желаю и не собираюсь. Это ваше право.
Что касается идеологии: мне не нравится идея разделения на три скрипта - труднее для анализа, да и механизм script start / script save / script stop мне представляется более удобным, нежели то, что предусмотрено в системе (service iptables save).
Теперь насчет интереса: от того, что лично мне это не слишком нужно, мой интерес к вашей работе не уменьшается. Он уменьшается от тех трудностей, которые вы воздвигли на пути удовлетворения этого интереса, да и на пути почти любого пользователя, у которого это интерес более насущен, нежели у меня.
Re: Настройки iptables для server/router (all in one) #29
Если у Вас есть вопросы по существу:
структура, подходы, синтаксис, я готов продолжать беседу...
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #30
Для начала поясните, что и как заполняется в конфигурационном скрипте. Желательно с использованием тех переменных, которые там действительно представлены.
Re: Настройки iptables для server/router (all in one) #31
Кроме того, как мне представляется, наличие всего одного физического интерфейса не должно быть препятствием для превращения хоста в шлюз. Это именно идеологический вопрос.
Как этот тезис согласовать с вашим скриптом? Подскажите методы.
Работу через tun0 не предлагайте, он предназначен именно для VPN с моей же удаленной локалкой. К провайдеру я попадаю без VPN, фиксированный IP на PPP интерфейсе модема.
Re: Настройки iptables для server/router (all in one) #32
OK, но Вы не показали устройство ppp0. Это и есть Ваше внешнее устройство (вместо eth1,eth2)...
Правим iptables.host.set...
- export extIF="eth1,eth2"
+ export extIF="ppp0"
Запуск скрипта должен осуществлятся при поднятом интерфейсе ppp0
Админ админу - друг, товарищ и ман...
(c) Almaty
Re: Настройки iptables для server/router (all in one) #33
С extIF как раз все ясно.
Кроме того, вы не совсем правильно поняли. Мой модем - это по сути компутер, работающий под линукс, и у него свои собственные сетевые интерфейсы, в том числе ppp0 (после установления соединения с провайдером). Со стороны локалки он является 4-х портовым неуправляемым eth свичем.
А на всех остальных хостах в этой сети по единственному eth интерфейсу.
Есть, правда, обычный AT-модем, и на нем можно поднять PPP, но это неинтересно, т.к. реально он может звонить только на мой же шлюз в другом офисе, и его нет нужды защищать файрволом. Используется он в первую очередь для связи между офисами в случае аварий в широкополосной сети.