Jump to content
djezzyman

Configution du parefeu NETFILTER pour Ubuntu

Recommended Posts

Bonjour à tous,

 

Je ne connaissait pas ufw et gufw et j'ai donc souvent été surpris par l'absence d'un outil de configuration du pare-feu sous Ubuntu.

 

Etant habitué à Fedora je me suis décidé à porter le programme system-config-firewall qui me parait vraiment très utile et simple vers le Debian Packaging System (ça fait mal à la tête !).

 

Le programme est donc divisé en trois paquets comme sous Fedora:

 

system-config-firewall-base (qui contient les fonctionnalités principales, la configuration et les scripts init.d)

system-config-firewall-tui ( qui continent l'interface utilisateur en mode console (ncurse) )

system-config-firewall (qui continent l'interface utilisateur en mode graphique)

 

Ces paquets dépendent des paquets suivant:

 

python-slip

python-slip-dbus

 

Ces paquets permettent le passage en mode privilégié (root) gràce à policykit-1.

 

J'ai posté les paquets sur launchpad.net, configurez le repo comme suit pour une installation très rapide:

 

sudo add-apt-repository ppa:ubuntu-contribs/contribs

 

Comme vous le voyez, j'ai donc créé un PPA (Personal Package Archive) et il s'appelle contribs. Voici le lien vers le PPA.

 

Pour installer ensuite system-config-firewall, tapez simplement

 

sudo apt-get update

sudo apt-get install system-config-firewall

 

Vous aurez alors un raccourci pare-feu dans le menu Système/Administration de Gnome.

 

Fichiers de configuration:

 

/etc/default/iptables : règles IPV4 du pare-feu (dans le format reconnu par iptables-save et iptables-restore), utilisé par le script /etc/init.d/iptables.

 

/etc/default/ip6tables : règles IPV6 du pare-feu (dans le format par ip6tables-save et ip6tables-restore), utilisé par le script /etc/init.d/ip6tables.

 

/etc/default/iptables-config : paramètres gouvernant le comportement des scripts init.d chargeant et déchargeant les règles du pare-feu au démarrage et à l'arrêt de la machine. Ne les éditez pas à moins que vous ne sachiez ce que vous faites.

 

/etc/default/system-config-firewall : configuration du pare-feu chargée par l'interface utilisateur. L'utilitaire /usr/sbin/lokkit est un programme en ligne de commande qui permet aussi de configurer le pare-feu. Il faut être root pour l'utiliser (sudo). Si vous utilisez lokkit il changera le contenu de ce fichier ! Attention donc aux interactions avec l'interface graphique.

 

Exemple de configuration du parefeu:

 

Par défaut le pare-feu bloque tout le trafic entrant, c'est ce qui est recommandé.

 

Supposons que vous ayez un ordinateur connecté à internet via l'interface eth0 disons et un réseau privé contenant un ou plusieurs ordinateurs connecté à votre machine via l'interface eth1. Pour que les ordinateurs de votre réseau privé accèdent à l'internet via votre ordinateur, adoptez la configuration suivante:

 

Dans le panneau de gauche cliquez sur Translation d'adresse : l'interface eth0 devrait être listée sinon ajoutez là en cliquant à droite sur le bouton Ajouter. Veillez ensuite à cocher la case eth0.

 

Dans le panneau de gauche cliquez sur Interfaces de confiance : l'interface eth1 devrait être listée sinon ajoutez là en cliquant à droite sur le bouton Ajouter. Veillez ensuite à cocher la case eth1. Cela autorisera tout le trafic entre votre machine et votre réseau privé (c'est normal).

 

Il ne vous reste plus qu'à cliquer sur Appliquer dans la barre d'outils. Votre ordinateur est maintenant configuré comme une passerelle entre votre réseau privé et l'internet.

 

Vous pouvez aussi ouvrir des ports, rediriger des ports de votre machine vers d'autres ports d'une autre machine ... etc

 

Si vous souhaitez désinstaller le programme, tapez simplement:

 

sudo apt-get remove system-config-firewall-base

 

puis la cas échéant:

 

sudo apt-get autoremove

 

La configuration sera préservée au cas ou vous souhaiteriez le réinstaller, sinon si vous souhaitez tout supprimer:

 

sudo apt-get purge system-config-firewall-base

 

puis la cas échéant:

 

sudo apt-get autoremove

 

Bonne continuation.

Edited by djezzyman
  • Like 2

Share this post


Link to post
Share on other sites

J'ai fait une petite erreur pardon.

 

D'abord après avoir exécuté la commande:

 

sudo add-apt-repository ppa:ubuntu-contribs/contribs

 

Il faut exécuter la commande:

 

sudo apt-get update

 

pour mettre à jour la liste des paquets connus.

De plus, j'ai posté une version 0.2.13-2 des paquets python-slip, python-slip-dbus, python-slip-gtk pour régler un problème avec un fichier de la documentation (un fichier du dossier example). J'ai mis à jour le fichier changelog mais j'ai oublié de mettre à jour les dépendances dans le fameux control file. Du coup les dépendances étaient impossible à satisfaire. C'est réglé maintenant.

 

La version installée est la version 0.2.13-3 pour python-slip, python-slip-dbus, python-slip-gtk, ce dernier n'étant pas installé avec system-config-firewall.

 

Donc les commandes:

 

sudo apt-get update

sudo apt-get install system-config-firewall

fonctionnent parfaitement maintenant.

 

Mes plus plates excuses !

Edited by djezzyman

Share this post


Link to post
Share on other sites

J'ai posté une nouvelle version de system-config-firewall avec le support upstart pour l'initialisation. C'est la règle je pense sous Ubuntu où on préconise d'éviter le recours à sysv-rc et de préférer upstart. Je me suis inspiré du projet ufw pour cela.

 

Il y avait un bug aussi dans le script maintainer system-config-firewall-tui.prerm (utilisé par dpkg) du paquet system-config-firewall-tui. Celui-ci s'occupe du nettoyage des fichiers compilés par python. En fait le script nettoyait les fichiers du paquet system-config-firewall-base au lieu de ceux de system-config-firewall-tui.

 

Je pense maintenant à fusionner tous ces paquets en un seul car la gestion des scripts post et pré installation est rendue plutôt complexe.

 

Les fichiers:

 

/etc/init.d/iptables

/etc/init.d/ip6tables

sont déplacés vers:

 

/usr/lib/iptables/iptables

/usr/lib/iptables/ip6tables

La politique du pare-feu est chargée par upstart avec le fichier de configuration suivant:

 

/etc/init/iptables-init.conf

 

Pour afficher les règles en cours, taper:

 

sudo /usr/lib/iptables/iptables status

sudo /usr/lib/iptables/ip6tables status

Bonne continuation.

Edited by djezzyman

Share this post


Link to post
Share on other sites

Décidément le passage de sys-rc à upstart a été douloureux. J'ai fait l'erreur de fusionner les

services iptables et ip6tables en un seul service iptables-init. Mais cela a pour conséquence

de faire échouer le logiciel car à chaque application des changements, le logiciel stop le service pour

chaque version du protocole IP (ipv4 et ipv6). Au deuxième arrêt upstart renvoie un code d'erreur

car on lui demande de stopper un service déjà stoppé. Même chose pour le démarrage des services.

 

Il a donc fallu revenir à une configuration à deux services et c'est bien mieux. Il est à noter que la

résolution des problèmes est rendue plus complexe lorsque l'on lance le logiciel sans droit privilégié.

Car alors l'élévation de privilèges est assurée par policykit et les taches se font en arrière plan sans

aucun message d'erreur disponible car policykit interdit l'accès à l'interface graphique.

 

Pour résoudre les problèmes, il faut lancer le logiciel avec les droits root (sudo ou gksudo) car alors

le recours à policykit est annulé et les messages d'erreurs apparaissent.

 

J'ai ajouté deux fichiers de configurations upstart (dossier /etc/init): iptables-init-config.conf et ip6tables-init-config.conf

 

Ils permettent d'activer et de désactiver les services iptables et ip6tables.

 

L'activation se fait avec les commandes:

 

initctl emit config-iptables-init FW_ACTION=enable

initctl emit config-ip6tables-init FW_ACTION=enable

La désactivation se fait avec les commandes:

 

initctl emit config-iptables-init FW_ACTION=disable

initctl emit config-ip6tables-init FW_ACTION=disable

C'est un exemple d'implémentation upstart des commandes suivantes utilisées dans les distributions de Redhat:

 

chkconfig service on

chkconfig service off

upstart est vraiment très intéressant.

 

Bonne continuation.

Share this post


Link to post
Share on other sites

Les paquets python-slip mis à jour étaient endommagés, je ne m'en suis pas rendu compte.

 

Heureusement les tout premiers paquets python-slip,python-slip-dbus et python-slip-gtk étaient parfaitement fonctionnels. Les mises à jour ne concernent pas les fonctionnalités propres des paquets mais un fichier livré avec la documentation. De plus le fichier de control des paquets mis à jour contenait des variables d'environnement obsolètes (utilisées par debhelper). Cela avait pour effet de rendre les paquets construits impropres à l'installation car les dépendances étaient impossibles à satisfaire.

 

C'est réglé maintenant. Les installation et mise à jour fonctionnent.

 

Au pire des cas voici comment obtenir une ré-installation correcte:

 

Commencer par sauver la configuration du pare-feu, il suffit pour cela de sauvegarder les fichiers:

 

/etc/default/iptables

/etc/default/ip6tables

/etc/default/iptables-config

/etc/default/system-config-firewall

On le fait avec le petit script suivant (sans privilège super-utilisateur on doit pouvoir lire dans /etc/default/):

 

#!/bin/sh

 

SCF_FILES=""

 

for file in iptables ip6tables iptables-config system-config-firewall; do

[ -f /etc/default/$file ] && SCF_FILES="/etc/default/$file
$SCF_FILES
"

done

 

if [ -n "$SCF_FILES" ]; then

if tar cf - $SCF_FILES | gzip -c > ~/scf-backup.tar.gz ; then
echo " * La configuration a été sauvegardée dans l'archive ~/scf-backup.tar.gz"

else

echo " * La configuration a échoué. Désolé"

rm -f
~/scf-backup.tar.gz

fi

else

echo " * Pas de configuration à sauvegarder"

fi

Après exécution (avec succès !) de ce script, le répertoire utilisateur contient l'archive scf-backup.tar.gz contenant la configuration.

 

Vérifier la présence de l'archive avec les commandes:

 

ls -l ~/scf-backup.tar.gz

tar ztf ~/scf-backup.tar.gz

 

Ensuite pour purger l'installation, on exécute la commande:

 

sudo apt-get purge python-slip

 

Si une erreur est renvoyée, il faut purger chaque paquet en veillant à respecter l'ordre des dépendances qui est le suivant:

 

sudo apt-get purge system-config-firewall

sudo apt-get purge system-config-firewall-tui

sudo apt-get purge system-config-firewall-base

sudo apt-get purge python-slip-dbus

sudo apt-get purge python-slip

 

pour réinstaller l'utilitaire, taper

 

sudo apt-get install system-config-firewall

 

Restaurer ensuite la configuration sauvegardée avec la commande:

 

sudo tar -C / -zxvf ~/scf-backup.tar.gz

 

Il suffit enfin de redémarrer les services:

 

sudo restart iptables

sudo restart ip6tables

Pardon pour tous ces cafouillages, mais le monde Debian est nouveau pour moi.

 

Bonne continuation.

Edited by djezzyman
  • Like 1

Share this post


Link to post
Share on other sites

Vous devez mettre à jour votre configuration apt car le PPA ubuntu-contribs/contribs a été supprimé par erreur.

 

Il est remplacé par le PPA ubuntu-contribs/contrib (juste un s en moins à la fin).

 

Si le fichier suivant existe:

 

/etc/apt/sources.list.d/ubuntu-contribs-contribs-maverick.list

 

et que son contenu se limite aux deux seules lignes:

 

deb http://ppa.launchpad.net/ubuntu-contribs/contribs/ubuntu maverick main

deb-src http://ppa.launchpad.net/ubuntu-contribs/contribs/ubuntu maverick main

alors supprimez le ou commentez les lignes au dessus en plaçant un # en début de ligne.

 

Si vous utilisez Ubuntu, exécutez la commande :

 

add-apt-repository ppa:ubuntu-contribs/contrib

 

Tapez ensuite:

 

sudo apt-get update

sudo apt-get upgrade

J'ai décidé de supprimer tout support upstart et de revenir aux scripts sysv-rc car upstart n'est pas utilisé dans la distribution Debian Squeeze. Ainsi le logiciel pare-feu est disponible pour les système Ubuntu et Debian.

 

Désolé pour ce nouveau désordre mais j'ai supprimé le PPA principal à la place d'un PPA temporaire. Il est impossible de recréer ce PPA.

 

Pour installer ce repo sous debian:

 

Commencer par créer, s'il n'existe pas, le fichier:

 

/etc/apt/sources.list.d/ubuntu-contrib.list

 

Puis y ajouter les deux lignes:

 

deb http://ppa.launchpad.net/ubuntu-contribs/contrib/ubuntu maverick main

deb-src http://ppa.launchpad.net/ubuntu-contribs/contrib/ubuntu maverick main

 

Enfin il faut ajouter la clé du repo qui sert à vérifier la signature des paquets. Exécuter la commande:

 

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4965156C

 

Puis installer le logiciel avec les commandes:

 

sudo apt-get update

sudo apt-get install system-config-firewall

 

Bonne continuation.

Edited by djezzyman

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Announcements



×
×
  • Create New...