Table des matières Page précédente Page suivante

III-6 Un premier script simple

Comme vous vous devez vous en douter à ce niveau du document, le paramétrage de notre firewall va se résumer à taper un certain nombre de commandes "iptables". Et comme les règles de Netfilter sont perdues à chaque arrêt de la machine, il faudra tout recommencer à chaque fois que vous démarrerez votre ordinateur. Hein ? Quoi ? Il est fou ce type ? Nannn, je vous rassure, il y a un moyen simple de d'éviter cette galère. Il s'agit des scripts. Si vous savez déjà ce qu'est un script, passez au paragraphe suivant.

III-6-1 Un script ? Késako ?

Un script est un ensemble de commandes que l'ordinateur va exécuter à votre place. Il s'écrit tout simplement en copiant dans un fichier texte, les commandes que vous auriez tapé. D'ordinaire, un script est un fichier ne comportant pas d'extension. Mais pour les distinguer des fichiers classiques de votre disque, il est parfois utile de leur donner un extension. Contrairement à DOS® / Windows® et leurs fichiers ".bat" ou ".cmd", n'importe quelle extension peut être utilisée. Dans ce qui va suivre, je vais donc utiliser l'extension ".sh".

Voici un exemple de script très très simple :
[olivier@phoenix /]$ cat archives/scripts/exemple-01.sh
###############################################################################
# NOM : exemple-01.sh
#
# COMMENTAIRE : Simple exemple de script sh/bash
# 
# Créé le : 2003/07/01                    Dernière modification le : 2003/07/01
###############################################################################

# Les lignes commençant par un "#" sont des commentaires, elles ne sont donc pas
# affichées

echo "+ Bonjour lecteur"
echo "+ Nous somme le `date +%Y/%m/%d` (aaaa/mm/jj) et il est `date +%H:%M:%S`"
echo "+ Vous aimez les scripts ?"
Pour l'exécuter, il suffit de lancer la commande "sh exemple-01.sh", où "sh" est le nom du programme (on parle aussi du terme d'interpréteur), qui va exécuter ce script.
[olivier@phoenix /]$ sh archives/scripts/exemple-01.sh
+ Bonjour lecteur
+ Nous somme le 2003/07/01 (aaaa/mm/jj) et il est 15:51:32
+ Vous aimez les scripts ?
Mais taper la commande "sh ..." est un peu pénible, non ? Donc nous pouvons changer tout ceci en faisant quelques améliorations à notre script :

  • D'abord, rajoutons "#!/bin/sh" puis "#" aux deux premières lignes de notre script, comme dans l'exemple-02.sh.
  • Puis, rendons exécutable le script via la commande "chmod +x exemple-02.sh" (lire "man chmod" afin de comprendre en détail comment on rend exécutable un script).
  • Enfin, lançons le : ./exemple-02.sh . Notez bien le "./" en début de commande. Ou tapez le chemin absolue ou relatif de ce script ("archives/scripts/exemple-02.sh") dans notre exemple.
[olivier@phoenix /]$ cat archives/scripts/exemple-02.sh
#!/bin/sh
#
###############################################################################
# NOM : exemple-02.sh
#
# COMMENTAIRE : Simple exemple de script sh/bash
# 
# Créé le : 2003/07/01                    Dernière modification le : 2003/07/01
###############################################################################

# Les lignes commençant par un "#" sont des commentaires, elles ne sont donc pas
# affichées

echo "+ Bonjour lecteur"
echo "+ Nous somme le `date +%Y/%m/%d` (aaaa/mm/jj) et il est `date +%H:%M:%S`"
echo "+ Vous aimez les scripts ?"
[olivier@phoenix /]$ chmod +x archives/scripts/exemple-02.sh
[olivier@phoenix /]$ archives/scripts/exemple-02.sh
+ Bonjour lecteur
+ Nous somme le 2003/07/01 (aaaa/mm/jj) et il est 16:19:04
+ Vous aimez les scripts ?
Remarquez que, une fois que les bits d'exécution du fichier ont été activés (via la commande "chmod"), vous pouvez fort bien le lancer en double-cliquant dessus via votre gestionnaire de fichiers favoris : Konqueror, Nautilus, ou quoi que soit d'autre. Cependant, bon nombre de scripts rendent la main immédiatement une fois exécuté, et le gestionnaire de fichiers ferme en général le programme tout de suite. Donc vous n'aurez pas le temps de voir ce qui se passe, mis à part une fenêtre noire s'affichant furtivement. Bref, la meilleure solution reste le bon vieux Xterm, la Konsole, etc... Personnellement, j'ai toujours une Konsole d'ouverte, et vous ? Smiley

Reprenons notre sérieux : Le fait de changer le bit d'exécution est une opération qui peut être lourde de conséquence, surtout si vous utiliser le compte root pour lancer le script. D'une manière générale, je ne fais pas confiance aux scripts que je trouve sur Internet, à moins :
  • que le programme soit fait par quelqu'un de sérieux, ou par une personne que je connaisse.
  • ou que j'ai analysé le code, à la recherche de commandes endommageant mon système.
Et de toute façon, je redouble de prudence quand il s'agit d'exécuter un script en temps que root.

Bref, comme par la suite vous allez devoir lancer en temps que root des scripts que vous trouverez sur cette documentation, je vous encourage à vérifier auparavant qu'ils sont bien ce qu'ils sont supposés être. Si cela peut vous rassurer, j'ai lancé moi-même ces scripts sur ma machine en temps que root. Mais si vous ne voulez pas prendre le risque, je comprendrais parfaitement.

Bon, je ne vais pas rentrer plus dans les détails des scripts. Les capacités des scripts sont énormes, car se sont en fait des mini programmes. Vous pouvez même en trouver sur votre Linux qui sont de belle taille (ceux de "/etc/init.d/" sont pas mal) et qui ont énormément de possibilités. J'en propose moi même un dans cette documentation, dont l'explication se trouve dans le chapitre suivant.

Si vous voulez plus d'information sur les scripts, je vous conseille de rechercher sur Internet, ou tout simplement d'utiliser le "man sh" ou "man bash". Cependant, comme tout "man", la manière donc cela est écrit est un peu particulière, voir carrément pénible. Alors refaites votre stock d'aspirines ! Décidément, à force de lire ce document cela va finir par vous coûter cher, et faire la fortune de votre pharmacien ! Smiley

III-6-2 Iptables basique

Nous allons commencer par travailler exclusivement sur la table filter.

Bon, petit rappel sur LA règle de filtrage universellement reconnue :
  • Premièrement, vider toutes les chaînes de toutes les tables de Netfilter, afin de savoir exactement ce que l'on a dans notre firewall. Mais il ne faudra pas rester trop longtemps dans cette situation, car la machine sera sans aucune protection.
  • Deuxièmement, interdire par défaut tous les paquets. Pour cela, nous allons utiliser l'option "-P" ("Politique par défaut) des chaînes INPUT, FORWARD et OUTPUT de la table filter.
  • Dans un dernier temps, nous n'allons autoriser que certains flux bien particuliers.
  • Concernant l'ordre des règles : Lorsque nous appelons la commande "iptables" pour rajouter/supprimer des règles, l'ordre d'insertion de celles-ci à une certaine importance. Si une première règle supprime un certain type de paquets, une seconde règle écrite un peu plus loin dans votre script ne verra jamais ces paquets. Donc inutile de les accepter, ou de les supprimer de nouveau. Mais en général, comme on écrit uniquement des règles pour accepter des paquets ("-j ACCEPT"), il n'y pas d'importance dans l'ordre des règles.
Facile non ? Bon, gardez en mémoire le tableau des options d'iptables, mettons nous au boulot :
  • Suppression de toutes les chaînes : C'est facile, il faut supprimer les tables pré-défines (option "-F") et toutes les tables utilisateurs (option "-X"). Que nous en ayons déjà ou pas écrite n'a aucune importance, on supprime tout :

    [root@phoenix /]# iptables -t filter -F
    [root@phoenix /]# iptables -t filter -X
    

  • Définition de la politique (cibles) par défaut : La table filter possède 3 chaînes, donc elles sont toutes les trois à initialiser. Par défaut, on décide donc de tout détruire (DROP) :
    [root@phoenix /]# iptables -t filter -P INPUT DROP
    [root@phoenix /]# iptables -t filter -P OUTPUT DROP
    [root@phoenix /]# iptables -t filter -P FORWARD DROP
    
    A ce stade là, vous avez court-circuité tout votre système de réseau. Toutes vos connexions réseaux sont hors service. Pas un logiciel que vous utilisez ne peut accéder au réseau, ou à vous propres serveur. J'en veux pour preuve, la commande "ping localhost" ne marche même plus, et pourtant il lui en faut pour ne plus marcher !
    [olivier@phoenix /]$ ping localhost
    PING localhost.sky.net (127.0.0.1) 56(84) bytes of data.
    ping: sendmsg: Operation not permitted
    ping: sendmsg: Operation not permitted
    ping: sendmsg: Operation not permitted
    
    --- localhost.sky.net ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2011ms
    
    Hahhh bravo, c'est du propre !

    Mais cela tombe bien, car c'est exactement ce que nous voulions faire. Smiley D'un autre coté, c'est la protection absolue du réseau, qui rivalise presque avec la déconnexion physique des câbles... Mais quand à l'intérêt de la chose, c'est plutôt limité !

  • Autoriser quelques connexions : Dans notre réseau, nous avons 2 cartes réseaux ("eth0" et "eth1"), ainsi que l'interface de loopback ("lo"). Occupons nous donc de chacune des 3 interfaces :
    • lo (réseau virtuel localhost) : C'est le plus facile.
      Nous pouvons avoir toute confiance en ce réseau, car il est interne à la mémoire de notre machine. Nous allons donc autoriser ("-j ACCEPT") toutes les connexions sortantes des processus locaux ("-A OUTPUT") par cette interface virtuelle ("-o lo") ayant une adresse de loopback ("-s 127.0.0.0/8"), et à destination des machines de ce réseau virtuel (-d "127.0.0.0/8) :
      [root@phoenix /]# iptables -t filter -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
      
      Puis nous allons faire l'inverse, c'est à dire autoriser ("-j ACCEPT") toutes les connexions rentrantes dans les processus locaux ("-A INPUT"), par cette interface virtuelle ("-i lo"), venant des machines de ce réseau virtuel (-s "127.0.0.0/8) et à destination des adresses de loopback ("-d 127.0.0.0/8") :
      [root@phoenix /]# iptables -t filter -A INPUT  -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
      
      Et nous pouvons immédiatement vérifier que le "ping localhost" fonctionne à nouveau :
      [olivier@phoenix /]$ ping localhost
      PING localhost.sky.net (127.0.0.1) 56(84) bytes of data.
      64 bytes from localhost.sky.net (127.0.0.1): icmp_seq=1 ttl=64 time=0.134 ms
      64 bytes from localhost.sky.net (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms
      
      --- localhost.sky.net ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 999ms
      rtt min/avg/max/mdev = 0.091/0.112/0.134/0.023 ms
      
      Ouuuuiiiii ! Nous sommes très fort ! Bon, une interface de réglée passons aux autres.

    • eth0 (réseau interne "sky.net") : Cela reste encore facile. Nous désirons dans un premier temps permettre à paradise.sky.net de dialoguer sans limite avec phoenix0.sky.net. Quoi ? Sans limite ? Mais ce n'est pas un peu dangereux, non ? Certes cela peu se discuter, mais comme à priori nous travaillons dans un réseau local et qui plus est dans le réseau local d'un particulier, nous pouvons avoir une certaine confiance dans les machines de notre propre réseau, non ? Ah, vous utilisez Windows® sur les autres machines de votre réseau ? Et vous avez peur que ce Windows® agresse vos Linux ? Chacun son problème mon (ma) cher (chère) ! Smiley En allant un peu plus loin dans ce document, vous comprendrez comment on peut mettre un filtrage un peu plus restrictif, donc n'anticipons pas.

      Donc nous avons fait comme pour l'interface "lo", et autoriser les processus locaux à dialoguer en entrée et en sortie avec le réseau local :
      [root@phoenix /]# iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT
      [root@phoenix /]# iptables -t filter -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT
      
      Bien, et que donne le "ping paradise.sky.net" ?
      [olivier@phoenix /]$ ping paradise.sky.net
      PING paradise.sky.net (192.168.0.2) 56(84) bytes of data.
      64 bytes from paradise.sky.net (192.168.0.2): icmp_seq=1 ttl=64 time=0.134 ms
      64 bytes from paradise.sky.net (192.168.0.2): icmp_seq=2 ttl=64 time=0.091 ms
      
      --- localhost.sky.net ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 999ms
      rtt min/avg/max/mdev = 0.091/0.112/0.134/0.023 ms
      
      Très bien ! 2 de passées, reste la 3ème...

    • eth1 (réseau Internet "internet.net") : évidement, c'est la dernière, et donc la plus compliquée...
      Que vous nous faire exactement en fait ? Interdire l'accès à pirate.internet.net, mais autoriser celui de web.internet.net. C'est facile alors, il suffit de mettre uniquement des règles "-j ACCEPT" en direction et depuis l'adresse IP de web.internet.net ? En théorie oui... Mais est-ce que vous connaissez l'adresse IP de tous les intrus qui veulent vous ennuyer ? Non hein ? Ce n'est pas le genre d'informations qui se trouve sous le sabot d'un cheval ! Et puis en plus, quelqu'un sur web.internet.net pourrait héberger sans que vous le sachiez un autre intrus... Que la vie est compliquée, non ?

      En fait, c'est très simple : nous n'allons autoriser que les connexions vers les services web qui nous intéresse, à savoir le HTTP (port 80 en TCP), et le HTTPS (443 en TCP), et cela pour toutes les machines. Seules les requêtes en direction et venant des ports seront autorisées. Hop, 4 règles d'"iptables" est c'est fait :
      [root@phoenix /]# iptables -t filter -A OUTPUT -o eth1 -s 10.0.0.0/8 -p tcp --dport 80  -j ACCEPT
      [root@phoenix /]# iptables -t filter -A OUTPUT -o eth1 -s 10.0.0.0/8 -p tcp --dport 443 -j ACCEPT
      [root@phoenix /]# iptables -t filter -A INPUT  -i eth1 -d 10.0.0.0/8 -p tcp --sport 80  -j ACCEPT
      [root@phoenix /]# iptables -t filter -A INPUT  -i eth1 -d 10.0.0.0/8 -p tcp --sport 443 -j ACCEPT
      
      Il ne nous reste plus qu'à faire ouvrir une page web sur web.internet.net, ou de faire un petit "nmap" sur ses ports 80 et 443, afin de voir si tout marche bien.
      [olivier@phoenix /]$ nmap web.internet.net -p 80,443
      
      Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
      Interesting ports on web.0.0.10.in-addr.arpa (10.0.0.200):
      Port       State       Service
      80/tcp     open        http
      443/tcp    open        https
      
      Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
      
      Bingo ! Ca marche ! Faites péter les biscuits apéros ! Ce soir, c'est fête ! Et en plus, ce premier script "iptables" est téléchargeable ici.
Nannnnn désolé de vous avoir donné un faux espoir, mais en fait il y a un truc important qui ne marche pas... Smiley

Depuis Phoenix, essayez de faire un "ping phoenix.sky.net", un "ping phoenix0.sky.net", ou un "ping phoenix1.sky.net" :
[olivier@phoenix /]$ ping phoenix.sky.net
PING phoenix.sky.net (192.168.0.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

--- phoenix.sky.net ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1010ms

[olivier@phoenix /]$ ping phoenix0.sky.net
PING phoenix0.sky.net (192.168.0.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

--- phoenix0.sky.net ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1019ms

[olivier@phoenix /]$ ping phoenix1.internet.net
PING phoenix1.internet.net (10.0.0.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted

--- phoenix1.internet.net ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
Pourquoi cela ne marche t'il pas ? Aurions nous oublié quelque chose ? De toute évidence oui. Souvenez vous (recherchez le lien "plus tard") lors du 1er chapitre, nous en avions rapidement parlé. Que vous ayez sauté ce chapitre ou que vous somnoliez à ce moment n'a pas d'importance Smiley.

En fait, c'est très simple : dans nos règles "iptables" de configuration de localhost, nous avons indiqué que nous autorisions uniquement les échanges sur l'interface localhost, pour les machines du réseau 127.0.0.0/8. Hors, et c'est ce que nous avions vu lors du 1er chapitre, lorsque qu'une machine accède à ses propres ressources elle ne passent pas par l'interface physique, mais uniquement par l'interface loopback. Donc au lieu de passer par les règles de l'interface eth0, ces paquets sont passés par ceux de l'interface lo, et se sont fait détruire par la règle DROP par défaut... C'est très fort, non ?

Comment résoudre ce problème alors ? La solution est très simple, il suffit d'être un peu plus "tolérant" sur les 2 règles de l'interface "localhost", et retirer les options "-d 127.0.0.0/8" et "-s 127.0.0.0/8". Pour cela, nous allons supprimer les précédentes règles, et les recréer :
[root@phoenix /]# iptables -t filter -L -n -v
Chain INPUT (policy DROP 463 packets, 35458 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  lo     *       127.0.0.0/8          127.0.0.0/8 <-- Ceci est la règle 1
    0     0 ACCEPT     all  --  eth0   *       192.168.0.0/24       0.0.0.0/0
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0          tcp spt:80
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0          tcp spt:443

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 71 packets, 10712 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      lo      127.0.0.0/8          127.0.0.0/8 <-- Ceci est la règle 1
    0     0 ACCEPT     all  --  *      eth0    0.0.0.0/0            192.168.0.0/24
    0     0 ACCEPT     tcp  --  *      eth1    0.0.0.0/0            0.0.0.0/0          tcp dpt:80
    0     0 ACCEPT     tcp  --  *      eth1    0.0.0.0/0            0.0.0.0/0          tcp dpt:443
[root@phoenix /]# iptables -t filter -D OUTPUT 1
[root@phoenix /]# iptables -t filter -D INPUT  1
[root@phoenix /]# iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
[root@phoenix /]# iptables -t filter -A INPUT  -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
[root@phoenix /]# iptables -t filter -L -n -v
Chain INPUT (policy DROP 475 packets, 37048 bytes)
 pkts bytes target     prot opt in     out     source               destination
    1   248 ACCEPT     all  --  eth0   *       192.168.0.0/24       0.0.0.0/0
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0          tcp spt:80
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0          tcp spt:443
  274  166K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 84 packets, 12080 bytes)
 pkts bytes target     prot opt in     out     source               destination
    9   872 ACCEPT     all  --  *      eth0    0.0.0.0/0            192.168.0.0/24
    0     0 ACCEPT     tcp  --  *      eth1    0.0.0.0/0            0.0.0.0/0          tcp dpt:80
    0     0 ACCEPT     tcp  --  *      eth1    0.0.0.0/0            0.0.0.0/0          tcp dpt:443
  274  166K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
Cette fois ci, un "ping phoenix0.sky.net" et des autres adresses IP de Phoenix marche sans problème. Ce second script corrigé est téléchargeable ici.

Vous vous demandez sûrement pourquoi j'ai pris un (malin ?) plaisir à introduire cette "erreur" dans mon premier script ? C'est simple :
  • Il sera très important par la suite de comprendre cette histoire d'auto connexion.
  • Je ne suis pas sûr que vous vous en seriez souvenu si je ne vous avais pas fait pointer le doigt dessus.
  • Au passage, nous avons vu une utilisation de deux commandes que nous ne connaissions pas : "iptables -t filter -L -n -v" pour afficher la liste des chaînes d'une table, et "iptables -t filter -D ...." qui permet de supprimer une règle. Comme quoi, les erreurs sont parfois constructives ! Smiley
Bon, pendant que vous prenez un biscuit apéro bien mérité, je ferais quelques remarques sur ces scripts :
  • Dans toutes nos commandes, nous avons utilisé l'option "-t filter", pour indiquer que nous voulions travailler sur cette table. C'est très bien, mais c'est un peu inutile. En effet, par défaut "iptables" considère que c'est la table "filter" qui est utilisée. Donc par la suite, on pourra économiser de la ligne de commande en n'utilisant plus le "-t filter" pour ces commandes iptables là.
  • Dans nos commandes iptables ayant pour cible "ACCEPT", nous avons cherché à rajouter le maximum de paramètre, en combinant par exemple les options "-i" avec "-s". C'est une bonne chose, car les règles d'acceptation des paquets doivent toujours être les plus restrictives possible. Ne rentre pas sur notre ordinateur qui veut ! Même si au passage, un peu trop de rigueur amène à des erreurs du type du "localhost"...
  • Même si nos règles sur le réseau "internet.net" sont satisfaisantes, car bien strictes, elle sont un peu lourdes à gérer. 4 règles "iptables" uniquement pour autoriser la visite de sites web, sécurisés ou non, cela fait beaucoup... D'autant que nous n'avons pas parlé de FTP, de IRC, de "chat" ("discussion" en français), et que sais je encore.
  • Enfin, au point où nous en somme, nous avons l'équivalent d'un petit firewall de type matériel, que l'on peut trouver dans le commerce, voir même équivalent au firewall intégré dans Windows® XP (car au jour où j'écris ces lignes, il ne gère pas le conntrack).
Cependant, nous pouvons être satisfait de notre travail. Sans protection de la part de netfilter, l'intrus pouvait voir tout nos ports ouverts :
[intrus@pirate /]$ nmap phoenix1.internet.net

Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on phoenix1.internet.net (10.0.0.1):
(The 1590 ports scanned but not shown below are in state: closed)
Port       State       Service
21/tcp     open        ftp
23/tcp     open        telnet
25/tcp     open        smtp
53/tcp     open        domain
80/tcp     open        http
110/tcp    open        pop-3
111/tcp    open        sunrpc
139/tcp    open        netbios-ssn
443/tcp    open        https
3306/tcp   open        mysql
6000/tcp   open        X11

Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
Maintenant, avec notre second script netfilter, non seulement il ne voit plus rien, mais en plus il suppose que Phoenix est arrêté :
[intrus@pirate /]# nmap phoenix1.internet.net

Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap run completed -- 1 IP address (0 hosts up) scanned in 30 seconds
Alors que nous, nous pouvons surfer en toute tranquillité. He he he, nous avons berné l'intrus ! La vie n'est elle pas belle ? Hummmm, si si...

Ahhh, que c'est beau l'insouciance de ces jeunes internautes... Mais à votre avis, pourquoi il y a encore quelques paragraphes après celui-ci ? Humm ? Je vous le donne en mille : c'est à cause du retour de l'intrus masqué ! Il revient, et il n'est pas du tout content que vous ayez essayé de l'empêcher de rentrer sur votre machine... En fait, nous avons perdu cette bataille face à lui, et nous ne le savons même pas encore...

Bon, prenez fissa de quoi vous remonter, et préparez vous à vous remettre une nouvelle couche d'aspirines... Smiley

Table des matières Page précédente Page suivante
Valid XHTML 1.0! Valid CSS!
Site de référence : http://olivieraj.free.fr/ Last modified: Wed Jul 23 19:19:05 CEST 2003