in1t 19.02.2011 22:15
Я рекомендую — Настройка шлюза с помощью FireHOL
FireHOL это мощный построитель конфигураций iptables, невероятно гибкий и простой в использовании.Пример как быстро и легко настроить шлюз.
# установим
sudo apt-get install firehol
# разрешим его запускать, меняем START_FIREHOL=NO на YES
sudo nano /etc/default/firehol
# редактируем конфигурацию
sudo nano /etc/firehol/firehol.conf
# пример простого шлюза
# запускаем
sudo invoke-rc.d firehol start
Файл конфигурации представляет из себя bash скрипт.
В нем также можно создавать любые правила iptables, объявлять переменные, ветвления, циклы и т.д.
Подробную документацию можно найти на сайте http://firehol.sourceforge.net/
Некоторые моменты на которые нужно обратить внимание при написании конфигурации
В описании interface нужно добавлять правила server/client all, иначе все пакеты дошедшие до действия по умолчанию будут записываются в лог.
Порядок правил server/client all особенно важен, просто запомните как правильно
но
Добавлять свои службы можно так
Преопределить существующие
Еще можно использовать custom
Порядок правил server/client all особенно важен, просто запомните как правильно
1 |
|
1 |
|
Добавлять свои службы можно так
1 |
|
Преопределить существующие
1 |
|
Еще можно использовать custom
1 |
|
Немного про настройку логов
Чтобы вывести логи в отдельный файл, нужно добавить FIREHOL_LOG_PREFIX="FIREHOL " в firehol.conf
и создать настройку для rsyslog.d и logrotate.d, скопировал настройки из ufw
sudo nano /etc/rsyslog.d/20-firehol.conf
sudo nano /etc/logrotate.d/firehol
А еще при запуске демон выдает предупреждение, что нужно обновить файл /etc/firehol/RESERVED_IPS
Скрипт обновления списка не работает, отключить предупреждение можно так:
sudo touch -t 202001010000 /etc/firehol/RESERVED_IPS
и создать настройку для rsyslog.d и logrotate.d, скопировал настройки из ufw
sudo nano /etc/rsyslog.d/20-firehol.conf
1 |
|
sudo nano /etc/logrotate.d/firehol
1 |
/var/log/firehol.log
|
А еще при запуске демон выдает предупреждение, что нужно обновить файл /etc/firehol/RESERVED_IPS
Скрипт обновления списка не работает, отключить предупреждение можно так:
sudo touch -t 202001010000 /etc/firehol/RESERVED_IPS
И напоследок пример конфигурации посложнее
а можно еще выложить
iptables -L -n
и
iptables -L -n -t nat
после выполнения скрипта firehol'а?
некоторым типа меня наверное будет легче понять, что произошло после запуска этого скрипта)
iptables -L -n
и
iptables -L -n -t nat
после выполнения скрипта firehol'а?
некоторым типа меня наверное будет легче понять, что произошло после запуска этого скрипта)
iptables -L -n
http://pastebin.com/GkpCC6YF
iptables -L -n -t nat
http://pastebin.com/E8W5hVEn
iptables-save
http://pastebin.com/SU5Ug7Gt
http://pastebin.com/GkpCC6YF
iptables -L -n -t nat
http://pastebin.com/E8W5hVEn
iptables-save
http://pastebin.com/SU5Ug7Gt
Жесть)
Я думал у меня много строк но там..
Правда мои понятней ибо нет столько таблиц)
Я думал у меня много строк но там..
Правда мои понятней ибо нет столько таблиц)
Спасибо, интересный фронтенд к iptables, а то я до этого только про shorewall слышал.
Я, хоть убей, не понимаю смысла в этих надстройках над настройками...
iptables -t nat -A POSTROUTING -j MASQUARADE #включили нат
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.00 # пробросили порт из мира
# Если вы параноики, то
iptables -P INPUT DROP # блокируем прием любых пакетов, тоесть не существует этого компьютера для внешнего мира
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # пускаем траффик который инициализирован локальными приложениями, нам ведь нада както принимать данные, которыем мы сами запросили.
iptables -t nat -A POSTROUTING -j MASQUARADE #включили нат
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.00 # пробросили порт из мира
# Если вы параноики, то
iptables -P INPUT DROP # блокируем прием любых пакетов, тоесть не существует этого компьютера для внешнего мира
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # пускаем траффик который инициализирован локальными приложениями, нам ведь нада както принимать данные, которыем мы сами запросили.
PS не проверял работоспособность, так как только что писал все отруки, если косяки поправьте
А что такой простой пример, давай посложнее)
На iptables правила выглядят громоздка, много их не напишешь, когда будет больше ста запутаешься, а через полгода разбираться долго будешь что к чему.
Возможно ты и не используешь сложных конфигураций, но это только потому что у тебя нет хорошего инструмента чтобы их легко сопровождать потом.
На iptables правила выглядят громоздка, много их не напишешь, когда будет больше ста запутаешься, а через полгода разбираться долго будешь что к чему.
Возможно ты и не используешь сложных конфигураций, но это только потому что у тебя нет хорошего инструмента чтобы их легко сопровождать потом.
Давайте простой пример, Нужно выкидывать более 5 одновременных соединений на 80ый порт с 1 ип адреса. Как вы это рализуете в вашем фаерхоле?
Я незнаю почему нет подержки правил модуля connlimit, но все равно в конфиге можно прописывать любые правила
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 5 -j DROP
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 5 -j DROP
У меня стартовый скрипт есть. Разнесенный по блокам. И коментарии есть, проблем не будет =) я не доверяю надстойкам, так как не знаю что они делают, я знаю что я делаю
Вы собственно молодец и я в этом уверен )
Но не у всех есть время полностью разобраться с iptables,
а безопасную и правильно настроенную систему охота уже сейчас.
Если вы не каждый день работаете с iptables и раз в полгода туда заглядываете, то лучшее используйте готовые решения, сэкономите время и меньше ошибок наделаете..
Но не у всех есть время полностью разобраться с iptables,
а безопасную и правильно настроенную систему охота уже сейчас.
Если вы не каждый день работаете с iptables и раз в полгода туда заглядываете, то лучшее используйте готовые решения, сэкономите время и меньше ошибок наделаете..
Обычному пользователю достаточно знать две строки:
iptables -t filter -P INPUT -j DROP
и
iptables -t filter -P FORWARD -j DROP
iptables -t filter -P INPUT -j DROP
и
iptables -t filter -P FORWARD -j DROP
Если хочется настроить сервер - в любом случае придётся изучать и iptables и многое другое.
Я бы не рекомендовал эту прогу в качестве ознакомления. Это ложная защищённость. Это набор шаблонов, которые в сложных случаях не помогут.
Я бы не рекомендовал эту прогу в качестве ознакомления. Это ложная защищённость. Это набор шаблонов, которые в сложных случаях не помогут.
Ну и как по мне, лучше один раз прочитать хотя бы простой и понятный до невозможности Iptables Tutorial(хотя бы) и сделать более-менее нормальный фаер, чем читать сотни мануалов на подобные проги и получить в итоге стандартизированный недофаер.
Респект за старания, но имхо, в в плане фаера они бессмысленны. Это всё равно, что пытаться автоматизировать tc. Толку не будет.
Респект за старания, но имхо, в в плане фаера они бессмысленны. Это всё равно, что пытаться автоматизировать tc. Толку не будет.
P.S. Извиняюсь, за три коммента. Ограничение в 900 байт заставило разрезать. Читайте это всё, как одно сообщение.
Согласен, что нужно изучать iptables/netfilter.
На счет автоматизации вообще не понял, что такое tc.?
И чем этот билдер хуже bash скрипта который также генерирует правила пачками.
Там другой netfilter?
На счет автоматизации вообще не понял, что такое tc.?
И чем этот билдер хуже bash скрипта который также генерирует правила пачками.
Там другой netfilter?
офтоп, конечно, но стоит придумать разрабам нормальный интерфейс к своей поделке - и никаких фронтендов не потребуется. посмотрите на pf, который от OpenBSD, отличный функционал при человеческом синтаксисе.
Ну, не факт. Я лично предпочитаю синтаксис айпистолов. :) Он удобнее, чем pf или ipfw, имхо. Мой знакомый админ-фряшник утверждает иное. Так что скорее всего - на любителя.
Я на перле себе сделал либу для контроля за иптаблес. Получается что-то вроде этого:
http://pastebin.com/SLKihGf3
Кстати, пример того, как на перле свой декларативный язык написать можно.
http://pastebin.com/SLKihGf3
Кстати, пример того, как на перле свой декларативный язык написать можно.
Только сейчас заметил, что комментарий старый в скрипте остался. У меня до этого была руби-либа написала со схожим функционалом, но потом для тренировки решил переписать на перле, да так и осталось =)
Описание правил выглядит зачетно) хотя я с perl и на Вы),
кстати мне эта идея даже больше нравится, интересно для python есть чтото подобное)
кстати мне эта идея даже больше нравится, интересно для python есть чтото подобное)
Объяснил бы хоть, что значат правила в приведённых примерах, для чего и что делает каждое из них... А то вот я, например, хоть и не чайник, но половину понять не могу, не со всем сталкивался. Можно, конечно, загуглить каждый непонятный момент, но мне кажется, раз уж взялся написать статью - разжуй, не поленись. :) А то несколько примеров и "разбирайтесь дальше сами"...