¿Alguien podría dar algunos pasos simples con un ejemplo de configuración de cómo configurar un firewall simple en Ubuntu (usando solo la consola)? Solo se debe permitir el acceso ssh, http y https.
Si llamaría a estos comandos en secuencia a través de ssh, ¿rompería mi conexión?
klew el
No lo creo, pero debes verificar para asegurarte. Esto también mantiene su estado entre reinicios, por lo que solo debería hacerlo una vez.
Nerdfest el
Lo comprobaré cuando esté cerca de esta computadora ...
klew
Puede ponerlo en un script y ejecutarlo y luego, incluso si se desconecta, podrá volver a conectarse después. Vea mi respuesta a continuación para el guión.
Hamish Downer
2
El comentario anterior es correcto. Básicamente, ejecute el primer comando en el script anterior.
Nerdfest el
14
Usa este script.
Simplemente decida si desea permitir ICMP entrante (ping) o no.
# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
# As the default policies, drop all incoming traffic but allow all
# outgoing traffic. This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT
# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT
# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT
# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT
# Reject all other incoming packets
iptables -A INPUT -j REJECT
Como se señaló en los comentarios a otra respuesta, no desea perder su conexión antes de permitir el puerto ssh. Desde la página del manual:
"GESTIÓN REMOTA
Al ejecutar ufw enable o iniciar ufw a través de su initscript, ufw vaciará sus cadenas. Esto es necesario para que ufw pueda mantener un estado consistente, pero puede desconectar las conexiones existentes (por ejemplo, ssh). ufw admite agregar reglas antes de habilitar el firewall, por lo que los administradores pueden hacer:
ufw allow proto tcp from any to any port 22
antes de ejecutar 'ufw enable'. Las reglas aún se eliminarán, pero el puerto ssh se abrirá después de habilitar el firewall. Tenga en cuenta que una vez que ufw esté 'habilitado', ufw no vaciará las cadenas al agregar o quitar reglas (pero lo hará al modificar una regla o cambiar la política predeterminada) ".
Así que aquí hay un enfoque que utiliza un script para configurarlo. Se cerrará la sesión cuando ejecute este script, pero una vez ejecutado, puede iniciar sesión nuevamente a través de ssh.
Ponga lo siguiente en un script y llámelo start-firewall.sh
Si se familiariza con las secuencias de comandos iptables, tendrá control total sobre todas las capacidades de firewall. No es tan amigable como Firestarter, pero se puede hacer en la consola con nano/ vieditores. Echa un vistazo a este tutorial dirigido a Ubuntu.
Quicktables me ayudó a aprender las reglas de iptables. Simplemente ejecute el script y generará un script de iptables para usted ... luego puede abrirlo y ver los comandos asociados generados por las preguntas que le hizo. Es un gran recurso de aprendizaje.
Para crear las reglas de configuración que desee, deberá editar el archivo / etc / default / firehol y cambiar START_FIREHOL = YES
Y usted querría hacer que su /etc/firehol/firehol.conf se vea así.
version 5
interface any IfAll
client any AnyClient accept
server "ssh http https" accept
# Accept everything from trusted networks
server anystateless AllInside accept src "10.3.27.0/24"
Una de las mejores cosas de firehol es el comando 'probar'. Puede ajustar su archivo de configuración y hacer un 'intento de firehol', si se conectó a través de ssh, y algo sobre lo que cambió mató su acceso a la red, entonces firehol revertirá los cambios. Para que los cambios entren en vigencia, debe decir commit.
Firehol es brillante para manipular las reglas de iptables. '$ firehol try' "Activa el firewall, pero espera hasta que el usuario escriba la palabra commit. Si esta palabra no se escribe en 30 segundos, se restaura el firewall anterior".
Gareth
Así que puedes agregar / editar / eliminar reglas y luego probarlas. Si está haciendo esto a través de SSH de forma remota, ¡entonces no lo bloqueará de su propio servidor!
Gareth
1
Preferiría Shorewall . Es fácil de configurar pero flexible al mismo tiempo.
Ahh, mi error. Alternativamente. el administrador aún puede enviar ssh -X al servidor y ejecutar firestarter de forma remota.
spoulson el
1
También necesitaría instalar un servidor X para iniciar ssh -X :).
klew el
@klew, no necesita instalar un servidor X completo para ejecutar aplicaciones X sobre ssh. Necesita varias bibliotecas, pero no necesita todo. Por lo mínimo, solo necesita los paquetes xauth y xbase-clients.
Respuestas:
sudo ufw predeterminado negar
sudo ufw permitir http
sudo ufw permite https
sudo ufw permitir ssh
sudo ufw enable
fuente
Usa este script.
Simplemente decida si desea permitir ICMP entrante (ping) o no.
fuente
Como se señaló en los comentarios a otra respuesta, no desea perder su conexión antes de permitir el puerto ssh. Desde la página del manual:
"GESTIÓN REMOTA
Al ejecutar ufw enable o iniciar ufw a través de su initscript, ufw vaciará sus cadenas. Esto es necesario para que ufw pueda mantener un estado consistente, pero puede desconectar las conexiones existentes (por ejemplo, ssh). ufw admite agregar reglas antes de habilitar el firewall, por lo que los administradores pueden hacer:
antes de ejecutar 'ufw enable'. Las reglas aún se eliminarán, pero el puerto ssh se abrirá después de habilitar el firewall. Tenga en cuenta que una vez que ufw esté 'habilitado', ufw no vaciará las cadenas al agregar o quitar reglas (pero lo hará al modificar una regla o cambiar la política predeterminada) ".
Así que aquí hay un enfoque que utiliza un script para configurarlo. Se cerrará la sesión cuando ejecute este script, pero una vez ejecutado, puede iniciar sesión nuevamente a través de ssh.
Ponga lo siguiente en un script y llámelo start-firewall.sh
Y luego hazlo ejecutable y ejecútalo haciendo
Para obtener más información, lea la página del manual .
fuente
Si se familiariza con las secuencias de comandos
iptables
, tendrá control total sobre todas las capacidades de firewall. No es tan amigable como Firestarter, pero se puede hacer en la consola connano
/vi
editores. Echa un vistazo a este tutorial dirigido a Ubuntu.fuente
Quicktables me ayudó a aprender las reglas de iptables. Simplemente ejecute el script y generará un script de iptables para usted ... luego puede abrirlo y ver los comandos asociados generados por las preguntas que le hizo. Es un gran recurso de aprendizaje.
Lamentablemente, ya no se mantiene.
http://qtables.radom.org/
fuente
Realmente me gusta usar firehol ( paquete ).
Para crear las reglas de configuración que desee, deberá editar el archivo / etc / default / firehol y cambiar START_FIREHOL = YES
Y usted querría hacer que su /etc/firehol/firehol.conf se vea así.
Una de las mejores cosas de firehol es el comando 'probar'. Puede ajustar su archivo de configuración y hacer un 'intento de firehol', si se conectó a través de ssh, y algo sobre lo que cambió mató su acceso a la red, entonces firehol revertirá los cambios. Para que los cambios entren en vigencia, debe decir commit.
fuente
Preferiría Shorewall . Es fácil de configurar pero flexible al mismo tiempo.
fuente
Tal vez debería echar un vistazo a http://iptables-tutorial.frozentux.net/iptables-tutorial.html . También puede encontrar más información en lartc.org
fuente
sudo apt-get install firestarter
Luego, busque en el menú Sistema-> Administración.
fuente