LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

En este artículo, aprenderá acerca de estos conceptos:

  • Configurar el acceso desde y hacia un servidor Samba en el nivel de cortafuegos
  • Solucionar problemas del cortafuegos con el servidor de Samba
  • Lee también nuestro artículo sobre la configuración más reciente y extenso: Cómo configurar un servidor Samba en Linux

Requisitos previos

 

Para obtener el máximo resultado, usted debería tener un conocimiento avanzado acerca de Linux y un sistema de trabajo Linux en el que se pueden practicar los comandos incluidos en este artículo. Además, usted debe tener acceso a un entorno Windows para que pueda utilizar y probar la configuración de seguridad.

Cortafuegos

Samba tiene muchas características para restringir quién puede acceder a qué, compartiendo y limitando el acceso a los nombres de usuario en particular, la comprobación de los requisitos de contraseña, comprobar la pertenencia al grupo, o el filtrado a nivel de red. Los últimos parámetros, tales como allow hosts y smb ports, operan en direcciones IP y puertos de usuario (UDP) / TCP, que proporcionan una manera fácil de controlar los sistemas que pueden conectarse a su servidor Samba.

 

La Red de control de nivel se logra cuando se puede identificar qué dispositivos se conectan a un servidor, como por ejemplo los que pertenecen a una red interna o incluso a una subred o un grupo de servidores. Se trata de una primera línea de defensa: si un atacante no puede conectarse a un dispositivo, el dispositivo es más seguro.

El control de acceso de red en el demonio Samba puede sonar como la solución perfecta, pero hay mejores maneras. Para determinar si una conexión remota es razonablemente segura, Samba debe primero aceptar la conexión, ya que Samba no recibe ningún detalle acerca de la conexión entrante hasta que se haya completado esa conexión. Si la idea era evitar que las personas indeseables se conecten a Samba, tendría más sentido evitar que incluso viera la conexión Samba. Cualquier configuración de Samba en el interior sólo afecta a Samba, y, a continuación, debe encontrar soluciones similares para otros demonios, tales como servidores web y de transferencia de archivos.

En un típico ambiente de seguridad de red que se controla por los administradores de sistemas, o por otros miembros del personal TI. Se controlan el acceso a nivel de host, en lugar de el nivel de aplicación proporcionando la separación de las preocupaciones y reduciendo los errores causados ​​por los cambios en smb.conf.

Comprensión de iptables

Linux ofrece un robusto firewall basado en host llamado iptables. Este firewall puede inspeccionar los paquetes que llegan desde dentro, fuera, o por medio de un dispositivo Linux.  Iptables puede hacer referencia al sistema de filtrado de paquetes en el interior del núcleo de Linux o el nombre del comando que se utiliza para gestionar los filtros. El sistema de filtrado de paquetes en el núcleo ha crecido en los últimos años de un motor de casación simple con un firewall robusto capaz de cargar los plug-ins de forma dinámica. Como tal, puede ser complicado de configurar

 

El primer concepto importante detrás de iptables es la de las propias tablas. Una tabla es una lista autónoma de reglas y acciones. Cuando el núcleo necesita filtrar un paquete, consulta la tabla de filtros. Cuando la traducción de direcciones de red (NAT) que se pide, la tabla nat se utiliza. Otras tablas pueden existir dependiendo de las características de la red que se han cargado en el núcleo. Un paquete puede atravesar las tablas, por ejemplo, para realizar el filtrado de paquetes antes de la traducción de direcciones.

Dentro de cada tabla hay un conjunto de cadenas. Cada tabla tiene algunas cadenas predefinidas, y usted puede agregar las cadenas personalizadas a esta lista. Las cadenas predefinidas se utilizan en diferentes puntos del ciclo de vida de un paquete. Por ejemplo, la tabla de filtro tiene tres cadenas predefinidas:

  • INPUT (ENTRADA). Se utiliza para determinar qué hacer con los paquetes que están destinados a la propia anfitriona.
  • OUTPUT (SALIDA). Aplica a los paquetes procedentes de la máquina.
  • FORWARD (ADELANTE). Sólo para los paquetes que pasan de una interfaz a otra, como cuando el ordenador está actuando como un router.

Una cadena tiene una lista ordenada de cero o más reglas, cada regla consiste en una cláusula de equivalencia y un destino. La cláusula de adaptación puede ser casi cualquier cosa, desde una dirección IP o el puerto a los estados límite de velocidad que sólo tienen efecto cuando se produce una acción en particular con demasiada frecuencia. El objetivo puede ser otra cadena o una acción, tal como una instrucción para aceptar o soltar el paquete. Puede crear tanto de las cláusulas correspondientes y las metas a través de los módulos del kernel, por lo que las posibilidades son ilimitadas.

El núcleo elige que hacer en base al orden de las reglas de la cadena. Tras el primer partido, el núcleo salta a la meta. En la mayoría de los casos, se detiene el proceso de reglas, aunque algunos objetivos, se consideran no darlo por terminado, por lo que el núcleo continua con la tramitación, con la siguiente regla. Si ninguna regla coincide, el objetivo de la cadena por defecto se utiliza.

La protección de Samba con un servidor de seguridad

Hay muchas formas de diseñar una política de firewall para Samba, con la elección que se hizo sobre los temas como el diseño de la red y quién o qué necesita el acceso a su servidor Samba. En un nivel alto, usted puede elegir para proteger a todo el ejército o simplemente centrarse en la Samba.

Si desea proteger a toda la hueste, entonces no tienen que ver con los puertos que utiliza Samba. El código siguiente muestra una simple política de permitir sólo el tráfico privado de la red 10.0.0.0 / 8 con el servidor local:

iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
 

 

El primer comando agrega una regla a la cadena INPUT si se añade a la lista actual de las normas. La norma especifica que cualquier cosa que venga de la red de origen ( -s ) 10.0.0.0 / 8 salta a la meta de aceptar, lo cual acepta el paquete. El segundo comando permite que los paquetes que provienen de una sesión existente, logrado mediante una llamada al comparador estado con -m state . Este comparador realiza un seguimiento de las conexiones que salen del huésped. Los paquetes de respuesta a las conexiones de salida son considerados established o related , por lo que el resto de la regla acepta los paquetes.

El último comando establece la política por defecto de la cadena INPUT para descartar el paquete. Si el paquete no viene de la red 10.0.0.0 / 8 o no es parte de una conexión que inició el anfitrión, no será permitido.

Usted puede obtener más granular mediante el filtrado a nivel de puerto. El ejemplo anterior se filtra en la dirección de origen, por lo que todos los servicios sería bloqueado. Si tuvieras un servidor web en el host que quería abrir el acceso a Internet en general, la política anterior no lo haría.

  • 137 UDP. Sistema básico de entrada / salida (NetBIOS) de servicios de nombres.
  • 138 UDP. Servicios de datagrama NetBIOS.
  • 139 TCP. Servicios de sesión NetBIOS.
  • 445 TCP. Directo alojamiento (Common Internet File System [CIFS] a través de TCP).

El Listado 1 muestra una política que permite la conexión de la red 10.0.0.0 / 8 a los servicios de Samba y también permite que un servidor web para funcionar sin restricciones.


Listado 1. Una política que opera a nivel de puerto

iptables -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 10.0.0.0/8 --dport 137 -j ACCEPT
iptables -A INPUT -p udp -s 10.0.0.0/8 --dport 138 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -s 10.0.0.0/8 --dport 139 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -s 10.0.0.0/8 --dport 445 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

La política de la Lista 1 es más compleja que la anterior política, ya que especifica varias aplicaciones diferentes, cada uno con diferentes políticas. Las dos primeras reglas han encontrado paquetes TCP entrantes ( -p tcp ) que forman parte de una nueva sesión ( -m state --state NEW ) y se envía al puerto 80 o el puerto 443 ( --dport 80 , --dport 443 ) . No hay restricciones en la dirección de origen, por lo que cualquiera será permitido.

Las siguientes dos líneas coincide con ninguna de paquetes UDP ( -p udp ) procedente de la red interna ( -s 10.0.0.0/8 ) para el puerto 137 o el puerto 138 ( --dport 137 , --dport 138 ). UDP es sin supervisión, por lo que no tiene que preocuparse acerca de si la conexión es nuevo o establecido.

Líneas 5 y 6 combinar el comparador Estado y la dirección de la fuente de filtro para permitir que sólo las nuevas conexiones en los puertos 139 y 445 si proceden de la red interna.

Finalmente, las dos últimas líneas operan de la misma como en la política anterior. Si el paquete está relacionado con una conexión actual, se permite. Todo lo demás se cae.

Solución de problemas de firewall

Problemas de cortafuegos son comunes, a menudo porque te encuentras con un requisito inesperado o encontrar una aplicación no se ejecuta de la manera que usted espera. Los errores en las reglas mismas son comunes, especialmente cuando se trata de largas listas de números de puertos y direcciones IP. No todos los problemas están relacionados con servidor de seguridad, sin embargo, por lo que aún debe conocer sus pasos básicos de solución de problemas de red.

Viendo la política

Puede utilizar los iptables comando para ver la política. La -L opción muestra la política, y el detallado ( -v ) opción agrega detalles adicionales, tales como contadores de paquetes. Listado 2 muestra la política de la Lista 1 .


Listado 2. Visualización de la política detallada

	# iptables -L -v
Chain INPUT (policy DROP 47 packets, 5125 bytes)
 pkts bytes target  prot opt in   out  source      destination
    0     0 ACCEPT  tcp  --  any  any  anywhere    anywhere     state NEW tcp dpt:http
    0     0 ACCEPT  tcp  --  any  any  anywhere    anywhere     state NEW tcp dpt:https
    0     0 ACCEPT  udp  --  any  any  10.0.0.0/8  anywhere     udp dpt:netbios-ns
    0     0 ACCEPT  udp  --  any  any  10.0.0.0/8  anywhere     udp dpt:netbios-dgm
    0     0 ACCEPT  tcp  --  any  any  10.0.0.0/8  anywhere     state NEW tcp dpt:139
    0     0 ACCEPT  tcp  --  any  any  10.0.0.0/8  anywhere     state NEW tcp dpt:445
  214 15216 ACCEPT  all  --  any  any  anywhere    anywhere     state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 292 packets, 35009 bytes)
 pkts bytes target     prot opt in     out     source               destination

Las estadísticas muestran detallado el número de paquetes y bytes que se han coincidan una regla en las dos primeras columnas. Desde el Listado 2, se puede ver que los paquetes sólo han igualado la última regla. Mirando más de cerca en la primera línea de salida, verá que el destino predeterminado también tiene una cantidad de paquetes. Cuarenta y siete paquetes se han eliminado porque no cumple una regla, lo que indicaría que, o bien que alguien no autorizado intenta acceder a la máquina o el tráfico legítimo se está bloqueada por una incorrecta política de firewall.

 

Otro uso para la visualización de la directiva de firewall es obtener una comprensión de la política en su totalidad. Debido a que el procesamiento se detiene después de que el primer partido, usted debe comenzar en la parte superior de la política y su forma de trabajo a través de determinar si una norma es dejar caer su tráfico.

Una situación común es cuando una regla menos específica antes de que una regla más específica. Para evitar problemas, poner sus reglas más específicas hacia la parte superior de su política para que las excepciones son atendidos primero. Sin embargo, esta convención no siempre funciona, y usted podría encontrarse con los usuarios que no pueden conectarse a su servidor.

El Listado 3 muestra la directiva en un servidor en la red de Ingeniería. Los usuarios de la misma red no puede conectarse al servicio.


Listado 3. Una política con una regla que prevalece sobre otra

	
Listing 3. A policy with a rule that overrides another
	
# iptables -L -v
Chain INPUT (policy DROP 21 packets, 2967 bytes)
target   prot opt in   out  source       destination
ACCEPT   tcp  --  any  any  anywhere     anywhere      state NEW tcp dpt:http
ACCEPT   tcp  --  any  any  anywhere     anywhere      state NEW tcp dpt:https
DROP     tcp  --  any  any  10.0.0.0/8   anywhere
ACCEPT   udp  --  any  any  10.2.3.0/24  anywhere      udp dpt:netbios-ns
ACCEPT   udp  --  any  any  10.2.3.0/24  anywhere      udp dpt:netbios-dgm
ACCEPT   tcp  --  any  any  10.2.3.0/24  anywhere      state NEW tcp dpt:netbios-ssn
ACCEPT   tcp  --  any  any  10.2.3.0/24  anywhere      state NEW tcp dpt:microsoft-ds
ACCEPT   all  --  any  any  anywhere     anywhere      state RELATED,ESTABLISHED
 

El servidor en el Listado 3 pertenece a la red de Ingeniería, que es 10.2.3.0/24. El acceso desde el resto de la compañía, que es 10.0.0.0 / 8, debe ser bloqueado. La red 10.2.3.0/24 es una subred de la red más grande, por lo que la regla para bloquear todo el 10.0.0.0 / 8 de la red se presenta ante el Server Message Block (SMB) de reglas específicas, y como resultado, incluso los usuarios de ingeniería estarán capturado por el DROP regla, porque iptables utiliza un primer partido, no un partido más, el concepto.

 

La solución al problema anterior es bloquear la red corporativa después de que las reglas específicas han sido procesados. De esta manera, los paquetes de la red de Ingeniería se aceptarán en primer lugar.

Solución avanzada de problemas

A menudo, no se puede estar seguro de si el servidor de seguridad es el culpable o los problemas están en otro sitio en la red. La prueba más simple consiste en desactivar el firewall y ver si la conexión se realiza correctamente. Por supuesto, ello no siempre es posible, así que si usted no puede dejar caer el servidor de seguridad, la mejor cosa siguiente es buscar el paquete de venir al servidor.

El tcpdump utilidad muestra los paquetes de red que el servidor ve, incluso si la directiva de firewall descarta el paquete. Si usted puede ver el intento de conexión desde el servidor, entonces usted sabe que el paquete se está en el servidor. Suponiendo que el servicio se está ejecutando, se puede concluir razonablemente que el firewall está bajando el paquete. Listado 4 muestra el tcpdump utilidad en la acción.


Listado 4. Paquete rastro de una conexión SMB bloqueado

# tcpdump -i eth0 tcp port 445
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
20:24:18.392106 IP CLIENT.search > SERVER.microsoft-ds: S ...
20:24:21.358458 IP CLIENT.search > SERVER.microsoft-ds: S ...
20:24:27.393604 IP CLIENT.search > SERVER.microsoft-ds: S ...

Las opciones a tcpdump son las siguientes:

  • -i eth0 . escuchar en la interfaz eth0.
  • tcp port 445 . Esté pendiente de los paquetes en el puerto TCP 445.

Los resultados del listado 4 muestran que tres paquetes que realiza en el servidor. La flecha indica la dirección del flujo: Estos tres paquetes van desde el cliente al servidor en el puerto de microsoft-ds, que es 445. El S cerca del final de la línea indica un intento de conexión, y la falta de respuesta indica que el servidor no responde.

Otra indicación de una conexión no es la diferencia creciente entre los paquetes sucesivos. Las marcas de tiempo de la izquierda muestran que el segundo paquete llegó cerca de 3 segundos después de que el primero, luego el tercero llegó 6 segundos después de eso. La mayoría de los protocolos de red aplicar un aumento exponencial de back-off, lo que significa que el tiempo entre los sucesivos intentos se duplica cada vez.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías