Listas de acceso

25
Listas de acceso Introducción Las listas de acceso, también llamadas listas de control de acceso (ACL, Access Control Lists), constituyen los mecanismos principales de filtrado de paquete en la mayor parte de los enrutadores de Cisco. Asimismo, las ACL se utilizan para otra serie de funciones, incluyendo el filtrado de ruta y la utilización de determinados comandos show. Por ello, resulta necesario tener un sólido conocimiento sobre las ACL para poder resolver cualquier clase de problemas y configurar los equipos de Cisco en la mayoría de las redes. Las ACL permiten controlar qué clase de coincidencia efectúa un enrutador en relación con una determinada función, como el envío de paquetes. Por ejemplo, si no existe una forma de especificar de forma condicional qué paquetes pueden enviarse de una red a otra (como es el caso de Internet), el usuario tendrá que autorizar el envío de todos los paquetes (lo cual hace que la red en cuestión sea un objetivo sencillo para los hockers), o bien denegar todos los paquetes (lo que haría imposible la conectividad). El control general a través del filtrado de paquete constituye una función primaria de las ACL. Sin embargo, las ACL se pueden utilizar con comandos más complejos (como los mapas de ruta o las listas de distribución), lo que proporciona un grado de control muy preciso sobre la funcionalidad del enrutador. En resumidas cuentas, siempre que sea preciso utilizar alguna clase de coincidencia condicional, las ACL suelen ser la herramienta a elegir. En el presente escrito se analizarán las características de las ACL, explicando fundamentalmente su propósito principal: el filtrado de paquetes. Aunque todos los conceptos que se estudian aquí también se aplican al resto de los comandos que utilizan las ACL, en el presente escrito no se considerarán las características de dichos comandos (en este sentido, si el lector desea consultar ejemplos de listas de distribución ACL en protocolos de enrutamiento, se recomienda consultar los capítulos que van del 22 al 26 del Manual de referencia de CISCO). Por otra parte, como para comprender el funcionamiento de las ACL es preciso conocer todas las cuestiones relacionadas con su configuración, a lo largo del presente escrito se examinan la resolución de problemas y la configuración de las ACL en lugar de analizarlas en apartados distintos. Finalmente, como TCP/IP constituye el tema fundamental del presente libro, el filtrado de paquete IPX no se analiza aquí. Comprender el filtrado de paquetes Los objetivos básicos del filtrado de paquete resultan muy sencillos. Supongamos que se desea que una red remota (generalmente, una red pública como Internet) acceda exclusivamente a recursos específicos situados en una red privada, al tiempo que se autoriza el acceso de la red privada a la red remota. Parece simple, ¿verdad? Desafortunadamente, es más fácil decirlo que hacerlo. Para ver por qué, conviene observar la situación que se ilustra en la ilustración No. 1, donde se pretende efectuar un filtrado de paquete. Ilustración 1: Red simple no segura

Transcript of Listas de acceso

Page 1: Listas de acceso

Listas de acceso  

Introducción  Las listas de acceso, también llamadas listas de control de acceso (ACL, Access Control Lists), constituyen los mecanismos principales de filtrado de paquete en la mayor parte de los enrutadores de Cisco. Asimismo, las ACL se utilizan para otra  serie de  funciones,  incluyendo  el  filtrado  de  ruta  y  la  utilización  de  determinados  comandos  show.  Por  ello, resulta necesario  tener un  sólido  conocimiento  sobre  las ACL para poder  resolver  cualquier  clase de problemas  y configurar  los  equipos  de  Cisco  en  la mayoría  de  las  redes.  Las ACL  permiten  controlar  qué  clase  de  coincidencia efectúa un enrutador en relación con una determinada función, como el envío de paquetes.  

Por ejemplo, si no existe una  forma de especificar de  forma condicional qué paquetes pueden enviarse de una red a otra (como es el caso de Internet), el usuario tendrá que autorizar el envío de todos los paquetes (lo cual hace que  la  red en  cuestión  sea un objetivo  sencillo para  los hockers), o bien denegar  todos  los paquetes  (lo que haría imposible la conectividad). El control general a través del filtrado de paquete constituye una función primaria de las ACL. Sin embargo,  las ACL se pueden utilizar con comandos más complejos  (como  los mapas de  ruta o  las  listas de distribución),  lo  que  proporciona  un  grado  de  control  muy  preciso  sobre  la  funcionalidad  del  enrutador.  En resumidas  cuentas,  siempre que  sea preciso utilizar alguna  clase de  coincidencia  condicional,  las ACL  suelen  ser  la herramienta a elegir. 

En  el presente  escrito  se  analizarán  las  características de  las ACL,  explicando  fundamentalmente  su propósito principal: el filtrado de paquetes. Aunque todos los conceptos que se estudian aquí también se aplican al resto de los comandos que utilizan las ACL, en el presente escrito no se considerarán las características de dichos comandos (en este  sentido,  si el  lector desea  consultar ejemplos de  listas de distribución ACL  en protocolos de enrutamiento,  se recomienda consultar  los capítulos que van del 22 al 26 del Manual de referencia de CISCO). Por otra parte, como para  comprender  el  funcionamiento  de  las  ACL  es  preciso  conocer  todas  las  cuestiones  relacionadas  con  su configuración, a lo largo del presente escrito se examinan la resolución de problemas y la configuración de las ACL en lugar de analizarlas en apartados distintos. Finalmente, como TCP/IP constituye el  tema  fundamental del presente libro, el filtrado de paquete IPX no se analiza aquí. 

 

Comprender el filtrado de paquetes 

Los  objetivos  básicos  del  filtrado  de  paquete  resultan muy  sencillos.  Supongamos  que  se  desea  que  una  red remota  (generalmente, una  red pública como  Internet) acceda exclusivamente a  recursos específicos situados en una  red privada, al  tiempo que  se autoriza el acceso de  la  red privada a  la  red  remota. Parece  simple, ¿verdad? Desafortunadamente, es más  fácil decirlo que hacerlo. Para ver por qué, conviene observar  la situación  que  se i lustra  en la ilustración No. 1, donde se pretende efectuar un filtrado de paquete. 

 

Ilustración 1: Red simple no segura 

 

Page 2: Listas de acceso

La  red que se  ilustra en  la  figura no está utilizando  la  traducción de direcciones de  red  (NAT, Network Address Trasslation),  sino  que  simplemente  gestiona  direcciones  IP  públicas  para  las  dos  estaciones  de  trabajo, proporcionándoles acceso a Internet. El problema que presenta este esquema es que, sin filtrado de paquete, cada servidor de la red privada puede comunicarse con Internet libremente, y viceversa. Suponiendo que  la información bancada  online  del  usuario  está  colocada  en  una  unidad  compartida  situada  en  el  servidor  64.1.1.69,  la  única protección que recibe el servidor ante la aparición de intrusos es el sistema de seguridad del sistema operativo, que habitualmente resulta altamente sospechoso. 

Antes de aprender a resolver este problema conviene examinar el significado de algunos de los nuevos términos asociados con la NAT y el filtrado de paquete. La red interna es la red que se desea proteger de un acceso realizado desde el exterior. La red externa es la red remota. La interfaz interna es la interfaz de enrutador vinculada a la red interna. La  interfaz externa es  la  interfaz vinculada a  la  red externa. Finalmente, cuando  se  trabaja con  filtros es preciso comprender el concepto de dirección (o sentido del flujo): el tipo de tráfico, entrante o saliente, al que se aplica el filtro. 

Si la dirección es entrante, el filtro se aplica al tráfico introduciendo la interfaz desde la red vinculada. En el caso de una  interfaz  interna,  el  tráfico  entrante no  es otra  cosa que el  tráfico que  introduce  la  interfaz desde  la  red interna. Si este tráfico se enrula hacia la red externa, tendría que considerarse tráfico saliente en la interfaz externa. Si  la dirección es saliente, el filtro se aplica al tráfico que abandona  la  interfaz en  la red vinculada. En el caso de una  interfaz  interna  se trata de tráfico enviado desde  la  interfaz  interna a  la red  interna. Si este tráfico se enrula desde la red externa, también se debe considerar tráfico entrante en la interfaz externa. 

A continuación se resolverán  las cuestiones suscitadas en el ejemplo anterior. Para solucionar el problema del acceso libre a los recursos internos se puede utilizar el filtrado de paquete en el enrutador para denegar el acceso a la  red  interna desde  Internet. Por ejemplo, es posible eliminar  todo el acceso a  la  red  interna desde  Internet, de forma que se puede optar por utilizar un  filtrado de paquete que rechace  todos  los paquetes destinados a  la red interna. Para ello habría que util izar  un  filtro  de paquete que ejecutara  la  función «denegar  todo»o «denegar paquetes con una dirección de destino de 64.1.1.64 a 71». Posteriormente, habría que aplicar el filtrado de paquete a  los  paquetes  entrantes  en  la  interfaz  externa  (64.1.1.2/24)  o  a  los  paquetes  salientes  en  la  interfaz  interna (64.1.1.6.5/29). 

Parece que el problema  se ha  resuelto... Desafortunadamente, aún no es así. Este  filtro de paquete no  sólo rechazaría  el  acceso  no  autorizado  (correctamente)  desde  el mundo  exterior,  sino  que  también  denegaría  los paquetes  de  retorno  procedentes  de  los  anfitriones  internos  a  Internet.  En  otras  palabras,  cuando  se  envía  un paquete a wivw.cwco.com desde el servidor 64.1.1.69,  los paquetes de establecimiento de conexión TCP deberían abandonar  la  red  privada  libremente  dirigiéndose  a  Internet,  pero  cuando  el  servidor  web  situado  en  Cisco responda, ¡el filtro debería descartar los paquetes! Obviamente, no se trata de una solución adecuada, así que hay que volver a la mesa de trabajo. 

Una posible solución a este problema consiste en autorizar  la existencia de paquetes que utilicen números de puerto  de  cliente  para  entrar  en  la  red  privada.  Habitualmente,  los  clientes  utilizarían  puertos  considerados exclusivamente como «dinámicos y privados» por  la  IANA, que  incluye  todos  los puertos situados entre 49.192 y 65.535. Sin embargo, muchos  clientes  también utilizarían puertos  comprendidos en un  rango que  va de 1.024 a 49.191  (definidos  por  la  IANA  como  «registrados»).  Esto  conduce  a  una  serie  de  problemas  a  la  hora  de  filtrar paquetes, ya que  si  simplemente  se  rechaza  cada paquete que  tiene un número de puerto  inferior a 49.192,  se acabaría por denegar el tráfico de retorno legítimo tanto a los clientes como al tráfico de carácter sospechoso. 

Así que ¿por qué no autorizar que todo el tráfico utilice un puerto de destino situado por encima de 1023? La respuesta es sencilla: porque varias aplicaciones de servidor de uso común, muchas de las cuales no deberían resultar accesibles desde servidores externos, utilizan puertos situados en ese rango (como es el caso del servidor de catálogo global de Microsoft en el Directorio Activo situado en los puertos 3268/3269 y el servidor SNA de Microsoft situado en 1477 y 1478). 

Nota:  

Si se desea obtener un listado completo de los números de puerto registrados y conocidos, hay que visitar la dirección http://www.iana.org/ assignments/port‐numbers.htm. 

La solución más fácil para este pequeño problema consiste en admitir exclusivamente el tráfico de conexiones  establecidas. Mediante  esta  acción  cabe  indicar  al  enrutador  que  admita  la  llegada  de paquetes de  retorno procedentes de  cualquier  servidor  externo, posibilitando  su  entrada  en  la  red privada. De esta manera, mientras  la sesión TCP con el servidor  remoto siga en activo, el enrutador autorizará que los paquetes entren en la red privada. 

El filtrado de paquete establecido funciona de la manera siguiente: 

Page 3: Listas de acceso

1. Se configura un filtro establecido en  la  interfaz externa para  los paquetes entrantes que afirme básicamente: «Admitir todas las conexiones establecidas». 

2.       Se envía un paquete a un servidor remoto. Puesto que el  filtro de paquete está configurado para  comprobar  los  paquetes  entrantes  exclusivamente  en  la  interfaz  externa,  todos  los  paquetes procedentes de la red interna que van a Internet quedan autorizados automáticamente. 

3.    El servidor remoto responde. Éste debe tener los bits ACK o RST configurados en el paquete de respuesta. El filtro establecido autoriza todos los paquetes procedentes de la red externa con estos bits configurados en posición de entrada. 

Obviamente, la funcionalidad descrita en el paso 3 deja un pequeño agujero en lo que respecta a la seguridad de la red. Por ejemplo, un hacker avispado podría configurar manualmente el bit ACK en un paquete TCP e introducir la red interna. Por esta razón, los mecanismos de Cisco también admiten un tipo especial de filtro de paquete, conocido como ACL reflexiva. Una ACL reflexiva crea dinámicamente entradas de filtro de paquete para así poder autorizar el acceso hacia y desde el servidor, así como el destino para el que se ha establecido la sesión. Las ACL reflexivas funcionan de la manera siguiente: 

1.  Se  configura el  filtro  reflexivo en  la  interfaz externa para  los paquetes entrantes, que  afirme: «Autorizar todas las conexiones establecidas».  

2.  Se  envía  un  paquete  al  servidor  remoto  usando  una  IP  de  origen  específica  (por  ejemplo, 64.1.1.69), un puerto de origen específico (por ejemplo, 50.000), un destino IP específico (como podría ser 71.100.1.1) y un puerto de destino específico (por ejemplo, 80 para HTTP). La ACL reflexiva cons‐truye un filtro de paquete dinámico para autorizar todas las respuestas clonadas desde la red externa para entrar en la red interna hasta que haya caducado el tiempo límite o hasta que el bit FIN aparezca en la sesión. En ' este caso, la ACL reflexiva crearía una entrada que diría lo siguiente: «Autorizar todos los paquetes procedentes de  la dirección de origen 71.100.1.1  con un puerto de origen de 80  y un destino de 64.1.1.69, con un puerto de destino de 50.000 para entrar en la red interna». 

3.    El servidor remoto responde y se envía el paquete. 

4.    Cuando termina la sesión (aparece el bit FIN o caduca el tiempo límite), se elimina el filtro de paquete dinámico. 

Nota 

En  muchos  servidores  proxy/NAT,  incluyendo  el  servidor  ISA  de  Microsoft,  las  conexiones establecidas  y  las  conexiones  reflejadas  se autorizan automáticamente, mientras que el  resto de  los paquetes se rechazan como efecto secundario de la creación de la tabla NAT/PAT. Aunque no se trata técnicamente de un filtrado de paquete, su funcionamiento es el mismo. 

El  filtrado  reflexivo  simplifica  las  cosas,  facilitando  la  autorización  eficaz  del  tráfico  interno  para acceder a la red externa. Sin embargo, esta clase de filtrado tiene dos características que hay que tener en cuenta: 

• El filtrado reflexivo no funciona con todas las aplicaciones. Específicamente, aquellas aplicaciones que  cambian  los números de puerto  en  el  transcurso de  la  sesión  (por  ejemplo,  FTP  y RPC) deben autorizarse estáticamente. 

• Asimismo,  se pueden utilizar  filtros  reflexivos para  autorizar  sólo  aquellos  tipos  específicos de tráfico que vayan a emplearse para acceder a la red externa desde la red interna. 

A  continuación  se  examinará  el  primer  punto.  Ciertas  aplicaciones  cambian  dinámicamente  los puertos  en  el  transcurso  de  una  sesión.  Dichas  aplicaciones  deben  autorizarse  para  transmitir elementos  (si  se  requiere)  de  forma  estática.  Por  ejemplo,  FTP  utiliza  dos  puertos,  20  y  21,  en  el transcurso de  las comunicaciones. Cuando se establece una conexión FTP se utiliza el puerto 21 para transferir el control de sesión de estilo Telnet. Sin embargo, cuando se comienza a descargar un archi‐vo se utiliza el puerto 20 para la transferencia. Las ACL reflexivas no conocen el puerto de transferencia de archivo. Lo único que conocen es el puerto utilizado  inicialmente, por  tanto  la ACL bloquearía  la transferencia FTP. La llamada de procedimiento remoto (RPC, Remote Procedure Cali], utilizada por la mayor parte de  las aplicaciones de servidor de Microsoft, funciona de manera similar, pero añade un elemento de complejidad adicional. Tras la conexión inicial, RPC escoge un puerto al azar en 1024 para establecer una comunicación. 

Para resolver las cuestiones relacionadas con estos tipos de aplicaciones existen dos posibilidades: 

Page 4: Listas de acceso

•  Cambiar  a  una  solución  de  cortafuegos  más  sólida  que  comprenda  los  detalles  de  nivel  de aplicación (eficaz, pero quizás muy cara). 

• Catalogar esta clase de aplicaciones, el puerto utilizado y los puertos abiertos. 

Nota: 

Algunas soluciones proxy/cortafuegos ya incluyen la mayoría de los filtros de nivel de aplicación que puedan resultar necesarios. El soporte FTP, por ejemplo, está disponible por omisión en  la mayoría de los productos comerciales. 

Puesto  que  la  primera  solución  escapa  al marco  planteado  en  el  presente  libro,  se  analizará  la segunda. La  forma más  sencilla de  implementarla consiste en activar ACL  reflexivas y  luego verificar qué aplicaciones no funcionan. Con el tiempo, el usuario sabrá qué aplicaciones podrá considerar como ACL estáticas para adaptarse prácticamente a todas  las situaciones (como FTP), pero,  inicialmente, se explicará  la  forma  más  rápida  de  comenzar.  Una  vez  que  se  haya  determinado  cuáles  son  las aplicaciones que no tienen soporte de las ACL reflexivas, se pueden rastrear los puertos utilizados por esta aplicación y configurar las ACL para transmitir este tráfico específico. Por ejemplo, para que todos los clientes puedan utilizar FTP habría que configurar una ACL estática que dijera lo siguiente: «Autori‐zar todo el tráfico con un puerto de origen de 20 y una dirección de destino equivalente a todas  las direcciones presentes en la red interna». 

En el  caso de  las aplicaciones que elijan puertos aleatorios,  como es el  caso de RPC,  la  solución resulta  algo más  compleja.  Si  la  aplicación  sólo  utiliza  un  pequeño  rango  de  puertos,  simplemente habrá que abrir  los puertos en dicho rango. Sin embargo, si  la aplicación utiliza un extenso rango de puertos  (como RPC) el  trabajo  se  complica. El primer paso  consiste en obligar a  la aplicación a que utilice un rango de puertos más pequeño. Así, por ejemplo, en el caso de RPC, se puede modificar el registro de Windows en  los anfitriones  (normalmente, servidores) que  requieran conectividad RPC a través del cortafuegos. Una vez definido un rango pequeño de puertos aleatorios, para utilizarlos basta con añadir una sentencia de ACL estática que permita que dichos puertos se comuniquen con estos puertos específicos. 

Por ejemplo, si hay cinco servidores en el rango de direcciones IP 70.1.1.5 a 70.1.1.9 que necesiten comunicarse utilizando RBC con otro servidor en  la dirección IP 140.0.0.1, en primer  lugar habría que obligar a que, en todos los servidores, RPC utilizara puertos dentro de un rango dado, como puede ser el  comprendido  entre  50.000  y  60.000.  Luego  habría  que  añadir  una  sentencia  ACL  en  la  interfaz externa del cortafuegos para la red 70.1.1.0 que dijera lo siguiente: «Autorizar paquetes entrantes con una dirección de origen de 140.0.0.1 que use cualquier número de puerto con una dirección de destino en el  rango  comprendido entre 70.1.1.5 y 70.1.1.9, y  con un puerto de destino en el  rango  situado entre 50.000 y 60.000». En el cortafuegos correspondiente a la red 140.0.0.0 simplemente habría que reflejar esta sentencia. 

CONSEJO 

Si  se desea  consultar  información detallada  sobre  cómo obligar a RPC para que utilice un  rango específico de puertos en  las plataformas de servidor de Microsoft en uso hay que consultar el artículo Q154596: http://support. microsoft.com/def a u lt.aspx?scid=kb;EN‐US;q154596. 

Sin embargo, en el  caso del  filtrado de paquetes  se puede actuar de una  forma más  compleja y elegir  la posibilidad de autorizar exclusivamente ciertos tipos de tráfico desde  los anfitriones  internos para permitir que  salgan a  la  red externa. Por ejemplo,  suponiendo que  sólo  se desea proporcionar acceso a Internet para navegación web, pero no se quiere que los usuarios empleen otras aplicaciones estándar de Internet, como FTP, Telnet y SMTP, o bien si no se desea que los clientes internos tengan la  capacidad de utilizar  aplicaciones no  admitidas  (y que en ocasiones consumen un gran ancho de banda) como es el caso de Quake o Napster, habría que crear una ACL reflexiva que diga lo siguiente: «Autorizar que los anfitriones internos accedan a todos los anfitriones externos utilizando el puerto 80 (HTTP) y 443 (HTTPS/SSL)». Posteriormente habría que aplicar la ACL a la interfaz de enrutador interna para el tráfico entrante. 

Consejo 

Por regla general, hay que intentar aplicar el filtrado de paquete tan cerca del borde de la red como sea posible. Asimismo, hay que  intentar filtrar el tráfico cuando se entra en una  interfaz (dirección de entrada)  en  lugar  de  hacerlo  cuando  se  sale  de  ella  (dirección  de  salida).  Esta  estrategia  ayuda  a conservar  los  recursos del  enrutador,  eliminando  la necesidad de que  éste  efectúe un proceso  en  el paquete antes de arrojarlo al «cubo de bits». 

Page 5: Listas de acceso

 

Uso de la NAT y la PAT con filtrado de paquetes 

La traducción de direcciones de red  (NAT, Netwvork Address Translation) puede simplificar  la vida del programador evitando que tenga que concentrarse en la cuestión del acceso no autorizado a anfitriones situados en  la  red privada. Por definición,  la NAT y  la  traducción de direcciones de puerto  (PAT, Pon Address Translation) generan tablas de traducción dinámicamente (aunque también cabe la posibilidad de definir entradas estáticas) para autorizar anfitriones procedentes del mundo externo de modo que entren en la red interna. Asimismo, estas entradas dinámicas se crean sólo cuando un anfitrión interno necesita acceder al mundo externo. Si un anfitrión externo desea comunicarse con un anfitrión interno y el mecanismo NAT no dispone de una entrada en la tabla de traducción para el anfitrión de destino, el paquete se rechaza. Por consiguiente, como si se tratara de un subproducto NAT, los recursos internos ya tienen un nivel de seguridad similar al de una ACL reflexiva. 

Nota: 

   Si  desea  conocer  las  características  de  la NAT  puede  consultar  el  Captulo  6  de  CISCO, Manual  de referencia‐ 

Si en la red interna existen anfitriones que deben resultar accesibles desde anfitriones situados en la red externa, como puede ser el caso de un servidor web, basta con agregar una entrada estática en la NAT similar a  la entrada que habitualmente se colocaría en un  filtro de paquete estándar, exceptuando el hecho de que hay que especificar la dirección externa y el puerto asociado con el servidor web, así como la  dirección  interna  y  el puerto  asociado  con  dicho  servidor.  Por  ejemplo,  en  la  ilustración No.  2  se muestra  la red que aparecía en  la  Ilustración No. 1 con  la  incorporación del direccionamiento privado destinado a la red interna (el enrutador está ejecutando la NAT) y un servidor web en la red interna. En este caso habría que estipular que todo el tráfico externo estuviera autorizado para acceder al servidor web, pero sólo en lo que respecta a HTTP (no se debe autorizar el acceso al servidor web utilizando cual‐quier otro protocolo). Asimismo, habría que permitir que los clientes internos accedieran a los recursos externos, pero sólo en lo que respecta a FTP, HTTP, HTTPS, POP3 y SMTP. El resto de las comunicaciones quedarían denegadas. 

 

Ilustración 2: Ejemplo de red con inclusión NAT y un servidor web 

Page 6: Listas de acceso

 

A continuación se  incluye un  listado de  los  filtros de  interfaz  interna correspondientes a  la  ilustración No. 2 (en la localización marcada con un 1): 

1. Filtros de interfaz interna correspondientes a la ilustración No 2 

 Para  albergar  estos  requerimientos  hay  que  crear  una  sentencia  NAT  que  autorice  que  todas  las direcciones públicas  se usen para una  traducción dinámica. Luego habría que agregar una  traducción estática  (conocida  como  correspondencia  estática)  que  asociara  a  64.1.1.2,  puerto  80,  con 192.168.1.100, puerto 80. Debido a la naturaleza de la NAT, estas dos acciones rechazan que el tráfico entre en la red interna desde un anfitrión remoto que no se inicie mediante un anfitrión interno o que esté destinado al HTTP en el servidor web. A  continuación, para  evitar que  los  anfitriones  internos utilicen protocolos distintos de  FTP  (20, 21), HTTP (80), HTTPS (443), POP3 (110) y SMTP (25) basta con aplicar un filtro de paquete al tráfico entrante en la interfaz interna que señale lo siguiente: 

• Autorizar el tráfico desde cualquier anfitrión interno utilizando cualquier puerto de origen destinado a cualquier anfitrión externo, utilizando los puertos de destino 20, 21. 80, 443, 110 O o 25. • Autorizar el tráfico desde 192.168.1.100 utilizando el puerto de origen 80 para cualquier dirección de destino y puerto. • Rechazar el tráfico restante. 

Como es  lógico, una vez efectuados  todos estos pasos para proteger  la  red, probablemente el  lector puede darse cuenta de que sigue existiendo un elemento vulnerable: el propio cortafuegos. Si un hacker tuviera  la  intención  de  comprometer  el  cortafuegos,  el  resto  de  las  configuraciones  de  seguridad también quedarían comprometidas. Para tratar de evitar este desastre potencial es preciso desactivar todos los servicios necesarios en el enrutador, efectuando un filtrado de paquete/ NAT. En una situación de  cortafuegos  individual  o  único,  si  el  cortafuegos  está  efectuando  una  PAT,  es  preciso  ser particularmente cuidadoso en lo que respecta al filtrado de paquete en la interfaz externa. Por omisión, en un enrutador de Cisco,  la PAT  (también conocida como  sobrecarga NAT)  intenta asignar el mismo número de puerto a los paquetes traducidos. En otras palabras, si un anfitrión interno está intentando comunicarse con un anfitrión externo utilizando un puerto de origen de 12.000, la NAT intenta utilizar el mismo puerto para la dirección traducida.  Sin embargo,  como es posible que el puerto de origen  se haya elegido anteriormente  (otro anfitrión interno puede estar utilizando 12.000 como puerto de origen), es posible que la NAT tenga que asignar un  número  de  puerto  diferente.  Cuando  la NAT  tiene  que  cambiar  el  puerto  de  una  sesión,  asigna aleatoriamente  un  puerto  no  utilizado  a  la  comunicación  desde  uno  de  los  tres  rangos  de  puerto 

Page 7: Listas de acceso

siguientes: 1‐511, 512‐1023 y 1024‐65535. La NAT siempre asigna un puerto al paquete traducido, que estará en el mismo rango que el puerto de pretraducción. Por ejemplo, si el cliente utilizó originalmente el puerto 443, la NAT elegiría un puerto situado entre 1 y 511 para  la traducción de paquetes, dando por supuesto que ya se ha utilizado el puerto 443. Puesto que  el  puerto  que  la  NAT  elige  para  una  conexión  de  cliente  particular  no  se  puede  predecir,  la posibilidad de realizar un filtrado de paquete en  la  interfaz externa resulta  limitada. Por esta razón, es preciso  considerar  cuidadosamente  el  filtrado  de  paquete  correspondiente  a  la  ¡nterfaz  externa  del enrutador antes de implementar la NAT.  Nota: La configuración de  la NAT en un enrutador de Cisco escapa al marco propuesto por el presente  libro. Para  obtener  más  información  al  respecto  hay  que  visitar  las  páginas http://www.cisco.com/warp/pubí¡c/cc/  pd/iosw/ioft/ionetn/prodlit/1195_pp.htm  y http://www.cisco.com/warp/ public/cc/pd/¡osw/ioft/iofwft/prodlit/¡osnt_qp.htm.  

Comprender la DMZ 

Una  zona  desmilitarizada  (DMZ,  Demilitarized  Zone)  (también  conocida  como  subred  protegida  o «apantallada») constituye una medida de seguridad adicional para garantizar que  la disponibilidad de recursos de acceso público no comprometa la seguridad de la red interna. Una DMZ separa los recursos de acceso público de  los  recursos completamente privados, colocándolos en subredes distintas, auto‐rizando el bloqueo de los recursos privados e incluso proporcionando seguridad a los recursos públicos. 

Nota: 

    Aunque  esto  se  puede  considerar  una  blasfemia  en  algunos  círculos  de seguridad  en  redes,  en  el  presente  escrito  se  usa  el  término  cortafuegos  para  representar  cualquier mecanismo  que  filtre  paquetes  para  el  control  del  acceso,  incluyendo  tanto  enrutadores  de  Cisco estándar  como  los  productos  cortafuegos  específicos,  como  los  de  las  series  PIX,  a menos que se indique expresamente otra cosa. 

Las  DMZ  se  pueden  estructurar  de  diversas  formas,  pero  en  este  escrito  sólo  se  analizarán  las configuraciones más frecuentes: 

• DMZ con cortafuegos individual. Este tipo de DMZ consta de un cortafuegos individual con tres o más interfaces, y al menos una de  las  interfaces conectadas a  la  red  interna, a  la  red externa y a  la DMZ. Estas DMZ son más eficaces en términos de coste, pero los beneficios de seguridad (más allá de un único cortafuegos que no tenga DMZ) resultan mínimos. 

• DMZ con cortafuegos dual. Esta clase de DMZ es una de las más comunes y consiste en un cortafuegos externo,  un  cortafuegos  interno  y  una  DMZ  situada  entre  ambos.  Los  recursos  internos  quedan protegidos por  el  cortafuegos  interno, mientras que  los  recursos de  la DMZ  están protegidos por  el cortafuegos externo. Este tipo de estructura DMZ puede  incrementar  la seguridad sustancialmente: el cortafuegos dual proporciona una protección  suplementaria  a  los  recursos  internos.  Sin  embargo,  el problema surge cuando se considera que la DMZ con cortafuegos dual tiende a ser mucho más cara que una  con  cortafuegos  individual,  y,  al  mismo  tiempo,  su  manejo  puede  requerir  conocimientos adicionales (especialmente, si se siguen las recomendaciones que los distintos fabricantes realizan sobre los cortafuegos). 

• DMZ con cortafuegos triple. Se trata de una estructura que utiliza tres cortafuegos para proteger  la red  interna y que, al mismo  tiempo, utiliza DMZ  interna y externa. Esta configuración de cortafuegos 

Page 8: Listas de acceso

sólo  se usa en  instituciones en  las que  la seguridad es un elemento muy  importante y  suele  implicar toda  una  serie  de  aplicaciones  subsidiarias.  Aunque  resultan  extremadamente  seguros,  estos cortafuegos  son  extremadamente  caros  tanto  en  lo  que  respecta  a  su  implementación  como  a  su mantenimiento. 

En primer  lugar se examinará  la solución del cortafuegos  individual. La  ilustración. 3 muestra un único cortafuegos con tres interfaces. Los servidores web y otros servidores de acceso público están situados en la DMZ, mientras que todos los recursos internos están totalmente protegidos en la subred interna. Asimismo  hay  que  observar  que  el  servidor  SQL  utilizado  por  el  servidor  web  para  generar  eí procesamiento está situado en la red interna. 

 

 

Ilustración 3: Sistema de cortafuegos individual DMZ 

A  continuación  se  incluye  un  listado  de  los  filtros  de  interfaz  correspondientes  a  las  localizaciones numeradas en la ilustración. 3. 

1. Filtros de interfaz internos correspondientes a la ilustración. 3. 

Page 9: Listas de acceso

 2. Filtros DMZ correspondientes a la ilustración. 3. 

 

3. Filtros de interfaz externa correspondientes a la ilustración. 3. 

 

 

Nota: 

Hay que tener en cuenta que  la mayoría de  los fabricantes de cortafuegos,  incluyendo Cisco, utilizan  la regla de  la «primera coincidencia». Todos  los  filtros correspondientes a una determinada dirección en una interfaz dada se examinan en orden y se utiliza el primer filtro coincidente. 

A  continuación  se  analizarán  las  características  de  los  filtros  de  paquete,  empezando  por  el  filtro externo. El primer filtro situado en la interfaz externa permite que cualquier anfitrión alcance cualquier servidor público en la DMZ utilizando cualquiera de los puertos correspondientes a los servicios que se suministran en dichos  servidores. En otras palabras,  si en  la DMZ  se dispone de un  servidor web, un servidor FTP o un servidor SMTP, se tendría acceso al servidor web utilizando el puerto 80 o el 443, al tiempo que  se  tiene  acceso  al puerto  FTP utilizando  los puertos 20  y 21,  y  acceso  al  servidor  SMTP utilizando el puerto 25. 

Page 10: Listas de acceso

El  segundo  filtro en  la  interfaz externa es un  filtro  reflexivo que  facilita  la  comunicación  inicialmente establecida mediante  los anfitriones  internos para retornar a dichos anfitriones. El filtro final presente en  la  interfaz externa rechaza el resto de  las comunicaciones  (en  las ACL de Cisco no es necesario, ya que siempre hay una denegación  implícita al final). No se aplican filtros hacia el exterior de  la  interfaz externa, por lo que se autoriza todo el tráfico en dicho sentido. 

Asimismo, conviene observar el orden de  los filtros orientados hacia dentro. El primer y segundo filtro admiten conexiones específicas, mientras que el  tercero deniega  todas  las  conexiones. Puesto que el filtro que efectúa la denegación está situado al final, se convierte desde un punto de vista funcional en un elemento que deniega  al  resto.  Si  los paquetes  coincidieran  con el primer  filtro  (destinados  a un servidor público situado en un puerto público), serían autorizados y finalizaría el procesamiento de filtro correspondiente  a  esta  interfaz.  En  caso  contrario,  se  examinaría  el  filtro  siguiente.  Si  el  paquete coincide  con  el  segundo  filtro  (si  fuera  un  paquete  de  respuesta  para  una  sesión  previamente establecida mediante un anfitrión interno o basado en DMZ) también quedaría autorizado y finalizaría el procesamiento de  filtro correspondiente a esta  interfaz. Si el paquete no coincidiera con ningún  filtro sería denegado. Nuevamente, hay que recordar que  los filtros se procesan en orden, y una vez que se logra una coincidencia, finaliza el procesamiento de filtro correspondiente a esa interfaz. 

En el caso de las DMZ, los dos primeros filtros, orientados hacia dentro, autorizan al servidor web (y sólo al servidor web) presente en  la DMZ para que se comunique con el servidor SQL asegurado en  la red interna,  utilizando  exclusivamente  el  protocolo  SQL.  La  estipulación  de  que  SQL  debe  ser  el  único protocolo utilizado garantiza que, en caso de que  los hackers ataquen a otros servidores públicos, no puedan  tener acceso a  la base de datos  segura  situada en el  servidor  SQL. El  tercer  filtro, orientado hacia  fuera,  es  un  filtro  reflexivo  que  autoriza  todas  las  comunicaciones  que  se  establecen  desde anfitrión DMZ. El tercer filtro es necesario debido a la presencia del cuarto filtro orientado hacia fuera, que deniega el resto de paquetes. Utilizando esta técnica de filtrado cabe garantizar que el servidor SQL seguro no sólo se aborde desde anfitriones externos, sino también desde servidores situados en la DMZ. 

Finalmente, en el caso de la red interna, los dos filtros orientados hacia dentro permiten que el servidor SQL se comunique exclusivamente con el servidor web en la DMZ utilizando el protocolo SQL. Este filtro, aunque  no  se  requiera  estrictamente,  garantiza  la  seguridad  del  servidor  SQL  asegurándose  de  que dicho servidor no pueda comunicarse con un anfitrión externo distinto del servidor web y luego utilice exclusivamente  SQL  como  aplicación.  Si  el  usuario  no  ha  generado  esta  sentencia, un  administrador situado físicamente junto al servidor SQL podría abrir una sesión a un sitio web utilizando dicho servidor. 

Nota: 

Si el servidor web estuviera comunicándose realmente con el servidor SQL interno, empleando SQL como protocolo, y el servidor SQL fuera un servidor SQL de Microsoft, el puerto que habría que abrir sería el 1433.  Sin  embargo,  como puede utilizarse  como  extremo para  el  servidor  SQL  cualquier otro  tipo de aplicación u otra versión comercial de SQL (como es el caso de la versión de Oracle), en este ejemplo no se ha incluido el número de puerto en bruto. Cuando se utilice esta técnica hay que saber cuáles son los puertos que pueden abrirse. 

Aunque los administradores que naveguen por la web desde un servidor realmente no tienen mucho de qué preocuparse, existe la remota posibilidad de que la sesión a un sitio web pudiera verse secuestrada por un hacker y, puesto que la sesión se estableció previamente mediante el servidor SQL, los paquetes que enviara el hacker al  servidor SQL podrían  tener autorización para  franquear el  cortafuegos. Para eliminar esta posibilidad se pueden crear dos filtros para desactivar todas  las comunicaciones SQL que se produzcan  fuera de  la  red  interna, exceptuando  los paquetes necesarios para que el  servidor web utilice los puertos SQL. 

Page 11: Listas de acceso

Consejo: 

Cabe aplicar  esta misma  filosofía  y  técnica de  filtrado a prácticamente  todos  los  servidores  internos, eliminando la posibilidad de acceso no autorizado. Por ejemplo, se puede aplicar un filtro adicional antes del tercer filtro para denegar el bloque de dirección asignado a  los servidores  internos desde el uso de recursos externos. Sin embargo, hay que  tener en cuenta que esta  técnica de  filtrado  requiere que  los administradores  del  servidor  utilicen  estaciones  de  trabajo  estándar  para  transferir  actualizaciones  y cualquier otro archivo de servidor necesario desde Internet, y que luego compartan las unidades de disco de  las  estaciones  de  trabajo  !o  utilicen  redes  secretas)  para  transferir  los  archivos  a  los  servidores, provocando un esfuerzo administrativo adicional  (lo cual no  resulta necesario en un principio, aunque depende de la política de seguridad). 

Los cinco filtros siguientes colocados en  la  interfaz  interna se usan para controlar el acceso a  Internet desde los anfitriones internos. Estos cinco filtros permiten que cualquier anfitrión situado en la subred interna acceda a Internet utilizando los puertos 80 (HTTP), 443 (HTTPS/SSL), 20 o 21 (FTP) y 25 (SMTP), al tiempo que deniega cualquier otro acceso. Aunque el bloque de dirección IP que aparece reflejado en los  filtros  (192.168.1.X)  no  es  estrictamente  necesario  (ya  que  se  podría  utilizar  la  sentencia  any [cualquiera]  para  una  subred  individual),  se  incluye  aquí  para mostrar  cómo  utilizar  la  dirección  de origen para permitir que los usuarios de una subred accedan a Internet mientras se deniega el acceso a Internet a otros usuarios situados en una subred diferente. Si otra subred  (por ejemplo, 192.168.2.0) tuviera estos filtros, se denegaría a la segunda subred la conectividad a la DMZ y a Internet. 

Después de analizar  las características del  filtro mediante un cortafuegos  individual se examinarán  las DMZ con cortafuegos dual. En la Figura. 4 se observan cortafuegos duales, internos y externos, pero en medio de ambos aparece una DMZ. 

 

Ilustración 4: DMZ con cortafuegos dual. 

Los filtros de interfaz para las localizaciones numeradas ¡lustradas en la Figura 4 aparecen en el listado siguiente: 

1. Filtros de interfaz internos correspondientes a la ilustración. 4 

Page 12: Listas de acceso

 

2. Filtros de interfaz externa correspondientes a la ilustración. 4  

  3. Filtros de interfaz interna correspondientes a la ilustración. 4 

 

4. Filtros de interfaz externa correspondientes a la ilustración. 4 

 

La interfaz externa en el cortafuegos 3600 tiene básicamente las mismas ACL que la interfaz externa del cortafuegos ilustrado en la Figura 27.3. Un filtro no reflexivo permite la comunicación con los servidores públicos utilizando  los números de puerto adecuados, una ACL reflexiva autoriza el paso del tráfico de retorno  desde  los  anfitriones  internos  y  una  sentencia  deny  en  blanco  se  ocupa  del  tráfico  no autorizado. La interfaz interna del cortafuegos 3600 autoriza el paso a todo el tráfico hacia el exterior de la red. 

Page 13: Listas de acceso

La  interfaz del P1X está  autorizada  a establecer  comunicación exclusivamente desde el  servidor web público para acceder al servidor SQL con una lista de acceso no reflexiva. Luego se ocupa de garantizar que  no  se  produzca  comunicación  alguna desde  cualquier mecanismo  distinto  del  servidor web  que pueda  alcanzar  el  servidor  SQL,  con  una  lista  de  acceso  no  reflexiva  que  deniegue  específicamente cualquier clase de comunicación con el servidor SQL. Puesto que la entrada que permite al servidor web acceder  al  servidor  SQL  está  colocada  en  primer  lugar  en  la  lista, mientras  se  utilicen  los  puertos correctos, el servidor web generará una coincidencia con  la sentencia permit en primer  lugar y tendrá autorización para acceder al servidor SQL. 

La sentencia siguiente es una sentencia reflexiva que permite que todas las comunicaciones establecidas desde  los  clientes  internos  accedan  a  los  recursos  externos.  Finalmente,  se  deniega  el  resto  de  las comunicaciones  externas  entrantes mediante  el uso de una  sentencia  deny  en blanco,  situada  en  la interfaz PIX externa. 

Las últimas sentencias se aplican a la interfaz interna del PIX. Estas sentencias permiten que los clientes internos  accedan  a  recursos  externos  utilizando HTTP. HTTPS/SSL,  FTP  y  SMTP.  Existe  una  sentencia adicional que autoriza al servidor SQL a comunicarse con el servidor web en  la DMZ. Por último, una sentencia deny en blanco rechaza el resto de las comunicaciones. 

La ventaja que supone la utilización de una DMZ de cortafuegos dual consiste en la consecución de un nivel de  seguridad adicional de  los  recursos. Cuando  se utilizan  cortafuegos duales  resulta más difícil realizar entradas no autorizadas, ya que dos mecanismos deben estar comprometidos para acceder con éxito a  los recursos  internos. Si se utilizan cortafuegos de distintos  fabricantes,  la seguridad de  la red aumenta,  ya  que  el  hacker  debe  tener  los  conocimientos  necesarios  para  acceder  a  plataformas completamente distintas. Lógicamente, la desventaja viene marcada por el coste de la red y los posibles quebraderos de  cabeza en  lo que  respecta a  su  configuración.  Sin embargo, en  las  redes de  tamaño intermedio, los cortafuegos duales resultan muy populares. 

Nota: 

El  ejemplo  que  aparece  en  la  Figura  .4  utiliza  un  cortafuegos  dedicado  para  la  red  interna,  con  la estructura de un cortafuegos PIX de Cisco. Aunque la funcionalidad de cortafuegos básica consiste en el "filtrado de paquetes  (que pueden  realizar  la mayoría de  los enrutadores,  los  cortafuegos verdaderos tienen una serie de funciones (incluyendo el filtro de paquete de estado completo) que pueden mejorar el nivel  de  seguridad  general  de  toda  la  red.  En  este  capítulo  se  analiza  exclusivamente  el  filtrado  de paquetes. Para obtener mayor información sobre los cortafuegos dedicados, puede consultar la dirección http://secinf.net/ifwe.html. 

En  las  situaciones en que  se emplean  cortafuegos  triples  cabe  garantizar un  alto nivel de  seguridad, incluso cuando se requiera implementar contextos de filtrado muy complejos. Por ejemplo, en la Figura. 5 se muestra un ejemplo de diseño de alta seguridad con cortafuegos triple, utilizando DMZ duales. La DMZ externa se emplea para alojar  los recursos de dominios absolutamente públicos, mientras que  la DMZ  interna sirve para alojar el servidor SQL, así como  los  recursos externos a  la  red  (semipúblicos), como  servidores  VPN  y  servidores  web  externos  a  la  red  (como  el  acceso  a  web  de  Outlook).  El cortafuegos externo se utiliza para proteger a los servidores que tengan acceso a Internet, mientras que el cortafuegos medio se emplea para proteger los recursos externos a la red. Finalmente, el cortafuegos interno protege exclusivamente  los recursos  internos, haciendo que esta configuración de cortafuegos constituya una barrera formidable contra los posibles intentos de acceso no autorizado. 

 

Page 14: Listas de acceso

 

Ilustración 5: DMZ con cortafuegos triple 

A continuación se incluye un listado de los filtros de interfaz correspondientes a las localizaciones numeradas de la Figura.5. 

1. Filtros de interfaz interna para la Figura. 5 

 

2. Filtros de interfaz externa para la Figura. 5 

 

3. Filtros de interfaz interna para la Figura. 5 

Page 15: Listas de acceso

 

4.  Filtros de interfaz externa para la Figura. 5 

 5. Filtros de interfaz interna para la Figura. 5 

 

6. Filtros de interfaz externa para la Figura. 5 

 Los  diseños  que  implican  cortafuegos  triples  pueden  justificar  el  esfuerzo  que  supone  su  creación, aunque  sólo  se  utilizan  en  las  redes más  extensas  y  con mayor  preocupación  por  las  cuestiones  de seguridad, o en determinadas situaciones. 

Page 16: Listas de acceso

 

Configuración de las ACL 

El primer paso a la hora de configurar las ACL consiste en comprender la sintaxis de las listas de acceso. En el caso de una lista de acceso estándar, la sintaxis no resulta demasiado compleja. Sin embargo, en el caso de las listas de acceso extendidas, la sintaxis puede resultar un poco más confusa. 

En este apartado se analiza la configuración de las listas de acceso utilizando ACL estándar y extendidas, tanto en estilo denominado como en estilo numerado. 

En la Tabla No. 1 se describen las características de los comandos empleados en este apartado. 

Tabla 1: Comandos de listas de acceso 

Comando  Descripción Modo    

access‐list [número de lista de acceso] [deny \ permit] [origen] [máscara comodín de origen] [log] 

Crea una lista de acceso IP numerada de carácter estándar 

Configuración global 

access‐list [número de lista de acceso] [deny I permit] [protocolo] [origen] [máscara comodín de origen] [operadores de puerto (opcionales)] [destino] [máscara comodín de destino] [operadores de puerto (opcionales)] [established] [log] 

Crea  una  lista  de  acceso  numerada  de carácter extendido 

Configuración global  

ip access‐list standard [nombre]  Crea una lista de acceso numerada de carácter estándar 

Configuración global  

[deny I permit] [origen] [comodín de origen] [log]  

Introduce sentencias en una lista de acceso IP denominada de carácter estándar 

Configuración de listas  de acceso

ip access‐list extended [nombre]  

Crea una lista de acceso IP denominada de carácter extendido 

Configuración global  

[deny \ permit] [protocolo] [origen] [máscara comodín de origen] [operadores de puerto (opcionales)] [destino] [máscara comodín de origen] [operadores de puerto (opcionales)] [established] [log]  

Introduce sentencias en una lista de acceso IP denominada de carácter extendido 

Configuración de listas  de acceso 

ip  access‐group  [número  o  nombre  de lista de acceso] [in I out] 

 

Aplica una lista de acceso a una interfaz Configuración de interfaz 

show ip access‐list [número o nombre de lista de acceso] 

 

Muestra una o todas las listas de acceso IP Ejecución de usuario 

show access‐lists [número o nombre de lista de acceso] 

Muestra una o todas las listas de acceso IP Ejecución de usuario 

 

El  primer  comando  que  aparece  en  la  lista,  access‐list,  se  usa  para  crear  listas  de  acceso  IP  numeradas  de  carácter estándar y extendido. El factor decisivo que  indica si una  lista de acceso debe ser estándar o extendida es simplemente el número utilizado para definir la lista de acceso. Si dicho número está comprendido entre 1 y 99, la lista de acceso será una ACL  IP  estándar.  Si,  por  el  contrario,  el  número  utilizado  se  sitúa  entre  100  y  199,  la  lista  de  acceso  será  una  ACL  IP extendida. 

 Nota: En  las nuevas versiones del  IOS,  las ACL numeradas con valores comprendidos entre 1300 y 1999 también están disponibles para las ACL IP estándar. 

Page 17: Listas de acceso

La configuración de  las  listas de acceso en el formato numerado sigue una serie de reglas de carácter simple: 

• Las  listas de acceso coinciden con  las sentencias  introducidas utilizando comandos de  lista de acceso múltiples con el mismo número, para crear listas multisentencia. 

• Las listas de acceso coinciden con las sentencias procesadas en el orden introducido, donde la primera sentencia coincide con el paquete que se está utilizando. 

• Se incluye una sentencia deny al final de cada ACL, lo que significa que una vez que se aplica a una  interfaz,  todos  los  paquetes  que  no  coincidan  con  cualquiera  de  las  sentencias  permit presentes en una ACL se abandonarán automáticamente. 

• Las sentencias individuales presentes en las listas de acceso numeradas no pueden modificarse. Para  eliminar  una  sentencia  ACL  hay  que  utilizar  el  comando  no  access‐üst  [número], eliminando todas las sentencias asociadas con dicha ACL. 

A medida  que  se  exploren  las  características  de  los  comandos  access‐list,  el  usuario  aprenderá más sobre  la estructura de estas reglas. Para  los principiantes se explica a continuación cómo se construye una lista de acceso IP numerada estándar. 

Listas de acceso estándar 

La  sintaxis  utilizada  para  el  comando  access‐list  cuando  se  construye  un  listado  numerado  estándar resulta muy sencilla: access‐list [número de lista de acceso] [deny I permit] [origen] [máscara comodín de origen] [conectar]. El número debe situarse, lógicamente, en el rango que va de 1 a 99. La sección deny \ permit especifica la acción que se va a efectuar (abandonar o enviar) en relación con los paquetes que cumplen esta sentencia match. Las secciones origen y máscara comodín de origen definen qué paquetes deben  coincidir,  basándose  en  la  dirección  de  origen,  y  el  parámetro  opcional  log  indica  al  IOS que conecte con paquetes que coincidan con esta lista de acceso con la función syslog. 

Las únicas partes de una  lista de acceso  IP estándar que generan cierta dificultad son  las secciones de dirección de origen y la de máscara comodín. La sección origen es la parte de la dirección de origen con la que se desea coincidir. Por ejemplo, si se desea coincidir con todas las direcciones de origen en la red 172.16.0.0, habría que  introducir 172.16.0.0 como dirección de origen. Verdaderamente, se puede co‐locar cualquier cosa que se desee en los últimos octetos de la dirección (siempre y cuando se configure la máscara  correctamente), pero no  tiene  sentido  introducir una dirección  completa  cuando  lo único que  se  desea  es  efectuar  una  coincidencia  con  los  primeros  dos  octetos.  La  máscara  realmente determina qué cantidad de la dirección de origen forma parte de la coincidencia. La máscara está escrita en el formato wildcard (comodín), y quizás pueda parecer que está colocada en orden  inverso a cómo cabría esperar. En una máscara comodín,  las partes de  la dirección que se describen mediante el valor binario 0 en la máscara deben coincidir exactamente, mientras que se ignoran las partes que tienen un valor binario 1. 

Por  ejemplo, para  efectuar una  coincidencia  con  172.16.0.0‐172.16.255.255,  habría que  introducir  la dirección de origen de 172.16.0.0 con una máscara comodín de 0.0.255.255. Siguiendo la misma lógica, para efectuar una coincidencia con cada dirección IP situada entre 192.168.1.128 y 192.168.1.255 habría que  introducir una dirección de origen de 192.168.1.128 con una máscara comodín de 0.0.0.127. Esta combinación coincide con las direcciones IP seleccionadas, ya que en lenguaje binario todos los bits que tienen un valor O deben coincidir con la IP de origen escogida (192.168.1.128), mientras que todos los valores  binarios  1  pueden  ser  diferentes.  Cuando  se  convierte  a  binario,  esta  combinación  tiene  el siguiente aspecto: 

Page 18: Listas de acceso

IP ‐ 192.168.1.128 : 11000000.10101000.00000001.10000000 IP ‐ 192.168.1.255 : 11000000.10101000.00000001.11111111          Mask ‐ 0.0.0.127   : 00000000.00000000.00000000.01111111  Basándose en esta información, si se desea configurar un filtro de paquete utilizando ACL estándar para bloquear todas las transmisiones desde 192.168.1.1, autorizar todas las comunicaciones desde el resto de la red 192.168.1.0 y denegar todas las demás, habría que crear el filtro de paquete con los comandos siguientes:  Router(config)#access‐list 1 deny 192.168.1.1 0.0.0.0  Router (config)#access‐list 1 permit 192.168.1.0 0.0.0.255  Nota:  Para  especificar  un  anfitrión  individual  hay  que  utilizar  la  palabra  clave  host  en  la  ACL.  Por ejemplo, en el comando anterior, en  lugar de escribir access‐list 1 deny 192.168.1.1 0.0.0.0, habría que escribir typed access‐list 1 deny host 192.168.1.1.  Para garantizar la creación de esta lista de accesos se pueden utilizar los comandos show ip access‐list o show access‐lists:  Routert show access‐lists Standard IP access list 1  

deny    192.168.1.1   permit   192.168.1.0, wildcard bits 0.0.0.255  

Router# show ip access‐list  Standard IP access list 1 

deny     192.168.1.1 permit  192.168.1.0, wildcard  bits   0.0.0.255 

Router#  El orden de  los  comandos  en una ACL  resulta muy  importante.  Por  ejemplo,  si  se  reorganizan  estas sentencias,  la  dirección  192.168.1.1  tendría  autorización  para  comunicarse,  ya  que  dicha  dirección coincide  con  192.168.1.0  0.0.0.255.  Hay  que  recordar  que  una  ACL  simplemente  utiliza  la  primera sentencia coincidente e ignora el resto.  Por lo general, lo lógico es colocar las entradas más específicas en la parte superior de la lista. El truco consiste en examinar mentalmente el orden de  la  lista, punto por punto,  y  garantizar que  todos  los objetivos se encuentren satisfechos en el  listado. Sin embargo, a medida que  la  lista se complica, este proceso se hace cada vez más complejo.  Por ejemplo, hay que suponer que se desea configurar un listado que efectúe las siguientes tareas: 

• Autorizar  todas  las  direcciones  situadas  en  el  rango  que  va  de  192.168.1.64  ;                  a 192.168.1.127. 

• Autorizar las que van de 192.168.1.1 a 192.168.1.3. • Autorizar todas las direcciones comprendidas entre 10.0.2.0 y 10.255.255.255. • Denegar todas las demás direcciones. 

 En este caso, se podría utilizar la siguiente lista de acceso para cumplir estas metas:  Router(config)#access‐list  1 permit 10.0.0.0 0.255.255.255 Router(config)#access‐list  1 permit 192.168.1.64 0.0.0.127 Router(config)#access‐list 1 permit host 192.168.1.1         Router(config)#access‐list  1 permit host 192.168.1.2 Router(config)#access‐list  1 permit host 192.168.1.3 Router(config)#access‐list  1 deny 10.0.1.0 0.0.0.255  ¿Usted reconoce los problemas que surgen con esta lista? A continuación se examinará cada objetivo en orden para garantizar el análisis de cada uno de los problemas. 

Page 19: Listas de acceso

En  primer  lugar,  se  desea  autorizar  el  rango  que  va  de  192.168.1.64  a  127. Mirando  en  la  lista,  la segunda  sentencia  cumple  este objetivo.  Sin  embargo,  la  sentencia access‐list 1 permit 192.168.1.64 0.0.0.127 coincide con todas las direcciones IP situadas entre 192.168.1.0 y 192.168.1.127.  El  segundo objetivo  consiste  en  autorizar  el  rango que  va desde  192.168.1.1 hasta 192.168.1.3 para establecer la comunicación. Aunque la tercera, la cuarta y la quinta sentencia efectúan esta tarea, ésta no es la manera más eficaz de hacerlo. Además, la segunda sentencia del listado se alcanzaría antes de acceder a estas sentencias.  El tercer objetivo consiste en autorizar todas  las direcciones situadas en el rango que va de 10.0.2.0 a 10.255.255.255  para  establecer  la  comunicación.  Aunque  la  primera  sentencia,  access‐list  1  permit 10.0.0.0 0.255.255.255, cumple esta tarea, coincide con todas las direcciones desde la red 10.0.0.0.  El objetivo final es denegar todos los paquetes, lo cual no se lleva a cabo debido a las siguientes razones: 

• La  segunda  sentencia  autoriza  al  rango  que  va  de  192.168.1.0  a  192.168.1.63  para  que establezcan la comunicación. 

• La  primera  sentencia  autoriza  todas  las  direcciones  de  la  red  10.0.0.0  (10.0.0.0  a 10.255.255.255)  para  que  establezcan  la  comunicación,  lo  cual  no  coincide  con  el  rango especificado. 

 Para eliminar estos problemas habría que reconstruir la lista de la siguiente manera:  Router(config)#access‐list  1  deny 10.0.0.0 0.0.1.255 Router(config)#access‐list  1  permit 10.0.0.0 0.255.255.255 Router(config)#access‐list  1  permit 192.168.1.64 0.0.0.63   Router(config)#access‐list  1  permit 192.168.1.0 0.0.0.3  Hay que observar que, en este caso, se puede realizar esta tarea con sólo cuatro sentencias. La primera sentencia  deniega  el  rango  de  dirección  IP  que  va  de  10.0.0.0  a  10.0.1.255,  ya  que  la  dirección  y  la máscara coinciden de la siguiente manera:  

 La segunda sentencia autoriza todas  las direcciones de  la red 10.0.0.0 que no coincidan con  la primera sentencia. La tercera sentencia admite todos los paquetes situados en el rango que va de 192.168.1.64 a 192.168.1.127, como se muestra a continuación: 

 La cuarta sentencia autoriza todos los paquetes que van de 192,168‐1‐1 a 192.168.1.3, como se muestra a continuación: 

 Nota:  En  realidad,  el  último  filtro  también  coincide  con  192.168.1.0,  pero  como  esta  dirección  no  se puede utilizar en una red de clase C sin superred, no tiene sentido denegar la dirección específicamente.  El deny  implícito  situado  al  final de  la  lista de  acceso  se ocupa del último objetivo, que  consiste  en rechazar todos los demás paquetes.  

Page 20: Listas de acceso

Una vez creada la lista de acceso, será preciso aplicarla a una interfaz y elegir una dirección utilizando el comando ip access‐group [número o nombre de lista de acceso] [entrada\salida]. Hay que recordar que cuando se aplica una lista de acceso se suele desear hacerlo tan cerca del origen del paquete como sea posible. De  esta manera,  si  se desea utilizar  esta  lista para  realizar una  coincidencia  interna  con  los usuarios que entren en el enrutador, habría que aplicar la lista a la interfaz de enrutador interna con la dirección entrante, como se muestra a continuación:  Router{config‐if )# ip access‐group 1 in  Nota: Hay que tener en cuenta que sólo se puede aplicar una  lista de acceso  individual en cualquier  interfaz  para  el  tráfico  orientado  hacia  dentro  o  hacia  fuera  (una  ACL  por  dirección).  Por  tanto,  es  preciso garantizar que todas las metas requeridas puedan alcanzarse con una ACL individual.  En el caso de una lista de acceso denominada, el proceso es casi idéntico, exceptuando el hecho de que se modifica la ACL. Cuando se introduce la ACL se emplea el comando ip access‐list standard [nombre]. Este  comando  permite  cambiar  al modo  de  configuración  de  lista  de  acceso  para  la  lista  de  acceso denominada, como se ilustra a continuación:  Router(config)#ip access‐list standard test Router (config‐std‐nacl) #  Una vez en el modo de configuración de lista de acceso se pueden introducir los parámetros de lista de acceso utilizando sentencias permit o deny:  Router(config‐std‐nacl)#   deny   10.0.0.0   0.0.255.255   Router(config‐std‐nacl)#   permit   172.16.0   0.0.255.255     Estas sentencias se procesan en el orden en que se  introduzcan, como ocurre con  las  listas de acceso numeradas. La única diferencia está en el hecho de que, a diferencia de las listas de acceso numeradas, se  pueden  eliminar  comandos  individuales  en  una  lista  de  acceso  denominada mediante  el  uso  de sentencias específicas no deny o no permit: 

 

Page 21: Listas de acceso

Consejo: La diferencia  fundamental que existe entre una  lista de acceso denominada y una numerada radica en la capacidad de utilizar nombres descriptivos para listas de acceso denominadas y la capacidad de  modificar  entradas  individuales  en  las  listas  de  acceso  numeradas.  Sin  embargo,  esta  última diferencia  suele  quedar  anulada,  ya  que  basta  con  copiar  la  sentencia  de  lista  de  acceso  en  el portapapeles desde una  lista de acceso numerada  (mostrada en un comando show run o show star) y reordenar la lista a placer. Una vez terminado este proceso, basta con eliminar la lista de acceso original con  un  comando  no  access‐list  (número]  y  pegar  la  lista  de  acceso  modificada  en  la  ventana  del terminal.  Hay que observar que  la sentencia host aparece en  la parte superior de  la  lista de acceso  incluso si se introduce después de otras sentencias. Se trata de un elemento específico que permite acceder a listas que pertenecen a un anfitrión determinado, ya que tienen un carácter más específico y, habitualmente, deberían colocarse en la parte superior de la lista. También hay que advertir la presencia de la sentencia permit  any.  La  palabra  clave  any  constituye  una  forma  rápida  de  garantizar  que  todos  los  paquetes coincidan con un filtro. La palabra clave any es  la misma que se especificó en un  IP de 0.0.0.0 (a decir verdad, cualquier IP) con una máscara 255.255.255.255.  Listas de acceso extendidas    Después de conocer  las ACL estándar, en este apartado se explicarán  las complejidades propias de  las ACL  extendidas.  En  una  ACL  extendida  se  pueden  especificar  muchos  más  parámetros,  protocolos (incluyendo IP, TCP y UDP), direcciones de destino y puertos (para TCP y UDP).  Nota: Las ACL IP extendidas numeradas pueden utilizar rangos que van de100 a 199 o de 2000 a 2699.  Con una ACL extendida se debe especificar un protocolo para generar la coincidencia. El protocolo con el que se establece dicha coincidencia puede ser cualquier número de protocolo IP situado entre 1 y 255, o cualquiera de las siguientes palabras clave 

• IP (para coincidir con todos tos paquetes IP).   • ICMP. • TCP  • EIGRR • IGRP • OSPF • Los protocolos restantes escapan al propósito de este apartado (PIM, IPINIP GRE, NOS o IGMP).   

 Cuando se genera una coincidencia con TCP o UDP se abren otras posibilidades interesantes. Se puede elegir la posibilidad de establecer coincidencias con puertos de origen o de destino. Cuando se coincide con puertos es preciso tener la capacidad de efectuar la coincidencia basándose en cinco operadores: 

• It.   Menor que el número listado. • gt.   Mayor que el número listado. • eq.   Igual que el número listado. • neq.   Distinto del número listado. • range. Todos los puertos situados en el rango especificado mediante dos números. 

 Nota: También se pueden especificar puertos mediante el uso de palabras clave en  lugar de números. Entre  las palabras clave  IOS reconocidas para puertos se  incluyen  las siguientes: bgp, echo, finger, ftp, ftp‐data, gopher, irc, nntp, pop2, pop3, smtp, syslog, telnet, whois, y www.  Asimismo,  es  posible  especificar  la  autorización  de  paquetes  (o  su  rechazo,  aunque  esto  último  no resulta útil) basándose en el paquete que forma parte de una sesión previamente establecida mediante el  uso  de  la  palabra  clave  established.  De  esta  misma  manera,  se  puede  utilizar  la  palabra  clave established para las sentencias reflexive en las ACL.  Para ver de qué  forma casan  todas estas piezas adicionales en una ACL extendida, a  continuación  se analizará  un  conjunto  de metas  de  filtrado  y  se  explicará  cómo  alcanzar  estos  objetivos.  Las metas 

Page 22: Listas de acceso

requeridas  para  filtrar  los  paquetes  entrantes  en  la  interfaz  externa  del  enrutador  se  enumeran  a continuación: 

• Deben  autorizarse  todos  los  paquetes  destinados  a  192.168.1.1  utilizando  un  puerto  80  de destino TCP. 

• Deben  autorizarse  todas  las  comunicaciones  que  se  originen  desde  la  red  privada  a  los servidores web externos que utilicen HTTP y HTTPS. 

• Deben autorizarse todas  las comunicaciones entrantes desde el anfitrión externo 10.1.1.1 que utilicen números de puerto de origen TCP y UDP que vayan de 22.000 a 44.000. 

• Deben autorizarse todas las comunicaciones entrantes al anfitrión 192.168.1.200. • Deben autorizarse todas las sesiones no establecidas que entren en la interfaz externa y utilicen 

puertos de destino conocidos al anfitrión 192.168.1.100. • Debe rechazarse todo el tráfico restante. 

 Para alcanzar el primer objetivo hay que introducir una sentencia similar a la siguiente:  Router(config)#access‐list 100 permit tcp any host 192.168.1.1 eq 80  La palabra clave any indica al enrutador que debe realizar una coincidencia con cualquier IP de origen. Como el puerto no se especifica a continuación, se efectúa una coincidencia con todos  los puertos de origen.  La  sección  host  192.168.1.1  indi ca  al  enrutador  que  debe  efectuar  una  coincidencia  con  el anfitrión de destino 192.168.1.1. Finalmente, eq 80  indica al enrutador que debe efectuar una coinci‐dencia  con  el  puerto  destino  80.  Este  filtro  efectúa  exactamente  la  tarea  requerida:  establece coincidencia con todas  las comunicaciones procedentes de cualquier anfitrión destinado a 192.168.1.1 utilizando el puerto de destino 80 TCP 80 (HTTP).   Para establecer una  coincidencia  con el próximo objetivo hay que emplear  sentencias  similares a  las siguientes:  Router(config)ftaccess‐list 100 permit tcp any eq 80 any established  Router(config)#access‐list 100 permit tcp any eq 443 any established  Como lo que se desea es autorizar exclusivamente los paquetes que utilicen HTTP o HTTPS para regresar a  los anfitriones situados en  la red  interna, es necesario establecer una coincidencia con el puerto de origen en 80 y 443 en  lugar de hacerlo con el de destino. Asimismo, puesto que únicamente se desea devolver  paquetes  procedentes  exclusivamente  de  las  sesiones  previamente  establecidas  por  estos anfitriones, se utiliza la palabra clave established.  Para autorizar todas las comunicaciones entrantes procedentes del anfitrión externo 10.1.1.1 utilizando números de puerto de origen TCP y UDP comprendidos entre 22.000 y 44.000, hay que  introducir dos sentencias similares a las siguientes:  Router(config)#access‐list 100 permit tcp 10.1.1.1 range 22000 44000 any  Router(config)#access‐list 100 permit udp 10.1.1.1 range 22000 44000 any  Para  autorizar  todas  las  conexiones  internas  al  anfitrión  192.168.1.200  hay  que  utilizar  la  sentencia siguiente:  Router(config)#access‐list 100 permit ip any host 192.168.1.200  Finalmente,  para  autorizar  conexiones  utilizando  puertos  de  destino  conocidos  al  anfitrión 192.168.1.100 hay que utilizar la sentencia siguiente:  Router(config)#access‐list 100 permit ip any host 192.168.1.100 lt 1024  Una  vez  terminada  la  construcción  de  la  ACL,  cabe  aplicarla  a  la  interfaz  externa  del  enrutador, utilizando el comando estándar ip access‐group [número o nombre de lista de acceso][in \out].  

Page 23: Listas de acceso

Las ACL extendidas denominadas siguen los mismos principios generales las ACL numeradas, por lo que aquí no se analizarán sus características Basta aplicar los principios relacionados con las ACL extendidas a  los comandos enumerados en el apartado dedicado a  las ACL denominadas estándar. Siguiendo este procedimiento, el usuario podrá crear ACL extendidas denominadas.                        Referencias Bibliográficas: HILL, Brian. CISCO Manual de referencia. McGaw‐Hill/Interamericana de España. Pp 963‐990.  

ACL extendidas y ACL reflexivas 

Hay que observar que una ACL extendida que utiliza la palabra clave established no es  lo mismo que una ACL  reflexiva  verdadera. Una ACL reflexiva verdadera lleva un registro de las sesiones y construye entradas ACL  de  carácter  temporal  basándose  en  dichas  sesiones, mientras que la palabra clave established simplemente examina los bits ACK y RST en paquetes y autoriza cualquier paquete que cumpla los criterios de filtro configurados con estos bits. El simple uso de la palabra clave established, aunque puede  reducir  la complejidad de la  ACL  y  deshacer  la mayor  parte  de  los  intentos  de  entrada,  no detendrá a un hacker hábil que sepa cómo manipular los bits ACK o RST en un paquete y, por tanto, no deben utilizarse en redes de alta seguridad.  En  el  presente  libro  no  se  analizarán  con  detalle  las características  de  las  ACL  reflexivas,  pero  si  el  lector  desea más información  al  respecto,  se  recomienda  visitar  la  dirección http://www.dsco.comando/univercd/cc/td/doc/ product/software/ios 121/12 Icgcr/secur_c/scprt3/scdreflx.htm. 

 

Page 24: Listas de acceso

  

Page 25: Listas de acceso