resumen del firewall de iptables

Uno, descripción general de iptables

Firewall del sistema Linux: sistema de filtrado de paquetes de información IP, que en realidad consta de dos componentes netfilter e iptables. Trabaja principalmente en la capa de red, apuntando a paquetes de datos IP. Se refleja en el procesamiento de información como la dirección IP y el puerto del paquete.

Dos, relación netfilter / iptables

  • netfilter: Un sistema de funciones de firewall que pertenece al "Kernel Space" (Kernel Space, también conocido como Kernel Space).
    Es parte del kernel y consta de algunas tablas de filtrado de paquetes, que contienen un conjunto de reglas que utiliza el kernel para controlar el procesamiento del filtrado de paquetes.

  • iptables: Un sistema de administración de firewall que pertenece al "Espacio de usuario" (Espacio de usuario, también conocido como Espacio de usuario).
    Es un programa de comando que se utiliza para administrar el firewall de Linux. Facilita la inserción, modificación y eliminación de las reglas en la tabla de filtrado de paquetes. Generalmente se encuentra en el directorio / sbin / iptables.

  • Netfilter / iptables se llama iptables para abreviar más adelante, iptables es un firewall basado en el kernel con cuatro tablas de reglas integradas: raw, mangle, nat y filter. Una vez configuradas todas las reglas de la tabla, entrarán en vigor inmediatamente sin reiniciar el servicio.

Tres, cuatro relojes y cinco cadenas

  • El papel de la tabla de reglas: para acomodar varias cadenas de reglas
  • El papel de la cadena de reglas: para adaptarse a varias reglas de firewall
  • Resumen: hay cadenas en la tabla y reglas en la cadena

(1) Cuatro mesas

  • tabla sin procesar: determina si se debe realizar un seguimiento del estado del paquete. Contiene dos cadenas de reglas, OUTPUT y PREROUTING.
  • Mangle table: modifique el contenido del paquete de datos, que se utiliza para modelar el tráfico, y establezca una marca para el paquete de datos. Contiene cinco cadenas de reglas: INPUT, OUTPUT, FORWARD, PREROUTING y POSTROUTING.
  • tabla nat: responsable de la traducción de direcciones de red, utilizada para modificar las direcciones IP de origen y destino o puertos en paquetes de datos. Contiene tres cadenas de reglas: SALIDA, PREROUTING y POSTROUTING.
  • Tabla de filtro: responsable de filtrar los paquetes de datos y determinar si se deben pasar los paquetes de datos (filtrado). Contiene tres cadenas de reglas: INPUT, FORWARD, OUTPUT.

Nota: Entre las cuatro tablas de reglas de iptables, la tabla mangle y la tabla sin formato tienen relativamente pocas aplicaciones.

(2) Cinco cadenas

  • ENTRADA: Procese los paquetes de datos entrantes y haga coincidir la IP de destino con los paquetes de datos de esta máquina.
  • SALIDA: Procese paquetes de datos salientes, generalmente no configure en esta cadena.
  • FORWARD: procesa y envía paquetes de datos, haciendo coincidir los paquetes de datos que fluyen a través de la máquina.
  • Cadena PREROUTING: procesa los paquetes de datos antes del enrutamiento, se usa para modificar la dirección de destino y se usa para DNAT. Es equivalente a mapear la IP y el puerto del servidor de red interno a la IP externa y el puerto del enrutador.
  • Cadena POSTROUTING: Después del enrutamiento, el paquete de datos se procesa, se usa para modificar la dirección de origen, se usa para SNAT, que es equivalente a la red interna a través de la función de conversión NAT del enrutador para realizar la red interna del host para acceder a Internet a través de una dirección IP pública.

Cuando los paquetes llegan al firewall, el orden de prioridad entre las tablas de reglas: raw> mangle> nat> filter
Inserte la descripción de la imagen aquí

(3) Orden de coincidencia entre cadenas de reglas

1. Cortafuegos tipo host:

  • Datos entrantes (paquetes de datos del mundo exterior y la dirección de destino es la máquina local del firewall): PREROUTING -> INPUT -> aplicación nativa
  • Datos salientes (paquetes de datos enviados desde el firewall a la dirección externa): la aplicación de la máquina -> SALIDA -> POSTROUTING

2. Cortafuegos de tipo de red:

  • Reenvío de datos (paquetes que deben reenviarse a través de un firewall): PREROUTING -> FORWARD -> POSTROUTING

3.El orden de coincidencia en la cadena de reglas:

  • Marque en orden de arriba a abajo y deténgase cuando se encuentre una regla coincidente (excepto la política LOG, que significa registrar registros relacionados). Si no se encuentra una regla coincidente en la cadena, se procesará de acuerdo con la política predeterminada de la cadena (no Bajo la condición modificada, se permite la política predeterminada)
    Inserte la descripción de la imagen aquí

Cuarto, la instalación de iptables

Centos 7 usa firewall firewalld por defecto, iptables no está instalado, si desea usar el firewall iptables. Firewalld debe estar apagado antes de instalar iptables.

systemctl stop firewalld.service
systemctl disable firewalld.service
yum -y install iptables  iptables-services
systemctl start iptables.service

(1) El método de configuración del firewall de iptables:

1. Utilice la línea de comandos de iptables.
2. Utilice system-config-firewall

(Dos), método de configuración de línea de comandos de iptables:

Formato de comando:

iptables  [-t 表名]  管理选项  [链名]   [匹配条件]   [-j 控制类型]

Precauciones:

  • Cuando no se especifica el nombre de la tabla, se refiere a la tabla de filtro de forma predeterminada
  • Cuando no se especifica el nombre de la cadena, se refiere a todas las cadenas de la tabla de forma predeterminada
  • A menos que se establezca la política predeterminada de la cadena, se deben especificar condiciones coincidentes
  • Las opciones, los nombres de las cadenas y los tipos de control usan letras mayúsculas y el resto son minúsculas

(3) Tipos de control de uso común:

  • ACEPTAR: Permita que pasen los paquetes de datos.
  • DROP: Elimina todos los paquetes de datos directamente sin dar ninguna información de respuesta.
  • RECHAZAR: Rechazar el paquete de datos para pasar, y se enviará un mensaje de respuesta al remitente de datos.
  • SNAT: modifica la dirección de origen del paquete de datos.
  • DNAT: modifica la dirección de destino del paquete de datos.
  • MASQUERADE: Disfrazado como una dirección IP pública no fija.
  • REGISTRO: registre la información del registro en el archivo / var / log / messages y luego pase el paquete de datos a la siguiente regla. LOG es solo una acción auxiliar y en realidad no procesa paquetes de datos.

(4) Opciones de gestión comunes

-A:在指定链的末尾追加(--append)一条新的规则
-I:在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R:修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容
-P:设置指定链的默认策略(--policy)
-D:删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容
-F:清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L:列出(-1ist)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n:使用数字形式(--numeric)显示输出结果,如显示IP地址而不是主机名
-v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers:查看规则时,显示规则的序号

(5) Agregar nuevas reglas

iptables -t filter -A INPUT -p icmp -j REJECT   #拒绝Ping通,其中-t指定表名,-p指定协议,-j指定控制类型
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT  #不加-t默认指定filter,2为指定序号为2,--dport指定目的端口号

(6) Ver la lista de reglas

iptables [-t 表名]-n -L [链名] [--line-numbers]
或
iptables  -[vn]L   #注意:不可以合写为-Ln
iptables  -n -L --line-numbers

(7) Establecer la estrategia predeterminada

iptables [-t 表名] -P <链名> <控制类型>

iptables -A INPUT -p TCP --dport 22 -j ACCEPT #允许所有数据包通过
iptables -P INPUT DROP      #拒绝所有数据包,注意设置该策略之前一定要先设置通过策略,否则将与服务器断开连接 
iptables -P FORWARD DROP
#一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单

(8) Eliminar reglas

iptables -D INPUT 2                        #按规则序号删除
iptables -t filter -D INPUT -p icmp -j REJECT     #按规则名删除

Nota:
1. Si hay varias reglas idénticas en la lista de reglas, solo se eliminará la que tenga el número de secuencia más pequeño según la coincidencia de contenido.
2. Al eliminar según la coincidencia de números, asegúrese de que el número de regla sea menor o igual que el número de reglas existentes; de lo contrario, se informará un error.
3. Según el contenido Al hacer coincidir y eliminar el número, asegúrese de que exista la regla; de lo contrario, se informará un error

(9) Reglas claras

iptables [-t 表名] -F [链名]

iptables -F INPUT
iptables -F

Nota:
1. -F solo borra las reglas en la cadena, y no afecta las reglas predeterminadas establecidas por -P. Las reglas predeterminadas deben modificarse manualmente.
2. Después de que DROP esté configurado en -P, tenga cuidado al usar -F!
Evitar permitir control remoto Una vez que se borran las reglas relacionadas de la conexión, el host no se puede conectar de forma remota. Si las reglas no se guardan, el host se puede reiniciar para resolver el problema.
3. Si el nombre de la tabla y el nombre de la cadena no están escritos, todas las reglas de todas las cadenas en la tabla de filtros se borran de forma predeterminada

(10) Emparejamiento de reglas

1. La coincidencia universal se puede utilizar directamente y no depende de otras condiciones o extensiones, incluidas condiciones como protocolos de red, direcciones IP e interfaces de red.

  • Coincidencia de protocolo: -p nombre de protocolo
  • Coincidencia de direcciones: -s dirección de origen, -d dirección de destino (puede ser IP, segmento de red, nombre de dominio, vacío (cualquier dirección))
  • Coincidencia de interfaz: -i tarjeta de red entrante, -o tarjeta de red saliente
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.80.11 -j DROE
iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROE

2. Coincidencia implícita

Requiere una coincidencia de protocolo específico como requisito previo, incluidas condiciones como el puerto, la etiqueta TCP y el tipo de ICMP.

Coincidencia de puertos: –puerto de origen deportivo, –puerto de destino de puerto

#可以是个别端口、端口范围
--sport 1000       匹配源端口是1000的数据包
--sport 1000:3000  匹配源端口是1000-3000的数据包
--sport:3000       匹配源端口是3000及以下的数据包
--sport 1000:      匹配源端口是1000及以上的数据包

Nota: --sport y --dport deben usarse con -p <tipo de protocolo>

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP

Coincidencia de bandera TCP: --tcp-flags bandera TCP

iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN, RST, ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包

Coincidencia de tipo ICMP: - tipo ICMP tipo ICMP

#可以是字符串、数字代码、  目标不可达
"Echo-Request" (代码为8)表示 请求
"Echo-Reply" (代码为0)表示 回显
"Destination-Unreachable" (代码为3)表示 目标不可达
关于其它可用的ICMP协议类型,可以执行"iptables -p icmp -h"命令,查看帮助信息
iptables -A INPUT -p icmp --icmp-type 8 -j DROP    #禁止其它主机ping本机
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT  #允许本机ping其它主机
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT #当本机ping不通其它主机时提示目标不可达
#此时其它主机需要配置关于 icmp 协议的公职类型为REJECT
iptables -A INPUT -p icmp -j REJECT

3. Coincidencia explícita

Es necesario indicar claramente el tipo en forma de "-m módulo de extensión", incluidas las condiciones como puerto múltiple, dirección MAC, rango de IP y estado del paquete. Coincidencia multipuerto:

-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 80, 22, 21, 20, 53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT

Coincidencia de rango de IP :-m iprange --src-range IP范围

iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包

Coincidencia de direcciones MAC :-m mac--mac-source MAC地址

iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
#禁止来自某MAC地址的数据包通过本机转发

Coincidencia de estado :-m state --state 连接状态

Estado de conexión común:
NUEVO: irrelevante para cualquier conexión, la conexión aún no se ha iniciado
ESTABLECIDO: respondiendo a la solicitud o se ha establecido la conexión , estado de conexión
RELACIONADO: relacionado con la conexión existente (como conexión de datos en modo FTP activo y pasivo), Estado derivado, generalmente utilizado junto con ESTABLISHED
INVALID: no se puede identificar a qué conexión pertenece o no tiene ningún estado

iptables -A FORWARD -m state --state NEW-p tcp ! --syn -i DROP
#禁止转发与正常TCP连接无关的非--syn请求数据包(如伪造的网络攻击数据包)

Comandos necesarios para configurar un firewall basado en host:

iptables -I INPUT -p tcp -m multiport --dport 80, 22, 21, 20, 53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -P INPUT DROP

Cinco, principio y aplicación SNAT

Entorno de aplicación SNAT: los hosts de LAN comparten una única dirección IP pública para acceder a Internet (el 1P privado no se puede enrutar normalmente en Internet) Principio SNAT: modifica la dirección de origen del paquete de datos. Requisitos previos para la traducción SNAT:

1. Cada host en la LAN ha configurado correctamente la dirección IP, la máscara de subred y la dirección de puerta de enlace predeterminada.
2. La puerta de enlace de Linux permite el enrutamiento y reenvío de IP

Abierto temporalmente:

echo 1> /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1

Abierto permanentemente:

vim /etc/sysctl.conf
net.ipv4.ip_forward =1      #将此行写入配置文件

sysctl -p                   #读取修改后的配置

Traducción SNAT 1: dirección IP pública fija:

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
                                    内网IP       出站 外网网卡                      外网IP或地址池

Traducción SNAT 2: Dirección P de protección de red pública no fija (dirección IP dinámica que comparte):

iptables-t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE

Sexto, principio DNAT: modificar la dirección de destino del paquete de datos

Requisitos previos para la conversión de DNAT:
1. El servidor en la red de área local puede acceder a Internet
2. La dirección de red externa de la puerta de enlace tiene el registro de resolución DNS correcto
3. Linux está apagado y el reenvío de enrutamiento IP está encendido

vim /etc/sysctl.conf
net.ipv4.ip_forward =1

sysctl –p

Conversión DNAT 1: publicar servicios web de intranet

#把从ens33进来的要访问web服务的数据包目的地址转换为192.168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11
或
iptables -t nat -A PREROUTING -i ens33-d 12.0.0.1 -p tcp --dport 80 -j DNAT--to-destination 192.168.80.11
	                         入站 外网网卡  外网IP                                              内网服务器IP

iptables -t nat -A PREROUTING -i ens33 -p tcp--dport 80 -j DNAT --to 192.168.80.11-192.168.80.20	                         

Conversión DNAT 2: modifica el puerto de destino al publicar

#发布局域网内部的OpenssH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.11:22

#在外网环境中使用SSH测试
ssh -p 250 [email protected]

#在外网环境中使用SSH测试
ssh -p 250 [email protected]
yum -y install net-tools        #若没有ifconfig命令可提前使用yum进行安装
ifconfig ens33

注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

Pequeña expansión del conocimiento:
los cortafuegos basados ​​en host utilizan principalmente cadenas de ENTRADA y SALIDA. Cuando se establecen reglas, generalmente deben especificarse en detalle.
Los cortafuegos basados ​​en red utilizan principalmente cadenas FORWARD. Al establecer reglas, rara vez especifican puertos, pero generalmente especifican direcciones IP o Internet. Sección

7. Copia de seguridad y restauración de reglas de firewall:

Exportar (copia de seguridad) reglas para todas las tablas

iptables-save > /opt/ipt.txt

Importar (restaurar) reglas

iptables-restore < /opt/ipt.txt

Guarde el archivo de reglas de iptables en / etc / sysconfig / iptables, las reglas se restaurarán automáticamente cuando se inicie el servicio de iptables

iptables-save > /etc/sysconfig/iptables
systemctl stop iptables   #停止iptables服务会清空掉所有表的规则
systemctl start iptables  #启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

Supongo que te gusta

Origin blog.csdn.net/Gengchenchen/article/details/111862250
Recomendado
Clasificación