Iptables interdire au maximum l'accès

Résolu/Fermé
Vasu Messages postés 25 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 12 décembre 2008 - 24 nov. 2008 à 09:13
Vasu Messages postés 25 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 12 décembre 2008 - 24 nov. 2008 à 14:09
Bonjour,

j'essai de configurer iptables pour interdire au maximum l'accès en autorisant que les services qui sont nécessaires. Voici ma configuration :

# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP

We authorize access to web (http) 
# iptables -A OUTPUT -p tcp --dport 80 (or proxy port) -j ACCEPT

We authorize the icmp
# iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
# iptables -A OUTPUT -p icmp --icmp-type any -j ACCEPT


We authorize ssh
# iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

We authorize https
# iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

We authorize ftp (active and passive mode)
# iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT

We authorize smtp
# iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT

We authorize pop3
# iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT

We authorize dns
# iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

We authorize dhcp client
# iptables -A OUTPUT -p udp --dport 546 -j ACCEPT

We authorize all web responses
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Donc j'autorise d'accéder à mes services et j'accepte que les connexions qui sont établies par moi-même pour recevoir la réponse. Mais lorsque j'essai de faire un ping ou d'accéder à une page telle que www.google.com j'ai : unknown host : www.google.com.

Autre question, j'ai vu différentes manières pour créer un script de démarrage de mon iptables, quelle est selon vous la plus simple ?

Merci de votre aide :-).

4 réponses

Vasu Messages postés 25 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 12 décembre 2008 1
24 nov. 2008 à 10:08
En fait j'ai mal testé et j'ai juste oublié d'ajouter :

# iptables -A OUTPUT -p udp --dport 53 -j ACCEPT


pour que le dns fonctionne correctement.

Par contre, en ce qui concerne ma question de script au démarrage, la question vaut toujours.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
24 nov. 2008 à 10:42
Salut,

Tu as quelle distribution?
0
Vasu Messages postés 25 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 12 décembre 2008 1
24 nov. 2008 à 10:53
J'utilise Debian.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
24 nov. 2008 à 11:06
Re,

A faire en root

1. avec rc.local

dans le fichier rc.local tu ajoutes le chemin vers ton script
/chemin/vers/firewall.sh


2. avec un script de démarrage dans /etc/init.d

tu crées 2 fichiers dans /etc

iptables_start
iptables_stop



et un script de démarrage dans /etc/init.d que tu peux l'appeller iptables

Pas besoin d'extension .sh


le fichier /etc/iptables_start contiendra ce que tu as en firewall.sh

le fichier /etc/iptables_stop c'est pour la désactivation du firewall (des fois on a besoin pour certains tests)
et il contiendra
#! /bin/sh
#
# Description: désactivation du firewall netfilter/iptables
#
# table FILTER
#
iptables -F
iptables -X
iptables -P INPUT   ACCEPT 
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT 

# la table NAT
#
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING    ACCEPT
iptables -t nat -P POSTROUTING   ACCEPT
iptables -t nat -P OUTPUT        ACCEPT
#
# la table MANGLE
#
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING    ACCEPT
iptables -t mangle -P INPUT         ACCEPT
iptables -t mangle -P OUTPUT        ACCEPT
iptables -t mangle -P FORWARD       ACCEPT
iptables -t mangle -P POSTROUTING   ACCEPT



Le script /etc/init.d/iptables contiendra
#!/bin/sh

case $1 in
'start' )
	/etc/iptables_start
	;;
'stop'	)
	/etc/iptables_stop
	;;
*)
	echo "usage: $0 {start|stop}"
	;;
esac

Ensuite établi les droits
chmod -v 0700 /etc/iptables_st*
chmod -v 0700 /etc/init.d/iptables

Et tu crées les liens

update-rc.d -f iptables start 99 2 3 4 5 .

Au démarrage dans le runlevel 2,3,4,5 le firewall sera en état de fonction

Tu peux desactivé le firewall avec /etc/init.d/iptables stop
Si tu fait des modifications tu peux le rélancer avec /etc/init.d/iptables start

Si tu tapes /etc/init.d/iptables tu auras le message usage: /etc/init.d/iptables {start|stop}
0
Vasu Messages postés 25 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 12 décembre 2008 1
24 nov. 2008 à 13:16
Merci de cette réponse bien détaillée, mais j'ai du faire une erreur. Au lieu de tester au préalable, j'ai directement redémarrer et le chargement ce stop lors de : loading services. Ensuite l'écran noir et la flèche reste sans que rien ne se passe. Comment faire pour démarrer normalement tout de même ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
24 nov. 2008 à 13:23
Salut,

Fait un CTRL+C quand le chargement se stoppe sinon normalement une vois après l'échec de chargement de service l'amorçage de système continuera.

D'habitude on montre d'abors ce qu'on a fait suite a une réponse.
Ca nous permettra de depister une eventuelle erreur.
0
Vasu Messages postés 25 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 12 décembre 2008 1
24 nov. 2008 à 14:09
Merci pour le script, ça fonctionne parfaitement. Mais par contre au démarrage de la machine ça prend facilement 5 minutes, ce doit être par rapport à la configuration de mon firewall qui empêche le bon fonctionnement du dhcp ou autre.
Quel est le moyen de faire en sorte qu'il ne démarre une fois l'attribution des adresses ip ou alors même de l'enlever du démarrage (grâce à ton script, ce n'est pas un grand problème de le lancer par la suite)?
0