Autor: Henry D. Rosado T.
Correo electrónico: bleycklinx@gmail.com

Podemos también limitar las peticiones hechas desde la red local (LAN) al puerto 3128 del Proxy, limitando la taza de conexiones a veinte por segundo con ráfagas de hasta cinco conexiones. Esto es muy útil para evitar ataques de DoS (acrónimo de Denial of Service que se traduce como Denegación de Servicio) desde la red local (LAN

).

#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE
# PORT PORT(S) DEST LIMIT
REDIRECT loc 3128 tcp 80 – - 20/sec:5
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

DNAT

El DNAT se utiliza para reenviar peticiones desde un puerto del cortafuegos hacia una IP y puerto en particular tanto en la red local como en la DMZ. Cabe destacar que para que el DNAT funcioné se necesita que:

  • Esté habilitado el reenvío de paquetes en /etc/sysctl.cfg en la opción “net.ipv4.ip_forward = 1”
  • Los equipos hacia los que se esté haciendo DNAT utilicen como puerta de enlace al cortafuegos.

Si tenemos un servidor DNS (53), HTTP (80) dentro de nuestra red local y queremos permitir accesos a este, reenviamos con el DNAT editando las siguientes reglas:

#ACTION SOURCE DEST PROTO DEST
# PORT
DNAT net loc:172.16.0.3 tcp 53,80
DNAT net loc:172.16.0.3 udp 53
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

Si tenemos dos servidores de correo, uno que recibe la mensajería (como pasarela) y otro que envía y este necesita conectarse al servidor principal (pasarela) para poder enviar los correos, para poder permitir esto solo tenemos que abrir los puertos necesarios:

ACCEPT loc fw tcp 25

Si hemos puesto que se permita la conexión a ciertos servicios o puertos es recomendable permitir tanto el Ping como el Traceroute al servidor, para realizar pruebas de diagnóstico desde el cortafuegos hacia Internet y red local para probar conectividad y acceso hacia diversos protocolos, se puede utilizar lo siguiente:

Ping/ACCEPT fw loc
Ping/ACCEPT fw net
Trcrt/ACCEPT fw net

En el siguiente ejemplo permitimos a una máquina de la red local hacer Ping y Traceroute hacia la zona de Internet:

Ping/ACCEPT loc:172.16.0.20 net
Trcrt/ACCEPT loc:172.16.0.20 net

Si deseamos podemos permitir a toda la red local hacer Ping y Traceroute hacia la zona de Internet:

Ping/ACCEPT loc net
Trcrt/ACCEPT loc net

Si queremos permitir la consulta de Ping desde el Internet tenemos que permitir el servicio:

Ping/ACCEPT net fw

Ejemplos de algunas reglas útiles:

En este ejemplo se hace DNAT desde la zona de la Internet para los servicios de HTTP (puerto 80), SMTP (puerto 25), POP3 (puerto 110) y DNS (puerto 53) hacia diversos servidores localizados en Loc:

#ACTION SOURCE DEST PROTO DEST
# PORT
DNAT net loc:172.16.0.3 tcp 80
DNAT net loc:172.16.0.3 tcp 25,110
DNAT net loc:172.16.0.2 tcp 53
DNAT net loc:172.16.0.2 udp 53
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE

En el siguiente ejemplo se hace DNAT desde la zona de Internet para los servicios de HTTP (puerto 80), SMTP (puerto 25), POP3 (puerto 110) y DNS (puerto 53) hacia diversos servidores localizados en Loc y limitar la taza de conexiones a diez por segundo con ráfagas de hasta cinco conexiones para cada servicio:

#ACTION SOURCE  DEST           PROTO  DEST    SOURCE  ORIGINAL  RATE
#                                     PORT    PORT(S) DEST      LIMIT
DNAT    net     loc:10.10.10.1 tcp    80      -       -         10/sec:5
DNAT    net     loc:10.10.10.2 tcp    25,110  -       -         10/sec:5
DNAT    net     loc:10.10.10.3 tcp    53      -       -         10/sec:5
DNAT    net     dmz:10.10.10.3 udp    53      -       -         10/sec:5
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Nota: Por opciones de seguridad se podría poner en rules que ciertas ips peligrosas no tengan ningún tipo de acceso a nuestro servidor con:

DROP net:192.168.0.0/16 fw
DROP net:10.0.0.0/8 fw
DROP net:172.16.0.0/12 fw
DROP net:224.0.0.0/4 fw
DROP net:240.0.0.0/5 fw
DROP net:127.0.0.0/8 fw
DROP net:0.0.0.0/8 fw
DROP net:169.254.0.0/16 fw
DROP net:255.255.255.255 fw

Con esto bloqueamos totalmente a estas ips, sin permitirles ningún tipo de acción en nuestro equipo.

Otros Ejemplos:

FTP/ACCEPT net fw
MySQL/ACCEPT loc fw
MySQL/ACCEPT loc net
SSH/ACCEPT loc:172.16.0.5 fw
HTTP/ACCEPT net fw
Edonkey/DNAT net loc:172.16.0.3

Si queremos permitir paquetes icmp con limitaciones para evitar ataques DoS, lo podemos hacer del siguiente modo:

#Permitimos paquetes ICMP (ping,pong,…)
#con limites para evitar ataques de DoS.
##Aceptamos ping
ACCEPT net fw icmp echo-request – - 2/sec:3 #Aceptamos pong
ACCEPT net fw icmp echo-reply – - 2/sec:3 #Aceptamos redirecciones
ACCEPT net fw icmp redirect – - 2/sec:3 #Aceptamos tiempo excedido
ACCEPT net fw icmp time-exceeded – - 2/sec:3 #Aceptamos destino inalcanzable
ACCEPT net fw icmp destination-unreachable – - 2/sec:3

* Permitimos el acceso de determinados puertos a un equipo de VoIP (PAP2) que se encuentra dentro de la red local 2 LAN, notese que no esta en el mismo segmento de red de los equipos con NAT aunque se podria realizar esto dentro del mismo segmento de red con NAT.

DNAT net loc:10.10.5.25 udp 5060
DNAT net loc:10.10.5.25 udp 5061
DNAT net loc:10.10.5.25 udp 7070
ACCEPT loc2:10.10.5.25 net udp 5060
ACCEPT loc2:10.10.5.25 net udp 5061
ACCEPT loc2:10.10.5.25 net udp 7070

Revisamos posibles errores en la configuración con “shorewall check” antes de iniciarlo.

Iniciar Shorewall y añadirlo a los servicios de arranque del sistema en CentOS.

Si Shorewall va a ser ejecutado por primera vez, utilice:
shorewall start
Si actualizo a la versión mencionada en este Tutorial, o instalo
directamente la versión utilizada aquí, utilice:
shorewall restart
Añadimos a Shorewall al arranque del sistema:
chkconfig shorewall on
En Debian una vez concluido esto solo debemos iniciarlo
“shorewall start” o reiniciar “shorewall restart” y para poner en los
procesos del inicio simplemente instalamos el "rcconf".
Y con “iptables -L -n” y también “iptables -t nat -L” se podrá ver las reglas
generadas por Shorewall.