Iptables para server Linux

Realizada Por: Ichi

Este, más que un tutorial, es un ejemplo de un firewall con IPTABLES.
El siguiente firewall está configurado de manera tal de cerrar todos los puertos, bloquear el acceso fuera de nuestra red salvo a los servicios que nosotros queramos.

Para empezar, verificamos que tenemos iptables instalado en nuestra PC:

Código:
sudo apt-get install iptables

Una vez instalado, abrimos nuestro editor de textos favorito (como por ejemplo nano o vim) como root o usando sudo y agregamos las siguientes lineas, podemos agregar más, sacar algunas, siempre descomentando la linea (quitando el # de adelante, pues se tomaria como comentario)

Lo hacemos de la siguiente manera.

Código:
sudo gedit iptables

#####################################

#!/bin/bash

## Borramos todas las reglas de IPTABLES anteriores

iptables –flush

## Bloqueamos las peticiones externas de PING
## (donde eth1 es la interfaz de red por donde viene internet,
## (aunque generalmente es eth0 ) Ver IFCONFIG

iptables -A INPUT -i eth1 -p icmp –icmp-type echo-request -j DROP

## Bloqueamos IPs que no queremos que accedan a nuestra pc por ningún servicio.
## Modifiquen (ip) por el numero y descomenten la linea (borrando el # )
##Eso lo usaremos para hacer lo que llamamos BAN IP

# iptables -I INPUT -s (ip) -j DROP
# iptables -I INPUT -s (ip2) -j DROP
# iptables -I INPUT -s (ip3) -j DROP

## Política general. Cerramos todo. Dejamos entrar y salir lo solicitado
iptables -P INPUT DROP # No dejamos ingresar ningún paquete por ningún lado
iptables -P OUTPUT ACCEPT # Permitimos todo lo emergente desde nuestra pc.
iptables -P FORWARD ACCEPT # Aceptamos el FOWARD (para LAN)
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

## Permitimos conexión de LAN ( Solo en el caso de tener una LAN, permitimos que
## los paquetes entren y a su vez se redirijan desde y
## hacia la terminal por medio de la interfaz de la LAN eth0 )
# iptables -A FORWARD -i eth0 -j ACCEPT
# iptables -A INPUT -i eth0 -j ACCEPT # Permitimos el acceso de la LAN a nuestros servicios.

## Redireccionamos Internet a LAN
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


###OTRAS PROTECCIONES####

## Habilitamos la protección TCP SYN COOKIE
/bin/echo “1” > /proc/sys/net/ipv4/tcp_syncookies

## Para evitar el spoofing nos aseguramos de que la dirección
## origen del paquete viene del sitio correcto.

for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
/bin/echo “1” > ${interface}
done

###Reglas de los puertos####

# Aqui habilitamos cualquier servicio que tengamos a internet

## Abrimos el SSH con seguridades (Solo en caso de tener un Servidor SSH,
## lo habilitamos con una protección, donde HITCOUNT 3 es el numero máximo
## de veces que pueden haber intentos de LOGIN fallidos desde
## una misma ip hasta que sea bloqueado.

iptables -A INPUT -m recent –update –seconds 40 –hitcount 3 –name SSH –rsource -j DROP
iptables -A INPUT -m recent –set –name SSH –rsource -j ACCEPT

# Dejamos a localhost, para mysql, etc..
iptables -A INPUT -i lo -j ACCEPT

#Ahora debemos desbloquear los puertos que necesitemos, por ejemplo el 80.
iptables -A INPUT -p UDP –dport 80 -j ACCEPT
###################################

Guardamos este archivo en /etc/init.d

Código:
sudo cp /etc/init.d/iptables.sh

Luego le damos permisos de ejecución:

Código:
sudo chmod 555 /etc/init.d/iptables.sh

y lo ponemos en funcionamiento:

Código:
sudo sh /etc/init.d/iptables.sh

Cada vez que reiniciemos la máquina, de está manera se auto ejecutará el script.

hecho ésto podemos estar tranquilos que nuestro server linux estará completamente protegido contra ataques a la db y demás, puesto que bloquea totalmente todas las IPs a todos los puertos y solo deja libres los puertos del eAthena y SSH, éso si, hay que estar completamente seguros que NADIE va a tener nuestros datos SSH porque si sabe un poco de linux ya la jodimos D:

::[Mini FAQ]::
-No puedo conectar a mi host despues de poner el script.
Pues fijate que hayas pusto todo el script correctamente, si sigue fallando, revisa que no tengas un puerto distinto para SSH del que yo he puesto, entonces deberás resetear de 0 tu host puesto que si lo hiciste mal ya no podrás volver a conectarte :S

-No puedo conectar a mi server desde que puse el script
Fijate que pusieras los puertos correctos, yo puse los puertos base, cada uno usa los suyos =3

y bueno, hasta aquí la guia/tutorial de seguridad :3
si teneis cualquier duda, reporte o problemas con ella contactadme via msn del perfil =3

Saludos y hasta pronto


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: