Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/06/2013, à 00:18

DavidWebb

Ecrasement script iptables par ufw

Bonjour (ou bonsoir),

nouveau venu sur Linux, j'ai récemment installé Ubuntu 12.04 sur deux pc portables, dont un sans dual boot. Bref, dans un excès de folie, j'ai voulu configurer un firewall, d'abord avec gufw, puis en grand malade que je suis, en ligne de commande. Je me suis fais un petit script qui me paraît pas mal, le problème, c'est que ufw, que j'ai désinstallé via la logithèque, semble prendre le pas sur mon script iptables, et écraser celui-ci à chaque démarrage.

J'ai passé la commande

sudo ufw disable

pour désactiver le pare feu, mais au redémarrage du PC,

iptables -L

me donne les infos suivantes :

Chain INPUT (policy ACCEPT) target     prot opt source             destination         
Chain FORWARD (policy ACCEPT) target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)

Un peu comme si je n'avais pas de firewall...

J'ai pourtant installé le paquet iptables-persistent, et saisis mes règles, sauvegarder et reloader. mais rien n'y fait...
Voici mon script, qui séjourne en /etc/ipatbles/rules.v4
#!/bin/sh

# On efface les précédents paramètres du Firewall
sudo iptables -t filter -F
sudo iptables -t filter -X

# On bloque, par défaut, tout le trafic
sudo iptables -t filter -P INPUT DROP
sudo iptables -t filter -P FORWARD DROP
sudo iptables -t filter -P OUTPUT DROP

# On ne ferme pas les connexions établies et on autorise le loopback sur localhost
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t filter -A INPUT -i lo -j ACCEPT
sudo iptables -t filter -A OUTPUT -o lo -j ACCEPT

# On spécifie les ports que l'on souhaite ouvrir :
# On ouvre le port 53 pour la résolution des DNS
sudo iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
sudo iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
sudo iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

# On ouvre le port 80 ou http pour la navigation sur Internet
sudo iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

# On ouvre les ports POP3 et SMTP spécifiques à la messagerie gmail
sudo iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
sudo iptables -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 465 -j ACCEPT

# On ouvre les ports SMTP et IMAP pour la consultation des mails sur numéricable
sudo iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
sudo iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT

# On ouvre le port 6881 pour l'utilisation d'un client Torrent
sudo iptables -t filter -A OUTPUT -p udp --dport 6881 -j ACCEPT
sudo iptables -t filter -A INPUT -p udp --dport 6881 -j ACCEPT
sudo iptables -t filter -A OUTPUT -p tcp --dport 6881 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 6881 -j ACCEPT

# Se prémunir d'une attaque par déni de service
sudo iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
sudo iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
sudo iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

# On limite les scans de port
sudo iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Merci de votre aide

Hors ligne

#2 Le 01/06/2013, à 10:23

Zakhar

Re : Ecrasement script iptables par ufw

C'est bien tout ça... mes tes règles ne sont pas correctes !

Exemple:

# On ouvre le port 80 ou http pour la navigation sur Internet
sudo iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

La première autorise tout le trafic "sortant" vers le port 80 (navigation web, comme le dit bien ton commentaire)
La deuxième autorise le trafic "entrant" vers ton PC sur le port 80... c'est un règle utile lorsque tu as un serveur Apache par exemple et que ton PC est un serveur web !..

Si c'est ton cas, c'est très bien... mais ça ne correspond pas au commentaire.

Ensuite, il faut avoir en tête que le trafic web n'est pas que du port 80. En effet, tu as parfois du 8080 ou du 443 pour le SSL. Ca ce sont les ports "courants" mais en réalité rien n'empêche de servir des pages web sur n'importe quel port.
Par exemple, pour des raisons de sécurité (à deux balles... mais c'est mieux que rien vu la mauvais travail de Free en la matière), lorsque j'accède à la Freebox de ma mère à distance, j'ai évidemment programmé un port qui n'est pas un port "standard", mais un truc du genre : port 41907 (un numéro au pif en fait). Ca n'empêche pas les intrusions, mais ça oblige ceux qui fouillent à devoir scanner les 65536 ports au lieu de juste scanner les quelques centaines de ports standards.

Aussi, ta règle d'acceptation est inutilement large vu l'acceptation général des estabilshed/related.
En réalité, si tu veux mettre une règle output sur le 80, il suffit d'accepter les "new", ta règle established fera le reste.

Si tu veux voir un iptables bien découpé, je te conseille de regarder comment Fedora fait la chose, c'est vraiment "propre".

Dans un usage "desktop", pour le trafic sortant il n'y guère que "accepter tout" qui est réaliste sinon tu risques de rapidement galérer.


Pour ce qui est de la "persistence", je ne connais pas le paquet iptable-persistent, mais le plus simple, puisque tu as écrit un script, est de le mettre dans l'init de ton PC.
Ca te prend une commande à faire une fois ; update-rc.d (avec les bonnes options), et ça évite d'avoir des paquets inutiles !

Bon courage. big_smile

P.S.: si tu es derrière un box en mode routeur, tout ceci est assez inutile vu que la box fait très bien se travail. Par contre, si ton PC est un portable qui va se connecter en Wifi à de hotspots pas forcément très sûrs, il est bien sûr recommandé de faire un minimum de protections, au moins sur l'input.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 01/06/2013, à 19:29

DavidWebb

Re : Ecrasement script iptables par ufw

Bonjour,

effectivement, mon script est sûrement loin d'être parfait, d'autant plus que mon PC est effectivement derrière une box, et a peu de chance de se connecter sur un spot (quoique...). C'est plus l'envie de tripatouiller et d'apprendre qui m'a fait rédiger ce script, basé sur un howto trouvé sur le net.

J'avais utilisé la commande update-rc.d sur ce script utilisé sur ma première machine, avec à priori un firewall qui fonctionnait bien. J'ai découvert iptables-persistent lors d'une lecture. Mais c'est un peu le bazar depuis qu'il est installé sur ma deuxième machine, avec un ufw qui prend le pas. J'ai depuis désinstallé ufw, mais sans véritablement progressé avec iptables, qui apparaît comme complètement inactif.

Merci de ton invertion

Hors ligne

#4 Le 01/06/2013, à 22:04

Zakhar

Re : Ecrasement script iptables par ufw

update-rc.d était la bonne manœuvre. wink

iptables-persistent, si c'est fait pour rendre les iptables que tu tapes en ligne de commande persistant... eh bien c'est une très très très mauvaise idée !
En effet, quand on tripatouille les iptables, il arrive parfois qu'on se lock soit même, et du coup on est totalement bloqué.
Comme ce qu'on a tapé en ligne de commande n'est pas persistant, il suffit alors de redémarrer la machine pour se sortir de la situation.

Le mieux est donc
-1) Tu mets au point ton script en fonction de ce que tu veux filtrer. Pas de panique si ça va mal tu peux toujours redémarrer.
-2) une fois que ça filtre comme tu veux, tu mets le script dans /etc/init.d
-3) tu fais un update-rc.d pour que le script soit pris en compte au démarrage.

Donc juste 2 et 3 ça fait 2 commandes, et ça remplace très avantageusement un iptables-persistent inutile et dangereux. wink


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#5 Le 07/06/2013, à 20:20

DavidWebb

Re : Ecrasement script iptables par ufw

Bonsoir,

je suis finalement revenu à un update-rc.d. Ca fonctionne bien. Il ne me reste plus qu'à retravailler le code de mon firewall.

Le topic peut-être marqué comme Résolu.

Merci.

Hors ligne

#6 Le 07/06/2013, à 20:54

Zakhar

Re : Ecrasement script iptables par ufw

Héhé, ce que je disais. wink

Les bonnes vieilles méthodes simples ont du bon parfois.

Pour ton topic, tu peux éditer le premier message du fil toi-même et changer le titre en mettant [Résolu] devant.

Ainsi quand on cherche à aider, on se concentre sur les "pas encore résolus" !

Dernière modification par Zakhar (Le 07/06/2013, à 20:54)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne