¿Cómo planificar una ruta de aprendizaje sobre seguridad de redes Linux?
El principio del firewall
La función del firewall
Función principal: filtrar paquetes de datos entre dos redes
INERNET--- - --fire wall------servidor------LAN
Kernel de Linux Netfilter
El espacio del kernel de Linux y el espacio de la aplicación son diferentes
p>
El espacio del kernel está protegido y cualquier paquete de datos que entre y salga del servidor debe ser procesado por el kernel
Todos los paquetes de datos enviados a la computadora local deben pasar por INPUT
Cualquier esclavo Los paquetes de datos generados por esta máquina y enviados a otros deben pasar por SALIDA
Un dato reenviado desde el enrutador local, el objetivo no es usted mismo, pero enviado a otros pasará por ADELANTE p>
ENTRADA/SALIDA protege la máquina local ADELANTE protege a los usuarios de LAN
Principio de filtrado de paquetes
Un paquete de datos necesita pasar por el enrutamiento local. Para determinar cómo hacerlo, ENRUTAMIENTO. es muy importante. Determina cómo proceder
Si un paquete es igual a la dirección de mi tarjeta de red local, se puede recibir localmente y se ingresa INPUT, de lo contrario, FORWARD
Si es un paquete. se genera localmente y se envía después de la SALIDA
El filtrado de paquetes consiste en establecer condiciones en estos tres lugares, configurar obstáculos, bloquear o pasar paquetes de datos y establecer el método de procesamiento de paquetes
Método de procesamiento de paquetes
iptable -A INPUT -p icmp -j DROP
Los métodos de procesamiento de paquetes incluyen destino, descartar (DROP), aceptar (ACEPTAR) (rebotar), registro de RECHAZO ( LOG), etc.
comando iptables
iptables -A INPUT -p icmp -j DROP Agregar una regla de filtrado
ping 192.168.0.101
iptables - L -nVer reglas de filtro
iptables -F Borrar reglas de filtro
iptables --help more
iptables -L -n –line -number
p>Agregue una regla para denegar el acceso de todos los paquetes al puerto 21
iptables -A INPUT -p tcp -d 192.168.0.101 --dport 21 -j DROP
Al modificar iptables -F, debe cerrar todas las puertas del firewall y abrir los puertos uno por uno
iptables -L -n –line-numbers
Supongamos que solo abrimos un servidor
Si este servidor también es un servidor DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT recibe solicitudes de resolución DNS de otras máquinas
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT Este servidor DNS envía una respuesta de resolución DNS
iptables -D INPUT 5 elimina la quinta regla en INPUT
Si este servidor también necesita conectarse al SSH de otros servidores
Hasta ahora, los servicios que acceden a esta máquina han sido ignorados
En esta máquina, hay muchos servicios. guard está en 127.0.01, por lo que necesitamos abrir el dispositivo de loopback local
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
^IN^ Función de sustitución del comando OUT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j
ACEPTAR
servicio iptables guardar
Ahora prestemos atención al puerto 22
Entrada de cadena (política DROP)
1 ACEPTAR tcp -- 0.0 .0.0/0 192.168.0.101 tcp dpt:22
SALIDA de cadena (política DROP)
1 ACEPTAR tcp -- 192.168.0.101 0.0.0.0/0 tcp spt:22 < / p>
Todos los paquetes entrantes deben pasar por el puerto 22
Todos los paquetes salientes deben pasar por el puerto 22. Sin embargo, si debido a vulnerabilidades o virus del sistema, los paquetes se envían activamente desde el puerto 22 en lugar de Si se responde al paquete solicitándolo, surgirá un gran problema en este momento
Por lo tanto, debemos agregar una regla para ver si otros solicitan este paquete y responderé a otros p>
iptables -A SALIDA -p tcp --sport 22 -m state --state ESTABLECIDO -j ACEPTAR
iptables -D SALIDA 1 eliminar la primera regla
iptables -n -L --line-numbers
SALIDA de cadena (política DROP)
6 ACEPTAR tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22 estado ESTABLECIDO
Lo mismo ocurre con el puerto 80
iptables -A SALIDA -p tcp --sport 80 -m state --state ESTABLECIDO -j ACCEPT
servicio iptables save
También es problemático acceder al SSH de otras personas como cliente
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT El paquete enviado desde el cliente definitivamente ser aceptado incondicionalmente
iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLECIDO -j ACCEPT acepta servicios de otros
Si hay un virus en el servidor Respuesta SSH, se envía activamente a la máquina invitada, ocurre un problema. En este momento, debo agregar la respuesta del paquete de servicio SSH que solicité
LOG target
iptables -A. ENTRADA -p tcp –dport 22 -j LOG –log-level 5 –log-prefix “IPTABLES”
Editar /etc/syslog.conf
Nota: El nivel de registro 5 debe ser consistente con el nivel en syslog.conf. El nivel se puede obtener a través de la ayuda del manual de syslog.
iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix "iptable:"
vi /etc/rsyslog.conf
kern.=notice /var/log/firewall.log
¿Por qué aparece el aviso aquí?
man syslog para ver el nivel del mensaje
#define KERN_EMERG "<0>" /* el sistema no se puede utilizar */
#define KERN_ALERT "<1> " /* se debe tomar acción inmediatamente */
#define KERN_CRIT "<2>" /* condiciones críticas */
#define KERN_ERR "<3>" /* condiciones de error * /
#define KERN_WARNING "<4>" /* condiciones de advertencia */
#define KERN_NOTICE "<5>" /* condición normal pero significativa */
#define KERN_INFO "<6>" /* informativo */
#define KERN_DEBUG "<7>" /* mensajes de nivel de depuración */
En el firewall define El nivel es 5, por lo que el kernel correspondiente es aviso
iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLECIDO -j ACCEPT
iptables -n - L –número-línea
iptables -D ENTRADA 8
iptables -I ENTRADA 6 -p tcp --dport 22 -j LOG --log-level 5 --log- prefijo "iptable:"
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -D INPUT 1 mueve las reglas con las mismas reglas a la parte posterior de la log
servicio iptables save
tail /var/log/firewall.log -f
Traducción de direcciones NAT
filter.org/
iptables -A FORWARD -s 192.168.0.0/24 -j ACEPTAR Permitir acceso local a Internet
iptables -A FORWARD -d 192.168.0.0/24 -j ACEPTAR
Light Si esto no funciona, necesita abrir el archivo de reenvío en el kernel
más /proc/sys/net/ipv4/ip_forward
echo 1 > / proc/sys/net/ipv4/ip_forward
Esto solo puede tener efecto temporalmente Si se reinicia el servidor, el valor volverá a ser 0
vi /etc/sysctl.conf <. /p>
# Controla el reenvío de paquetes IP
net.ipv4.ip_forward = 1
servicio iptables save
Aún no podemos usarlo en este momento, porque la LAN se reenvía a Internet a través del máquina local y la red La dirección no conoce la IP de la LAN local
Así que tenemos que pasar NAT
iptables -t nat -L -n
Tabla NAT de Netfilter
Espacio del kernel---->PREROUTING---->ROUTING---->FORWARD---->POSTROUTING
SNAT ocurre en POSTROUTING
PREROUTING- --->FORWARD---->POSTROUTING
destino: 11.22.33.1:22 destino: 11.22.33.1:22
fuente: 10.0 .0.1:
proto: tcp proto: tcp
Dirección local:
eth0: 10.0.0.254
eth1: 11.22.33.44
Aplicación SNAT
10.0.0.241 eth0:10.0.0.254 /eth1:192.168.0.254 192.168.0.1
iptables -t nat - A POSTROUTING -s 10.0.0.0/24 -j SNAT –to-source 192.168.0.254
IP:10.0.0.241 getway: 10.0.0.254 máscara de subred:255.255.255.0
ping Si se puede hacer ping a 192.168.0.1, el acceso es exitoso
En uso real
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE admite traducción dinámica
Encuentra automáticamente la IP de origen al regresar
iptables -t nat -F
DNAT ocurre en PREROUTING
PREROUTING---- >FORWARD---->POSTROUTING
destino: 11.22.33.44:22 destino: 10.0.0.1:22
fuente: 11.22.33.1:< puerto> fuente: 11.22.33.1 :
proto: tcp proto: tcp
Dirección local:
eth0: 10.0.0.254
eth1: 11.22 .33.44
Aplicación DNAT
10.0.0.241 eth0:10.0.0.254 /eth1:192.168.0.254 192.168.0.1
iptables - t nat -A PREROUTING - d 10.0.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1
192.168.0.1 Este es un servidor real, no puede ser visto por visitantes 10.0.0.241, los visitantes ven solo un firewall
Este artículo proviene del blog de CSDN. Indique la fuente al reimprimir:
/beauty9235/archive/2008/12/01/3423069.aspx