6 votes

Comment configurer un pare-feu sur Centos en utilisant Vagrant et Chef

J'ai créé une boîte de serveur en utilisant Vagrant et Chef et tout est en place et fonctionne correctement. Cependant, lorsque la boîte est installée à partir de zéro, les règles iptables par défaut sont en place et je dois donc désactiver le pare-feu afin d'accéder à mon serveur web.

(Il s'agit d'une VM locale, donc je ne me soucie pas de la sécurité du pare-feu).

Au lancement de la VM, j'y accède par ssh et je purge les iptables, ce qui fonctionne bien. Mais ce que je préférerais, c'est de lancer un Shell Shell lors de la création de la machine pour faire cela.

Mieux encore, j'aimerais configurer iptables à l'aide d'une recette mais je ne vois pas de livre de recettes supporté.

Merci

9voto

mestachs Points 97

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X