Este documento describe cómo configurar Cisco Security Appliances ASA/PIX 8.x que utiliza expresiones normales con el Marco de Políticas Modular (MPF) para bloquear o permitir ciertos sitios FTP por nombre de servidor.
Este documento asume que el dispositivo de seguridad de Cisco está configurado y funciona correctamente.
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
Cisco 5500 Series Adaptive Security Appliance (ASA) que ejecuta la versión de software 8.0(x) y posteriores
Cisco Adaptive Security Device Manager (ASDM) versión 6.x para ASA 8.x
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). If your network is live, make sure that you understand the potential impact of any command.
Consulte Convenciones de Consejos Técnicos de Cisco para obtener más información sobre las convenciones sobre documentos.
MPF proporciona una forma coherente y flexible de configurar las funciones del dispositivo de seguridad. Por ejemplo, puede utilizar MPF para crear una configuración de tiempo de espera específica para una aplicación TCP determinada, en lugar de una que se aplique a todas las aplicaciones TCP.
MPF admite estas funciones:
Normalización de TCP, límites y tiempos de espera de las conexiones TCP y UDP, y aleatorización de números de secuencia TCP
CSC
Inspección de Aplicaciones
IPS
QoS input policing
QoS output policing
cola de prioridad de QoS
La configuración del MPF consta de cuatro tareas:
Identifique el tráfico de Capa 3 y Capa 4 al que desea aplicar las acciones. Consulte Identificación del Tráfico Usando un Mapa de Clase de Capa 3/4 para obtener más información.
(Solo inspección de la aplicación.) Definir acciones especiales para el tráfico de inspección de aplicaciones. Consulte Configuración de Acciones Especiales para Inspecciones de Aplicaciones para obtener más información.
Aplique acciones al tráfico de las capas 3 y 4. Consulte Definición de Acciones Usando un Policy Map de Capa 3/4 para obtener más información.
Activa las acciones en una interfaz. Consulte Aplicación de una Política de Capa 3/4 a una Interfaz Usando una Política de Servicio para obtener más información.
Una expresión regular hace coincidir las cadenas de texto literalmente como una cadena exacta o mediante el uso de metacaracteres, por lo que puede hacer coincidir varias variantes de una cadena de texto. Puede utilizar una expresión regular para hacer coincidir el contenido de cierto tráfico de aplicación. Por ejemplo, puede hacer coincidir una cadena de URL dentro de un paquete HTTP.
Nota: Use Ctrl+V para escapar de todos los caracteres especiales en la CLI, como signos de interrogación (?) o tabulaciones. Por ejemplo, escriba d[Ctrl+V]g para ingresar d?g en la configuración.
Para crear una expresión regular, utilice el comando regex. Además, el comando regex se puede utilizar para varias funciones que requieren la coincidencia de texto. Por ejemplo, puede configurar acciones especiales para la inspección de aplicaciones con el uso del MPF que utiliza un policy map de inspección. Consulte el comando policy-map type inspect para obtener más información.
En el policy map de inspección, puede identificar el tráfico sobre el que desea actuar si crea un class map de inspección que contiene uno o más comandos match, o puede utilizar los comandos match directamente en el policy map de inspección. Algunos comandos match permiten identificar el texto de un paquete mediante una expresión regular. Por ejemplo, puede hacer coincidir las cadenas de URL dentro de los paquetes HTTP. Puede agrupar expresiones regulares en un mapa de clase de expresión regular. Consulte el comando class-map type regex para obtener más información.
Esta tabla enumera los metacaracteres que tienen significados especiales.
Carácter | Descripción | Notas |
. | Punto | Coincide con cualquier carácter único. Por ejemplo, d.g coincide con dog, dag, dtg y cualquier palabra que contenga esos caracteres, como doggonnit. |
(exp) | Subexpresión | Una subexpresión segrega caracteres de los caracteres circundantes, de modo que puede utilizar otros metacaracteres en la subexpresión. Por ejemplo, d(o|a)g coincide con dog y dag, pero do|ag coincide con do y ag. Una subexpresión también se puede utilizar con cuantificadores de repetición para diferenciar los caracteres destinados a la repetición. Por ejemplo, ab(xy){3}z coincide con abxyxyxyz. |
| | Alternancia | Coincide con cualquier expresión que separe. Por ejemplo, dog|cat coincide con dog o cat. |
? | Signo de interrogación | Cuantificador que indica que hay 0 o 1 de la expresión anterior. Por ejemplo, lo?se coincide con lse o lose. Nota: Debe introducir Ctrl+V y, a continuación, el signo de interrogación o se invocará la función de ayuda. |
* | Asterisco | Cuantificador que indica que hay 0, 1 o cualquier número de la expresión anterior. Por ejemplo, lo*se coincide con lse, lose, lose, etc. |
{x} | Repetir cuantificador | Repita exactamente x veces. Por ejemplo, ab(xy){3}z coincide con abxyxyxyz. |
{x,} | Cuantificador de repetición mínimo | Repetir al menos x veces. Por ejemplo, ab(xy){2,}z coincide con abxyxyz, abxyxyxyz, etc. |
[abc] | Clase Character | Coincide con cualquier carácter entre paréntesis. Por ejemplo, [abc] coincide con a, b o c. |
[^abc] | Clase de caracteres negada | Coincide con un único carácter que no está entre corchetes. Por ejemplo, [^abc] coincide con cualquier carácter que no sea a, b o c. [^A-Z] coincide con cualquier carácter individual que no sea una letra mayúscula. |
[a-c] | Clase de intervalo de caracteres | Coincide con cualquier carácter del intervalo. [a-z] coincide con cualquier letra minúscula. Puede mezclar caracteres e intervalos: [abcq-z] coincide con a, b, c, q, r, s, t, u, v, w, x, y, z, al igual que [a-cq-z]. El carácter de guión (-) es literal sólo si es el último o el primer carácter entre corchetes: [abc-] o [-abc]. |
"" | Comillas | Conserva los espacios iniciales o finales de la cadena. Por ejemplo, " test" conserva el espacio inicial cuando busca una coincidencia. |
^ | Símbolo de intercalación | Especifica el principio de una línea. |
\ | Carácter de escape | Cuando se utiliza con un metacarácter, coincide con un carácter literal. Por ejemplo, \[coincide con el corchete de apertura. |
carbón | Carácter | Cuando el carácter no es un metacarácter, coincide con el carácter literal. |
\r | Retorno de carro | Coincide con un retorno de carro: 0x0d. |
\n | Nueva Línea | Coincide con una nueva línea: 0x0a. |
\t | Ficha | Coincide con una ficha: 0x09. |
\f | Formfeed | Coincide con un formato: 0x0c. |
\xNN | Número hexadecimal de escape | Coincide con un carácter ASCII que utiliza un hexadecimal que tiene exactamente dos dígitos. |
\NNN | Número octal de escape | Coincide con un carácter ASCII como octal que tiene exactamente tres dígitos. Por ejemplo, el carácter 040 representa un espacio. |
En esta sección encontrará la información para configurar las funciones descritas en este documento.
Nota: Utilice la herramienta Command Lookup (sólo para clientes registrados) para obtener más información sobre los comandos utilizados en esta sección.
En este documento, se utiliza esta configuración de red:
Nota: Los sitios FTP seleccionados se permiten o se bloquean mediante expresiones regulares.
En este documento, se utilizan estas configuraciones:
Configuración CLI ASA |
---|
ciscoasa#show run
: Saved
:
ASA Version 8.0(4)
!
hostname ciscoasa
domain-name cisco.com
enable password 8Ry2YjIyt7RRXU24 encrypted
passwd 2KFQnbNIdI.2KYOU encrypted
names
!
interface GigabitEthernet0/0
nameif outside
security-level 0
ip address 10.66.79.86 255.255.255.224
!
interface GigabitEthernet0/1
nameif inside
security-level 100
ip address 10.238.26.129 255.255.255.248
!
interface Management0/0
shutdown
no nameif
no security-level
no ip address
!
!--- Write regular expression (regex) to match the FTP site you want !--- to access. NOTE: The regular expression written below must match !--- the response 220 received from the server. This can be different !--- than the URL entered into the browser. For example, !--- FTP Response: 220 g1u0103c.austin.hp.com
regex FTP_SITE1 "([0-9A-Za-z])*[Hh][Pp]\.[Cc][Oo][Mm]"
regex FTP_SITE2 "([0-9A-Za-z])* CISCO SYSTEMS ([0-9A-Za-z])*"
!--- NOTE: The regular expression will be checked against every line !--- in the Response 220 statement (which means if the FTP server !--- responds with multiple lines, the connection will be denied if !--- there is no match on any one line).
boot system disk0:/asa804-k8.bin
ftp mode passive
pager lines 24
logging enable
logging timestamp
logging buffered debugging
mtu outside 1500
mtu inside 1500
no failover
icmp unreachable rate-limit 1 burst-size 1
asdm image disk0:/asdm-61557.bin
no asdm history enable
arp timeout 14400
global (outside) 1 interface
nat (inside) 1 0.0.0.0 0.0.0.0
route outside 0.0.0.0 0.0.0.0 10.66.79.65 1
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
dynamic-access-policy-record DfltAccessPolicy
http server enable
http 0.0.0.0 0.0.0.0 inside
http 0.0.0.0 0.0.0.0 outside
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart
telnet timeout 5
ssh scopy enable
ssh timeout 5
console timeout 0
management-access inside
threat-detection basic-threat
threat-detection statistics access-list
no threat-detection statistics tcp-intercept
class-map type regex match-any FTP_SITES
match regex FTP_SITE1
match regex FTP_SITE2
!−−− Class map created in order to match the server names !−−− of FTP sites to be blocked by regex.
class-map type inspect ftp match-all FTP_class_map
match not server regex class FTP_SITES
!−−− Write an FTP inspect class map and match based on server !--- names, user name, FTP commands, and so on. Note that this !--- example allows the sites specified with the regex command !--- since it uses the match not command. If you need to block !--- specific FTP sites, use the match command without the not option.
class-map inspection_default
match default-inspection-traffic
policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
policy-map type inspect ftp FTP_INSPECT_POLICY
parameters
class FTP_class_map
reset log
!−−− Policy map created in order to define the actions !--- such as drop, reset, or log.
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect h323 h225
inspect h323 ras
inspect netbios
inspect rsh
inspect rtsp
inspect skinny
inspect esmtp
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
inspect icmp
inspect ftp strict FTP_INSPECT_POLICY
!--- The FTP inspection is specified with strict option !--- followed by the name of policy.
service-policy global_policy global
prompt hostname context
Cryptochecksum:40cefb1189e8c9492ed7129c7577c477
: end |
Complete estos pasos para configurar las expresiones regulares y aplicarlas a MPF para bloquear los sitios FTP específicos:
Determine el nombre del servidor FTP.
El motor de inspección FTP puede proporcionar inspección utilizando criterios diferentes, como comando, nombre de archivo, tipo de archivo, servidor y nombre de usuario. Este procedimiento utiliza el servidor como criterio. El motor de inspección FTP utiliza la respuesta server 220 enviada por el sitio FTP como valor del servidor. Este valor puede ser diferente del nombre de dominio utilizado por el sitio. Este ejemplo utiliza Wireshark para capturar paquetes FTP al sitio que se inspecciona para obtener el valor de respuesta 220 para su uso en nuestra expresión regular en el paso 2.
Según la captura, el valor de respuesta 220 para ftp://hp.com es (por ejemplo) q5u0081c.atlanta.hp.com.
Crear expresiones regulares.
Elija Configuration > Firewall > Objects > Regular Expressions, y haga clic en Agregar bajo la pestaña Expresión Regular para crear expresiones regulares como se describe en este procedimiento:
Cree una expresión regular, FTP_SITE1, para hacer coincidir la respuesta 220 (como se ve en la captura de paquetes en Wireshark o cualquier otra herramienta utilizada) recibida del sitio ftp (por ejemplo, ".* hp\.com.*"), y haga clic en Aceptar.
Nota: Puede hacer clic en Build para obtener ayuda sobre cómo crear expresiones regulares más avanzadas.
Una vez creada la expresión regular, haga clic en Aplicar.
Cree clases de expresiones regulares.
Elija Configuration > Firewall > Objects > Regular Expressions, y haga clic en Agregar bajo la sección Clases de Expresión Regular para crear la clase como se describe en este procedimiento:
Cree una clase de expresión regular, FTP_SITES, para que coincida con cualquiera de las expresiones regulares FTP_SITE1 y FTP_SITE2, y haga clic en Aceptar.
Una vez creado el mapa de clase, haga clic en Apply.
Inspeccione el tráfico identificado con mapas de clase.
Elija Configuration > Firewall > Objects > Class Maps > FTP > Add, haga clic con el botón derecho y elija Add para crear un mapa de clase para inspeccionar el tráfico FTP identificado por varias expresiones regulares como se describe en este procedimiento:
Cree un mapa de clase, FTP_Block_Site, para hacer coincidir la respuesta FTP 220 con las expresiones regulares que creó.
Si desea excluir los sitios especificados en la expresión regular, haga clic en el botón de opción No Match.
En la sección Valor, elija una expresión regular o una clase de expresión regular. Para este procedimiento, elija la clase que se creó anteriormente.
Haga clic en Apply (Aplicar).
Establezca las acciones para el tráfico coincidente en la política de inspección.
Elija Configuration > Firewall > Objects > Inspect Maps > FTP > Add para crear una política de inspección y establecer la acción para el tráfico coincidente según sea necesario.
Introduzca el nombre y una descripción de la política de inspección. (Por ejemplo, FTP_INSPECT_POLICY.)
Haga clic en Details.
Haga clic en la pestaña Inspecciones. (1)
Haga clic en Add (Agregar). (2)
Haga clic en el botón de opción Varias coincidencias y elija la clase de tráfico en la lista desplegable. (3)
Seleccione la acción de restablecimiento que desee activar o desactivar. Este ejemplo habilita el restablecimiento de la conexión FTP para todos los sitios FTP que no coincidan con nuestros sitios especificados. (4)
Haga clic en Aceptar, haga clic en Aceptar nuevamente y luego haga clic en Aplicar. (5)
Aplique la política FTP de inspección a la lista de inspección global.
Elija Configuration > Firewall > Service Policy Rules.
En el lado derecho, seleccione la política inspection_default y haga clic en Edit.
En la ficha Acciones de regla (1), haga clic en el botón Configurar para FTP. (2)
En el cuadro de diálogo Seleccionar mapa de inspección de FTP, marque la casilla de verificación Usar FTP estricto y, a continuación, haga clic en el botón de opción Mapa de inspección de FTP para un control preciso de la inspección.
La nueva política de inspección de FTP, FTP_INSPECT_POLICY, debe estar visible en la lista.
Haga clic en Aceptar, haga clic en Aceptar nuevamente y luego haga clic en Aplicar.
Use esta sección para confirmar que su configuración funciona correctamente.
La herramienta Output Interpreter Tool (clientes registrados solamente) (OIT) soporta ciertos comandos show. Utilice la OIT para ver un análisis del resultado del comando show.
show running-config regex—Muestra las expresiones regulares que se han configurado.
ciscoasa#show running-config regex regex FTP_SITE1 "[Cc][Ii][Ss][Cc][Oo]\.[Cc][Oo][Mm]" regex FTP_SITE2 ".*hp\.com.*"
show running-config class−map—Muestra los mapas de clase que se han configurado.
ciscoasa#show running-config class-map class-map type regex match-any FTP_SITES match regex FTP_SITE1 match regex FTP_SITE2 class-map type inspect ftp match-all FTP_Block_Site match not server regex class FTP_SITES class-map inspection_default match default-inspection-traffic !
show running-config policy-map type inspect http: muestra los mapas de política que inspeccionan el tráfico HTTP que se ha configurado.
ciscoasa#show running-config policy-map type inspect ftp ! policy-map type inspect ftp FTP_INSPECT_POLICY parameters mask-banner mask-syst-reply class FTP_Block_Site reset log !
Show running-config policy-map: muestra todas las configuraciones de policy map, así como la configuración predeterminada de policy map.
ciscoasa#show running-config policy-map ! policy-map type inspect dns preset_dns_map parameters message-length maximum 512 policy-map type inspect ftp FTP_INSPECT_POLICY parameters mask-banner mask-syst-reply class FTP_Block_Site reset log policy-map global_policy class inspection_default inspect dns preset_dns_map inspect h323 h225 inspect h323 ras inspect netbios inspect rsh inspect rtsp inspect skinny inspect esmtp inspect sqlnet inspect sunrpc inspect tftp inspect sip inspect xdmcp inspect ftp strict FTP_INSPECT_POLICY !
show running-config service-policy—Muestra todas las configuraciones de políticas de servicio que se están ejecutando actualmente.
ciscoasa#show running-config service-policy service-policy global_policy global
En esta sección encontrará información que puede utilizar para solucionar problemas de configuración.
Puede utilizar el comando show service-policy para verificar que el motor de inspección inspecciona el tráfico y lo permite o lo descarta correctamente.
ciscoasa#show service-policy Global policy: Service-policy: global_policy Class-map: inspection_default Inspect: dns preset_dns_map, packet 0, drop 0, reset-drop 0 Inspect: h323 h225 _default_h323_map, packet 0, drop 0, reset-drop 0 Inspect: h323 ras _default_h323_map, packet 0, drop 0, reset-drop 0 Inspect: netbios, packet 0, drop 0, reset-drop 0 Inspect: rsh, packet 0, drop 0, reset-drop 0 Inspect: rtsp, packet 0, drop 0, reset-drop 0 Inspect: skinny , packet 0, drop 0, reset-drop 0 Inspect: esmtp _default_esmtp_map, packet 0, drop 0, reset-drop 0 Inspect: sqlnet, packet 0, drop 0, reset-drop 0 Inspect: sunrpc, packet 0, drop 0, reset-drop 0 Inspect: tftp, packet 0, drop 0, reset-drop 0 Inspect: sip , packet 0, drop 0, reset-drop 0 Inspect: xdmcp, packet 0, drop 0, reset-drop 0 Inspect: ftp strict FTP_INSPECT_POLICY, packet 40, drop 0, reset-drop 2
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
21-Jul-2009 |
Versión inicial |