la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3.
la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3.
la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3.
Alors voilà, j'aimerais faire appel aux experts en matière de sécurité.
J'ai installé l'ensemble des packages de Fedora Core 3 sur mon
ordinateur. En démarrant mon ordinateur, je remarque qu'un firewall a
été installé. Je me connecte sur le site web "Shields up" et je vois que
le port 0 est ouvert. Est-ce grave ?
A quoi sert ce port ?
Comment le fermer ?
J'ai donc essayé de réagir en créant moi-même mon script iptables que
voici:
[...]
iptables -t filter -A OUTPUT -o ppp0 -p all -m state --state ! INVALID
-j ACCEPT
iptables -t filter -A INPUT -i ppp0 -p all -m state --state
RELATED,ESTABLISHED -j ACCEPT
Ce script passe avec succès les tests de "Shields Up" mais je suis
surpris par-rapport à la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3. Ai-je commis une erreur ? Si oui, laquelle ?
Alors voilà, j'aimerais faire appel aux experts en matière de sécurité.
J'ai installé l'ensemble des packages de Fedora Core 3 sur mon
ordinateur. En démarrant mon ordinateur, je remarque qu'un firewall a
été installé. Je me connecte sur le site web "Shields up" et je vois que
le port 0 est ouvert. Est-ce grave ?
A quoi sert ce port ?
Comment le fermer ?
J'ai donc essayé de réagir en créant moi-même mon script iptables que
voici:
[...]
iptables -t filter -A OUTPUT -o ppp0 -p all -m state --state ! INVALID
-j ACCEPT
iptables -t filter -A INPUT -i ppp0 -p all -m state --state
RELATED,ESTABLISHED -j ACCEPT
Ce script passe avec succès les tests de "Shields Up" mais je suis
surpris par-rapport à la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3. Ai-je commis une erreur ? Si oui, laquelle ?
Alors voilà, j'aimerais faire appel aux experts en matière de sécurité.
J'ai installé l'ensemble des packages de Fedora Core 3 sur mon
ordinateur. En démarrant mon ordinateur, je remarque qu'un firewall a
été installé. Je me connecte sur le site web "Shields up" et je vois que
le port 0 est ouvert. Est-ce grave ?
A quoi sert ce port ?
Comment le fermer ?
J'ai donc essayé de réagir en créant moi-même mon script iptables que
voici:
[...]
iptables -t filter -A OUTPUT -o ppp0 -p all -m state --state ! INVALID
-j ACCEPT
iptables -t filter -A INPUT -i ppp0 -p all -m state --state
RELATED,ESTABLISHED -j ACCEPT
Ce script passe avec succès les tests de "Shields Up" mais je suis
surpris par-rapport à la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3. Ai-je commis une erreur ? Si oui, laquelle ?
Alors voilà, j'aimerais faire appel aux experts en matière de sécurité.
A ce propos, ce n'est pas une bonne idée d'avoir multiposté ici et dans
fr.comp.securite. Ça va créer deux discussions indépendantes avec pour
inconvénients la redondance (des participants vont dire la même chose
dans les deux discussions) et la moindre interaction entre les
participants (un participant à une des discussion ne pourra pas réagir à
ce qu'un autre participant a écrit dans l'autre discussion). Un
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
J'ai installé l'ensemble des packages de Fedora Core 3 sur mon
ordinateur. En démarrant mon ordinateur, je remarque qu'un firewall a
été installé. Je me connecte sur le site web "Shields up" et je vois
que le port 0 est ouvert. Est-ce grave ?
Ça dépend. Port TCP ou UDP ? De mémoire Shields Up! ne sonde que les
ports TCP.
TCP. Je viens de remettre la config. par défaut en modifiant légèrement
A quoi sert ce port ?
Normalement à rien, il est réservé. Faut voir quel processus écoute
dessus (netstat --inet -lpn).
Le résultat de la commande est le suivant:
Comment le fermer ?
En arrêtant le processus qui écoute dessus.
Mais il va se relancer à chaque démarrage ?
J'ai donc essayé de réagir en créant moi-même mon script iptables que
voici:
[...]iptables -t filter -A OUTPUT -o ppp0 -p all -m state --state ! INVALID
-j ACCEPT
iptables -t filter -A INPUT -i ppp0 -p all -m state --state
RELATED,ESTABLISHED -j ACCEPT
Ce script passe avec succès les tests de "Shields Up" mais je suis
surpris par-rapport à la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3. Ai-je commis une erreur ? Si oui, laquelle ?
Connais pas le firewall de Fedora, mais le tien est l'exemple-type du
firewall simpliste qui bloque sauvagement sans respecter les standards.
Malheureusement les scanners de ports en ligne comme Shields Up!
incitent cette attitude. :(
Je veux bien le croire car je ne connais pas grand chose à Linux...
Les paquets reçus valides non acceptés devraient être rejetés proprement
avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
Attention aussi si tu utilises une version de noyau inférieure à 2.4.29
ou 2.6.10 : certains messages d'erreur ICMP émis par ta machine sont à
tort marqués INVALID au lieu de RELATED et donc bloqués par ta règle
OUTPUT.
Comment ça ?
Alors voilà, j'aimerais faire appel aux experts en matière de sécurité.
A ce propos, ce n'est pas une bonne idée d'avoir multiposté ici et dans
fr.comp.securite. Ça va créer deux discussions indépendantes avec pour
inconvénients la redondance (des participants vont dire la même chose
dans les deux discussions) et la moindre interaction entre les
participants (un participant à une des discussion ne pourra pas réagir à
ce qu'un autre participant a écrit dans l'autre discussion). Un
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
J'ai installé l'ensemble des packages de Fedora Core 3 sur mon
ordinateur. En démarrant mon ordinateur, je remarque qu'un firewall a
été installé. Je me connecte sur le site web "Shields up" et je vois
que le port 0 est ouvert. Est-ce grave ?
Ça dépend. Port TCP ou UDP ? De mémoire Shields Up! ne sonde que les
ports TCP.
TCP. Je viens de remettre la config. par défaut en modifiant légèrement
A quoi sert ce port ?
Normalement à rien, il est réservé. Faut voir quel processus écoute
dessus (netstat --inet -lpn).
Le résultat de la commande est le suivant:
Comment le fermer ?
En arrêtant le processus qui écoute dessus.
Mais il va se relancer à chaque démarrage ?
J'ai donc essayé de réagir en créant moi-même mon script iptables que
voici:
[...]
iptables -t filter -A OUTPUT -o ppp0 -p all -m state --state ! INVALID
-j ACCEPT
iptables -t filter -A INPUT -i ppp0 -p all -m state --state
RELATED,ESTABLISHED -j ACCEPT
Ce script passe avec succès les tests de "Shields Up" mais je suis
surpris par-rapport à la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3. Ai-je commis une erreur ? Si oui, laquelle ?
Connais pas le firewall de Fedora, mais le tien est l'exemple-type du
firewall simpliste qui bloque sauvagement sans respecter les standards.
Malheureusement les scanners de ports en ligne comme Shields Up!
incitent cette attitude. :(
Je veux bien le croire car je ne connais pas grand chose à Linux...
Les paquets reçus valides non acceptés devraient être rejetés proprement
avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
Attention aussi si tu utilises une version de noyau inférieure à 2.4.29
ou 2.6.10 : certains messages d'erreur ICMP émis par ta machine sont à
tort marqués INVALID au lieu de RELATED et donc bloqués par ta règle
OUTPUT.
Comment ça ?
Alors voilà, j'aimerais faire appel aux experts en matière de sécurité.
A ce propos, ce n'est pas une bonne idée d'avoir multiposté ici et dans
fr.comp.securite. Ça va créer deux discussions indépendantes avec pour
inconvénients la redondance (des participants vont dire la même chose
dans les deux discussions) et la moindre interaction entre les
participants (un participant à une des discussion ne pourra pas réagir à
ce qu'un autre participant a écrit dans l'autre discussion). Un
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
J'ai installé l'ensemble des packages de Fedora Core 3 sur mon
ordinateur. En démarrant mon ordinateur, je remarque qu'un firewall a
été installé. Je me connecte sur le site web "Shields up" et je vois
que le port 0 est ouvert. Est-ce grave ?
Ça dépend. Port TCP ou UDP ? De mémoire Shields Up! ne sonde que les
ports TCP.
TCP. Je viens de remettre la config. par défaut en modifiant légèrement
A quoi sert ce port ?
Normalement à rien, il est réservé. Faut voir quel processus écoute
dessus (netstat --inet -lpn).
Le résultat de la commande est le suivant:
Comment le fermer ?
En arrêtant le processus qui écoute dessus.
Mais il va se relancer à chaque démarrage ?
J'ai donc essayé de réagir en créant moi-même mon script iptables que
voici:
[...]iptables -t filter -A OUTPUT -o ppp0 -p all -m state --state ! INVALID
-j ACCEPT
iptables -t filter -A INPUT -i ppp0 -p all -m state --state
RELATED,ESTABLISHED -j ACCEPT
Ce script passe avec succès les tests de "Shields Up" mais je suis
surpris par-rapport à la simplicité de ce script, comparé çà celui
proposé par Fedora Core 3. Ai-je commis une erreur ? Si oui, laquelle ?
Connais pas le firewall de Fedora, mais le tien est l'exemple-type du
firewall simpliste qui bloque sauvagement sans respecter les standards.
Malheureusement les scanners de ports en ligne comme Shields Up!
incitent cette attitude. :(
Je veux bien le croire car je ne connais pas grand chose à Linux...
Les paquets reçus valides non acceptés devraient être rejetés proprement
avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
Attention aussi si tu utilises une version de noyau inférieure à 2.4.29
ou 2.6.10 : certains messages d'erreur ICMP émis par ta machine sont à
tort marqués INVALID au lieu de RELATED et donc bloqués par ta règle
OUTPUT.
Comment ça ?
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
TCP. Je viens de remettre la config. par défaut en modifiant légèrement
le script et là, le test est passé avec succès (stealth pour tous les
ports TCP) sauf:
========================================================================= > Ping Reply: RECEIVED (FAILED)
[snip blabla paranoïaque]
Est-ce grave ?
(netstat --inet -lpn).
========================================================================= > Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:*
LISTEN 3969/cupsd
tcp 0 0 127.0.0.1:5335 0.0.0.0:*
LISTEN 3934/mDNSResponder
udp 0 0 0.0.0.0:631 0.0.0.0:*
3969/cupsd
========================================================================= >
Que cela signifie-t-il ?
Comment le fermer ?
En arrêtant le processus qui écoute dessus.
Mais il va se relancer à chaque démarrage ?
Les paquets reçus valides non acceptés devraient être rejetés
proprement avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
Attention aussi si tu utilises une version de noyau inférieure à
2.4.29 ou 2.6.10 : certains messages d'erreur ICMP émis par ta machine
sont à tort marqués INVALID au lieu de RELATED et donc bloqués par ta
règle OUTPUT.
Comment ça ?
Je suis désolé pour toutes ces questions mais j'ai un peu de mal avec
iptables... Pouvez-vous m'aider ?
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
TCP. Je viens de remettre la config. par défaut en modifiant légèrement
le script et là, le test est passé avec succès (stealth pour tous les
ports TCP) sauf:
========================================================================= > Ping Reply: RECEIVED (FAILED)
[snip blabla paranoïaque]
Est-ce grave ?
(netstat --inet -lpn).
========================================================================= > Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:*
LISTEN 3969/cupsd
tcp 0 0 127.0.0.1:5335 0.0.0.0:*
LISTEN 3934/mDNSResponder
udp 0 0 0.0.0.0:631 0.0.0.0:*
3969/cupsd
========================================================================= >
Que cela signifie-t-il ?
Comment le fermer ?
En arrêtant le processus qui écoute dessus.
Mais il va se relancer à chaque démarrage ?
Les paquets reçus valides non acceptés devraient être rejetés
proprement avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
Attention aussi si tu utilises une version de noyau inférieure à
2.4.29 ou 2.6.10 : certains messages d'erreur ICMP émis par ta machine
sont à tort marqués INVALID au lieu de RELATED et donc bloqués par ta
règle OUTPUT.
Comment ça ?
Je suis désolé pour toutes ces questions mais j'ai un peu de mal avec
iptables... Pouvez-vous m'aider ?
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
TCP. Je viens de remettre la config. par défaut en modifiant légèrement
le script et là, le test est passé avec succès (stealth pour tous les
ports TCP) sauf:
========================================================================= > Ping Reply: RECEIVED (FAILED)
[snip blabla paranoïaque]
Est-ce grave ?
(netstat --inet -lpn).
========================================================================= > Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:*
LISTEN 3969/cupsd
tcp 0 0 127.0.0.1:5335 0.0.0.0:*
LISTEN 3934/mDNSResponder
udp 0 0 0.0.0.0:631 0.0.0.0:*
3969/cupsd
========================================================================= >
Que cela signifie-t-il ?
Comment le fermer ?
En arrêtant le processus qui écoute dessus.
Mais il va se relancer à chaque démarrage ?
Les paquets reçus valides non acceptés devraient être rejetés
proprement avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
Attention aussi si tu utilises une version de noyau inférieure à
2.4.29 ou 2.6.10 : certains messages d'erreur ICMP émis par ta machine
sont à tort marqués INVALID au lieu de RELATED et donc bloqués par ta
règle OUTPUT.
Comment ça ?
Je suis désolé pour toutes ces questions mais j'ai un peu de mal avec
iptables... Pouvez-vous m'aider ?
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
Pardon, c'est expliqué là :
http://www.usenet-fr.net/fur/minis-faqs/crosspost.html
Ah, d'accord !
TCP. Je viens de remettre la config. par défaut en modifiant
légèrement le script et là, le test est passé avec succès (stealth
pour tous les ports TCP) sauf:
==========================================================================
Ping Reply: RECEIVED (FAILED)
[snip blabla paranoïaque]Est-ce grave ?
Pas du tout. Ta machine répond au ping, c'est bien.
Oh la la... Je crains que nous n'ayons pas du tout le même point de vue
(netstat --inet -lpn).
==========================================================================
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:*
LISTEN 3969/cupsd
tcp 0 0 127.0.0.1:5335 0.0.0.0:*
LISTEN 3934/mDNSResponder
udp 0 0 0.0.0.0:631 0.0.0.0:*
3969/cupsd
==========================================================================
Que cela signifie-t-il ?
Cela signifie qu'aucun processus n'est à l'écoute sur le port TCP 0. Le
seul port en écoute accessible de partout est UDP 631 utilisé par cupsd.
Les deux autres ports n'écoutent qu'en local (127.0.0.1).
Accessible de partout ? C'est à dire ? Je peux désactiver cupsd ?
Les paquets reçus valides non acceptés devraient être rejetés
proprement avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
"Closed", c'est la réponse normale d'un port fermé et c'est bien.
Quel intérêt d'être "discret" ?
De passer inaperçu ! :-)
Attention aussi si tu utilises une version de noyau inférieure à
2.4.29 ou 2.6.10 : certains messages d'erreur ICMP émis par ta
machine sont à tort marqués INVALID au lieu de RELATED et donc
bloqués par ta règle OUTPUT.
Comment ça ?
Dans certaines conditions, une machine qui reçoit un paquet IP peut être
amenée à renvoyer un message ICMP à la source du paquet pour signaler
une erreur ou un problème. Cette signalisation est utile et il ne faut
pas la bloquer en émission ni réception. Normalement, ces paquets ICMP
sont dans l'état RELATED, mais un bug dans les anciens noyaux fait que
lorsqu'il sont émis par la machine elle-même ils peuvent être marqués
INVALID. Par contre les paquets ICMP reçus de l'extérieur sont
correctement marqués RELATED. Comme ta règle OUTPUT bloque les paquets
INVALID, avec un noyau trop vieux tu empêches ta machine de signaler les
problèmes aux autres, ce qui est gênant.
Bah je n'ai pas envie de le signaler aux autres, donc ce n'est pas
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
Pardon, c'est expliqué là :
http://www.usenet-fr.net/fur/minis-faqs/crosspost.html
Ah, d'accord !
TCP. Je viens de remettre la config. par défaut en modifiant
légèrement le script et là, le test est passé avec succès (stealth
pour tous les ports TCP) sauf:
==========================================================================
Ping Reply: RECEIVED (FAILED)
[snip blabla paranoïaque]
Est-ce grave ?
Pas du tout. Ta machine répond au ping, c'est bien.
Oh la la... Je crains que nous n'ayons pas du tout le même point de vue
(netstat --inet -lpn).
==========================================================================
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:*
LISTEN 3969/cupsd
tcp 0 0 127.0.0.1:5335 0.0.0.0:*
LISTEN 3934/mDNSResponder
udp 0 0 0.0.0.0:631 0.0.0.0:*
3969/cupsd
==========================================================================
Que cela signifie-t-il ?
Cela signifie qu'aucun processus n'est à l'écoute sur le port TCP 0. Le
seul port en écoute accessible de partout est UDP 631 utilisé par cupsd.
Les deux autres ports n'écoutent qu'en local (127.0.0.1).
Accessible de partout ? C'est à dire ? Je peux désactiver cupsd ?
Les paquets reçus valides non acceptés devraient être rejetés
proprement avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
"Closed", c'est la réponse normale d'un port fermé et c'est bien.
Quel intérêt d'être "discret" ?
De passer inaperçu ! :-)
Attention aussi si tu utilises une version de noyau inférieure à
2.4.29 ou 2.6.10 : certains messages d'erreur ICMP émis par ta
machine sont à tort marqués INVALID au lieu de RELATED et donc
bloqués par ta règle OUTPUT.
Comment ça ?
Dans certaines conditions, une machine qui reçoit un paquet IP peut être
amenée à renvoyer un message ICMP à la source du paquet pour signaler
une erreur ou un problème. Cette signalisation est utile et il ne faut
pas la bloquer en émission ni réception. Normalement, ces paquets ICMP
sont dans l'état RELATED, mais un bug dans les anciens noyaux fait que
lorsqu'il sont émis par la machine elle-même ils peuvent être marqués
INVALID. Par contre les paquets ICMP reçus de l'extérieur sont
correctement marqués RELATED. Comme ta règle OUTPUT bloque les paquets
INVALID, avec un noyau trop vieux tu empêches ta machine de signaler les
problèmes aux autres, ce qui est gênant.
Bah je n'ai pas envie de le signaler aux autres, donc ce n'est pas
crosspost avec suivi dans un des deux forums aurait été préférable.
Oups, je suis désolé. Mais c'est quoi un crosspost ?
Pardon, c'est expliqué là :
http://www.usenet-fr.net/fur/minis-faqs/crosspost.html
Ah, d'accord !
TCP. Je viens de remettre la config. par défaut en modifiant
légèrement le script et là, le test est passé avec succès (stealth
pour tous les ports TCP) sauf:
==========================================================================
Ping Reply: RECEIVED (FAILED)
[snip blabla paranoïaque]Est-ce grave ?
Pas du tout. Ta machine répond au ping, c'est bien.
Oh la la... Je crains que nous n'ayons pas du tout le même point de vue
(netstat --inet -lpn).
==========================================================================
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:*
LISTEN 3969/cupsd
tcp 0 0 127.0.0.1:5335 0.0.0.0:*
LISTEN 3934/mDNSResponder
udp 0 0 0.0.0.0:631 0.0.0.0:*
3969/cupsd
==========================================================================
Que cela signifie-t-il ?
Cela signifie qu'aucun processus n'est à l'écoute sur le port TCP 0. Le
seul port en écoute accessible de partout est UDP 631 utilisé par cupsd.
Les deux autres ports n'écoutent qu'en local (127.0.0.1).
Accessible de partout ? C'est à dire ? Je peux désactiver cupsd ?
Les paquets reçus valides non acceptés devraient être rejetés
proprement avec la cible REJECT au lieu d'être bloqués silencieusement.
Mais alors "STEALTH" devient "CLOSE"... Et c'est moins discret, non ?
"Closed", c'est la réponse normale d'un port fermé et c'est bien.
Quel intérêt d'être "discret" ?
De passer inaperçu ! :-)
Attention aussi si tu utilises une version de noyau inférieure à
2.4.29 ou 2.6.10 : certains messages d'erreur ICMP émis par ta
machine sont à tort marqués INVALID au lieu de RELATED et donc
bloqués par ta règle OUTPUT.
Comment ça ?
Dans certaines conditions, une machine qui reçoit un paquet IP peut être
amenée à renvoyer un message ICMP à la source du paquet pour signaler
une erreur ou un problème. Cette signalisation est utile et il ne faut
pas la bloquer en émission ni réception. Normalement, ces paquets ICMP
sont dans l'état RELATED, mais un bug dans les anciens noyaux fait que
lorsqu'il sont émis par la machine elle-même ils peuvent être marqués
INVALID. Par contre les paquets ICMP reçus de l'extérieur sont
correctement marqués RELATED. Comme ta règle OUTPUT bloque les paquets
INVALID, avec un noyau trop vieux tu empêches ta machine de signaler les
problèmes aux autres, ce qui est gênant.
Bah je n'ai pas envie de le signaler aux autres, donc ce n'est pas
(netstat --inet -lpn).
[...]
Cela signifie qu'aucun processus n'est à l'écoute sur le port TCP 0.
(netstat --inet -lpn).
[...]
Cela signifie qu'aucun processus n'est à l'écoute sur le port TCP 0.
(netstat --inet -lpn).
[...]
Cela signifie qu'aucun processus n'est à l'écoute sur le port TCP 0.