[Iptables] Configuration

Applications, problèmes de configuration réseau
Répondre
Dakan
newbie
Messages : 9
Inscription : ven. 02 juin 2017, 07:08

[Iptables] Configuration

Message par Dakan »

Bonjour, je souhaiterais installer iptables pour plus de sécurité, je suis tombé sur le script présent sur le forum :

Code : Tout sélectionner

#!/bin/sh

###############################################################################
# Voir "Firewall et securite d'un reseau personnel sous Linux"
#  http://olivieraj.free.fr/fr/linux/information/firewall/
###############################################################################

# Configuration : Interface exemple wlan0, eth0
INTERFACE="eth0"
PLAGE_LOCAL="192.168.0.0/24"

# Suppression de toutes les chaines pré-definies de la table FILTER
iptables -t filter -F

# Suppression de toutes les chaines utilisateur de la table FILTER
iptables -t filter -X

# Par défaut, toute les paquets sont détruits
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

# Autorise l'interface loopback a dialoguer avec elle-même
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A INPUT  -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

# Autorise les connexions entrantes avec le réseau locale depuis "PLAGE_LOCAL" connecte a l'"INTERFACE"
# Optionnel, voir dangereux sur un Wifi public, uniquement à utiliser pour que tous les PC de ton réseaux
# locale aient accès à l'intégralité des ports
iptables -t filter -A OUTPUT -o $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
iptables -t filter -A INPUT  -i $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT

# SSH
iptables -t filter -A OUTPUT -o $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0  -p tcp --sport 22 -j ACCEPT
iptables -t filter -A INPUT  -i $INTERFACE -s 0.0.0.0/0  -d 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT

# HTTPD
iptables -t filter -A OUTPUT -o $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0  -p tcp --sport 80 -j ACCEPT
iptables -t filter -A INPUT  -i $INTERFACE -s 0.0.0.0/0  -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT

# Autorise les connexions avec l’extérieur uniquement si elles sont initialisées par les processus locaux
iptables -A OUTPUT -o $INTERFACE  -d 0.0.0.0/0 -p all -m conntrack ! --ctstate INVALID -j ACCEPT 
iptables -A INPUT  -i $INTERFACE -s 0.0.0.0/0  -p all -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


# Suppression de toutes les chaines pré-definies de la table FILTER
ip6tables -t filter -F

# Suppression de toutes les chaines utilisateur de la table FILTER
ip6tables -t filter -X

# Par défaut, toute les paquets sont détruits
ip6tables -t filter -P INPUT DROP
ip6tables -t filter -P OUTPUT DROP
ip6tables -t filter -P FORWARD DROP

# Autorise l'interface loopback a dialoguer avec elle-même
ip6tables -t filter -A OUTPUT -o lo -j ACCEPT
ip6tables -t filter -A INPUT  -i lo -j ACCEPT

# Autorise les connexions avec l’extérieur uniquement si elles sont initialisées par les processus locaux 
ip6tables -A OUTPUT -o $INTERFACE -p all -m conntrack ! --ctstate INVALID -j ACCEPT
ip6tables -A INPUT  -i $INTERFACE -p all -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Ping6 ?!
ip6tables -A INPUT -p icmpv6 -j ACCEPT
ip6tables -A INPUT -j REJECT --reject-with icmp6-adm-prohibited
ip6tables -A OUTPUT -p icmpv6 -j ACCEPT
En premier lieu, j'imagine qu'il n'est nécessaire de le lancer qu'une fois, et non à chaque démarrage (autostart)

Cependant j'aurais besoin de le configurer pour accepter mes périphériques sur le réseau, mais également les imprimantes, accès SSH

Dans le post il est également indiqué :
Comme tu peux le voir il n'y a aucune adresse IP donnée ni ne port...
Par contre si tu as un serveur ssh sur ton PC et que tu veux pouvoir t'y connecter depuis l'extérieur (un peu le but d'un serveur ssh), il te faudra nécessairement autoriser toutes les connexions faites sur le port 22, après libre à toi de modifier la règle suivante pour n'autoriser que certaines IP externes

Code : Tout sélectionner

iptables -t filter -A OUTPUT -o $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --sport 22 -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT

De plus si tu veux accéder à l'ensemble des ports depuis ton réseau locale, ton réseau locale étant considéré comme l'extérieur, il faudra nécessaire autoriser une plage d’adresse, mais bien sur ceci est optionnel et n'est qu'a titre d'exemple, ceci peut être relativement dangereux :

Code : Tout sélectionner

iptables -t filter -A OUTPUT -o $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
Est-ce que cela signifie que c'est dans le cas ou l'on veut accéder à l'ensemble des ports depuis le réseau local une fois connecté en SSH sur le PC ? Ou alors cela signifie que dans un réseau local, lorsque l'on accède à un PC, il réagit comme si c'était un PC de l'exterieur qui s'y connectait ? C'est cette phrase que j'ai un peu de mal à suivre :
De plus si tu veux accéder à l'ensemble des ports depuis ton réseau locale, ton réseau locale étant considéré comme l'extérieur, il faudra nécessaire autoriser une plage d’adresse, mais bien sur ceci est optionnel et n'est qu'a titre d'exemple, ceci peut être relativement dangereux
Merci d'avance
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [Iptables] Configuration

Message par waitnsea »

Dakan a écrit : ven. 02 juin 2017, 07:16En premier lieu, j'imagine qu'il n'est nécessaire de le lancer qu'une fois, et non à chaque démarrage (autostart)
Bonjour,
Pour ça il faut que tu ajoutes ces lignes en fin de ton script :

Code : Tout sélectionner

## Sauvegarde de la configuration
iptables-save > /etc/iptables/iptables.rules
## Relance daemon
systemctl restart iptables
et que tu actives le service :
# systemctl enable iptables.service
et effectivement tu n'auras besoin de relancer le script que si tu y ajoutes des règles.

Pour tes autres questions, mon script perso n'étant pas aussi propre que je voudrais, même s'il fonctionne bien, je vais suivre ton post attentivement...

Edit : benjarobin a plusieurs fois donné ses règles :
viewtopic.php?p=135954#p135954
viewtopic.php?p=135940#p135940
viewtopic.php?f=5&t=19161&sid=f4f845158 ... 91#p160124
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Iptables] Configuration

Message par benjarobin »

Et je me suis rendu compte que certaines de mes règles étaient inutiles, donc ce que j'ai dit dans le passé est perfectible.

Ce que je voulais dire c'est que tu pouvais rajouter une règle pour en quelque sorte ne pas avoir de par feu / sécurité / filtre pour les pc de ton réseau local: ils ont accès à tout.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Dakan
newbie
Messages : 9
Inscription : ven. 02 juin 2017, 07:08

Re: [Iptables] Configuration

Message par Dakan »

Merci Waitnsea pour ces informations, du coup au lieu de lancer le script en autostart (ce qui est inutile vu qu'il faut relancer iptables pour prendre en compte les changements, j'imagine ?) c'est forcément plus propre de sauvegarder avec la ligne que tu m'as donné, en l'ajoutant en fin de script et comme ça à chaque démarrage il aura la configuration déjà prête

Si tu veux on peut essayer de se faire une petite configuration propre, et adaptée à chacun au travers de ce thread

Pour ce qui est de la phrase sur le réseau local c'est intéressant à comprendre, ça voudrait dire que lorsque des PCs/Machines "discutent" entre-elles, dans un réseau local, c'est comme si c'était un PC de l’extérieur (donc à travers internet) qui communique ?

Enfin, si je veux communiquer d'un premier pc à un second, par exemple, je pars du premier pour aller vers le second, et même sur un réseau local, le second prendra la requête du premier comme si c'était un PC extérieur depuis internet ?

J'ai du mal à expliquer
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Iptables] Configuration

Message par benjarobin »

Dakan a écrit : ven. 02 juin 2017, 12:31 dans un réseau local, c'est comme si c'était un PC de l’extérieur (donc à travers internet) qui communique ?
Non je crains qu'il n'y ai une très mauvaise compréhension de la chose
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Dakan
newbie
Messages : 9
Inscription : ven. 02 juin 2017, 07:08

Re: [Iptables] Configuration

Message par Dakan »

Effectivement ça me paraissait étonnant, j'imagine que dans un réseau local, les équipements communiquent avec les adresses IP locales

Mais en utilisant ceci :

Code : Tout sélectionner

iptables -t filter -A OUTPUT -o $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
iptables -t filter -A INPUT  -i $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
Cela voudrait dire que j'autorise tout ce qui est partage réseau, imprimantes etc ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Iptables] Configuration

Message par benjarobin »

Ceci réalise la même action que le fait de ne pas avoir du tout de par feu, mais bien sûr cela ne s'applique qu'aux machines dans le réseau local. Du point de vue de l'extérieur (internet) toutes les autres règles s'appliquent.
De plus uniquement une des 2 lignes est nécessaire, cela fait partie des erreurs...

Je vois que tu parles souvent d'imprimante, mais à moins d'avoir une imprimante connecté au PC que tu veux partager aux autres PC du réseau local, je ne vois pas en quoi ceci s'applique. Oui chez moi je n'ai plus qu'une imprimante en réseau, tellement plus simple à gérer quand tu as un parc de machines très hétérogènes.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Dakan
newbie
Messages : 9
Inscription : ven. 02 juin 2017, 07:08

Re: [Iptables] Configuration

Message par Dakan »

Disons que sur le réseau local, ça simplifie le fait de ne pas avoir de règles, effectivement j'ai une imprimante partagée, depuis un serveur cups mais je ne voudrais pas qu'elle soit inaccessible avec ce script

On peut essayer de monter un script ensemble si tu as le temps ? Comme ça je le conserverais pour l'appliquer à mes machines
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Iptables] Configuration

Message par benjarobin »

Donnes ton besoin et on verra dès que j'ai 5s
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Dakan
newbie
Messages : 9
Inscription : ven. 02 juin 2017, 07:08

Re: [Iptables] Configuration

Message par Dakan »

Dans l'idéal j'aurais besoin d'une configuration la plus sécure possible, que je pourrais mettre sur mes PCs, sachant que je télécharge en torrent, j'ai besoin d'accès ssh, d'avoir accès à mes partages réseaux, et aux imprimantes (je ne sais pas si il y a une différence au niveau de la config si c'est une imprimante partagée via Windows et CUPS)

Comme tu le dis je parle souvent d'imprimante mais j'imagine qu'elles peuvent être bloquées

Du coup si je suis bien, vu que dans ton script tu autorise tout en sortie, tu m'as dis qu'il fallait conserver une seule ligne par rapport à celles que j'ai cité, c'est celle-ci ?
iptables -t filter -A INPUT -i $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT

Ça me permettra de voir si je comprends également un peu la logique
Répondre