Primero que nada, todos los créditos van para @YukiteruAmano, pues este post está basado en el tutorial que publicó en el foro. La diferencia es que lo voy a enfocar a Arch, aunque probablemente funcione para otras distros basadas en systemd.
¿Qué es Firehol?
Firehol, es una pequeña aplicación que nos sirve para manejar el firewall integrado al kernel y su herramienta iptables. Firehol, carece de una interfaz gráfica, toda configuración debe hacerse por medio de archivos de texto, pero pese a esto, la configuración no deja de ser sencilla para usuarios noveles, o poderosa para quienes buscan opciones avanzadas. Todo lo que hace Firehol, es simplificar lo más posible la creación de reglas iptables y habilitar un buen firewall para nuestro sistema.
Instalación y configuración
Firehol no se encuentra en los repositorios oficiales de Arch, así que recurriremos al AUR.
yaourt -S firehol
Luego vamos al archivo de configuración.
sudo nano /etc/firehol/firehol.conf
Y agregamos ahí las reglas, pueden usar estas.
Sigue el activar Firehol para cada inicio. Bastante simple con systemd.
sudo systemctl enable firehol
Iniciamos Firehol.
sudo systemctl start firehol
Por último verificamos que las reglas de iptables se hayan creado y cargado correctamente.
sudo iptables -L
Desactivar IPv6
Como Firehol no maneja ip6tables y como la mayoría de nuestras conexiones no tienen soporte para IPv6, mi recomendación es desactivarlo.
En Arch agregamos ipv6.disable=1 a la línea del kernel en el archivo /etc/default/grub
...
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="rw ipv6.disable=1"
GRUB_CMDLINE_LINUX=""
...
Ahora regeneramos el grub.cfg:
sudo grub-mkconfig -o /boot/grub/grub.cfg
En Debian basta con:
sudo echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/disableipv6.conf
26 comentarios, deja el tuyo
No entiendo. ¿Seguís el tutorial y ya Tenes el Firewall Andando y bloqueado todas las conexiones? Otra cosa Un tutorial para Arch es complejo por ejemplo yo nunca he usado Firewall sudo o yaourt. Sin embargo se Entiende. O a lo mejor algún nuevo escribe yaourt y le saldra error. Para Manjaro es mas correcto.
Como dices @felipe, siguiendo el tutorial y poniendo en el archivo /etc/firehol/firehol.conf las reglas dadas por @cookie en el paste, ya tendrás un firewall sencillo para proteger el sistema a nivel básico. Esta configuración funciona para toda distro donde puedas poner Firehol, con la peculariedad de cada distro maneja sus servicios de formas distintas (Debian atraves de sysvinit, Arch con systemd) y en cuanto a la instalación, cada quien conoce lo que tiene, en Arch debes usar los repos AUR y yaourt, en Debian te bastan los oficiales, y asi en muchas otras, solo toca buscar un poco en los repositorios y adaptar el comando de instalación.
Creo que Yukiteru ya te aclaró las dudas.
Ahora, sobre lo de sudo y yaourt, por mi parte no considero a sudo como un problema, sólo hay que ver que te viene por defecto cuando instalas el sistema base de Arch; y yaourt es opcional, puedes descargar el tarball, descomprimirlo e instalar con makepkg -si.
gracias, tomo nota.
Algo que se me olvidó agregar al post, pero no lo puedo editar.
https://www.grc.com/x/ne.dll?bh0bkyd2
En ese sitio pueden poner a prueba su firewall 😉 (gracias otra vez a Yukiteru).
Corrí esos tests en mi Xubuntu y salí perfecto en todo! Qué delicia usar Linux!!! 😀
Todo eso esta muy bien… pero falta lo mas importante; hay que explicar como se crean las reglas !!, que significan, como crear nuevas… Si no se explica eso, lo que pones sirve de poco :-/
Crear reglas nuevas es sencillo, la documentación de firehol es clara y muy precisa en cuanto a la creación de reglas personalizadas así que leyendo un poco te será fácil personalizarlo y adaptarlo a tus necesidades.
Creo que la razón inicial del post de @cookie como la mía en el foro, era la de darle una herramienta a los usuarios y lectores que les permita darle un poco más de seguridad a sus computadoras, todo ello a nivel básico. El resto se deja a la deriva para que lo adaptes a tus necesidades.
Si leíste el link al tutorial de Yukiteru te darás cuenta de que la intención es dar a conocer la aplicación y la configuración de un firewall básico. Aclaré que mi post sólo era una copia enfocada a Arch.
¿Y esto es ‘para humanos’? o_O
Prueba Gufw en Arch: https://aur.archlinux.org/packages/gufw/ >> Click en Status. O ufw si prefieres la terminal: sudo ufw enable
Ya estás protegido si eres un usuario normal. Eso sí es ‘para humanos’ 🙂
Firehol realmente es un Front-End para IPTables y si lo comparamos con este último, es bastante humano 😀
Considero a ufw (Gufw es solo una interfaz del mismo) como una mala opción en cuanto a seguridad. Razón: por más reglas de seguridad que escribía en ufw no podía evitar que en las pruebas de mi firewall tanto vía Web como las que realizaba usando nmap, me aparecieran servicios como avahi-daemon y exim4 abiertos, y solo bastaba un ataque «stealth» para conocer la más mínima características de mi sistema, núcleo y servicios que corría, cosa que no me ha pasado usando firehol o arno’s firewall.
Pues no sé tú, pero como escribí arriba, yo uso Xubuntu y mi firewall va con GUFW y pasé TODAS las pruebas del link que el autor puso sin problemas. Todo stealth. Nada abierto. Así que, según mi experiencia ufw (y por ende gufw) me van de maravilla. No critico el empleo de otros modos de control de firewalls pero gufw funciona sin problemas y se obtienen resultados de seguridad estupendos.
Si tienes algunas pruebas que pienses que pueden arrojar vulnerabilidades en mi sistema dime cuáles son y con gusto las ejecutaré por acá y te haré saber los resultados.
Más abajo comente algo sobre el tema de ufw, donde digo que el error lo vi en 2008, usando Ubuntu 8.04 Hardy Heron. ¿Qué lo han corregido ya? Lo más seguro es que así sea, asi que no hay porque preocuparte, pero aún así, eso no quita que el bug estuvo allí y pude evidenciarlo, aunque no era un mal de morir, solo detuve los demonios avahi-daemon y exim4, y ya problema solucionado. Lo más raro de todo, es que solo esos dos procesos tenian el problema.
Hice mención del hecho como anecdota personal, y opine de la misma forma cuando dije: «Considero…»
Saludos 🙂
+1
@Yukiteru: ¿Probaste desde tu propio ordenador? Si estas mirando desde tu PC, es normal que puedas acceder al puerto del servicio X, pues el tráfico que se bloquea es el de la red, no localhost:
http://www.ubuntu-es.org/node/140650#.UgJZ3cUyYZg
https://answers.launchpad.net/gui-ufw/+question/194272
En caso contrario, por favor, reporta un bug 🙂
Un saludo 🙂
Desde otra computadora usando una red Lan en el caso de nmap, y el vía Web usando esta pagina https://www.grc.com/x/ne.dll?bh0bkyd2, usando la opción de puertos personalizados, ambos coincidian en que avahi y exim4 estaban escuchando desde la net aunque ufw tenia configurado su bloqueo.
Ese detallito de avahi-daemon y exim4 lo solucione simplemente desactivando los servicios y ya…no reporte bug en ese entonces, y creo que no tiene sentido hacerlo ya, porque eso fue por allá en 2008, usando Hardy.
2008 fue hace 5 años; de Hardy Heron a Raring Ringtail hay 10 *buntus. Esa misma prueba en mi Xubuntu, hecha ayer y repetida hoy (Agosto 2013) da perfecto en todo. Y yo sólo uso UFW.
Repito: Tienes alguna prueba adicional para realizar? Con gusto la hago y reporto lo que salga de este lado.
Has un escaneo SYN e IDLE a tu PC usando nmap, eso te dara una idea de que tan seguro es tu sistema.
El man de nmap tiene mas de 3000 líneas. Si me pasas los comandos a ejecutar con gusto lo hago y te reporto el resultado.
Mmm no sabia de las 3000 páginas del man de nmap. pero zenmap es una ayuda para hacer lo que te digo, es un front-end gráfico para nmap, pero aún así la opción para SYN scan con nmap es -sS, mientras que la opción para idle scan es -sI, pero el comando exacto es tarea.
Has el escaneo desde otra maquina apuntando a la ip de tu maquina con ubuntu, no lo hagas desde tu propia pc, porque así no funciona la cosa.
LOL!! Error mio lo de 3000 páginas, cuando eran líneas 😛
no se pero creo que una GUI para eso en GNU/Linux para manejar el firewall seria algo prudente y no dejar todo destapado como en ubuntu o todo tapado como en fedora , deberas estaria bueno xD, o algo para condigurar las malditas alternativas asesinas xD hjahjahjaja tiene poco que me pelie con ellas y el open jdk pero en fin tambien hay que mantener el principio de kiss
Gracias a todos los tropiezos que pase en el pasado con iptables, hoy puedo entenderlo a niverl raw o sea, hablarle directamente como viene de fabrica.
Y no es algo tan complicado, es muy sencillo de aprender.
Si el autor del post me lo permite, publicare un extracto del script firewall que uso actualmente.
## Limpieza de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Establecer politica por defecto: DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Operar en localhost sin limitaciones
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Permitir que la maquina pueda salir a la web
iptables -A INPUT -p tcp -m tcp –sport 80 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT
# Ya tambien a webs seguras
iptables -A INPUT -p tcp -m tcp –sport 443 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp –dport 443 -j ACCEPT
# Permitir ping desde adentro hacia afuera
iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT
# Proteccion para SSH
#iptables -I INPUT -p tcp –dport 22 -m conntrack –ctstate NEW -m limit –limit 30/minute –limit-burst 5 -m comment –comment «SSH-kick» -j ACCEPT
#iptables -A INPUT -p tcp -m tcp –dport 22 -j LOG –log-prefix «INTENTO DE ACCESO A SSH:» –log-level 4
#iptables -A INPUT -p tcp -m tcp –dport 22 -j DROP
# Reglas para amule para permitir conexiones salientes y entrantes en el puerto
iptables -A INPUT -p tcp -m tcp –dport 16420 -m conntrack –ctstate NEW -m comment –comment «aMule » -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp –sport 16420 -m conntrack –ctstate RELATED,ESTABLISHED -m comment –comment «aMule» -j ACCEPT
iptables -A INPUT -p udp –dport 9995 -m comment –comment «aMule» -j ACCEPT
iptables -A OUTPUT -p udp –sport 9995 -j ACCEPT
iptables -A INPUT -p udp –dport 16423 -j ACCEPT
iptables -A OUTPUT -p udp –sport 16423 -j ACCEPT
Ahora un poco de explicacion. Como podran fijarse, ahi estan las reglas con politica DROP por defecto, nada sale y entra al equipo sin que tu le digas.
Entonces, se deja pasar lo basico, el localhost y la navegacion a la red de redes.
Se puede ver, que tambien, hay reglas para el ssh y amule. Si se fijan bien como estan hecho, podran hacer las demas reglas que quieran.
El truco esta, en ver la estructura de las reglas y aplicar a un tipo de puerto o protocolo en especifico, sea este udp o tcp.
Espero que puedan entender esto que acabo de colocar aqui.
Deberías de hacer un post explicandolo 😉 estaría genial.
Tengo una pregunta. En caso tal que quiera reachazar conexiones http y https pongo:
server «http https» drop ?
Y así sucesivamente con cualquier servicio?
Gracias