Otras configuraciones importantes para Snort

De WikiSalud
Saltar a: navegación, buscar

Contenido

Resumen

Mejoras necesarias a la configuración inicial de Snort

Introducción

Después de haber instalado Snort , nos damos cuenta que el nivel de alarmas es excesivo, así que nos disponemos a optimizar la configuración base según los requerimientos de la red.

Afinando variables

Con HOME_NET, Snort sabe diferenciar en muchas reglas el tráfico hacia la red que estamos protegiendo. El resto de variables en en el mismo bloque deberían describir con mayor precisión esta red para facilitar el trabajo a Snort.

Tomar en cuenta que para ipvar es posible configurar arreglos. Basta con tener el cuidado de no darle espacio entre la coma que separa un elemento y el otro:

  • Incorrecto: [10.20.30.20/24, 10.20.30.21/24]
  • Correcto: [10.20.30.20/24,10.20.30.21/24]

Luego, habría que tomar en cuenta el redefinir la siguientes variables:

  • DNS_SERVERS
# List of DNS servers on your network
ipvar DNS_SERVERS [10.20.30.6,10.20.30.8]
  • SMTP_SERVERS
# List of SMTP servers on your network
ipvar SMTP_SERVERS [10.20.30.10,10.20.30.15]
  • HTTP_SERVERS

De todos modos, es probable que toda tu red de servidores termine yendo acá.

# List of web servers on your network
ipvar HTTP_SERVERS [10.20.30.10,10.20.30.15]
  • SQL_SERVERS y todas los demás tipos de servidores en nuestra red.
# List of sql servers on your network
ipvar SQL_SERVERS [10.20.30.12,10.20.30.14] 

# List of telnet servers on your network
ipvar TELNET_SERVERS $HOME_NET 

# List of ssh servers on your network
ipvar SSH_SERVERS $HOME_NET

# List of ftp servers on your network
ipvar FTP_SERVERS $HOME_NET

# List of sip servers on your network
ipvar SIP_SERVERS $HOME_NET
  • HTTP_PORTS

La lista por defecto es demasiado grande, así que nos limitamos a los puertos que realmente estamos usando

# List of ports you run web servers on
portvar HTTP_PORTS [80,443]

# List of ports you want to look for SHELLCODE on.
portvar SHELLCODE_PORTS !80

  • SSH_PORTS

Verificarla en caso que se usen puertos no estándar.

# List of ports you want to look for SSH connections on:
portvar SSH_PORTS 22

Afinando Preprocesadores

ssh: Protocol mismatch

Esta alerta debería limitarse a verificar que no hay un cambio de versión con miras a forzar al servidor SSH a usar una más insegura. Sin embargo, termina comprobando que todo el banner de la versión sea exactamente igual, lo que es lo mismo, clientes y servidores deben estar perfectamente uniformados en cuanto a toda las versiones de su software instalado (jaja) Hacia la línea 431, buscamos

enable_srvoverflow enable_protomismatch

y removemos enable_protomismatch, con lo que la configuración del preprocesador queda de la siguiente forma:

preprocessor ssh: server_ports { 22 } \
                  autodetect \
                  max_client_bytes 19600 \
                  max_encrypted_packets 20 \
                  max_server_version_len 100 \
                  enable_respoverflow enable_ssh1crc32 \
                  enable_srvoverflow

stream5: TCP Small Segment Threshold Exceeded

Esta alerta del preprocesador stream5 podría ayudar a detectar intentos de fragmentar paquetes para esquivar al mismo IDS, pero la definición por defecto de "Small Segment" a 150 bytes señala a mucho tráfico legítimo en sus alarmas. Por ejemplo algunos paquetes que son parte del tráfico normal para postgres y mysql pesan algo un aproximado de 8 bytes.

Buscamos en la línea 285

overlap_limit 10, small_segments 3 bytes 150, timeout 180, \

Y cambiamos la configuración a small_segments 10 bytes 2, por lo que la configuración del preprocesador queda de la siguiente forma:

preprocessor stream5_tcp: log_asymmetric_traffic no, policy windows, \
   detect_anomalies, require_3whs 180, \
   overlap_limit 10, small_segments 10 bytes 2, timeout 180, \
    ports client 21 22 23 25 42 53 79 109 110 111 113 119 135 136 137 139 143 \
        161 445 513 514 587 593 691 1433 1521 1741 2100 3306 6070 6665 6666 6667 6668 6669 \
        7000 8181 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779, \
    ports both 80 81 311 383 443 465 563 591 593 636 901 989 992 993 994 995 1220 1414 1830 2301 2381 2809 3037 3128 3702 4343 4848 5250 6988 7907 7000 7001 7144 7145 7510 7802 7777 7779 \
        7801 7900 7901 7902 7903 7904 7905 7906 7908 7909 7910 7911 7912 7913 7914 7915 7916 \
        7917 7918 7919 7920 8000 8008 8014 8028 8080 8085 8088 8090 8118 8123 8180 8243 8280 8300 8800 8888 8899 9000 9060 9080 9090 9091 9443 9999 11371 34443 34444 41080 50002 55555

stream5: Reset outside window

Esta alerta más bien señalaría posibles errores en los canales de comunicación TCP, pero en forma masiva, indica que stream5 no está bien informado de la pila TCP/IP que esta esta esta escudriñando. Verifique que el policy del preprocesador de corresponda con el sistema operativo de la red. Lo cual puede ser un problema si se tiene más de un tipo de sistema operativo trabajando en la red. Ahora, pueden aplicarse distintas reglas de dicho preprocesador a distintas redes (Pero aún no lo he probado). Lo que puede seguir siendo un problema si, tal como sucede en una red normal, segmentos de red no se corresponden con grupos de equipos corriendo un mismo tipo de sistema operativo.

En este caso particular, snort vigila una red con servidores linux. Configuro policy linux y la configuración del preprocesador queda de la siguiente manera:

preprocessor stream5_tcp: log_asymmetric_traffic no, policy linux, \
   detect_anomalies, require_3whs 180, \
   overlap_limit 10, small_segments 10 bytes 2, timeout 180, \
    ports client 21 22 23 25 42 53 79 109 110 111 113 119 135 136 137 139 143 \
        161 445 513 514 587 593 691 1433 1521 1741 2100 3306 6070 6665 6666 6667 6668 6669 \
        7000 8181 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779, \
    ports both 80 81 311 383 443 465 563 591 593 636 901 989 992 993 994 995 1220 1414 1830 2301 2381 2809 3037 3128 3702 4343 4848 5250 6988 7907 7000 7001 7144 7145 7510 7802 7777 7779 \
        7801 7900 7901 7902 7903 7904 7905 7906 7908 7909 7910 7911 7912 7913 7914 7915 7916 \
        7917 7918 7919 7920 8000 8008 8014 8028 8080 8085 8088 8090 8118 8123 8180 8243 8280 8300 8800 8888 8899 9000 9060 9080 9090 9091 9443 9999 11371 34443 34444 41080 50002 55555

http_inspect: LONG HEADER

Este alerta podría ayudar a detectar bastante tipo de ataques, por otro lado, sus consideración de "long header" a 750 caracteres es un poco exagerada. Sólo las cabeceras de BASE suelen ser mayores de 1200, ya que BASE usa la URL (El mayor uso de las cabeceras cuando se revisan los paquetes) para llamar datos del servidor mediante parámetros, lo que de hecho, siguen haciendo la mayoría de las aplicaciones web pese al uso de URLs Amigables.

Así que nos vamos la línea 306 y configuramos max_header_length 1400 \, que parece ser un valor que describe mejor nuestra red. La configuración del preprocesador queda de la siguiente forma:

preprocessor http_inspect_server: server default \
    http_methods { GET POST PUT SEARCH MKCOL COPY MOVE LOCK UNLOCK NOTIFY POLL BCOPY BDELETE BMOVE LINK UNLINK OPTIONS HEAD DELETE TRACE TRACK CONNECT SOURCE SUBSCRIBE UNSUBSCRIBE PROPFIND PROPPATCH BPROPFIND BPROPPATCH RPC_CONNECT PROXY_SUCCESS BITS_POST CCM_POST SMS_POST RPC_IN_DATA RPC_OUT_DATA RPC_ECHO_DATA } \
    chunk_length 500000 \
    server_flow_depth 0 \
    client_flow_depth 0 \
    post_depth 65495 \
    oversize_dir_length 500 \
    max_header_length 1400 \
    max_headers 100 \
    max_spaces 200 \
    small_chunk_length { 10 5 } \
[...]

Fuentes

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas