Frambuesa Pi Firewall y sistema de detección de intrusiones (11 / 14 paso)

Paso 11: Configuración de Firewall

a continuación, encontrará un script de cortafuegos muy restrictivo. Puede que necesite modificarlo para satisfacer sus necesidades como bloqueará páginas web no en puertos estándares (80/443), softwares y no utilicen los puertos HTTP/HTTPS/FTP (P2P, Skype, Google Talk, etc...).

Si usted no desea que ese nivel de seguridad, también existe un script de firewall más sencillo que básicamente es "ajustar y olvidar".

Puede elegir entre firewall.advanced o firewall.simple y luego personalizar. Los créditos van a Guillaume Kaddouch

A - conjunto de reglas avanzado
Este script básicamente lo siguiente:
-Indicadores TCP válidos de entrada/salida bloques (incluso de flujos establecidos)
-Optimiza las consultas DNS (campo TOS del IP)
-Identifica el tráfico por tipo de flujo y luego emparejarlo contra un conjunto de reglas
-Añade aleatoriedad al proceso NAT
-Sólo permiten pocos puertos salientes estándar (http, https, ftp)
-Registros con precisión lo que se deja caer y evitar la inundación de registro
-Gotas entrantes paquetes con TTL baja (puede significar un ataque de caducidad ttl o un traceroute)
-Detectar y bloquear las conexiones salientes de malware

$ sudo touch /etc/firewall.advanced
$ sudo touch /etc/firewall.flows
u de $ sudo chmod + x /etc/firewall.*

La identificación de flujos es una lista de reglas dirigiendo el tráfico en la cadena de medida correspondiente (por ejemplo FORWARD_OUT, FORWARD_IN, LAN_IN, etc...). Esta lista de reglas, una vez depurado y validado, no se debe modificar luego. También, como utilizar algo de espacio en la secuencia de comandos y puede ser aburridos leer, hace las reglas de filtrado más difícil de leer si están en el mismo script. Es por ello que les propongo en un archivo separado, que acabo de llamar desde el script principal:
$ sudo vi /etc/firewall.flows
#! / bin/bash

# "Fecha de agosto de 2012
# "Autor: Guillaume Kaddouch
# "Versión: flujos 1,0

#######################
# FLUJO IDENTIFICACIÓN #
##############################################################################################
# NAT_OUT
iptables -t nat - A POSTROUTING -o $LAN -p tcp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --dst-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j NAT_OUT

iptables -t nat - A POSTROUTING -o $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --dst-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j NAT_OUT

iptables -t nat - A POSTROUTING -o $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --dst-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j NAT_OUT

# FORWARD_OUT
iptables - A hacia adelante -i $LAN -p tcp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --src-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j FORWARD_OUT

iptables - A hacia adelante -i $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --src-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j FORWARD_OUT

iptables - A hacia adelante -i $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE! --dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --src-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j FORWARD_OUT

# FORWARD_IN
iptables - A hacia adelante -i $LAN -p tcp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --src-tipo LOCAL\
Estado -m--estado establecida, relacionada con -j FORWARD_IN

iptables - A hacia adelante -i $LAN -p udp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --src-tipo LOCAL\
Estado -m--estado establecida, relacionada con -j FORWARD_IN

iptables - A hacia adelante -i $LAN -p icmp--ipv4 -m iprange \
! --src-range $DHCP_RANGE--dst-range $DHCP_RANGE -m pkttype - pkt-tipo unicast -m addrtype! --src-tipo LOCAL\
Estado -m--estado establecida, relacionada con -j FORWARD_IN

# LAN_IN
iptables - A INPUT -i $LAN -p tcp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j LAN_IN

iptables - A INPUT -i $LAN -p udp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j LAN_IN

iptables - A INPUT -i $LAN -p icmp--ipv4 -m iprange \
--src-range $DHCP_RANGE -d $RSS -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo LOCAL\
Estado de -m - Estado nuevo, establecida, relacionada con -j LAN_IN

# LAN_BROADCAST
iptables - A INPUT -i $LAN -p tcp--ipv4 \
! -d $RSS -m pkttype - pkt-tipo broadcast -m addrtype--dst-tipo difusión

Estado -m! -Estado no válido -j LAN_BROADCAST

iptables - A INPUT -i $LAN -p udp--ipv4 \
! -d $RSS -m pkttype - pkt-tipo broadcast -m addrtype--dst-tipo difusión
Estado -m! -Estado no válido -j LAN_BROADCAST

iptables - A INPUT -i $LAN -p icmp--ipv4 \
! -d $RSS -m pkttype - pkt-tipo broadcast -m addrtype--dst-tipo difusión
Estado -m! -Estado no válido -j LAN_BROADCAST

# INTERNET_GATEWAY
iptables - A INPUT -i $LAN -p tcp--ipv4 \
! -s $LAN_SUBNET -d $RSS -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo LOCAL\
Estado -m--estado establecida, relacionada con -j INTERNET_GATEWAY

iptables - A INPUT -i $LAN -p udp--ipv4! \
-s $LAN_SUBNET -d $RSS -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo LOCAL\
Estado -m--estado establecida, relacionada con -j INTERNET_GATEWAY

iptables - A INPUT -i $LAN -p icmp--ipv4 \
! -s $LAN_SUBNET -d $RSS -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo LOCAL\
Estado -m--estado establecida, relacionada con -j INTERNET_GATEWAY

# GATEWAY_LAN
iptables - salida -o $LAN -p tcp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo UNICAST\
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_LAN

-Una salida de la iptables -o $LAN -p udp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo UNICAST\
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_LAN

-Una salida de la iptables -o $LAN -p icmp--ipv4 \
-s $RSS -d $LAN_SUBNET -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo UNICAST\
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_LAN

# GATEWAY_BROADCAST
iptables - salida -o $LAN -p tcp--ipv4 \
-s $RSS -m pkttype - pkt-tipo broadcast -m addrtype--dst-tipo difusión
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_BROADCAST

-Una salida de la iptables -o $LAN -p udp--ipv4 \
-s $RSS -m pkttype - pkt-tipo broadcast -m addrtype--dst-tipo difusión
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_BROADCAST

-Una salida de la iptables -o $LAN -p icmp--ipv4 \
-s $RSS -m pkttype - pkt-tipo broadcast -m addrtype--dst-tipo difusión
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_BROADCAST

# GATEWAY_INTERNET
iptables - salida -o $LAN -p tcp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo UNICAST\
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_INTERNET

-Una salida de la iptables -o $LAN -p udp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo UNICAST\
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_INTERNET

-Una salida de la iptables -o $LAN -p icmp--ipv4 \
-s $RSS! -d $LAN_SUBNET -m pkttype - pkt-tipo unicast -m addrtype--dst-tipo UNICAST\
Estado de -m - Estado nuevo, establecida, relacionada con -j GATEWAY_INTERNET

##############################################################################################

Ahora vamos a crear el guión filtrado de reglas hablado antes:
$ sudo vi /etc/firewall.advanced
#! / bin/bash

# "Fecha de agosto de 2012
# "Autor: Guillaume Kaddouch
# "URL: http://networkfilter.blogspot.com
# "Versión: avanzó 1,0

echo "Configuración de variables"
# VARIABLES PARA PERSONALIZAR PARA QUE COINCIDA CON TU RED
LAN = "eth0"
LAN_SUBNET="192.168.1.0/24"
DHCP_RANGE = "192.168.1.10-192.168.1.20"
DNS_SERVER1 = "8.8.8.8"
DNS_SERVER2 = "208.67.222.222"
RSS = "192.168.1.3"
MODEM_ROUTER = "192.168.1.1"
UNPRIV_PORTS = "1024:65535"
SSH = "15507"
NTP_SERVER = "65.55.21.22"

echo "las cadenas existentes de Flushing y reglas..."
# Reglas & FLUSHING cadenas
iptables -t filtro -F
iptables -t filtro -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

echo "Configuración de directivas predeterminadas"
# POR DEFECTO POLÍTICAS
iptables -P INPUT DROP
iptables -P salida gota
iptables -P FORWARD DROP

# BUCLE
iptables - A INPUT -i lo -j acepta
iptables - una salida -o lo -j ACCEPT

echo "Creando cadenas"
# CADENAS
iptables -N FORWARD_OUT
iptables -N FORWARD_IN
iptables -N LAN_IN
iptables -N LAN_BROADCAST
iptables -N GATEWAY_LAN
iptables -N GATEWAY_BROADCAST
iptables -N GATEWAY_INTERNET
iptables -N INTERNET_GATEWAY
iptables -t nat -N NAT_OUT

# LA CADENA DE CONTROL, REGISTRO Y OPTIMIZAR
iptables -N CHECK_TCP_FLAGS
iptables -N LOGDROP_TCP_FLAGS
iptables -N LOGDROP_MALWARE
iptables -N LOGDROP_BADPORT
iptables -t mangle -N FAST_DNS

echo "Carga de reglas"

#################################
# Protocolo de control y optimización #
##############################################################################################
iptables - A hacia adelante -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS
iptables - A INPUT -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS

iptables -t mangle - salida -o $LAN -p tcp--ipv4 -s $RSS -m pkttype - pkt-tipo unicast--dport dominio -m \
Estado: estado nuevo, establecida, relacionada con -j FAST_DNS

iptables -t mangle - una salida -o $LAN -p udp--ipv4 -s $RSS -m pkttype - pkt-tipo unicast--dport dominio -m \
Estado: estado nuevo, establecida, relacionada con -j FAST_DNS
##############################################################################################

###################
# CHECK_TCP_FLAGS #
##############################################################################################
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags ACK, FIN aleta -j LOGDROP_TCP_FLAGS
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags ACK, PSH PSH -j LOGDROP_TCP_FLAGS
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags ACK, URG URG -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags aleta, aleta de RST, RST -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags SYN, SYN de la aleta, aleta -j LOGDROP_TCP_FLAGS
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags SYN, RST SYN, RST -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags todo todo -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags todos ninguno -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-banderas todo FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags SYN todos, FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags SYN todos, ACK, RST, FIN, URG -j LOGDROP_TCP_FLAGS

iptables - un LOGDROP_TCP_FLAGS -m limit--limit 1/s - j LOG--log-tcp-options--log-prefix \
«[IPTABLES: INDICADORES TCP BAD]»

iptables - una LOGDROP_TCP_FLAGS -j DROP
##############################################################################################

############
# FAST_DNS #
##############################################################################################
iptables -t mangle - A FAST_DNS -p udp -d $DNS_SERVER1 -j TOS - set-tos minimizar retraso
iptables -t mangle - A FAST_DNS -p udp -d $DNS_SERVER2 -j TOS - set-tos minimizar retraso
iptables -t mangle - A FAST_DNS -p tcp -d $DNS_SERVER1 -j TOS - set-tos minimizar retraso
iptables -t mangle - A FAST_DNS -p tcp -d $DNS_SERVER2 -j TOS - set-tos minimizar retraso
##############################################################################################

# FLUJO IDENTIFICACIÓN #
fuente "/ etc/firewall.flows"

############
# NAT_OUT #
##############################################################################################
iptables -t nat - A NAT_OUT -j MASQUERADE--al azar
##############################################################################################

###############
# ADELANTE A #
##############################################################################################
# Potencial tráfico de Malware
# Si no, habría sido bloqueados por la directiva predeterminada
# Sin embargo, aprovechamos la oportunidad para guardar en una tabla de "bad_traffic"
# Esta tabla nos permite a los hosts de bloque LAN intentando acceder muchos puertos malware
# Así potencialmente infectados (y que requieren un análisis antivirus)
#
# Tan pronto como un host de LAN ha afectado a las reglas de 5 veces por debajo de 2mn, soltar todo avance hacia fuera desde ese host
iptables - un FORWARD_OUT -p tcp -m reciente--bad_traffic--rcheck--rttl--hitcount 5--segundos 120 -j el nombre \
LOGDROP_MALWARE

iptables - una FORWARD_OUT -p tcp--dport 139 - m reciente--nombre bad_traffic--set -j LOGDROP_BADPORT
iptables - una FORWARD_OUT -p tcp--dport 445 - m reciente--nombre bad_traffic--set -j LOGDROP_BADPORT
iptables - una FORWARD_OUT -p tcp--dport 135 - m reciente--nombre bad_traffic--set -j LOGDROP_BADPORT
iptables - una FORWARD_OUT -p tcp--dport 6667 - m reciente--nombre bad_traffic--set -j LOGDROP_BADPORT
iptables - una FORWARD_OUT -p tcp--dport 1433:1434 -m reciente--nombre bad_traffic--set -j LOGDROP_BADPORT
iptables - una FORWARD_OUT -p udp--dport 1433:1434 -m reciente--nombre bad_traffic--set -j LOGDROP_BADPORT
iptables - una LOGDROP_BADPORT -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: Puerto malo]"
iptables - una LOGDROP_BADPORT -j DROP
iptables - una LOGDROP_MALWARE -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: HOST infectado]"
iptables - una LOGDROP_MALWARE -j DROP

# Permitidos puertos
iptables - un FORWARD_OUT -p tcp--sport $UNPRIV_PORTS -m multiport--dports ftp, http, https, 8080 -j ACCEPT

# Permitir conexiones establecidas y relacionadas a otros puertos, necesarios para FTP por ejemplo
iptables - un FORWARD_OUT -p tcp--sport $UNPRIV_PORTS--dport $UNPRIV_PORTS m - estado - estado \
ESTABLECIDO, relacionado -j ACCEPT

# NTP solicitudes (modificar la variable al principio)
iptables - una FORWARD_OUT -p udp -d $NTP_SERVER--sport--dport de ntp ntp -j ACCEPT

# Echo request
iptables - una FORWARD_OUT -p icmp -m icmp--icmp-type echo-request - j ACCEPT

# Rechazar el tráfico que no queremos, muchas opciones de abajo (crear las variables correspondientes)
# iptables - A FORWARD_OUT -p tcp--dport $port_of_a_host_to_block -j rechazar - rechazar-con \
# icmp-host-prohibido
# iptables - A FORWARD_OUT -d $subnet_to_block -j rechazar - rechazar-con icmp-red-prohibido

# Bloquear y todo lo demás registrar
iptables - una FORWARD_OUT -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: FORWARD_OUT]"
iptables - una FORWARD_OUT -j DROP
##############################################################################################

##############
# FORWARD_IN #
##############################################################################################
# Permitir el desvío de los flujos establecidos o relacionados con entrante, con un TTL > 10
iptables - A FORWARD_IN -m ttl--ttl-gt 10 -j ACCEPT

# Bloquear y todo lo demás registrar
iptables - una FORWARD_IN -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: FORWARD_IN]"
iptables - una FORWARD_IN -j DROP
##############################################################################################

##########
# LAN_IN #
##############################################################################################
# Permitir difusiones DHCP desde el interior
iptables - A LAN_IN -i $LAN -p udp--sport 67:68--dport 67:68 -j ACCEPT

# Permite consultas DNS de la LAN del sistema de seguridad de frambuesa,
iptables - A LAN_IN -i $LAN -p udp--sport $UNPRIV_PORTS--dport 53 -j ACCEPT
iptables - A LAN_IN -i $LAN -p tcp--sport $UNPRIV_PORTS--dport 53 -j ACCEPT

Conexiones de SSH #
# (puede Agregar un control para el sistema operativo remoto)
iptables - A LAN_IN -i $LAN -p tcp--sport $UNPRIV_PORTS--dport $SSH -j ACCEPT

# LAN ICMP (tipo 3 = inalcanzable [destination|port|protocol])
iptables - una LAN_IN -p icmp -m icmp--icmp-type echo-request - j ACCEPT
iptables - una LAN_IN -p icmp -m icmp--icmp-type 3 -j ACCEPT

# Bloquear y todo lo demás registrar
iptables - una LAN_IN -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: LAN_IN]"
iptables - una LAN_IN -j DROP
##############################################################################################

##################
# LAN_BROADCAST #
##############################################################################################
# Permitir difusiones DHCP desde el interior
iptables - A LAN_BROADCAST -i $LAN -p udp--sport 67:68--dport 67:68 -j ACCEPT
# Bloquear todo lo demás (no te molestes en sesión tráfico de difusión)
iptables - una LAN_BROADCAST -j DROP
##############################################################################################

###########################
# INTERNET_GATEWAY #
##############################################################################################
# Permitir conexiones ya establecidas de RSS a Internet para volver a RSS
iptables - A INTERNET_GATEWAY -p todos -j ACCEPT
##############################################################################################

########################
# CADENA GATEWAY_LAN #
##############################################################################################
# Bloquear posibles ICMP redirect enviado a nosotros (podría ser causado por un sysctl mal configurado)
iptables - una GATEWAY_LAN -p icmp -m icmp--icmp-type redirect -m limit--límite 1/s - j LOG--log-prefix \
«[IPTABLES: ICMP REDIRECT]»

iptables - una GATEWAY_LAN -p icmp -m icmp--icmp-type redirect -j DROP

# Permitir conexiones LAN establecida a frambuesa para volver a la LAN
iptables - un GATEWAY_LAN -p tcp -m estado--estado establecida, relacionada con -j ACCEPT
iptables - un GATEWAY_LAN -p udp -m estado--estado establecida, relacionada con -j ACCEPT
iptables - un GATEWAY_LAN -p icmp -m estado--estado establecida, relacionada con -j ACCEPT

# Permite DHCP relacionados con el tráfico
iptables - una GATEWAY_LAN -p udp--sport 67:68--dport 67:68 -j ACCEPT

# Permitir Raspi hacer ping a la LAN
iptables - un GATEWAY_LAN -p icmp -m icmp--icmp-type echo-request - m estado - estado nuevo -j ACCEPT

# Bloquear y todo lo demás registrar
iptables - una GATEWAY_LAN -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: GATEWAY_LAN]"
iptables - una GATEWAY_LAN -j DROP
##############################################################################################

#####################
# GATEWAY_BROADCAST #
##############################################################################################
# Permitir broadcast DHCP respuestas de RSS
iptables - una GATEWAY_BROADCAST -p udp--sport 67:68--dport 67:68 -j ACCEPT

# Bloquear y todo lo demás registrar
iptables - una GATEWAY_BROADCAST -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: GATEWAY_BROADCAST]"
iptables - una GATEWAY_BROADCAST -j DROP
##############################################################################################

####################
# GATEWAY_INTERNET #
##############################################################################################
# Permitir conexiones nuevas de frambuesa (necesario para las actualizaciones, instalación de paquetes, etc...)
# No haga funcionar actualiza la noche, por lo tanto no hay necesidad de la regla se activa 24/24
iptables - una GATEWAY_INTERNET -p tcp -m multiport--dports ftp, http, https -m tiempo--timestart 9:00--timestop \
23:00 -j ACCEPT

# Résolutions DNS
iptables - una GATEWAY_INTERNET -p udp--sport $UNPRIV_PORTS -d $DNS_SERVER1--dport dominio -j ACCEPT
iptables - una GATEWAY_INTERNET -p udp--sport $UNPRIV_PORTS -d $DNS_SERVER2--dport dominio -j ACCEPT
iptables - GATEWAY_INTERNET -p tcp--sport $UNPRIV_PORTS -d $DNS_SERVER1--dport dominio -j ACCEPT
iptables - GATEWAY_INTERNET -p tcp--sport $UNPRIV_PORTS -d $DNS_SERVER2--dport dominio -j ACCEPT

# Ocurre al volver a cargar las reglas del firewall
iptables - una GATEWAY_INTERNET -p icmp -m icmp--icmp-type port-unreachable - d $DNS_SERVER1 -j DROP
iptables - una GATEWAY_INTERNET -p icmp -m icmp--icmp-type port-unreachable - d $DNS_SERVER2 -j DROP

# Permitir NTP
iptables - una GATEWAY_INTERNET -p udp--dport ntp -j ACCEPT

# Bloquear y todo lo demás registrar
iptables - una GATEWAY_INTERNET -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: GATEWAY_INTERNET]"
iptables - una GATEWAY_INTERNET -j DROP
##############################################################################################

## REGLAS FINAL ##
rules_number ='egrep '\-j' /etc/firewall.advanced | WC -l '
flows_number ='egrep '\-j' /etc/firewall.flows | WC -l '
total_rules = $((rules_number + flows_number))
echo ""
echo "$total_rules reglas cargadas."
echo ""

B - reglas básica
Este script básicamente lo siguiente:
-Indicadores TCP válidos de entrada/salida bloques (incluso de flujos establecidos)
-Optimiza las consultas DNS (campo TOS del IP)
-Añade aleatoriedad al proceso NAT
-Gotas entrantes paquetes con TTL baja (puede significar un ataque de caducidad ttl o un traceroute)

Este conjunto de reglas permite todo desde su LAN a enviarse en Internet, así teóricamente no requieren modificar luego. Si desea agregar una capa adicional de seguridad de red para tu abuela o los padres por ejemplo, pero que usted no puede esperar modificar iptables rules(!), creo que este conjunto de reglas es más adecuado.

$ sudo vi /etc/firewall.simple
#! / bin/bash

# Fecha de agosto de 2012
# Autor: Guillaume Kaddouch
# URL: http://networkfilter.blogspot.com
# Versión: 1.0 estándar

echo "Configuración de variables"
# VARIABLES PARA PERSONALIZAR PARA QUE COINCIDA CON TU RED
LAN = "eth0"
LAN_SUBNET="192.168.1.0/24"
DHCP_RANGE = "192.168.1.10-192.168.1.20"
DNS_SERVER1 = "8.8.8.8"
DNS_SERVER2 = "208.67.222.222"
RSS = "192.168.1.3"
MODEM_ROUTER = "192.168.1.1"
UNPRIV_PORTS = "1024:65535"
SSH = "15507"
NTP_SERVER = "65.55.21.22"

echo "las cadenas existentes de Flushing y reglas..."
# Reglas & FLUSHING cadenas
iptables -t filtro -F
iptables -t filtro -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

echo "Configuración de directivas predeterminadas"
# POR DEFECTO POLÍTICAS
iptables -P INPUT DROP
iptables -P salida gota
iptables -P FORWARD DROP

# BUCLE
iptables - A INPUT -i lo -j acepta
iptables - una salida -o lo -j ACCEPT

echo "Creando cadenas"

# LA CADENA DE CONTROL, REGISTRO Y OPTIMIZAR
iptables -N CHECK_TCP_FLAGS
iptables -N LOGDROP_TCP_FLAGS
iptables -t mangle -N FAST_DNS

echo "Carga de reglas"
#################################
# Protocolo de control y optimización #
##############################################################################################
iptables - A hacia adelante -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS
iptables - A INPUT -i $LAN -p tcp--ipv4 -j CHECK_TCP_FLAGS

iptables -t mangle - salida -o $LAN -p tcp--dominio de la--dport ipv4 -s $RSS -m pkttype - pkt-tipo unicast \
Estado de -m - Estado nuevo, establecida, relacionada con -j FAST_DNS

iptables -t mangle - una salida -o $LAN -p udp--dominio de la--dport ipv4 -s $RSS -m pkttype - pkt-tipo unicast \
Estado de -m - Estado nuevo, establecida, relacionada con -j FAST_DNS
##############################################################################################

###################
# CHECK_TCP_FLAGS #
##############################################################################################
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags ACK, FIN aleta -j LOGDROP_TCP_FLAGS
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags ACK, PSH PSH -j LOGDROP_TCP_FLAGS
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags ACK, URG URG -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags aleta, aleta de RST, RST -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags SYN, SYN de la aleta, aleta -j LOGDROP_TCP_FLAGS
iptables - un CHECK_TCP_FLAGS -p tcp--tcp-flags SYN, RST SYN, RST -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags todo todo -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags todos ninguno -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-banderas todo FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags SYN todos, FIN, PSH, URG -j LOGDROP_TCP_FLAGS
iptables - una CHECK_TCP_FLAGS -p tcp--tcp-flags SYN todos, ACK, RST, FIN, URG -j LOGDROP_TCP_FLAGS

iptables - un LOGDROP_TCP_FLAGS -m limit--limit 1/s - j LOG--log-tcp-options--log-prefix \
«[IPTABLES: INDICADORES TCP BAD]»

iptables - una LOGDROP_TCP_FLAGS -j DROP
##############################################################################################

############
# FAST_DNS #
##############################################################################################
iptables -t mangle - A FAST_DNS -p udp -d $DNS_SERVER1 -j TOS - set-tos minimizar retraso
iptables -t mangle - A FAST_DNS -p udp -d $DNS_SERVER2 -j TOS - set-tos minimizar retraso
iptables -t mangle - A FAST_DNS -p tcp -d $DNS_SERVER1 -j TOS - set-tos minimizar retraso
iptables -t mangle - A FAST_DNS -p tcp -d $DNS_SERVER2 -j TOS - set-tos minimizar retraso
##############################################################################################

#######
# NAT #
##############################################################################################
iptables -t nat - A POSTROUTING -o $LAN! Estado de -m -d $LAN_SUBNET - estado nuevo, establecidos, relacionados con -j MASQUERADE\
-al azar
##############################################################################################

###########
# # ADELANTE
##############################################################################################
# Permitir salida adelante de cualquier conexión
iptables - A FORWARD tcp -p -i $LAN -s $LAN_SUBNET! Estado de -m -d $LAN_SUBNET - estado nuevo, establecido, relacionado con \
-j ACCEPT

iptables - A FORWARD -p udp -i $LAN -s $LAN_SUBNET! Estado de -m -d $LAN_SUBNET - estado nuevo, establecido, relacionado con \
-j ACCEPT

iptables - A FORWARD -p icmp -i $LAN -s $LAN_SUBNET! Estado de -m -d $LAN_SUBNET - estado nuevo, establecido, relacionado con \
-j ACCEPT

# Permitir entrantes hacia adelante de las conexiones establecidas o relacionadas con TTL mayor que 10
iptables - A FORWARD tcp -p -i $LAN! Estado de -m -d $LAN_SUBNET -s $LAN_SUBNET--estado establecida, relacionada con -m \
TTL--ttl-gt 10 -j ACCEPT

iptables - A FORWARD -p udp -i $LAN! Estado de -m -d $LAN_SUBNET -s $LAN_SUBNET--estado establecida, relacionada con -m \
TTL--ttl-gt 10 -j ACCEPT

iptables - A FORWARD -p icmp -i $LAN! Estado de -m -d $LAN_SUBNET -s $LAN_SUBNET--estado establecida, relacionada con -m \
TTL--ttl-gt 10 -j ACCEPT
##############################################################################################

#########
# ENTRADA DE #
##############################################################################################
# Permitir difusiones DHCP desde el interior
iptables - una entrada -i $LAN -p udp -s $LAN_SUBNET--deporte 67:68--dport 67:68 -j ACCEPT

# Permitir consultas de DNS de la LAN a la frambuesa
iptables - una entrada -i $LAN -p udp -s $LAN_SUBNET - sport $UNPRIV_PORTS -d $RSS--dport 53 -j ACCEPT
iptables - una entrada -i $LAN -p tcp -s $LAN_SUBNET - sport $UNPRIV_PORTS -d $RSS--dport 53 -j ACCEPT

Conexiones de SSH #
iptables - una entrada -i $LAN -p tcp -s $LAN_SUBNET - sport $UNPRIV_PORTS -d $RSS--dport $SSH -j ACCEPT

# LAN ICMP (tipo 3 = inalcanzable [destination|port|protocol])
iptables - una entrada -p icmp -m icmp--icmp-type echo-request - s $LAN_SUBNET -d $RSS -j ACCEPT
iptables - una entrada -p icmp -m icmp--icmp-type 3 -s $LAN_SUBNET -d $RSS -j ACCEPT

# Permitir conexiones ya establecidas de frambuesa a Internet para volver a itl
iptables - A INPUT -i $LAN! Estado de m - de -s $LAN_SUBNET -d $RSS -p tcp--estado establecida, relacionada con -j ACCEPT
iptables - A INPUT -i $LAN! Estado de m - de -s $LAN_SUBNET -d $RSS -p udp--estado establecida, relacionada con -j ACCEPT
iptables - A INPUT -i $LAN! Estado de m - de -s $LAN_SUBNET -d $RSS -p icmp--estado establecida, relacionada con -j ACCEPT
##############################################################################################

###########
# SALIDA #
##############################################################################################
# Bloquear posibles ICMP redirect enviado a nosotros (podría ser causado por un sysctl mal configurado)
iptables - una salida -o $LAN -p icmp -m icmp--icmp-type redirect -m limit--límite 1/s - j LOG--log-prefix \
«[IPTABLES: ICMP REDIRECT]»

iptables - una salida -o $LAN -p icmp -m icmp--icmp-type redirect -j DROP

# Permitir conexiones LAN establecida a Raspi para volver a la LAN
iptables - un salida -o $LAN -p tcp -s $RSS -d $LAN_SUBNET -m estado--estado establecido, relacionado -j ACCEPT
iptables - un salida -o $LAN -p udp -s $RSS -d $LAN_SUBNET -m estado--estado establecido, relacionado -j ACCEPT
iptables - un salida -o $LAN -p icmp -s $RSS -d $LAN_SUBNET -m estado--estado establecido, relacionado -j ACCEPT

# Permite DHCP relacionados con el tráfico
iptables - una salida -o $LAN -p udp -s $RSS -d $LAN_SUBNET--deporte 67:68--dport 67:68 -j ACCEPT

# Permitir frambuesa hacer ping a la LAN
iptables - un salida -o $LAN -p icmp -m icmp--icmp-type echo-request - s $RSS -d $LAN_SUBNET -m estado \
-Estado nuevo -j ACCEPT

# Permitir conexiones nuevas de frambuesa (necesario para las actualizaciones, instalación de paquetes, etc...)
iptables - una había salida -o $LAN -p tcp -s $RSS! Estado de -m -d $LAN_SUBNET - estado nuevo, establecido, relacionado con \
-j ACCEPT

iptables - una había salida -o $LAN -p udp -s $RSS! Estado de -m -d $LAN_SUBNET - estado nuevo, establecido, relacionado con \
-j ACCEPT

iptables - una había salida -o $LAN -p icmp -s $RSS! Estado de -m -d $LAN_SUBNET - estado nuevo, establecido, relacionado con \
-j ACCEPT

# DNS pide
iptables - una salida -o $LAN -p udp -s $RSS - deporte $UNPRIV_PORTS -d $DNS_SERVER1--dport dominio -j ACCEPT
iptables - una salida -o $LAN -p udp -s $RSS - deporte $UNPRIV_PORTS -d $DNS_SERVER2--dport dominio -j ACCEPT
iptables - una salida -o $LAN -p tcp -s $RSS - deporte $UNPRIV_PORTS -d $DNS_SERVER1--dport dominio -j ACCEPT
iptables - una salida -o $LAN -p tcp -s $RSS - deporte $UNPRIV_PORTS -d $DNS_SERVER2--dport dominio -j ACCEPT
# Permitir NTP
iptables - una salida -o $LAN -p udp--dport ntp -s $RSS -j ACCEPT
##############################################################################################

iptables - A INPUT -m limit--limit 1/s - j LOG--log-prefix "[IPTABLES: gota de entrada]"
iptables - una entrada -j DROP
iptables - una salida -m limit--límite 1/s - j LOG--log-prefix "[IPTABLES: salida gota]"
iptables - una salida -j DROP
iptables - A FORWARD -m límite--límite 1/s - j LOG--log-prefix "[IPTABLES: caída hacia adelante]"
iptables - A FORWARD -j DROP

## REGLAS FINAL ##
rules_number ='egrep '\-j' /etc/firewall.simple | WC -l '
echo ""
echo "$rules_number reglas cargadas."
echo ""

Estos dos conjuntos de reglas son solo ejemplos, si tienes uno listo para usar su propio.

Para cargar reglas de iptables en el arranque, una forma es hacerlo como sigue:
$ sudo vi /etc/rc.local
echo "Carga reglas de iptables"
/ etc/firewall. VERSIÓN >> / dev/nul

Sustituir la versión "avanzada" o "simple", sin comillas, dependiendo de la secuencia de comandos que utiliza.

Si desea mostrar alertas en tiempo real, escriba lo siguiente:
$ sudo la cola -f /var/log/iptables.log

Artículos Relacionados

Sistema de detección de intrusiones de red doméstica

Sistema de detección de intrusiones de red doméstica

Este es mi primer instuctable. Yo estaba buscando para crear mi sistema de detección de intrusiones de red en una máquina virtual y fue incapaz de encontrar las instrucciones sobre cómo hacerlo. Creado mi propia y me espero ayude algunos de ustedes h
Sistema de detección de Bluetooth agua

Sistema de detección de Bluetooth agua

Alguna vez encuentras en esta situación...Que me ha pasado. Pero, no más preocuparse con este sistema de detección de agua que es divertido de construir y capaz de ahorrar algunos $$$ cuando la plomería Bustos.Este ejemplo muestra cómo utilizar nodo
Tutorial sobre cómo hacer un sistema de detección de humo utilizando Intel Galileo Gen2.

Tutorial sobre cómo hacer un sistema de detección de humo utilizando Intel Galileo Gen2.

En este proyecto, vamos a ir sobre cómo construir un sensor de humocircuito con una board Intel Galileo Gen2 entre dispositivos un poco más.Vamos a utilizar el sensor MQ2 humo en este caso ya que es sensata al humo e inflamable gas.El humo MQ2 funcio
LPG / sistema de detección de biogás con MediaTek LinKIt uno

LPG / sistema de detección de biogás con MediaTek LinKIt uno

La plataforma de desarrollo un LinKIt ha sido diseñada y lanzado por los laboratorios de MediaTek con un diseño compacto, que permite la creación de accesorios personales y dispositivos de IoT, con conectividad Rica. HQ de Instructables han sembrado
Sistema de detección de humedad del suelo

Sistema de detección de humedad del suelo

Que comenzó como un simple clavo dos, 5V, sistema de detección de humedad que se cultiva en una plataforma un poco más sofisticada con LED y menos actualización debido a mi anterior supervisión: electrólisis.Para ello, necesitarás:Arduino1 x LED rojo
Edison sistema con detección de movimiento, conexión de nube y streaming de vídeo de vigilancia

Edison sistema con detección de movimiento, conexión de nube y streaming de vídeo de vigilancia

Este proyecto trata sobre el uso de Edison como un núcleo de sistema de detección de movimiento con cámara web, que es también conectado a Twitter, Google Drive, Xively parpadea el LED y señal sonora también (por supuesto!:). También corrientes el ví
Sistema de detección de la mentira

Sistema de detección de la mentira

Detección, también conocida como detección de engaño, utiliza preguntas técnicas junto con la tecnología que registran las funciones fisiológicas para determinar la verdad y la falsedad ante la mentira• Un sistema de detección de la mentira se hace u
Girar a la frambuesa Pi en un sistema de archivos de red versión 4 (NFSv4) servidor

Girar a la frambuesa Pi en un sistema de archivos de red versión 4 (NFSv4) servidor

IntroducciónSystem(NFS) de archivo de red puede ejecutar simultáneamente en la versión 2, 3, 4. NFS versión 4(NFSv4) tiene varias mejoras sobre el NFSv2 y NFSv3. Las mejoras que más me gusta son:NFSv4 facilita configurar firewall porque NFSv4 utiliza
Sistema de detección y advertencia de inundaciones

Sistema de detección y advertencia de inundaciones

Las inundaciones son peligrosos y devastadores. Uno más daño del mundo especialmente económico es causada debido a las inundaciones. Inundaciones son causadas principalmente debido a las lluvias torrenciales o mayor caudal de agua. Las inundaciones n
Abrir sistema de detección de mosca

Abrir sistema de detección de mosca

Este instructable fue una colaboración con OHoilett. Cheque él hacia fuera, él es impresionante!Todos hemos sido allí. Se utiliza el baño hace horas, mira hacia abajo y...¿La cremallera lleva todo este tiempo? ¿Cómo? Pregunto si nadie notó como sigil
Arduino Inicio baloncesto aro puntuación sistema de detección conocido como anotador

Arduino Inicio baloncesto aro puntuación sistema de detección conocido como anotador

Mi hermanita y yo encontramos este aro de baloncesto interior (fotografiado arriba) en un contenedor de basura hace unas semanas. Nosotros veníamos de la iglesia así como dos personas se lo descarga de su camión. Decidimos cogerlo, junto con la mesa
Sistema de detección de humanos humo Edison con Twilio (Python)

Sistema de detección de humanos humo Edison con Twilio (Python)

Conecte el sensor de movimiento y sensor de detección de infrarrojos para contar personas que ingresan a una sala. Uso de sensor de humo para detectar humo o fuego. Enviar texto al celular utilizando la API Twilio para informar sobre el humo.Paso 1:
Fabricación de sistema de detección de color RGB con LED

Fabricación de sistema de detección de color RGB con LED

hacer un nuevo proyecto con LEDS y micro controlador
Detección de intrusiones (e intento)

Detección de intrusiones (e intento)

gran hermano te está mirando... Este pequeño proyecto detecta intrusiones e intentos.Consiste en un interruptor de láminas, un arduino y un enrutador que ejecuta OpenWrt. Si alguien intenta abrir la puerta de mi habitación, el imán se moverá lejos el