Назад | Перейти на главную страницу

Загрузка созданного вручную скрипта iptables при загрузке

В настоящее время я использую сценарий, созданный iptables-save загружаться при загрузке. Это [частичное] содержание /etc/iptables.rules:

# Generated by iptables-save v1.4.4 on Sat Mar 19 15:35:11 2011
*nat
:PREROUTING ACCEPT [218073:19652132]
:POSTROUTING ACCEPT [75792:5067692]
:OUTPUT ACCEPT [68177:4555584]
-A POSTROUTING -o eth2 -j MASQUERADE
COMMIT
# Completed on Sat Mar 19 15:35:11 2011

И у меня есть эта строчка в etc/network/interfaces под интерфейсом, который должен быть защищен брандмауэром:

pre-up iptables-restore < /etc/iptables.rules

Эта система стала для меня утомительной, так как я должен часто менять правила, и всякий раз, когда я меняю правила, мне нужно генерировать еще один iptables.rules файл и выполните загрузку системы, чтобы увидеть, применяются ли правила или нет. Можно ли это сделать, как файлы conf, которые загружаются в любое время service firewall restart сделано. А в основном файле iptables conf можно связать другой файл правил iptables, который могут редактировать пользователи с меньшими привилегиями. Я хочу, чтобы правила iptables записывались прямо в текстовый файл, который загружается при загрузке или когда service firewall restart сделано.

Я предполагаю, что вы работаете в системе на основе DEBIAN, потому что дистрибутивы RH / Centos поставляются с включенным сценарием инициализации.

Для Ubuntu установите iptables-persistent

apt-get install iptables-persistent 

и должно хватить.

Для Debian вы можете получить скрипт откуда: http://www.ubuntucy.org/wiki/index.php/A_persistent_iptables_startup_script_for_Debian_based_systems

Чтобы добавить его при загрузке, используйте update-rc.d. Я предполагаю, что вы сохранили сценарий в /etc/init.d/iptables, запустите:

update-rc.d iptables defaults

и все готово.

С уважением

У меня есть аналогичный вопрос, но он по этой теме, так что я поделюсь своими двумя центами и спрошу ...

Во-первых, на сервере вполне реально иметь набор правил iptables, который часто меняется. Не знаю, кто бы мог подумать. Если вы запустите программу обнаружения сканирования портов или другие типы IPS (ПО предотвращения вторжений), эти программы можно настроить так, чтобы они добавляли правила запрета для определенных атакующих хостов в конфигурацию iptables. В этом случае вы, вероятно, захотите, чтобы эти правила запрета применялись к файлам сохранения при остановке или перезапуске iptables.

При этом не жалейте его за то, что он хочет динамически обновлять iptables. Я ловлю то же самое.

Чтобы ответить на этот вопрос, существует пакет iptables-persistent, который можно установить с помощью «apt-get iptables-persistent». Он зафиксирует загруженные в то время правила iptables и создаст для них файлы, а затем создаст сценарий загрузки для перезагрузки этих правил при загрузке или перезапуске брандмауэра.

Я знаю, что некоторые источники говорят, что есть файл конфигурации для iptables-persistent, который позволяет ему фиксировать изменения в правилах брандмауэра, но я использую Ubuntu Server v13, и я нигде не могу найти этот файл. Думаю, тот, кто может опубликовать путь к нему, ответит на оба наших вопроса. :п

Вообще-то у меня есть вопрос Зачем вам нужно постоянно менять свой набор правил iptables.

Однако, если вы просто хотите протестировать некоторые новые правила, вот как:

  1. Делать iptables-save > iptsave.sh (.sh предназначен для включения красивой подсветки vim)

  2. vi iptsave.sh и внеси свои изменения

  3. iptables-apply -t 600 iptsave.sh = 600 секунд времени тестирования, по истечении которого iptables-apply автоматически возвращается к предыдущему набору правил. Или вы можете нажать у и новый набор правил становится постоянным. НЕ ИСПОЛЬЗУЙ < ТАМ!! iptables-apply принимает имя файла как аргумент, а не как STDIN.

  4. mv iptsave.sh /etc/iptables.rules


А в основном файле iptables conf можно связать другой файл правил iptables, который могут редактировать пользователи с меньшими привилегиями.

Но почему??

Набор правил iptables предназначен для однократного создания и изменения только время от времени. Если вам нужно постоянно менять его, я думаю, вы не реализуете iptables наиболее эффективным / действенным способом.


Настраиваемые и обновляемые правила MAC

Прежде всего убедитесь, что тестирование MAC переходит в другую цепочку. Я предлагаю также «разбить» цепочку INPUT (я отбрасываю iptables команда для краткости)

-N MAC_admins
-N MAC_users
-N INPUT_2
-A INPUT -j MAC_admins
-A INPUT -j MAC_users
-A INPUT -j DROP
... rest of -A INPUT is put into -A INPUT_2 ...

MAC_admins предназначен для MAC-адресов администраторов, поэтому он не будет заблокирован (и, таким образом, заблокирован):

-A MAC_admins -m mac --mac-source 11:11:11:11:11:11 -g INPUT_2
-A MAC_admins -m mac --mac-source 22:22:22:22:22:22 -g INPUT_2
-A MAC_admins -m mac --mac-source 33:33:33:33:33:33 -g INPUT_2

Пользователи, чей MAC не совпадает ни с чем, будут возвращены в цепочку INPUT и выдержат вторую цепочку проверки MAC. Теперь, чтобы заполнить эту цепочку, давайте создадим скрипт. Предположим, что это /etc/firewall/UpdateMAC.sh

#!/bin/bash
readonly CONFDIR="/etc/firewall/maclists"
readonly IPT="/sbin/iptables"
readonly WORKCHAIN="MAC_users"
readonly NEXTCHAIN="INPUT_2"

readonly MACPATTERN="^([a-f0-9]{2}:){5}[a-f0-9]{2}$"

# Flush the chain (i.e., remove all rules in the chain)
$IPT -F $WORKCHAIN

for f in $CONFDIR/*
do
  while read mac; do
    [[ -z $mac ]] && continue           # Skip empty lines
    [[ ${mac:0:1} == "#" ]] && continue # Skip comments (if any)
    # A regex check to ensure that $mac indeed contains a MAC address
    if [[ $mac =~ $MACPATTERN ]]; then
      $IPT -A $WORKCHAIN -m mac --mac-source $mac -g $NEXTCHAIN
    fi
  done < $f
done

exit 0
# Tested on bash v4

Теперь творим волшебство с chmod и chown. Попросите ваших подчиненных отредактировать один (или несколько) файлов в /etc/firewall/maclists/, и всякий раз, когда они редактируют свои файлы, вы просто выполняете сценарий.