Conditions :

Les recommendations présentes dans ce document ne peuvent être utilisées seulement sur un system Windows 2003 Server isolé. (Sur un system ne faisant pas partie d'un domain Active Directory)

Les commandes très utiles :

netstat

Netstat permet de lister les services reseaux en fonctionnement. Nous utiliserons régulièrement les options -ano :

  • -a : Affiche tous les connexions et les ports d'écoute
  • -n : Affiche les ports et les adresses dans un format numérique
  • -o : Affiche le PID. (Le numero du process, que l'on pourra retrouver avec tasklist)

tasklist

Tasklist afficher la translation entre les PID (numero de process) et nom du process

Les ports TCP et UDP utilisés par default :

C:\>netstat -ano
Active Connections
  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:25             0.0.0.0:0              LISTENING       1200
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       1500
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       640
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING       452
  TCP    0.0.0.0:1026           0.0.0.0:0              LISTENING       932
  TCP    0.0.0.0:1028           0.0.0.0:0              LISTENING       1200
  TCP    0.0.0.0:1029           0.0.0.0:0              LISTENING       1200
  TCP    0.0.0.0:1030           0.0.0.0:0              LISTENING       1200
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       692
  TCP    0.0.0.0:8098           0.0.0.0:0              LISTENING       1500
  TCP    0.0.0.0:8099           0.0.0.0:0              LISTENING       1500
  TCP    10.1.10.143:139        0.0.0.0:0              LISTENING       4
  UDP    0.0.0.0:135            *:*                                    640
  UDP    0.0.0.0:445            *:*                                    4
  UDP    0.0.0.0:500            *:*                                    452
  UDP    0.0.0.0:1027           *:*                                    840
  UDP    0.0.0.0:1031           *:*                                    1200
  UDP    0.0.0.0:3456           *:*                                    1200
  UDP    0.0.0.0:4500           *:*                                    452
  UDP    10.1.10.143:123        *:*                                    932
  UDP    10.1.10.143:137        *:*                                    4
  UDP    10.1.10.143:138        *:*                                    4
  UDP    127.0.0.1:123          *:*                                    932
  UDP    127.0.0.1:3456         *:*                                    1200

Nous allons voir maintenant à quel services ces ports TCP ou UDP servent, comment les couper, ou faire en sorte de sécuriser leurs utilisations au maximum.

IPSEC Services (PolicyAgent) Ports UDP/500, UDP/4500:

Le service IPSEC ouvert deux socket UDP :

  • UDP/500 : ISAKMP
  • UDP/4500 : NET-T

Nous pouvons voir ci-dessus que ces deux sockets ont le meme PID soit 452. Avec la command tasklist nous pouvons récupérer le nom, et les services associé au PID.

C:\>tasklist /svc /fi "pid eq 452"
Image Name                   PID Services
========================= ====== ================================================
lsass.exe                    452 HTTPFilter, PolicyAgent, ProtectedStorage, SamSs

Pour fermer ces deux socket il faut arreter le service PolicyAgent.

C:\>net stop policyagent
The IPSEC Services service is stopping.
The IPSEC Services service was stopped successfully.

Pour que le service PolicyAgent ne se relance pas au demarrage de la machine, il faut spécifier que le lancement de ce service ce fait sûr demande et non en automatique.

C:\>sc config policyagent start= demand
[SC] ChangeServiceConfig SUCCESS

Windows Time service (w32time) Ports UDP/123:

Le service Time ouvre un socket UDP (port 123) sur chaque interface réseau.

Pour fermer tous ces socket il faut arreter le service w32time

C:\>net stop w32time
The Windows Time service is stopping.
The Windows Time service was stopped successfully.

Pour que le service w32time ne se relance pas au demarrage de la machine, il faut spécifier que le lancement de ce service ce fait sûr demande et non en automatique.

C:\>sc config w32time start= demand
[SC] ChangeServiceConfig SUCCESS

NetBIOS over TCP/IP driver (NetBT support) Ports UDP/137, UDP/138, TCP/139 :

NetBIOS over TCP/IP ouvre trois socket sur chaque adresse IP de chaque interface réseau. Ces trois socket correspondent aux trois services de NetBIOS over TCP/IP.

  • UDP/137 : Résolution de nom NetBIOS
  • UDP/138 : Datagrame NetBIOS
  • TCP/139 : Session NetBIOS

Pour fermer tous ces socket il faut arrêter le service NetBIOS over TCP/IP sur chaque interface réseau. Pour cela choissiez Désactiver NetBIOS over TCP/IP dans l'onglet "WINS" dans les parametres TCP/IP avancés de chaque interface réseau.

NetBIOS over TCP/IP driver (SMB support) Port UDP/445, TCP/445:

SMB ouvre deux socket.

  • UDP/445 :
  • TCP/445 :

Pour fermer ces socket il faut arrêter les services Server, Workstation, et NetBT.

Arreter le service Server :

C:\>net stop /y srv
The following services are dependent on the Server service.
Stopping the Server service will also stop these services.

   Distributed File System
   Computer Browser

The Distributed File System service is stopping.
The Distributed File System service was stopped successfully.

The Computer Browser service is stopping.
The Computer Browser service was stopped successfully.

The Server service is stopping.
The Server service was stopped successfully.

Arreter le service Workstation :

C:\>net stop /y rdr
The Workstation service is stopping.
The Workstation service was stopped successfully.

Arreter le service NetBT :

C:\>net stop /y netbt
The following services are dependent on the NetBios over Tcpip service.
Stopping the NetBios over Tcpip service will also stop these services.
   TCP/IP NetBIOS Helper
The TCP/IP NetBIOS Helper service was stopped successfully.
The NetBios over Tcpip service was stopped successfully.

Pour eviter que ces services ne redemarre au prochain demarrage du system, il faut spécifier que le lancement de ces services ce fait sûr demande et non en automatique.

C:\>sc config netbt start= demand
[SC] ChangeServiceConfig SUCCESS

C:\>sc config lmhosts start= demand
[SC] ChangeServiceConfig SUCCESS

C:\>sc config dfs start= demand
[SC] ChangeServiceConfig SUCCESS

C:\>sc config browser start= demand
[SC] ChangeServiceConfig SUCCESS

C:\>sc config lanmanserver start= demand
[SC] ChangeServiceConfig SUCCESS

C:\>sc config lanmanworkstation start= demand
[SC] ChangeServiceConfig SUCCESS

Nous pouvons également désactiver le lancement du service Remote Regitry, parce que quand le service Server (lanmanserver) est désactivé il n'est plus possible d'accèder à distance à la base de registre.

C:\>sc config remoteregistry start= demand
[SC] ChangeServiceConfig SUCCESS

DNS Client service (Dnscache) Port UDP/1029 :

Pour arreter le service Dnscache :

C:\>net stop dnscache
The DNS Client service is stopping.
The DNS Client service was stopped successfully.

Pour ne pas qu'il se relance automatiquement après le redemarrage :

C:\>sc config dnscache start= demand
[SC] ChangeServiceConfig SUCCESS

Services RPC Port TCP/135, TCP/1025, TCP/1026, ... :

On trouve le service MSRPC sur le port TCP/135 :

  * TCP/135

Les autres services RPC peuvent ouvrir plusieurs socket entre les ports TCP/1025 et TCP/5000 (Voir la command rpccfg pour changer la plage de port).

Il n'est pas possible de désactiver les services RPC !

Par default les services RPCRPC écoute sur toutes les interfaces réseaux.

C:\>netsh -c rpc
netsh rpc>show interface
Subnet          Interface       Status    Description
10.1.10.0       10.1.10.143     Enabled   3Com 3C920 Integrated Fast Ethernet Controller (3C905C-TX Compatible)
127.0.0.0       127.0.0.1       Enabled   MS TCP Loopback interface

netsh rpc>show settings
Default

Il est possible de restreindre les services RPC à seulement écouter sur l'adresse de loopback (127.0.0.1).

C:\>netsh -c rpc
netsh rpc>add 127.0.0.1
netsh rpc>show settings
Add List
127.0.0.1

Après le redemarrage du system tous les services RPC ecouterons uniquement sur l'interface de loopback.

TCP    127.0.0.1:135          0.0.0.0:0              LISTENING       616
TCP    127.0.0.1:1025         0.0.0.0:0              LISTENING       440
TCP    127.0.0.1:1026         0.0.0.0:0              LISTENING       820

Le resultat après avoir appliqué toutes ces recommendations :

Le service SMTP :

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:25             0.0.0.0:0              LISTENING       1184

Le service HTTP :

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       1340

Le service de prise en main a distance du bureau :

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       676

L'interface d'administration par le web en HTTPS :

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:8098           0.0.0.0:0              LISTENING       1340

L'interface d'administration par le web en HTTP

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:8099           0.0.0.0:0              LISTENING       1340

Les services RPC (qui ecoute bien seulement sur l'interface de loopback) :

 Proto  Local Address          Foreign Address        State           PID
 TCP    127.0.0.1:135          0.0.0.0:0              LISTENING       616
 TCP    127.0.0.1:1025         0.0.0.0:0              LISTENING       440
 TCP    127.0.0.1:1026         0.0.0.0:0              LISTENING       820
 TCP    127.0.0.1:1027         0.0.0.0:0              LISTENING       1184
 TCP    127.0.0.1:1028         0.0.0.0:0              LISTENING       1184
 TCP    127.0.0.1:1029         0.0.0.0:0              LISTENING       1184
 UDP    127.0.0.1:135          *:*                                    616
 UDP    127.0.0.1:1030         *:*                                    1184
 UDP    127.0.0.1:3456         *:*                                    1184

IISADMIN (inetinfo.exe)

 Proto  Local Address          Foreign Address        State           PID
 UDP    0.0.0.0:3456           *:*                                    1184

Un NMAP de l'extérieur (depuis une machine linux) :

Scan TCP :

# nmap -p T:1-10000 10.1.10.143
Starting Nmap 4.10 ( http://www.insecure.org/nmap/ ) at 2006-12-21 14:18 CET
Not shown: 9995 closed ports
PORT     STATE SERVICE
25/tcp   open  smtp
80/tcp   open  http
3389/tcp open  ms-term-serv
8098/tcp open  unknown
8099/tcp open  unknown

Scan UDP :

# nmap -sU -p U:0-10000 -P0 -T Aggressive 10.1.10.143
Starting Nmap 4.10 ( http://www.insecure.org/nmap/ ) at 2006-12-21 14:20 CET
Not shown: 10000 closed ports
PORT     STATE         SERVICE
3456/udp open|filtered IISrpc-or-vat