Как настроить брандмауэр на 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
...
Следующие ссылки помогли мне разобраться и наконец решить эту проблему.
- https://github.com/pdaether/LAMP-CentOS-with-Vagrant/blob/master/files/iptables.txt
- http://infrastructure.fedoraproject.org/csi/security-policy/en-US/html/HostIptables-Standard-Introduction-Prerequisites.html
Кстати, Opscode, похоже, тоже находит брандмауэры в CentOS немного сложными, согласно их книге Apache2 README (23 февраля 2013 г.):
Самый простой, но, безусловно, не идеальный способ работы с IPtables - это сбросить все правила. Opscode предоставляет кулинарную книгу iptables, но переходит от использованного там подхода к более надежному решению, использующему общий LWRP "брандмауэр", у которого будет поставщик "iptables". Кроме того, вы можете использовать ufw с книгами поваров и межсетевым экраном Opscode для настройки правил. Смотрите README этих кулинарных книг для документации.