Iptables et log sur ecran

Résolu
Bonjour,

J'ai mi en place une passerelle internet au boulot qui marche nickel au niveau du filtrage, cependant j'ai un petit soucis.

Lorsque mon script iptable est lancé tout mes paquets dropés apparaissent sur l'ecran et je dois avouer que c'est assez genant quand on veut faire une manipulation sur la machine directement. Une astuce que j'ai j'ai trouvé c'est d'arreter soit mon firewall soit les interfaces reseaux mais c'est pas l'ideal.

J'ai essayer de modifier les log-level mais le probleme persistait, j'ai aussi essayer de passer syslog en modifiant la destination des logs du kernel mais rien a faire.

Peut etre que je mis suis mal pris pourtant je me suis basé sur differents articles que j'ai pu trouvé sur le net.
Alors si quelqu'un avait un solution pour faire disparaitre ces informations de l'ecran ca m'arrangerait enormement.

Pour info, la passerelle tourne sur une debian etch 40r1 completement a jour.

Merci d'avance :)
Configuration: Windows XP
Opera 9.23

13 réponses

  1. Je crois avoir resolu mon probleme.

    En fait j'ai profiter d'un moment d'inutilisation de la passerelle pour la rebooter et l'inscription dans les fichiers de log est repartie.

    J'ai aussi passer dans iptables le --log-level a debug, il n'apparaissent plus sur l'ecran et conformement a syslog ils sont maintenant dans le fichier /var/log/debug.

    Ce n'est pas encore idealement ce que je souhaiterai mais pour le moment je vais me contenter de cette configuration.

    Merci a ceux qui auront pris la peine de m'aider :)

    A bientot
    1. J'ai l'impression que le problème n'est pas spécifiquement lié à iptables, mais au noyau et à ses appels modifiables dans /proc :

      man proc

      C'est un problème que j'ai déjà rencontré: genre un cd illisible, une clé usb mal formatée, et les messages du noyau envahissent tous les écrans de toutes les consoles, qui deviennent inutilisables.

      Je suis preneur de la solution; peut-être du côté de /proc/sys/kernel/printk comme cité plus haut ?

      :-)
      1. Merci pour le lien j'ai pas du taper les bon mots dans google :D

        Je regarderai ca de plus pres demain c'est toujours bon pour sa culture perso :)
        1. Voilà l'idée : c'est parti d'ici :

          How do I stop iptables logging to the console
          https://lists.samba.org/archive/linux/2002-January/001726.html

          j'avoue que c'est juste pour aider n'y connaissant rien ! Désolé mais c'est anglais !

          2002 c'est un peu vieux mais je retrouve les mêmes choses sur mon noyau 2.6.22.6. On y parle de voir du côté du fichier dont je parlais plus haut ! (lire toutes les réponses car une autre solution est indiquée dans ce même lien).

          et ce passage intéressant :
          The four numbers in /proc/sys/kernel/printk control the ``verbosity'' level of the printk kernel function, and the first number is the console_loglevel: kernel messages with priority less than or equal to the specified one will be printed to the system console (the active virtual console, unless you changed it). The parameter doesn't affect operation of klogd, which received all the messages in any case. The following commands show how to change the loglevel:

          morgana.root# cat kernel/printk
          6 4 1 7
          morgana.root# echo 8 > kernel/printk
          morgana.root# cat kernel/printk
          8 4 1 7

          a level of 8 corresponds to debugging messages: they are not printed on the console by default, but the previous session changes the behaviour to print every message, even the debugging ones..

          source : http://www.linux.it/~rubini/docs/sysctl/

          Voilà en recoupant les infos ...si ça peut aider.

          bon courage.

          :-))

          1. Je suis plus chez moi actuellement
            Je regarderais ca demain quand j'aurai le temps :)
            1. Bonjour,

              Qu'indique le fichier proc/sys/kernel/printk
              chez moi
              [root@bob ~]# cat /proc/sys/kernel/printk
              3       4       1       7
              [root@bob ~]#  


              :-))
              1. Mes logs arrivent bien dans syslog, ils sont inscrits dans /var/log/messages et pendant un temps dans /var/log/iptables suite a ma redirection. Parallelement a cette inscription les logs s'affichaient egalement sur la console ce qui est vraiment genant quand je dois manipuler physiquement sur la passerelle.

                Heureusement je crois etre arrivé a stopper l'affichage des logs sur la console en passant --log-level a debug mais ( y'a toujours un mais ^^ ) j'ai l'impression que j'ai plus du tout d'inscription dans les fichiers de logs :s
                1. Si ma mémoire est bonne, c'est plus le
                  RELATED
                  qui est utile à ftp (lancement d'une autre connexion sur un autre port lors d'une transfert, ou après validation de la connexion, je crois)
                  Pour
                  ESTABLISHED
                  c'est pour éviter que les réponses à une demande de connexion ne soient bloquées, ou que les connexions déjà existantes le soient aussi. Tout ceci est évidemment à vérifier (je n'ai pas de pc sous Linux à triturer sous la main).

                  Quand au log-level, c'est certainement là dedans que le problème réside, mais personnellement, sous debian etch et sid, je n'ai jamais mis aucun log-level explicitement et tous les logs arrivaient sur syslog...

                  Bonne investigation,

                  c-moi
                  1. Pour le log-level j'ai essayer un peu tout warn, warning, info etc ... mais le resultat n'etait toujours pas ce que je voulais. J'avait un doute a un moment sur ma syntaxe mais je crois que de ce coté la c'est bon.

                    Dans le fichier de conf de syslog, j'ai positionner un peu partout le kern.=warn mais l'affichage se fesai toujours sur la console. Je viens de me rendre compte que ma redirection vers un autre fichier que /var/log/messages que j'avais fait a fonctionner jusqu'a il y a pas tres longtemps parce que la derniere ecriture qui a ete faite dans le fichier /var/log/iptables date d'aujourdhui a 12h39.

                    Ca ne regles pas le probleme meme si je cherchais parallelement a changer de fichier aussi :)

                    Les related established j'en ai mis un peu a toutes les sauces, il faudrai que je replonge dans les proto pour ameliorer ca mais il me semble que reellement il n'y a besoin d'un related que pour le ftp actif.

                    Je vais essayer de jouer encore avec les logs-level de iptables parce que je sens que je suis pas loin de la solution :)
                    1. Re bonjour,

                      as tu essayé sans le --log-level warn ? A noter qu'il vaut mieux utiliser warning que warn (cf https://inetdoc.net/guides/iptables-tutorial/logtarget.html ). Regarde au cas où ton fichier /var/syslog.conf pour voir si tu as une règle au niveau kern.=warning

                      Sinon, je ne sais plus s'il y a une notion d'état de connexion pour le protocole ICMP, au sujet du
                       -m state --state NEW,ESTABLISHED,RELATED
                      mais rien de bien grave.

                      Tu pourrais, peut être, directement autoriser les connexions déjà existantes (
                       -m state --state ESTABLISHED,RELATED
                      ) par défaut, non ?

                      c-moi
                      1. Alors le script ca donne ca

                        #
                        echo -e "\n [ Mise en place de regles Iptables ]"

                        #
                        # On vide les regles actuellement en place

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

                        #
                        # On met en place un firewall, alors le but est de tout bloquer
                        # On place les politiques par defaut a DROP

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

                        #
                        # Et on ajoute explicitement ce qu'on autorise

                        #
                        # Tout d'abord on autorise le traffic sur la boucle local
                        # pour le bon fonctionnement de la machine en elle meme.

                        iptables -A INPUT -i lo -j ACCEPT
                        iptables -A OUTPUT -o lo -j ACCEPT

                        #
                        # On autorise le ping vers l'exterieur

                        iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -p icmp --icmp-type 8 -j ACCEPT
                        iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p icmp --icmp-type 0 -j ACCEPT

                        #
                        # On autorise le ping vers le reseau local

                        iptables -A OUTPUT -o eth1 -d x.x.x.x/24 -m state --state NEW,ESTABLISHED,RELATED -p icmp --icmp-type 8 -j ACCEPT
                        iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -p icmp --icmp-type 0 -j ACCEPT

                        #
                        # On autorise le ping depuis l'exterieur

                        # iptables -A INPUT -i eth0 -s x.x.x.x/24 -m state --state NEW,ESTABLISHED,RELATED -p icmp --icmp-type 8 -j ACCEPT
                        # iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -p icmp --icmp-type 0 -j ACCEPT

                        #
                        # On autorise la resolution de noms

                        iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 53 -j ACCEPT
                        iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -j ACCEPT
                        iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 53 -j ACCEPT
                        iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p udp --sport 53 -j ACCEPT

                        #
                        # On autorise la consultation de pages web

                        iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport www -j ACCEPT
                        iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --sport www -j ACCEPT

                        #
                        # On autorise la consultation de pages web securisees

                        iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport https -j ACCEPT
                        iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --sport https -j ACCEPT

                        #
                        # On autorise les connections ssh depuis l'exterieur

                        iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                        iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT

                        #
                        # Partie concernant le LAN
                        #

                        #
                        # Partage de connexion
                        #

                        #
                        # On active la translation d'adresse

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

                        #
                        # On cache le LAN derriere l'adresse IP public du serveur
                        # Sinon les machines communiqueraient vers l'exterieur avec
                        # leur adresse privee

                        iptables -t nat -A POSTROUTING -s x.x.x.x/24 -j MASQUERADE

                        #
                        # Fin du partage de connexion
                        #

                        #
                        # On autorise les requetes DNS provenant du LAN

                        iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                        iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                        iptables -A FORWARD -i eth0 -o eth1 -p tcp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
                        iptables -A FORWARD -i eth0 -o eth1 -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

                        # On autorise les machines du LAN a consulter les pages web

                        iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                        iptables -A FORWARD -i eth0 -o eth1 -p tcp --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT

                        #
                        # On met en place un proxy transparent pour les utilisateur du LAN

                        # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.26.0.1:3128

                        #
                        # On autorise les machines du LAN a consulter les pages web securisees

                        iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport https -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                        iptables -A FORWARD -i eth0 -o eth1 -p tcp --sport https -m state --state ESTABLISHED,RELATED -j ACCEPT

                        #
                        # On autorise les machines du LAN a acceder aux sites ftp ( mode actif )

                        # iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --dports ftp,ftp-data -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                        # iptables -A FORWARD -i eth0 -o eth1 -p tcp -m multiport --sports ftp,ftp-data -m state --state ESTABLISHED,RELATED -j ACCEPT

                        #
                        # On autorise le ping depuis le reseau local

                        iptables -A INPUT -i eth1 -d x.x.x.x -m state --state NEW,ESTABLISHED,RELATED -p icmp --icmp-type 8 -j ACCEPT
                        iptables -A OUTPUT -o eth1 -m state --state ESTABLISHED,RELATED -p icmp --icmp-type 0 -j ACCEPT

                        #
                        # On autorise les connections ssh depuis le LAN

                        iptables -A INPUT -i eth1 -p tcp --dport 22 -s x.x.x.x/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                        iptables -A OUTPUT -o eth1 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT

                        #
                        # On prepare iptables pour l'utilisation de logs

                        iptables -N LOG_DROP
                        iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP : ] ' --log-level warn
                        iptables -A LOG_DROP -j DROP

                        #
                        # On log ce qui a ete droppé

                        iptables -A INPUT -j LOG_DROP
                        iptables -A OUTPUT -j LOG_DROP
                        iptables -A FORWARD -j LOG_DROP

                        echo -e " [ Terminé ]\n"

                        Je sais qu'il est pas parfait mais il a le merite de fonctionner et je le paufinerai quand j'aurai un peu plus de temps. Je suis preneur de toute remarques pour l'amliorer :)
                        1. Bonjour,

                          pour avoir les logs dans syslog, voici les commandes iptables à utiliser :

                          # creation de la chaine de log :
                          iptables -N LOG_DROP

                          # mise en place du préfixe dans les logs (utile pour trier les logs)
                          iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '

                          # association de la règle à logguer
                          iptables -A LOG_DROP -j DROP

                          Ne pas oublier, en début de script, avec les divers iptables -F, un petit
                          iptables -X LOG_DROP

                          Normalement, tu devrais avoir directement les messages dans ton syslog, et non pas sur la console. Mais montre nous le script tout de même, comme l'a conseillé lami20j

                          En espérant avoir aidé,

                          c-moi