Une façon de définir les règles du pare-feu dans CentOS est de remplacer le fichier /etc/sysconfig/iptables
entièrement en utilisant un modèle dans la recette.
Disons que vous voulez ajuster le routage parce que vous configurez un livre de recettes pour un serveur web Apache ("apache2"). Créez le fichier cookbooks/apache2/templates/default/iptables.erb
avec le contenu suivant :
# 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
Assurez-vous d'avoir un retour à la ligne après le commit.
Ensuite, appelez le modèle dans votre recette, puis redémarrez l'application iptables
service.
#
# 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
Lorsque vous exécutez vagrant up
vous obtiendrez le résultat suivant (extrait).
...
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
...
Les liens suivants m'ont aidé à comprendre et finalement à résoudre ce problème.
Pour information, Opscode semble trouver que les pare-feu dans CentOS sont un peu un défi, aussi, comme dans leur livre de recettes apache2 README (23 février 2013) :
Le moyen le plus simple, mais certainement pas idéal, de traiter avec les effacer toutes les règles. Opscode fournit un cookbook iptables mais il est en train de mais il est en train de migrer de l'approche utilisée à une solution plus robuste plus robuste, utilisant un LWRP "firewall" général qui aurait un fournisseur de fournisseur. Alternativement, vous pouvez utiliser ufw, avec les outils d'Opscode ufw et d'Opscode pour configurer les règles. Voir les README de ces livres de recettes pour la documentation.