iptables, una aproximación a un caso real

El objetivo de este tutorial es controlar nuestra red, evitando molestias por parte algún que otro “huésped indeseable” que desde adentro nos quiera serruchar el piso (expresión cubana que significa molestar, joder, etc), virus “paqueteador”, ataques externos o simplemente por el placer de saber que podemos dormir tranquilos.

Nota: Recordar las políticas de iptables, ACEPTAR todo o DENEGAR todo, pueden sernos útiles, en algunos casos y en otros no, eso depende de nosotros, que todo lo que suceda en la red, es cuestión nuestra, y solo nuestra, sí, tuya, mía, de aquel que leyó el tutorial, pero que no sabe ejecutarlo, o del que lo leyó y lo aplicó demasiado bien.

Monta que te quedas!!!

Lo primero es saber, qué puerto ocupa cada servicio en un ordenador con GNU/Linux instalado, para eso, no hay que preguntarle a nadie, ni liarse buscando en Google o consultando algún erudito en la materia, solamente leer un archivito. ¿Un archivito? Pues sí, un archivito.

/etc/services

Pero, ¿qué contiene /etc/services?

Muy fácil, la descripción de todos los servicios y puertos existentes para dichos servicios ya sea por TCP o UDP, de forma organizada y ascendente. Dichos servicios y puertos han sido declarados por la IANA (Internet Assigned Numbers Authority).

Jugando con iptables

Como primeros pasos, tendremos una PC, que va a ser la máquina de pruebas, llámenla como deseen, Lucy, Karla o Naomi, yo la llamaré Bessie.

Situación:

Bueno, bien, Bessie es una máquina de proyectos que va a tener un VSFTPd montado, OpenSSH corriendo, y un Apache2 que se instaló una vez para hacer benchmarking (prueba de rendimiento), pero que ahora sólo se usa junto a phpMyAdmin para administrar las bases de datos de MySQL que se usan internamente en algún que otro momento.

Notas a tomar:

Ftp, ssh, apache2 y mysql, son los servicios que están recibiendo peticiones en esta PC, por lo que tenemos que tener en cuenta los puertos que ellos usan.

Si no me equivoco y /etc/services no dice mentiras xD, ftp usa el puerto 20 y 21, ssh por defecto el 22 o algún otro, si se le ha definido en la configuración (en algún otro post hablaré de como configurar SSH un poco más de lo que normalmente se le conoce), Apache el 80 o el 443 si es con SSL, y MySQL el 3306.

Ahora necesitamos otro detalle, las direcciones IP de las PCs que van a interactuar con Bessie, para que nuestros bomberos, entre ellos, no se pisen las mangueras (significa que no haya conflicto jaja).

Pepe, el de desarrollo en PHP+MySQL, solo tendrá acceso a los puertos 20-21, 80, 443 y 3306, Frank que lo suyo es actualizar la página web del proyecto a entregar dentro de un mes, sólo tendrá acceso al puerto 80/443 y 3306 por si necesita hacer alguna corrección en la DB, y yo tendré acceso a todos los recursos en el server (y deseo proteger el logueo con ssh por IP y MAC). El ping debemos activarlo por si deseamos encuestar la máquina en algún momento. Nuestra red es clase C del tipo 10.8.0.0/16.

Iniciaremos un archivo de texto plano llamado firewall.sh en el cual contendrá lo siguiente:

Paste No.4446 (Script iptables)

Y así, con estas líneas, permites el acceso a los miembros del DevTeam, te proteges, y proteges la PC, creo que mejor explicado, ni en sueños. Sólo queda darle permisos de ejecución, y todo estará listo para funcionar.

Existen, herramientas que mediante una linda GUI, les permiten a los usuarios novatos, configurar el firewall de sus PCs, como por ejemplo “BadTuxWall”, requiere Java. También el FwBuilder, QT, del cual ya se habló aquí o el “Firewall-Jay”, con interfaz en ncurses. Yo, en mi opinión personal, me gusta hacerlo en texto plano, así me obligo a aprender.

Eso es todo, nos vemos próximamente para continuar explicando, la pelusa de la contrapelusa, de alguna que otra configuración, proceso o servicio.


6 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   rodolfo alejandro dijo

    genial espero con ansias el de ssh saludos, buenos post, saludos.

  2.   Faustod dijo

    Eso me gusta, ya preparare mis interrogantes…

  3.   nwt_lazaro dijo

    # Permitir la Entrada a la dirección IP 192.168.0.15 con dirección física 00:01:02:03:04:05

    iptables -A INPUT -s 192.168.0.15 -m mac –mac-source 00:01:02:03:04:05 -p tcp –dport 22 -m state –state NEW -j ACCEPT

    Si desea agregar más direcciones IP y mac, sera cuestión de insertar otra cadena INPUT variando la dirección IP y mac respectivamente.

  4.   nwt_lazaro dijo

    Edito: ya que WordPress no se lleva bien con los guiones dobles, las siguientes partes del comando llevaban guiones dobles
    – – mac-source 00:01 …
    – – dport 22 …
    – – state NEW …

    1.    KZKG^Gaara dijo

      Si quieres puedes usar las etiquetas «code» aquí pones el código«/code» y te funionará perfectamente los dos guiones 😉
      Obviamente cambiando los « y » por símbolos de menor-qué y mayor-qué

  5.   @Jlcmux dijo

    Pregunta. Cuando uno instala un servidor, sea ssh o apache o el que sea. El puerto no se abre solo? Cual es la diferencia de dejarlo asi o abrirlo de esta manera?