jus*_*nhj 6 centos iptables virtual-machine vagrant chef
我已经使用 Vagrant 和 Chef 创建了一个服务器盒,并且一切正常。但是,当从头开始安装该框时,默认的 iptables 规则已就位,因此我需要禁用防火墙才能访问我的 Web 服务器。
(顺便说一下,这是一个本地 VM,所以我不关心防火墙安全性)。
在启动虚拟机时,我 ssh 到它并刷新 iptables,它工作正常。但是我更喜欢在创建机器时运行 shell 脚本来执行此操作。
更好的是,我想使用配方配置 iptables,但我没有看到支持的食谱。
谢谢
小智 9
在 CentOS 中设置防火墙规则的一种方法是/etc/sysconfig/iptables
使用配方中的模板来完全替换。
假设您要调整路由,因为您正在设置 Apache Web 服务器(“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
Run Code Online (Sandbox Code Playgroud)
确保在 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
Run Code Online (Sandbox Code Playgroud)
运行时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
...
Run Code Online (Sandbox Code Playgroud)
以下链接帮助我理解并最终解决了这个问题。
FWIW,根据他们的 apache2 说明书 README(2013 年 2 月 23 日),Opscode 似乎也发现 CentOS 中的防火墙有点挑战:
处理 IPtables 最简单但肯定不是理想的方法是刷新所有规则。Opscode 确实提供了一个 iptables 说明书,但正在从那里使用的方法迁移到使用通用“防火墙”LWRP 的更强大的解决方案,该解决方案将具有“iptables”提供程序。或者,您可以使用 ufw 以及 Opscode 的 ufw 和防火墙手册来设置规则。有关文档,请参阅这些食谱的自述文件。
归档时间: |
|
查看次数: |
8085 次 |
最近记录: |