Voici le script que je compte utiliser pour configurer iptables
# Allow outgoing traffic and disallow any passthroughs

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Allow traffic already established to continue

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow ssh, and web services

iptables -A INPUT -p tcp --dport ssh -i eth0 -j ACCEPT
#iptables -A INPUT -p tcp --dport domain -i eth0 -j ACCEPT
#iptables -A INPUT -p tcp --dport ldap -i eth0 -j ACCEPT
#iptables -A INPUT -p udp --dport ldap -i eth0 -j ACCEPT
#iptables -A INPUT -p tcp --dport ftp -i eth0 -j ACCEPT
#iptables -A INPUT -p udp --dport ftp -i eth0 -j ACCEPT
#iptables -A INPUT -p tcp --dport ftp-data -i eth0 -j ACCEPT
#iptables -A INPUT -p udp --dport ftp-data -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT

# Allow local loopback services

iptables -A INPUT -i lo -j ACCEPT

# Allow pings

iptables -I INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -I INPUT -p icmp --icmp-type source-quench -j ACCEPT
iptables -I INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
Sachant que l'ordre des lignes est important, où dois-je ajouter les lignes pour configurer samba et le contrôle à distance ?

De plus cette configuration (trouvée sur le net) convient-elle pour l'utilisation que je compte faire de la machine ?

Voici les ouvertures de port que je compte utilisé pour samba :
iptables -A INPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT
iptables -A INPUT -m state --state NEW -p TCP --dport 138 -j ACCEPT
iptables -A INPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT
iptables -A INPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT
Allez va, c'est bien par ce que j'attend que mon server Centos se finisse.



Voila ton fichier firewall pour tes services demandé est là!


#Pour ssh
echo 'Port choisi_un_port' >> /etc/ssh/sshd_config
echo 'PermitRootLogin no' >> /etc/ssh/sshd_config
echo 'AllowUsers ton_login@ton_domain_noip' >> /etc/ssh/sshd_config


#Pour http
ServerSignature Off dans /etc/http/conf/httpd.conf




Attention tu n'a pas parler de dns ou dhcp pour ton lan, je suppose donc que ses services ou d'autres, tournent sur une autre machine en interne !!


N'oublie pas, pour un accès exterieur tu doit nater sur ta box les ports vers ton serveur.

Pour un scp ou ssh n'oublie pas de faire -P ton_port
Exemple:
scp -pr -P ton_port /home/mon_partage/ user@mondomain_noip:/home/destination/
ssh -P ton_port user@mondomain_noip

Sinon tu à également une interface gui sur ta Fedora. Mais je ne pourait pas t'aider, car je ne travail qu'en ligne de commande et je n'ai jamais utilisé cette gui. Il va falloir demander a quelqu'un d'autre. Sinon tu a également plein de tuto sur iptables "voir avec google"

#!/bin/sh

rm /root/.bash_history -f

echo 1 > /proc/sys/net/ipv4/ip_forward

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
  for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
  do
    echo 1 > $filtre
  done
fi

if [ -e /proc/sys/net/ipv4/ipv4/ip_queue_maxlen ]; then
    echo "2048" > /proc/sys/net/ipv4/ip_queue_maxlen
  fi

if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then
         echo "Enabling ECN (Explicit Congestion Notification)."
      echo "1" > /proc/sys/net/ipv4/tcp_ecn
   fi

echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter;
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians;
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects;
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route;
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects;
echo 1 > /proc/sys/net/ipv4/tcp_syncookies;
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog;
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses;
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all;
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts;
echo "10" > /proc/sys/net/ipv4/tcp_fin_timeout;
echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time;
echo "0" > /proc/sys/net/ipv4/tcp_window_scaling;
echo "0" > /proc/sys/net/ipv4/tcp_sack;
echo "64" > /proc/sys/net/ipv4/ip_default_ttl;
echo 1 > /proc/sys/net/ipv4/ip_dynaddr;


iptables -F;
iptables -X;
iptables -t nat -F;

iptables -F INPUT;
iptables -F FORWARD;
iptables -F OUTPUT;

iptables -t nat -P PREROUTING ACCEPT;
iptables -t nat -P POSTROUTING ACCEPT;
iptables -t nat -P OUTPUT ACCEPT;

iptables -P INPUT DROP;
iptables -P FORWARD DROP;
iptables -P OUTPUT DROP;

lan='192.168.1.0/24'  ## ton lan à modifier
time='-m time --timestart 7:00 --timestop 1:30 --weekdays Mon,Tue,Wed,Thu,Fri,Sat,Sun' ## tes horaires et jours de semaine
noip='ton domaine' ## à modifier
port_ssh='ton_port' ## à modifier

iptables -t nat -I PREROUTING -s $noip -p tcp --dport 5900 $time -j DNAT --to-destination ip_de_ton_server:5900;
iptables -t nat -I PREROUTING -s $noip -p tcp --dport $port_ssh $time -j DNAT --to-destination ip_de_ton_server:$port_ssh
iptables -t nat -I PREROUTING -s $noip -p tcp --dport 80 $time -j DNAT --to-destination ip_de_ton_server:80



iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP;
iptables -A INPUT -i lo -j ACCEPT;
iptables -A INPUT -p tcp --dport 445 -s $lan $time -m state --state NEW,RELATED,ESTABLISHED,UNTRACKED -j ACCEPT;
iptables -A INPUT -p tcp --dport 5900 -s $noip -m state --state NEW,RELATED,ESTABLISHED,UNTRACKED -j ACCEPT;
iptables -A INPUT -p tcp --dport $port_ssh -s $noip -m state --state NEW,RELATED,ESTABLISHED,UNTRACKED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s $noip -m state --state NEW,RELATED,ESTABLISHED,UNTRACKED -j ACCEPT;
iptables -A INPUT -j DROP;

iptables -A FORWARD -j DROP;

iptables -A OUTPUT -o lo -j ACCEPT;
iptables -A OUTPUT -p tcp --sport 445 -d $lan -m state --state RELATED,ESTABLISHED -j ACCEPT;
iptables -A OUTPUT -p tcp --sport 5900 -d $noip -m state --state RELATED,ESTABLISHED -j ACCEPT;
iptables -A OUTPUT -p tcp --sport $port_ssh -d $noip -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -d $noip -m state --state RELATED,ESTABLISHED -j ACCEPT;
iptables -A OUTPUT -j DROP;


Yum57
Attention, le noip que je te dit c'est ton identification de l'exterieur pour te connecter au serveur. Ce n'est pas l'identification du domain de ton serveur.

mais je pense que tu a du comprendre;-)

Yum57
Oui le DNS et DHCP sont assuré par mon modem/routeur (box fournie par mon provider internet). Donc pas de problème de ce côté-là et la box est bien "natée".

Quel est le but de toute les commandes au début du script avant les commandes liées à iptables ?

Ces commandes m'intriguent.

Je ne vois que le port 445 pour ce qui concerne samba or SAMBA utilise également les port 137,138 et 139. Est-ce 1 oublie de ta part ?

P.S.: Dans 1 premier je vais effectuer la configuration sans activer ce qui concerne SSH car ce n'est pas le + urgent. Donc je vais mettre en commentaire les lignes concernées temporairement.
Quel est le but de toute les commandes au début du script avant les commandes liées à iptables ?
A tu regarder sur google ?

Il y a plein de site pour comprendre regarde:

ici
ici
et ici
et encore ici

on ne le dit jamais assez, google est ton ami
Je ne vois que le port 445 pour ce qui concerne samba or SAMBA utilise également les port 137,138 et 139. Est-ce 1 oublie de ta part ?
A tu essayer d'initialiser une connection juste avec le port 445 ?

fait un mount de ton partage sur /mnt et donne le résultat.

Yum57
Merci pour toute ces infos.

Dés que j'aurai réinstallé le PC je testerai cette configuration.
yum57,

Voila je viens de tenter d'utiliser la configuration que tu m'as fournie mias j'ai l'impression que j'ai du louper quelque chose.

Car à l'exécution, je reçois 1 message d'erreur concernant noip.

A partir de ce moment-là, l'entierté du PC n'a plus accès à internet.

Voici le message d'erreur :
iptables v1.4.10: host/network `XXX' not found
Dans ce code, j'ai remplacé ma véritable identification par 'xxx" pour des raisons de sécurité sur le forum (on est jamais trop prudent). Mais le script possède la bonne valeur. Et le host/network posant problème est celui de no-ip.

Merci encore pour l'aide.
lionelh,

Merci de mettre ton fichier iptables complet stp! "sans ton nom de domaine noip"


Merci,

Yum57
Pour faire simple, et propre, oublie les scripts tu as un fichier de configuration pour iptables => /etc/sysconfig/iptables
Normalement celui-ci par défaut n'autorise que le port 22 (ssh). Tu peux donc y ajouter le port 80 et tout ce qui concerne samba pour ton reseau local. Je te donne un exemple d'un fichier qui fait ça:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# On accepte les connexions etablies ou en rapport avec une existante
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# On accepte les paquets ICMP
-A INPUT -p icmp -j ACCEPT

# On ne filtre pas le loopback
-A INPUT -i lo -j ACCEPT

# SSH 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# HTTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

# SAMBA sur reseau 192.168.1.*
-A INPUT -m state --state NEW -m udp -p udp --dport 137:138 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 1900 -s 192.168.1.0/24 -j ACCEPT

# On bloque le reste
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

C'est tout simple 😉 Une fois le fichier modifié, il suffit de relancer le service iptables
service iptables restart
Il y a la même chose pour ip6tables (si tu as de l'ipv6).
lionelh wrote: Maintenant que le décor est planté, voici ma question : Quelles règles doivent configuré au niveau de iptables pour que tout cela fonctionne ?
J'arrive après la guerre mais sortir la grosse artillerie de la ligne de commande pour un truc qui se fait en 3 cliques sans soucis avec system-config-firewall je dis : je suis pas fan des GUI mais là c'est un peu perdre du temps si on connait pas les iptables assez bien !
MarbolanGos wrote:
lionelh wrote: Maintenant que le décor est planté, voici ma question : Quelles règles doivent configuré au niveau de iptables pour que tout cela fonctionne ?
J'arrive après la guerre mais sortir la grosse artillerie de la ligne de commande pour un truc qui se fait en 3 cliques sans soucis avec system-config-firewall je dis : je suis pas fan des GUI mais là c'est un peu perdre du temps si on connait pas les iptables assez bien !
La GUI, j'ai testé mais sans résultat. Car bien que le port 80 soit ouvert, je n'arriver toujours pas à accéder à mon PC depuis internet 1 fois que iptables est actif.

Pour ce qui des 2 propositions (celle de yum57 et celle de madko), celle-ci se sont également révélées infructueuse. Car dés que j'active iptables, alors je n'arrive plus à accéder à mon site web depuis internet.

Voici le contenu du fichier /etc/sysconfig/iptables tel quel est actuellement configurer sur la machine :
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# On accepte les connexions etablies ou en rapport avec une existante
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# On accepte les paquets ICMP
-A INPUT -p icmp -j ACCEPT

# On ne filtre pas le loopback
-A INPUT -i lo -j ACCEPT

# SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# HTTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

# SAMBA sur reseau 192.168.1.*
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 1900 -s 192.168.1.0/24 -j ACCEPT

# On lboque le reste
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Je dois bien vous avouer que ce firewall commence à devenir ennuyant !
Enleve la ligne ouput pour le port 80 de ce fichier, elle ne sert à rien. Relance le service iptables et donne nous la sortie de la commande "iptables -L -v". Avec des règles comme celles-ci, juste niveau pare feu, c'est obligé que ça passe.
C'est bon la configuration est maintenant correcte.

Merci encore pour votre aide.

hlionel