Как настроить брандмауэр на Centos с помощью Vagrant и Chef

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

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

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

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

Спасибо

1 ответ

Решение

Один из способов установить правила брандмауэра в 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 этих кулинарных книг для документации.

Другие вопросы по тегам