Cómo configurar el firewall de IPTables en Ubuntu 14.04
En el artículo anterior de esta serie, presentamos cómo funciona IPTables. En esta introducción, usaremos ejemplos para demostrar cómo configurar las reglas de IPTables en Ubuntu 14.04.
Comandos básicos de IPTables
Antes de presentarle reglas complejas de firewall, permítame brindarle información simple para que todos puedan tener una comprensión simple de los comandos más básicos de IPTables.
Lo primero que hay que tener en cuenta es que el comando IPTables debe ejecutarse con privilegios de root, lo que significa que debe iniciar sesión como root o tener permiso para usar su o sudo -i para obtener un shell de root. Todos usamos sudo en el siguiente contenido, que también es el método preferido en los sistemas Ubuntu.
El mejor punto de partida es ver primero todas las reglas de IPTables del sistema actual a través del parámetro "-L":
sudo iptables -L
Podemos ver Hay tres cadenas predeterminadas de uso común en Linux (ENTRADA, SALIDA y ADELANTE). También puede ver la política predeterminada de cada cadena (cada cadena acepta la política predeterminada). Aquí podemos ver que Ubuntu no tiene conjuntos de reglas predeterminados.
Si deseas ver las reglas predeterminadas de cada cadena a través del comando, puedes usar el parámetro "-S":
sudo iptables -S
Si ve Si ya tiene reglas en IPTables y desea cancelar estas reglas y luego cambiar la configuración, puede usar el parámetro "-F" para borrar el conjunto de reglas existente:
sudo iptables -F
Aunque el parámetro "-F" puede borrar y actualizar todos los conjuntos de reglas existentes en la cadena, no cambiará la política predeterminada de la cadena. Por lo tanto, si está cambiando la política de firewall remoto del VPS, debe restaurar la política predeterminada de las cadenas de ENTRADA y SALIDA para ACEPTAR antes de borrar todas las reglas con "-F" para evitar que la conexión SSH se bloquee después de borrar las reglas. Para hacer esto, ejecute el siguiente comando:
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
Después de configurar para permitir conexiones SSH (descritas a continuación), cambie las reglas predeterminadas de las cadenas de ENTRADA y SALIDA a DROP.
Crea tus propias reglas de IPTables
Ahora comenzaremos a crear reglas de firewall personalizadas para nuestro VPS Como mencionamos en el artículo anterior, ya que la cadena INPUT manejará todas las conexiones, los paquetes entrantes al. servidor, por lo que todas nuestras operaciones están relacionadas con la cadena INPUT. Ahora configuremos el servidor para permitir conexiones SSH.
El comando completo debería ser así:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLECIDO, RELACIONADO -j ACCEPT
La mayoría de amigos pueden pensar ¿Por qué parece tan complicado? Vamos a desglosarlo y explicarlo uno por uno.
-A INPUT: Indica que queremos anexar esta regla al final de una determinada cadena. Como queremos operar el enlace INPUT, lo escribimos así.
-m conntrack: además de sus propias funciones principales, iptables también tiene algunas extensiones y módulos prácticos. Este parámetro indica la capacidad de agregar el módulo conntrack.
(El módulo conntrack puede determinar la relación entre paquetes de datos en función de conexiones anteriores)
–ctstate: este parámetro lo proporciona el módulo conntrack, que puede determinar cómo utilizar el paquete de datos actual para que coincida con el obtenido anteriormente. bolsa de datos. El valor ESTABLECIDO permitirá automáticamente paquetes de conexiones existentes y el valor RELACIONADO permitirá paquetes relacionados de conexiones establecidas. (Esto coincide con las características de la sesión SSH)
-j ACEPTAR: este parámetro se utiliza para especificar el destino del paquete coincidente. Se utiliza aquí para aceptar y permitir el paso de paquetes de datos que cumplan con los estándares anteriores.
Después de configurar, echemos un vistazo:
sudo iptables -L
Ahora ya deberías conocer la sintaxis básica de IPTables. Sigamos agregando reglas. Lucha contra monstruos para convertirte en maestro lo antes posible.
Acepte otras conexiones necesarias
El puerto 22 del servicio SSH general de su VPS, el puerto 80 del servidor web y el puerto 3306 de Mysql deben estar abiertos, de lo contrario, ¿cómo podemos hacerlo? proporcionar servicios externos? Por lo tanto, también necesitamos abrir estos puertos en IPTables mediante los siguientes comandos:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
Para garantizar que nuestro VPS pueda funcionar normalmente, Necesitamos agregar reglas de Permitir. Normalmente, los servicios de una computadora envían paquetes de red para mantener la comunicación entre sí. Esta comunicación utiliza una pseudo tarjeta de red llamada loopback para dirigir el tráfico hacia sí mismo. Por lo tanto, también necesitamos agregar una regla de permiso para la tarjeta de red loopback.
sudo iptables -I INPUT 1 -i lo -j ACCEPT
-I INPUT 1: A diferencia de "-A", puede especificar dónde agregar la regla a la cadena.
Implementar reglas de caída
El contenido anterior en realidad se basa en una premisa, pero primero debemos explicar los dos modos comunes de firewalls. Una es definir claramente las reglas que pueden atravesar el firewall y descartar las que no coincidan. Otra opción es definir claramente reglas que nieguen el paso a través del firewall y permitan el resto. Nuestra premisa supone que se utiliza el primer método, que es relativamente sencillo de configurar, tiene menos reglas y es más seguro.
Previamente hemos definido algunas reglas de permiso para el enlace INPUT, pero la cadena INPUT predeterminada permite todos los paquetes, por lo que ahora necesitamos cambiar la regla predeterminada de la cadena INPUT a "Descartar". Complete el cambio mediante el siguiente comando:
sudo iptables -P INPUT DROP
Ver y guardar la configuración
La configuración de IPTables entra en vigor inmediatamente, al igual que Se introdujo antes. Después de la configuración, podemos usar directamente el parámetro "-L" para verlo. Aquí agregamos otro parámetro "-line-numbers", que se usa principalmente para mostrar el número de líneas, lo cual es muy conveniente para la visualización. cuando hay muchas reglas.
sudo iptables -L --line-numbers
Aunque el comando IPTables entrará en vigor inmediatamente después de la ejecución, el proceso de entrada en vigor es en realidad temporal y se perderá después de reiniciar el sistema. . Por lo tanto, también debemos agregar estas configuraciones al archivo de configuración para garantizar que el sistema cargue automáticamente nuestras reglas de firewall de IPTables después del próximo reinicio.
sudo apt-get update
sudo apt-get install iptables-persistent
Después de descargar y ejecutar este script de comando, se nos preguntará si deseamos guardar el Configuración de IPTables. Si está seguro, seleccione "Sí". Después de guardar, la configuración no se perderá la próxima vez que reinicie el sistema.
En el artículo anterior de esta serie, presentamos cómo funciona IPTables. En esta introducción, usaremos ejemplos para demostrar cómo configurar las reglas de IPTables en Ubuntu 14.04.
Comandos básicos de IPTables
Antes de presentarle reglas complejas de firewall, permítame brindarle información simple para que todos puedan tener una comprensión simple de los comandos más básicos de IPTables.
Lo primero que hay que tener en cuenta es que el comando IPTables debe ejecutarse con privilegios de root, lo que significa que debe iniciar sesión como root o tener permiso para usar su o sudo -i para obtener un shell de root. Todos usamos sudo en el siguiente contenido, que también es el método preferido en los sistemas Ubuntu.
El mejor punto de partida es ver primero todas las reglas de IPTables del sistema actual a través del parámetro "-L":
sudo iptables -L
Podemos ver Hay tres cadenas predeterminadas de uso común en Linux (ENTRADA, SALIDA y ADELANTE). También puede ver la política predeterminada de cada cadena (cada cadena acepta la política predeterminada). Aquí podemos ver que Ubuntu no tiene conjuntos de reglas predeterminados.
Si deseas ver las reglas predeterminadas de cada cadena a través del comando, puedes usar el parámetro "-S":
sudo iptables -S
Si ve Si ya tiene reglas en IPTables y desea cancelar estas reglas y luego cambiar la configuración, puede usar el parámetro "-F" para borrar el conjunto de reglas existente:
sudo iptables -F
Aunque el parámetro "-F" puede borrar y actualizar todos los conjuntos de reglas existentes en la cadena, no cambiará la política predeterminada de la cadena. Por lo tanto, si está cambiando la política de firewall remoto del VPS, debe restaurar la política predeterminada de las cadenas de ENTRADA y SALIDA para ACEPTAR antes de borrar todas las reglas con "-F" para evitar que la conexión SSH se bloquee después de borrar las reglas. Para hacer esto, ejecute el siguiente comando:
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
Después de configurar para permitir conexiones SSH (descritas a continuación), cambie las reglas predeterminadas de las cadenas de ENTRADA y SALIDA a DROP.
Crea tus propias reglas de IPTables
Ahora comenzaremos a crear reglas de firewall personalizadas para nuestro VPS Como mencionamos en el artículo anterior, ya que la cadena INPUT manejará todas las conexiones, los paquetes entrantes al. servidor, por lo que todas nuestras operaciones están relacionadas con la cadena INPUT. Ahora configuremos el servidor para permitir conexiones SSH.
El comando completo debería ser así:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLECIDO, RELACIONADO -j ACCEPT
La mayoría de amigos pueden pensar ¿Por qué parece tan complicado? Vamos a desglosarlo y explicarlo uno por uno.
-A INPUT: Indica que queremos anexar esta regla al final de una determinada cadena. Como queremos operar el enlace INPUT, lo escribimos así.
-m conntrack: además de sus propias funciones principales, iptables también tiene algunas extensiones y módulos prácticos. Este parámetro indica la capacidad de agregar el módulo conntrack. (El módulo conntrack puede determinar la relación entre paquetes de datos en función de conexiones anteriores)
–ctstate: este parámetro lo proporciona el módulo conntrack, que puede determinar cómo utilizar el paquete de datos actual para que coincida con el obtenido anteriormente. bolsa de datos. El valor ESTABLECIDO permitirá automáticamente paquetes de conexiones existentes y el valor RELACIONADO permitirá paquetes relacionados de conexiones establecidas. (Esto coincide con las características de la sesión SSH)
-j ACEPTAR: este parámetro se utiliza para especificar el destino del paquete coincidente. Se utiliza aquí para aceptar y permitir el paso de paquetes de datos que cumplan con los estándares anteriores.
Después de configurar, echemos un vistazo:
sudo iptables -L
Ahora ya deberías conocer la sintaxis básica de IPTables. Sigamos agregando reglas. Lucha contra monstruos para convertirte en maestro lo antes posible.
Acepte otras conexiones necesarias
El puerto 22 del servicio SSH general de su VPS, el puerto 80 del servidor web y el puerto 3306 de Mysql deben estar abiertos, de lo contrario, ¿cómo podemos hacerlo? proporcionar servicios externos? Por lo tanto, también necesitamos abrir estos puertos en IPTables mediante los siguientes comandos:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTlt; intercambios mutuos de opiniones Feng Taifujunbr /gt; sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
Para garantizar que nuestro VPS pueda operar normalmente Para ejecutar, también necesita agregar una regla de permiso. Normalmente, los servicios de una computadora envían paquetes de red para mantener la comunicación entre sí. Esta comunicación utiliza una pseudo tarjeta de red llamada loopback para dirigir el tráfico hacia sí mismo. Por lo tanto, también necesitamos agregar una regla de permiso para la tarjeta de red loopback.
sudo iptables -I INPUT 1 -i lo -j ACCEPT
-I INPUT 1: A diferencia de "-A", puede especificar dónde agregar la regla a la cadena.
Implementar reglas de caída
El contenido anterior en realidad se basa en una premisa, pero primero debemos explicar los dos modos comunes de firewalls. Una es definir claramente las reglas que pueden atravesar el firewall y descartar las que no coincidan. Otra opción es definir claramente reglas que nieguen el paso a través del firewall y permitan el resto. Nuestra premisa supone que se utiliza el primer método, que es relativamente sencillo de configurar, tiene menos reglas y es más seguro.
Previamente hemos definido algunas reglas de permiso para el enlace INPUT, pero la cadena INPUT predeterminada permite todos los paquetes, por lo que ahora necesitamos cambiar la regla predeterminada de la cadena INPUT a "Descartar". Complete el cambio mediante el siguiente comando:
sudo iptables -P INPUT DROP
Ver y guardar la configuración
La configuración de IPTables entra en vigor inmediatamente, al igual que Se introdujo antes. Después de la configuración, podemos usar directamente el parámetro "-L" para verlo. Aquí agregamos otro parámetro "-line-numbers", que se usa principalmente para mostrar el número de líneas, lo cual es muy conveniente para la visualización. cuando hay muchas reglas.
sudo iptables -L --line-numbers
Aunque el comando IPTables entrará en vigor inmediatamente después de la ejecución, el proceso de entrada en vigor es en realidad temporal y se perderá después de reiniciar el sistema. . Por lo tanto, también debemos agregar estas configuraciones al archivo de configuración para garantizar que el sistema cargue automáticamente nuestras reglas de firewall de IPTables después del próximo reinicio.
sudo apt-get update
sudo apt-get install iptables-persistent
Después de descargar y ejecutar este script de comando, se nos preguntará si deseamos guardar el Configuración de IPTables. Si está seguro, seleccione "Sí". Después de guardar, la configuración no se perderá la próxima vez que reinicie el sistema.