Serveur Installer/configurer/activer un parefeu via iptables

Bonjour,

Il me répond

root@debian:~# iptables -A OUTPUT -o $interface_LAN -p TCP --dport 445 -j ACCEPT # Port 445 (Samba) Bad argument `TCP' Try `iptables -h' or 'iptables --help' for more information. root@debian:~#
Faut il que je remplace “$interface_LAN” par “$interface” qui est dans votre script ou carêment par “eth0”

Pour Asterisk, es-ce correct comme ceci :

iptables -A INPUT -p udp --dport 5060 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

mais faut il aussi ouvrir le port 5061, 5062, etc… suivant le nombre de clients a connecter sur asterisk ( en UDP ou TCP pour les clients) ???

Merci.

[quote=“xunil2003”]…
fermer un port tcp

fermer un port udp


[/quote]
Encore une fois, tu n’as pas lu TOUT ce qui est écrit dans le tuto.
Pour fermer un port, ce n’est pas ça, tu dois “supprimer” la ligne.
Donc, il faut connaitre cette ligne et c’est écrit comment faire dans le tuto :laughing:

Bonjour,

si je l’ai lu il est dit que c’est la même chose que pour ajouter un port et qu’il faut utilisé la -D au lien du -A ( -A : ouvrir / -D : ferme le port).

Mais je ne comprends pas pourquoi moi j’ai “INPUT” pour ouvrir un port et Leo-25 me dit “OUTPUT” pour ouvrir un port pour son script ???
Sinon si je fais “INPUT” pour ouvrir le port de samba , non ???
Merci.

Désolé, je me suis trompé dans mes copier/coller des règles… C’est rectifié.

Pour fermé un port, il suffit de supprimé ou commenter la règle qui ouvre le port en question, puisque par défaut tout est fermé en INPUT. Pour cela il faut édité le script puis, après modif le relancer

Le -D, je ne l’ai jamais utilisé pour faire ça.

Bonjour,

[quote]Pour supprimé l’ouverture d’un port, il faut la commenter avec un # devant ou simplement le supprimé. ensuite redémarrage d’iptables et c’est bon.
Sinon, pour samba ajoute :

Code:
iptables -A INPUT -p TCP --dport 445 -j ACCEPT # Port 445 (Samba)
iptables -t filter -A INPUT -p TCP --dport 139 -j ACCEPT # Port 139 (Samba)
iptables -t filter-A INPUT -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba)[/quote]

Donc je dois ajouter ceci dans le script et non pas un par un dans le terminal en root et le relancer via # service iptables restart
Dans le script je l’ajoute en dessous des lignes :

#Si on souhaite utiliser Jabber iptables -t filter -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

On ne peut pas ajouter/supprimer directement depuis le terminal un port il faut créer un script si je comprends bien ?

Es-ce correct ?

Merci.

[quote=“xunil2003”]Bonjour,

Donc je dois ajouter ceci dans le script et non pas un par un dans le terminal en root et le relancer via # service iptables restart

On ne peut pas ajouter/supprimer directement depuis le terminal un port il faut créer un script si je comprends bien ?

Es-ce correct ?

Merci.[/quote]

Le script est lancé au démarrage de la machine, c’est pour cela qu’il faut modifier le script /etc/init.d/iptables. Un fois que tu à modifier ton script, tu le relance avec la commande # service iptables restart pour que la modif soie prise en compte sans redémarrer la machine.

[quote=“xunil2003”]Dans le script je l’ajoute en dessous des lignes :

#Si on souhaite utiliser Jabber iptables -t filter -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT[/quote]
Non, la commande ce fait en terminal. Si tu veux ouvrir d’autre port ( comme ceux de samba ), c’est bien la qu’il faut rajouter les lignes… Mais le “service iptables restart” ce fait uniquement en terminal.

Bonsoir,

c’est plutôt contradictoire.

1/ Ecrit par leo-25

[quote]xunil2003 a écrit:
Bonjour,

Donc je dois ajouter ceci dans le script et non pas un par un dans le terminal en root et le relancer via
Code:

service iptables restart

On ne peut pas ajouter/supprimer directement depuis le terminal un port il faut créer un script si je comprends bien ?

Es-ce correct ?

Merci.

Le script est lancé au démarrage de la machine, c’est pour cela qu’il faut modifier le script /etc/init.d/iptables. Un fois que tu à modifier ton script, tu le relance avec la commande
Code:

service iptables restart

pour que la modif soie prise en compte sans redémarrer la machine.[/quote]

2/ Ecrit par leo-25

[quote]xunil2003 a écrit:
Dans le script je l’ajoute en dessous des lignes :
Code:
#Si on souhaite utiliser Jabber
iptables -t filter -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT

Non, la commande ce fait en terminal. Si tu veux ouvrir d’autre port ( comme ceux de samba ), c’est bien la qu’il faut rajouter les lignes… Mais le “service iptables restart” ce fait uniquement en terminal.[/quote]

En 1) vous me dite qu’il faut modifier le script et maintenant en 2) vous me dite qu’il faut le faire depuis le terminal . mais que c’est bien là qu’il faut rajouter les lignes pour Samba et que pour redémarrer le pare-feu il faut le faire depuis le terminal, là je suis d’accord pour redémarrer le pare-feu, mais cela dit tout ça et contradictoire niveau réglage ajout / suppression de port.

Donc j’ai insérer après les lignes

#Si on souhaite utiliser Jabber iptables -t filter -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT ceci

# Samba iptables -A INPUT -p TCP --dport 445 -j ACCEPT # Port 445 (Samba) iptables -t filter -A INPUT -p TCP --dport 139 -j ACCEPT # Port 139 (Samba) iptables -t filter-A INPUT -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba) Puis j’ai redémarrer le parefeu

[code]root@debian:~# service iptables restart
iptables v1.4.8: no command specified
Try iptables -h' or 'iptables --help' for more information. Bad argumentINPUT’
Try iptables -h' or 'iptables --help' for more information. ############ <START> ############## Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5222 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:445 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:139 LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix[INPUT DROP]:’

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all – 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all – 0.0.0.0/0 0.0.0.0/0
############ ##############
firewall IPv4 redémarré
root@debian:~#[/code]
Du coup pour asterisk je sais pas si je dois faire pareil que samba y insérer dans le script a la ligne des autres précédemment insérés

iptables -A INPUT -p udp --dport 5060 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
ou plutôt depuis le terminal ?

Merci

Sur la ligne :

il manque un espace entre “filter” et “-A” d’ou l’erreur au redémarrage…et la non prise en compte de celle-ci

Pour les lignes :

iptables -A INPUT -p udp --dport 5060 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

même chose que pour samba puis redémarrage du script. En gros, on lance dans le terminal que la/les commande de redémarrage / stop / start du script. Si on veux ajouter/supprimé une règle on édit le script…

petite remarque :

A quoi sert le “-m UDP” dans la ligne :

Il serait utile de poster le script final au complet histoire de vérifier si il n’y a pas d’erreur…

Désolé, je suis peut être pas très claire dans mes explications…

Bonsoir,

J’ai rectifié la ligne avec un espace.

iptables -t filter -A INPUT -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba) j’ai pas fait attention.

Ecrit par leo-25

[quote]A quoi sert le “-m UDP” dans la ligne :

iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT[/quote] je ne sais pas à quoi ça sert l’option “-m udp” exactement, je l’ai vu dans le tuto de Asterisk pour la Freephonie ici -----> freephonie.org/doku/tutoriel:asterisk

Ecrit par leo-25

Oui je suis d’accord de tester le script au final une fois terminé.

Encore une fois, merci.

retourne à l’école pour apprendre à lire :smiley:

[quote]-- Enlever une règle :
taper ce qui suit pour connaître le numéro de ligne de cette règle
iptables -L --line-numbers
puis taper
iptables -D INPUT (ou FORWARD) N° (où ‘N°’ doit être le chiffre ou nombre en tête de la ligne à supprimer)[/quote]

Il n’est pas écrit le N° du port

Bonjour,

j’ai terminé mon script final pour mon firewall, cependant quand je redémarre iptables j’ai un message :

iptables v1.4.8: no command specified Try `iptables -h' or 'iptables --help' for more information.

Redémarrage d’iptables

[code]root@debian:~# service iptables restart
iptables v1.4.8: no command specified
Try iptables -h' or 'iptables --help' for more information. ############ <START> ############## Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5222 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:445 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:139 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:137:138 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:5060 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:10000:20000 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4661 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4664 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4674 LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix[INPUT DROP]:’

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all – 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all – 0.0.0.0/0 0.0.0.0/0
############ ##############
firewall IPv4 redémarré
root@debian:~# [/code]

Iptables

[code]root@debian:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all – anywhere anywhere
DROP icmp – anywhere anywhere
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
ACCEPT tcp – anywhere anywhere tcp dpt:ftp
ACCEPT tcp – anywhere anywhere tcp dpt:ftp-data
ACCEPT tcp – anywhere anywhere tcp dpt:www
ACCEPT tcp – anywhere anywhere tcp dpt:ipp
ACCEPT tcp – anywhere anywhere tcp dpt:xmpp-client
ACCEPT tcp – anywhere anywhere tcp dpt:microsoft-ds
ACCEPT tcp – anywhere anywhere tcp dpt:netbios-ssn
ACCEPT udp – anywhere anywhere udp dpts:netbios-ns:netbios-dgm
ACCEPT udp – anywhere anywhere udp dpt:sip
ACCEPT udp – anywhere anywhere udp dpts:10000:20000
ACCEPT tcp – anywhere anywhere tcp dpt:4661
ACCEPT udp – anywhere anywhere udp dpt:4664
ACCEPT udp – anywhere anywhere udp dpt:4674
LOG all – anywhere anywhere LOG level warning prefix `[INPUT DROP]:’

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all – anywhere anywhere
root@debian:~#
[/code]

Script firewall

root@debian:~# cat -n /etc/init.d/iptables 1 #!/bin/sh 2 3 ### BEGIN INIT INFO 4 # Provides: chillispot et freeradius dans le chroot 5 # Required-Start: $local_fs $network 6 # Required-Stop: $local_fs $remote_fs 7 # Default-Start: S 8 # Default-Stop: 0 1 6 9 # Short-Description: Wireless & LAN Access Point Controller 10 # Description: ChilliSpot is an open source captive portal 11 # or wireless LAN access point controller. 12 ### END INIT INFO 13 14 #Déclaration interface 15 interface=eth0 16 17 start() { 18 19 # Vider les tables actuelles 20 iptables -t filter -F 21 22 # Vider les règles personnelles 23 iptables -t filter -X 24 25 # Interdire toute connexion entrante et sortante 26 iptables -t filter -P INPUT DROP 27 iptables -t filter -P FORWARD DROP 28 iptables -t filter -P OUTPUT ACCEPT 29 30 # Ne pas casser les connexions etablies 31 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 32 iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 33 34 # Autoriser loopback 35 iptables -t filter -A INPUT -i lo -j ACCEPT 36 iptables -t filter -A OUTPUT -o lo -j ACCEPT 37 38 # ICMP (Ping) 39 iptables -t filter -A INPUT -p icmp -j DROP 40 # SSH In 41 iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT 42 iptables -t filter -p tcp --dport 22 -j LOG --log-prefix '[SSH_INPUT]:' 43 44 #Si on veut un serveur FTP 45 iptables -t filter -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT 46 iptables -t filter -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT # port FTP DATA 47 #Si on souhaite installer un serveur Web 48 iptables -t filter -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # faire de même avec le 443 si on veux du https 49 #Si on veut rendre CUPS accessible 50 iptables -t filter -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT 51 #Si on souhaite utiliser Jabber 52 iptables -t filter -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT 53 #Si on veut rendre Samba accessible 54 iptables -A INPUT -p TCP --dport 445 -j ACCEPT # Port 445 (Samba) 55 iptables -t filter -A INPUT -p TCP --dport 139 -j ACCEPT # Port 139 (Samba) 56 iptables -t filter -A INPUT -p UDP --dport 137:138 -j ACCEPT # Port 137 a 138 (Samba) 57 #Si on veut rendre Asterisk accessible 58 iptables -A INPUT -p udp --dport 5060 -j ACCEPT 59 iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT 60 #Si on veut rendre Amule accessible 61 iptables -A INPUT -i eth0 -p TCP --dport 4661 -j ACCEPT # AAAA (Pot TCP Standard : 4661 ) 62 iptables -A INPUT -i eth0 -p UDP --dport 4664 -j ACCEPT # BBBB (Port UDP pour requêtes des serveurs : 4661 + 3 ) 63 iptables -A INPUT -i eth0 -p UDP --dport 4674 -j ACCEPT # CCCC (Port UDP étendu (recherche Kad / glaobale : 4674) 64 # AAAA est le port TCP entrant, BBBB=AAAA+3 et CCCC le port UDP entrant. Dans la configuration par défaut de amule, ces ports sont AAAA=4662, BBBB=4665 et CCCC=4672. 65 66 ############################################ LOG ################################################ 67 # Log tous ce qui qui n'est pas accepter par une règles précédente 68 # prés requit : sudo apt-get install sysklogd 69 # echo 'kern.warning /var/log/iptables.log' > /etc/syslog.conf 70 iptables -A INPUT -j LOG --log-level 4 --log-prefix '[INPUT DROP]:' 71 echo "############ <START> ##############" 72 iptables -L -n # commanter pour desactiver l'afichage des règles en cours 73 echo "############ </START> ##############" 74 ################################################################################################# 75 76 } 77 78 stop() { 79 iptables -t filter -F 80 iptables -t filter -X 81 iptables -t filter -P INPUT ACCEPT 82 iptables -t filter -P FORWARD ACCEPT 83 iptables -t filter -P OUTPUT ACCEPT 84 } 85 86 case "$1" in 87 88 start) 89 start 90 echo "firewall IPv4 démarré" 91 ;; 92 93 stop) 94 stop 95 echo "firewall IPv4 stopé" 96 ;; 97 restart) 98 stop && start 99 echo "firewall IPv4 redémarré" 100 ;; 101 status) 102 status 103 /sbin/iptables -L -n 104 RETVAL=? 105 ;; 106 *) 107 echo "Usage $0 {start|stop|restart|status}" 108 exit 1 109 esac 110 111 exit 0 root@debian:~#

Merci.

iptables-save :013

Ligne 42, il manque “-A INPUT”.
Par ailleurs, cette règle ne serait de toute façon jamais appliquée puisque la règle précédente a déjà accepté le même paquet, donc le parcours de la chaîne s’arrête. Une règle LOG doit être placée avant la règle DROP, ACCEPT, REJECT, DNAT… correspondante car ces cibles sont “terminales”.

[quote=“PascalHambourg”]Ligne 42, il manque “-A INPUT”.
Par ailleurs, cette règle ne serait de toute façon jamais appliquée puisque la règle précédente a déjà accepté le même paquet, donc le parcours de la chaîne s’arrête. Une règle LOG doit être placée avant la règle DROP, ACCEPT, REJECT, DNAT… correspondante car ces cibles sont “terminales”.[/quote]

+1 Pascal