6

Я создал серверную коробку, используя Vagrant и Chef, и все работает правильно. Тем не менее, когда коробка установлена с нуля, применяются правила iptables по умолчанию, поэтому мне нужно отключить брандмауэр, чтобы получить доступ к моему веб-серверу.

(Кстати, это локальная виртуальная машина, поэтому меня не волнует безопасность брандмауэра).

При запуске виртуальной машины я ssh к нему и сбросить iptables, который работает отлично. Но я бы предпочел запустить скрипт оболочки, когда машина создана для этого.

Еще лучше, я хотел бы настроить iptables, используя рецепт, но я не вижу поддерживаемую кулинарную книгу.

Спасибо

1 ответ1

9

Один из способов установить правила брандмауэра в CentOS - полностью заменить /etc/sysconfig/iptables , используя шаблон в рецепте.

Скажем, вы хотите настроить маршрутизацию, потому что вы настраиваете кулинарную книгу веб-сервера Apache ("apache2"). Создайте файл cookbooks/apache2/templates/default/iptables.erb со следующим содержимым:

# Firewall configuration created and managed by Chef
# Do not edit manually
*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 -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Будьте уверены и получите возврат строки после COMMIT.

Затем вызовите шаблон в своем рецепте, а затем перезапустите службу iptables .

#
# Load firewall rules we know works
#
template "/etc/sysconfig/iptables" do
  # path "/etc/sysconfig/iptables"
  source "iptables.erb"
  owner "root"
  group "root"
  mode 00600
  # notifies :restart, resources(:service => "iptables")
end

execute "service iptables restart" do
  user "root"
  command "service iptables restart"
end

Когда вы запустите vagrant up , вы увидите следующий вывод (отрывок).

...
INFO: Processing template[/etc/sysconfig/iptables] action create (bpif_apache2::default line 40)
INFO: template[/etc/sysconfig/iptables] backed up to /var/chef/backup/etc/sysconfig/iptables.chef-20130312055953
INFO: template[/etc/sysconfig/iptables] updated content
INFO: template[/etc/sysconfig/iptables] owner changed to 0
INFO: template[/etc/sysconfig/iptables] group changed to 0
INFO: template[/etc/sysconfig/iptables] mode changed to 600
INFO: Processing execute[service iptables restart] action run (bpif_apache2::default line 49)
INFO: execute[service iptables restart] ran successfully
...

Следующие ссылки помогли мне разобраться и наконец решить эту проблему.

Кстати, Opscode, похоже, тоже находит брандмауэры в CentOS чем-то вроде сложной задачи, согласно их поваренной книге apache2 README (23 февраля 2013 г.):

Самый простой, но, безусловно, не идеальный способ работы с IPtables - это сбросить все правила. Opscode предоставляет кулинарную книгу iptables, но переходит от используемого там подхода к более надежному решению, использующему общий LWRP "брандмауэр", у которого будет поставщик "iptables". Кроме того, вы можете использовать ufw с книгами поваров и брандмауэрами Opscode для настройки правил. Смотрите README тех поваренных книг для документации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .