Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » Iptables. Начальная настройка.

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть сервер (Linux Fedora Core 9), на который приходит инет, и который с помощью Сквида раздает интернет в локалку. Есть необходимость запуска WebMoney и других программ, которые не могу работать со Сквидом. Принял решение пробросить NAT (SNAT).  
 
Сел изучать доку по Iptables 1.1.19, автор Oskar Andreasson.  
Изучил, ознакомился, проникся душой.  
 
Приступил к практике. И вот здесь овзник вопрос. Мне понравился вариант, который предлагает автор - вариант написания сценария типа rc.firewall, rc.DHCP.firewall и другие. И вносить изменения в таблицы через сценарий. Т.е. внес изменения в сценарий, перезапустил его и все уже пашет и педалит. Т.к. вносить изменения из консоли крайне неудобно т.к. имхо, можно запутаться и накосячить, а в сценарии удобочитаемый вид + туда можно скрипты добавлять для обработки полученных данных.  
 
Собственно вопрос. Как этот сценарий, пусть он будет называться rc.iptables поместить в автозагрузку по запуску системы?  
Вообще такой вариант внесения изменений в фаерволл нормальный (с помощью сценария, постановка сценария на автозапуск), с вашей точки зрения???

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 14:12 15-10-2008
SysCommander

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как этот сценарий, пусть он будет называться rc.iptables поместить в автозагрузку по запуску системы?

 
Часто видел как советуют дописать скрипт с правилами в rc.local
Этот способ имеет существенный недостаток.
С момента поднятия сетевых интерфейсов до момента выполнения rc.local может пройти относительно много времени если много сервисов. Потому что rc.local выполняется последним. В течении этого времени тазик уязвим.
 
Лично добавляю правила при автозапуске сразу после поднятия сетевых интерфейсов и получения ими IP адресов (не Fedora).
 
Для конкретного дистрибутива надо выяснять как интегрируется запуск firewall в его boot scripts. В iptables tutorial, насколько я помню, этот вопрос не затрагивается. Это в принципе логично, так как дистрибутивов море и их boot scripts различаются.
 
Смотри документацию про boot scripts в Fedora, наверняка оставили место для firewall.

Всего записей: 421 | Зарегистр. 20-07-2007 | Отправлено: 22:24 15-10-2008
aut

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В директории /etc/rc.d есть директории rcN.d для каждого уровня запуска. Например, для init 5 - rc5.d
 
В них - ссылки на скрипты из директории /etc/rc.d/init.d
 
Цифры в названии ссылки определяют последовательность запуска и останова. Если посмотреть - видно, что iptables запускается раньше большинства сервисов, а убивается одним из последних.
 
В скрипте /etc/rc.d/init.d/iptables устанавливается переменная IPTABLES_DATA, ее значение - это путь к файлу с правилами. Например, по умолчанию /etc/sysconfig/iptables (не путать с /etc/sysconfig/iptables-config)
 
Вот в этот файл и будет правильно прописывать правила. Можно вручную, а можно с помощью утилиты system-config-securitylevel
 
Излагал на примере CentOS 4 и ASPLinux 11.2, основанной на четвертой Федоре. Не думаю, что к девятой Федоре что-то фундаментально поменялось, это достаточно базовые настройки. Последний раз менялось когда с ipchains на iptables переходили.

Всего записей: 265 | Зарегистр. 19-07-2004 | Отправлено: 02:03 16-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
В скрипте /etc/rc.d/init.d/iptables устанавливается переменная IPTABLES_DATA, ее значение - это путь к файлу с правилами. Например, по умолчанию /etc/sysconfig/iptables (не путать с /etc/sysconfig/iptables-config)  
 
Вот в этот файл и будет правильно прописывать правила. Можно вручную, а можно с помощью утилиты system-config-securitylevel

 
Он скриптом моим туда и записывает (/etc/sysconfig/iptables).
Я создаю переменную $ipt, через которую и записываю правила, типа: $iptables -A INPUT -p tcp -s 0/0 -j DROP
 
Я хочу чтобы при запуске системы он перезаписывал правила по этому скрипту (как бы рабочий на 100% вариант) - во избежание появления различных казусов.
Поэтому путь по-умолчанию должен остаться, но перед этим он дожен запустить мой скрипт по записи правил ))

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 10:45 16-10-2008
aut

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ramaloke

Цитата:
Я хочу чтобы при запуске системы он перезаписывал правила по этому скрипту (как бы рабочий на 100% вариант) - во избежание появления различных казусов.  
Поэтому путь по-умолчанию должен остаться, но перед этим он дожен запустить мой скрипт по записи правил ))

 
Тогда или прописать вызов этого скрипта из /etc/rc.d/init.d/iptables до применения правил или сделать этот скрипт самостоятельным init-скриптом, выполняемым при загрузке до /etc/rc.d/init.d/iptables.

Всего записей: 265 | Зарегистр. 19-07-2004 | Отправлено: 12:21 16-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо. Поэкспериментирую.
 
Еще такой вопрос. В различных источниках говорится, что фильтрация должна происходить только в таблице filter. В таблицах mangle и nat ее ни в коем случае делать нельзя. Т.е. политика по-умолчанию ACCEPT. С чем это связано? Просто ACCEPT подразумевает под собой пропуск всех и вся, если открыт тот же NAT.

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 10:28 17-10-2008
aut

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Т.е. политика по-умолчанию ACCEPT

 
Это _совершенно_ недопустимо!!! Политика по умолчанию должна быть DROP!
 

Код:
 
iptables -P INPUT DROP
 
iptables -P OUTPUT DROP
 
iptables -P FORWARD DROP
 

 
А дальше - разрешать то, что необходимо
 
MANGLE и NAT предназначены совсем для другого. Нет, извратившись можно фильтровать и через них (например, перенаправляя на несуществующий адрес), но зачем?

Всего записей: 265 | Зарегистр. 19-07-2004 | Отправлено: 18:15 17-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не, я имею в виду, что политика по-умолчанию для таблиц nat и mangle ACCEPT. Для таблицы filter конечно же DROP.

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 02:02 18-10-2008
aut

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ramaloke
 
Имхо, имеет место явное непонимание как работают iptables. Через таблицу filter, то есть через одну из цепочек INPUT, OUTPUT или FORWARD проходят _все_ пакеты. И если они здесь дропаются, то это безотносительно к правилам nat или mangle.
 
Подробнее здесь -
http://www.opennet.ru/docs/RUS/iptables/#TRAVERSINGOFTABLES

Всего записей: 265 | Зарегистр. 19-07-2004 | Отправлено: 16:41 18-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
aut
Ммм, значит я неверно выразился, а омжет и неправильно допонял.
В любом случае пакет проходит через какую-либо из чепочек в таблице filter, как вы и сказали. Т.е. если пакет не удовлетворяет ни одному из условий, то он дропается и к нему не применяются правила таблиц nat и mangle. Значит все отлично, защищены.
 
Но, вот смотрю я на рисунок (http://www.opennet.ru/docs/RUS/iptables/misc/iptables-tutorial/images/tables_traverse.jpg) и наверное что-то так и не допонимаю. Цепочку PREROUTING таблицы nat пакеты проходят до таблицы filter т.е. это пакеты которые nat'ом до нас дошли. Фильтрация будет на уровне протоколов, портов и мест назначения (если указано такое ограничение в правиле цепочке PREROUTING). Т.е. это нормальное положение вещей, я правильно понимаю???

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 10:37 20-10-2008
aut

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Т.е. это нормальное положение вещей, я правильно понимаю???

 
Нормальное, только надо учитывать разницу между INPUT и FORWARD.
Т. е., если в цепочке PREROUTING таблицы nat для входящего пакета заменяется destination, и он, соответственно, будет маршрутизирован на другой хост - то он пойдет дальше не через цепочку INPUT, а через FORWARD, и применятся к нему будут правила, установленные именно для FORWARD.

Всего записей: 265 | Зарегистр. 19-07-2004 | Отправлено: 14:25 20-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Политику по-умолчанию DROP я делаю для цепочек INPUT, OUTPUT и FORWARD. Тем самым предусматриваю обо варианта прохождения пакета ))
 
Спасибо за разъяснение.

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 16:37 20-10-2008
sasku



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ramaloke

Цитата:
Как этот сценарий, пусть он будет называться rc.iptables поместить в автозагрузку по запуску системы?  
Вообще такой вариант внесения изменений в фаерволл нормальный (с помощью сценария, постановка сценария на автозапуск), с вашей точки зрения???

 
или настраиваеш сценарий - запускаеш его - и  
service iptables save - пожеш в конце сценария прописать и все
 
или сценарий (или его вызов) прописываеш в /etc/rc.d/rc.local   - это типа autoexec.bat

Всего записей: 413 | Зарегистр. 30-05-2002 | Отправлено: 10:40 21-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
или настраиваеш сценарий - запускаеш его - и  
service iptables save - пожеш в конце сценария прописать и все  

 
Кстати, такой вот вопрос возник.
При загрузке, iptables считывает данные с /etc/sysconfig/iptables. Т.е. если я запустив сценарий, не сделаю после iptables-save > /etc/sysconfig/iptables то после перезагрузки настройки сбрасываются. В iptables-config в пункте "сохранять значения после перезагрузки" стоит "нет" (из личных соображений).
 
В связи с чем хотелось бы узнать куда он помещает настройки "временные" после применения сценария? И это правило (iptables-save > /etc/sysconfig/iptables) и как следствие поведение iptables применимо к любой UNIX системе (при такой настройке iptables-config), или это в Linux Red Hat / Fedora такое???

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 14:18 21-10-2008
ptaha



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ramaloke
Да никуда он не помещает. Этот сценарий - фича редхата - прост набор команд для iptables. Iptables все свои настройки только в оперативке хранит. Когда ты выполняешь команду сохранения, скрипт просто сбрасывает текущие настройки iptables в файл в своем формате. А при загрузке системы скрипт эти настройки загружает в iptables - последовательным выполнением команды iptables с параметрами этого файла.

Всего записей: 134 | Зарегистр. 16-01-2004 | Отправлено: 03:51 23-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ptaha
Т.е. если в Red Hat / Fedora можно не придумывать "финты ушами" для загрузки сценария при загрузке системы, то в других все же придется извращаться методами, которые подсказали выше?

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 13:14 23-10-2008
ptaha



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ramaloke
 
ну, примерно так. но в баше можно более гибкий скрипт своять.
 
Я, например, в дебиане использую скрипт post-up в /etc/network/interfaces для активации правил iptables

Всего записей: 134 | Зарегистр. 16-01-2004 | Отправлено: 22:26 25-10-2008
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Возник вопрос теперь другого характера.
Был IP статический, а стал IP динамический, да к тому же DSL (pptp). Как вариант в сценарий rc.iptables в шапку добавить функцию, которая будет вычислять IP и подставлять его в значения ниже. НО при первой перезагрузке или обрыве коннекта нам присвоится другой IP. И придется очищать таблицы, затем снова запускать скрипт.  
 
Отсюда вопрос: можно ли как-то отказаться от привязки скрипта к IP, т.е. убрать его из обращения, а вместо этого использовать скажем только имя интерфейса? Тогда при перезагрузке сервера или при переподключении коннекта важность момента смены IP приравняется к 0.
 
Говоря о привязке к IP я говорю о следующем:
INET_IP="10.0.0.1"
INET_IFACE="eth1"
INET_BROADCAST="10.0.0.255"
 
Заранее спасибо за помощь.

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 18:25 10-03-2009 | Исправлено: Ramaloke, 20:22 10-03-2009
AnDySs1

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а поиграйтесь

Всего записей: 1426 | Зарегистр. 04-11-2004 | Отправлено: 20:24 10-03-2009
Ramaloke



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Хм, довольно любопытно.
Т.е. вы намекаете, что:
INET_IP="10.0.0.1"  
INET_IFACE="eth1"  
INET_BROADCAST="10.0.0.255"
спокойно заменяется на:
INET_IFACE="eth1"  
а строки типа:
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
меняются на:
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -i $INET_IFACE -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
 
???

Всего записей: 90 | Зарегистр. 14-04-2006 | Отправлено: 22:10 10-03-2009 | Исправлено: Ramaloke, 16:27 11-03-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Операционные системы » UNIX » Iptables. Начальная настройка.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru