Удомельский форум   ◊
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум

Вернуться   Удомельский форум > Закрытые разделы (Read Only) > Свободное ПО
Справка Пользователи Календарь Сообщения за день
Свободное ПО Обсуждаем Linux, *BSD и другое свободное ПО

 
 
Опции темы Опции просмотра
Старый 27.04.2006, 21:53   #1
Vulzscht
Местный
 
Аватар для Vulzscht
 
Регистрация: 26.04.2006
Адрес: Улица Свободы
Сообщений: 1,249
Вы сказали Спасибо: 4
Поблагодарили 73 раз(а) в 53 сообщениях
По умолчанию Firewall

Firewall
« написано: 25.04.2006 :: 00:06:52 »
Процитировано сообщение: Vulzscht от 04.04.2006 :: 16:48:10:
6) немного бы узнать о IPtables и работе с ним.
Вероятно, все уже так или иначе имели дело с файерволом -- не буду особо заострять внимание на некоторых моментах...
Однако кое-что из азов уточнить хотелось бы, а именно то, как ведёт себя пакетный фильтр в ОС Linux (ipchains, iptables) и *BSD (ipfw) и в чём состоит главное отличие в его поведении от *BSD (IPFilter, pf).
В Linux, все входящие пакеты попадают в цепочку INPUT, а исходящие -- в OUTPUT (это утверждение справедливо только для нетранзитных пакетов, то есть предназначенной данной машине).
В *BSD системах -- это in и out.

Отличие в следующем: в Linux (ipchains и iptables) и *BSD (ipfw) прграмма фильтрации вызывается по одному разу для каждого правила фильтрации. Этот единственный раз соответствует первому подходящему для пакета правилу.
То есть если мы укажем несколько правил
Код:
iptables -A INPUT -m stare --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 10.0.0.0/17 -d 10.0.75.5 -p tcp -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/17 -d 10.0.75.5 -p tcp -m tcp --dport 21 -j REJECT
iptables -A INPUT -s 10.0.0.0/17 -d 10.0.75.5 -p tcp -m tcp -m multiport --dports 137,139 -j ACCEPT
iptables -A INPUT -j REJECT
iptables -A OUTPUT -j ACCEPT
то третье по счёту правило _никогда_ не будет выполняться!!!
Это обусловлено тем, что для всех пакетов, соответсвующих требованиям:
- исходящий адрес из диапазона 10.0.0.0/17
- адрес назначения 10.0.75.5
- TCP протокол
- порт назначения 21
уже обработаны -- к ним применено ПЕРВОЕ правило, которому они соответствовали. а именно -- ACCEPT!
То есть для Linux (ipchains, iptables) следует правила составлять в порядке от менее значимого к более значимому.
Вследствие обработки лишь первых правил, соответсвующих пакету, повышается производительность файерволов iptables и ipchains в сравнении с IPFilter и pf.

В *BSD системах (FreeBSD с IPFilter и OpenBSD с pf) -- всё с точностью до наоборот!!!
То есть файервол там работает по принципу "консервативного" файервола -- к пакету будет применено ПОСЛЕДНЕЕ правило, которому он будет соответствовать!
То есть, если мы напишем в /etc/pf.conf для OpenBSD

Код:
block in
pass out keep state
pass in on $ext_if proto tcp from 10.0.0.0/17 to 10.0.75.5 port 21 keep state
Всё будет работать правильно (а ведь первым правилом является 'block in' -- блокировать все входящие пакеты) -- доступ на FTP сервер разрешён (и никуда более!). А всё потому, что применяется последнее значимое правило.

Для более детального ознакомления с опциями программы iptables, рекоммендую обратиться к прочтению следующего документа: ftp://10.0.75.5/exch/linux-info/iptables-textbook.tgz

Цитата:
FirewallBuilder - это просто графический интерфейс для iptables или я неправ?
Да.
Vulzscht вне форума  
Старый 11.05.2006, 20:07   #2
Vulzscht
Местный
 
Аватар для Vulzscht
 
Регистрация: 26.04.2006
Адрес: Улица Свободы
Сообщений: 1,249
Вы сказали Спасибо: 4
Поблагодарили 73 раз(а) в 53 сообщениях
По умолчанию

почитал документ, пасибо
возник вопрос - в консоли я запускаю iptables командой
Код:
/etc/rc.d/init.d/iptables start
а вот с добавлением правил не очень понял...
просто если использовать просто iptables или путь указанный выше и уже настройки какие-либо, выдается что команда не найдена
и еще вопрос - может, хотя не дошел еще по мануалу, - при загрузке iptables автоматом грузится последний файл настроек?
и как создать свой файл и добавить iptables в автозагрузку по умолчанию
понимаю, что вопросы детские, но... увы... "я не волшебник, я только учусь"
__________________
Все, что когда-либо происходит, никогда не забывается. Даже если ты об этом не помнишь. (с)Spirited Away
Возможно, люди заблуждаются и совершают ошибки потому, что у них есть что-то важное. И это "что-то" по-настоящему дорого им.
Vulzscht вне форума  
Старый 14.05.2006, 22:55   #3
grumbler
Местный
 
Регистрация: 27.04.2006
Адрес: не так далеко...)
Сообщений: 209
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для grumbler с помощью ICQ
По умолчанию

Цитата:
Сообщение от Vulzscht
почитал документ, пасибо
возник вопрос - в консоли я запускаю iptables командой
Код:
/etc/rc.d/init.d/iptables start
а вот с добавлением правил не очень понял...
просто если использовать просто iptables или путь указанный выше и уже настройки какие-либо, выдается что команда не найдена
и еще вопрос - может, хотя не дошел еще по мануалу, - при загрузке iptables автоматом грузится последний файл настроек?
и как создать свой файл и добавить iptables в автозагрузку по умолчанию
понимаю, что вопросы детские, но... увы... "я не волшебник, я только учусь"
Правила можно добавлять прямо в процессе: то есть пишешь в коммандной строке
Код:
/sbin/iptables -A OUTPUT -j ACCEPT #себе мы разрешаем всё!
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #всем остальным -- только то, что можно
/sbin/iptables -A INPUT -s 10.0.0.0/17 -d 10.0.23.29 -p tcp -m tcp -m multiport --dports 137,138,139,445 -j ACCEPT
/sbin/iptables -A INPUT -s 10.0.0.0/17 -d 10.0.23.29 -p tcp -m tcp --dports 21 -j ACCEPT
#и так далее
Далее для сохранения правил в файл конфига пользуешься утилитой iptables-save, а для их восстановления -- iptables-restore.
Код:
man iptables-save
man iptables-restore
Вообще говоря, скрипт /etc/init.d/iptables должен уметь делать и то и другое.

Просмотреть текущий набор правил можно при помощи комманды
Код:
iptables -L
и различных дополнительных опций.
Код:
man iptables
И ещё: в разных дистрибутивах Linux на безопасность смотрят по-своему, и как следствие, в переменной окружения $PATH не всегда присутствуют все директории с системными утилитами/программами.
Иногда это может поставить в тупик: как так (iptables у меня точно стОит, а система мне говорит: "command not found")?
Для поиска можно воспользоваться утилитой locate:
Код:
locate iptables
(В этом случае в системе необходимо наличие slocate. Если база данных slocate не не обновлялась -- выполни updatedb).
Иногда просто нужно узнать расположение системной утилитки (только в том случае, если путь к ней присутствует в переменной окружения $PATH) -- в этом случае поможет which:
Код:
which updatedb
__________________
grumbler
grumbler вне форума  
Старый 15.05.2006, 15:55   #4
Vulzscht
Местный
 
Аватар для Vulzscht
 
Регистрация: 26.04.2006
Адрес: Улица Свободы
Сообщений: 1,249
Вы сказали Спасибо: 4
Поблагодарили 73 раз(а) в 53 сообщениях
По умолчанию

Цитата:
вроде кое-что понимаю, но точно и ясно непонятно как восстанавливать правила после рестарта iptables, совсем непонятно, нашел только что стандартная база его называется filter, но никаким макаром не получилось ее загрузить...
немножко подумал...
Код:
[root@dekwin Lain]# /sbin/iptables-restore -t /etc/foomatic/filter.conf
впринципе получилось так восстановить правила... правда выдалось сообщение об ошибке, но при просмотре цепочек все оказалось на месте...

а вообще все-таки как восстановить нормально правила? в мануале по восстановлению упоминается только параметры -с (восстановить все как я понял) и -n (не очищать все вроде как), просто еще интересно где точно лежил этот файл настроек
вобщем вот как все происходит:
Код:
[root@dekwin dekwin]# /etc/rc.d/init.d/iptables start
Applying iptables firewall rules:                                                                                                 [ DONE ]

[root@dekwin dekwin]# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

[root@dekwin dekwin]# /sbin/iptables -A OUTPUT -j ACCEPT
[root@dekwin dekwin]# /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[root@dekwin dekwin]# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

[root@dekwin dekwin]# /sbin/iptables-save -c -t
/sbin/iptables-save: option requires an argument -- t
# Generated by iptables-save v1.3.1 on Tue May 16 14:42:45 2006
*nat
:PREROUTING ACCEPT [315:44349]
:POSTROUTING ACCEPT [2:115]
:OUTPUT ACCEPT [2:115]
COMMIT
# Completed on Tue May 16 14:42:45 2006
# Generated by iptables-save v1.3.1 on Tue May 16 14:42:45 2006
*mangle
:PREROUTING ACCEPT [8879:12060245]
:INPUT ACCEPT [14298:17852109]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4533:185315]
:POSTROUTING ACCEPT [7265:314208]
COMMIT
# Completed on Tue May 16 14:42:45 2006
# Generated by iptables-save v1.3.1 on Tue May 16 14:42:45 2006
*filter
:INPUT ACCEPT [6102:8122457]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2519:104415]
[2629:3917568] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[2014:80900] -A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue May 16 14:42:45 2006

[root@dekwin dekwin]# /etc/rc.d/init.d/iptables stop
Resetting built-in chains to the default ACCEPT policy:                                                                           [ DONE ]

[root@dekwin dekwin]# /etc/rc.d/init.d/iptables start
Applying iptables firewall rules:                                                                                                 [ DONE ]

[root@dekwin dekwin]# /sbin/iptables-restore -c -n
после последнего действия не наблюдается абсолютно никакой активности или попыток восстановить правила, в чем может быть ошибка? с моей точки зрения юзверя вроде как все правильно, если не указана таблица, то используется таблица по умолчанию...

а еще покопался в fwbuilder - есть там темка интересная... создается просто *.fw скрипт, при запуске которого все правила автоматом добавляются в iptables... единственное что пока не очень понятно, как в самом fwbuilder правила добавлять... уж больно хитро там как-то...
__________________
Все, что когда-либо происходит, никогда не забывается. Даже если ты об этом не помнишь. (с)Spirited Away
Возможно, люди заблуждаются и совершают ошибки потому, что у них есть что-то важное. И это "что-то" по-настоящему дорого им.

Последний раз редактировалось Vulzscht; 16.05.2006 в 15:43.
Vulzscht вне форума  
Старый 18.05.2006, 20:58   #5
grumbler
Местный
 
Регистрация: 27.04.2006
Адрес: не так далеко...)
Сообщений: 209
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для grumbler с помощью ICQ
По умолчанию

Скрипт /etc/init.d/iptables уже умеет и сохранять и восстанавливать правила.
Притом делает он это в момент старта и останова автоматически.

Цитата:
Сообщение от Vulzscht
немножко подумал...
Код:
[root@dekwin dekwin]# /sbin/iptables-save -c
Есть такая возможность -- перенаправление ввода/вывода называется...
При вводе вышеуказанной комманды, iptables просто выплюнул тебе всё на стандартный вывод (дисплей). Для сохранения всего этого хозяйства в файл, необходимо перенаправить вывод в файл, например
Код:
/sbin/iptables-save -c > /etc/sysconfig/iptables-rules
А для восстановления, соответственно
Код:
 /sbin/iptables-restore -c < /etc/sysconfig/iptables-rules
Опция -n в iptables-restore используется для _не_очистки_ предыдущего набора правил. То есть, если ты выполнил
Код:
iptables-restore -n новый_набор_правил
то ты получишь предыдущий набор правил плюс новый_набор_правил, а не только новый_набор_правил. Без этой опции при выполнении iptables-restore предыдущий набор правил _очищается_.

Цитата:
с моей точки зрения юзверя вроде как все правильно, если не указана таблица, то используется таблица по умолчанию...
Необходимой таблицей является таблица flter.
Таблицы же mangle и nat тебе не нужны.
Без опции -t имя_таблицы iptables должен сохранять/восстанваливать весь набор правил.

Цитата:
а еще покопался в fwbuilder - есть там темка интересная... создается просто *.fw скрипт, при запуске которого все правила автоматом добавляются в iptables... единственное что пока не очень понятно, как в самом fwbuilder правила добавлять... уж больно хитро там как-то...
Не приходилось им пользоваться...
Разбирайся!
__________________
grumbler
grumbler вне форума  
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:12. Часовой пояс GMT +3.


Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего браузера.
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot