(/ etc / sysconfig / iptables) «Ручная настройка этого файла не рекомендуется». Почему?

20

Редактирование этого файла напрямую

/etc/sysconfig/iptables 

может сэкономить мне столько головной боли, так много времени и так далее ...

и все же в самом верху файла написано ..

Manual customization of this file is not recommended.

Вот файл / etc / sysconfig / iptables, который только что поставляется с новым облачным сервером centos 6.4.

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

чтобы открыть порт 80 я могу просто клонировать линию ..

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

затем измените «22» на «80», затем сохраните этот файл и перезагрузите всю систему.

это откроет порт 80 для меня.

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

почему я должен следовать совету?

Жиль "ТАК - перестать быть злым
источник

Ответы:

18

Поскольку инструмент под названием system-config-firewall(или это брат на основе ncurses system-config-firewall-tui) управляет этим файлом. Каждый раз, когда вы используете этот инструмент для создания новых правил iptables, он будет перезаписываться /etc/sysconfig/iptables.

Связанная справочная страница: 28.1.16. / и т.д. / sysconfig / Iptables-конфигурации

Вот почему это не рекомендуется, но не запрещено . Лучший способ сохранить ваши правила с помощью CentOS или любой другой версии EL 6 - это использовать службу iptables после добавления некоторых правил в память:

# service iptables save

Смежный вопрос: почему iptables не получает информацию из / etc / sysconfig / iptables на centOs?

Причины не редактировать этот файл ( /etc/sysconfig/iptables) напрямую:

  • Потому что это автоматически сгенерированный файл. Его содержимое взято из скрипта / демона /etc/init.d/iptables.
  • Некоторые действия, такие как сброс или остановка демона iptables, могут привести к потере данных, поскольку он перезапишет файл. Интересные переменные на эту тему: IPTABLES_SAVE_ON_STOP=""и IPTABLES_SAVE_ON_RESTART=""внутри /etc/sysconfig/iptables-configфайла. Возможно, их настройка сделает ваши изменения внутри /etc/init.d/iptablesпостоянными.
  • Поскольку в документации сказано так. Red Hat советует, что это лучший способ использовать их инфраструктуру брандмауэра.

Альтернативное решение этого «перезаписать мои правила брандмауэра» mindf *** состоит в том, чтобы полностью отключить эти сценарии и использовать настраиваемый метод управления брандмауэром, подобный тому, который используется goldilocks .


источник
Это больше похоже на аргумент против смешивания и сопоставления, редактируя файл напрямую и добавляя правила с помощью system-config-firewallинструмента. Можете ли вы рассказать, почему плохо редактировать файл вместо использования инструмента?
Мишель
Добавлена ​​дополнительная информация. Спасибо за подсказку @Michelle
8

и все же в самом верху файла написано ..

Хм, это странно. В верхней части шахты написано:

# Manual customization of this file is strongly encouraged.

Кто-то, должно быть, изменил это;) И фактически даже переместил это из /etc/sysconfigтак, чтобы это не получило "автоматическую кастомизацию" менеджером пакетов или чем-то еще;);)

Я думаю, что здесь, в общем, с такими файлами конфигурации, если вы не знаете, что делаете, не делайте этого. Иногда также появляется предупреждение о том, что файл иногда перезаписывается системой. Это может быть сделано менеджером пакетов при обновлении - хотя иногда премьер-министр будет замечать, что файл был изменен вручную, а не перезаписывать его или сохранять копию и т. Д. - и это может быть какой-то другой инструмент, который отвечает за эту конфигурацию в в частности (см . ответ nwildner ).

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

Предполагая, что есть другие люди с root-доступом, я бы не стал делать это на сервере, за который я отвечаю, если бы не было более веской причины, чем «Я предпочитаю это так», потому что это может привести к путанице и вызвать головную боль у кого-то другого. в какой-то момент. Но если вы единственный пользователь, и никто не зависит от системы, тогда вы можете делать то, что хотите. Мой «предпочтительный метод» для настройки брандмауэра выглядит так:

#!/bin/bash

if [[ ! -n "$IPTSET_FILE" ]]; then
        IPTSET_FILE=/etc/iptables.current
fi

if [[ ! -e $IPTSET_FILE ]]; then
        echo "$IPTSET_FILE does not exist!"
        exit 1
fi

vim $IPTSET_FILE
iptables-restore < $IPTSET_FILE

/etc/iptables.currentсоздается при загрузке путем копирования /etc/iptables(который изначально настроен для службы iptables). Таким образом, я могу изменять вещи на лету, сохраняя контрольную точку, с которой начинается система.

Что приводит нас к важному моменту, если вы действительно хотите дурачиться с конфигурациями, которые содержат такого рода предупреждение: всегда сначала создавайте резервную копию оригинала.

лютик золотистый
источник