Ayuda con iptables.

A ver si me podeis echar una mano. Tengo que hacer un scrip en debian de iptables con las reglas que dejo abajo. el problema que no he echo scrip en la vida y iptables no lo habia tocado casi. Estoy leyendo y algunas cosas las tengo medio claras, pero hay otras que no tengo ni idea. las dos subredes que tengo son dmz 10.20.4.0 y red local 10.10.4.0. A ver si me podeis aclarar un poco como seguir porque ahora mismo no tengo nada claro.

• Politica por defecto la que se quiera.
• Red externa:
o Impedir tráfico con destino a la red interna
o Impedir tráfico con destino al servidor FTP (DMZ)
o Permitir tráfico desde la red externa al servidor web (DMZ)
o Traducir direcciones externas a internas en el acceso al servidor web
• Red interna:
o Impedir tráfico con destino al servidor web (DMZ)
esto podria ser algo como iptables -A OUTPUT -d 10.20.4.1 -j DROP

o Permitir tráfico con destino al servidor FTP (DMZ)
y aqui iptables -A OUTPUT -d 10.20.4.2 -j ACCEPT

o Permitir tráfico a la red externa
o Traducir direcciones internas a externas en el acceso al exterior
• Red DMZ:
o Impedir tráfico con destino a la red interna.
• localhost (Debian Router):
o Permitir conexión VPN desde un cliente al localhost
Te paso mi scritp que use por un tiempo, pues ahora mismo lo tengo mucho mas simplon [+risas] , Es una recopilación de varias fuentes a medida que requería uso de alguna características.

Casi todas las reglas están documentadas, para que no te pierdas en las mismas.

La política por defecto es DROP, todo paquete que sale o entre sera rechazado sino esta especificado en el script.

También, hay pequeñas, pero importantes protecciones a nivel del kernel.

RED_EXT = la interfaz con la que se conecta a internet el equipo.
IP_EXT = la dirección ip que tiene el equipo.


MUY importante, hacer uso del modulo conntrack, sino te funciona, simplemente un sudo modprobe conntrack ;)
Esto te puede ayudar mucho depurar el firewall.

Si el FTP no te funciona, necesitas cargar los módulos necesarios para que pueda trabajar con iptables.



#!/bin/sh
# -- UTF 8 --

## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina con DROP por defecto
## Pello Xabier Altadill Izura
## www.pello.info - pello@pello.info
## http://www.taringa.net/posts/linux/15851762/Introduccion-amigable-a-iptables.html
## Con algunas modificaciones
## por albalband de Taringa
## Si queres descargar el script hacelo de aca:
## http://files.myopera.com/alband/files/iptables_ipt

#In general ...
#
#1. I do not use state (new,related,established) with udp or icmp.
#
#2. Rules for NEW tend to go together, here you define incoming traffic to your services.
#
#3. Rules for RELATED,ESTABLISHED go together, without designating a port. Here you define incoming traffic to your clients.
#
#4. Usually the rules for your tap go in forwarding (rather then input / output), well at least for my setup where the tap is usually a virtual machine.
#
#My guess is your dropped packets have to do with forwarding as I do not see a DROP in your input or output rules, meaning they are dropped by policy, meaning they did not match your accept rules.
#
#See : http://www.revsys.com/writings/quicktips/nat.html
#
#You will have to modify those rules ( s/eth1/tap0 ;) )
#
#Once you get your rules up, you can further shape them by specifying your incoming client traffic and restricting it to the higher ports, but, if you have incoming traffic to clients on the lower ports, you need more then iptables ;)
# via: http://ubuntuforums.org/archive/index.php/t-1808688.html

## Ver estadisticas de bytes transferido en iptables: sudo iptables -L -nv

## Se cambian las opciones de -m state --state por conntrack, este ultimo mas nuevo y con mas caracteristicas de personalizacion.

## En caso de que esta ultima caracteristicas no trabaje, cambiar por la vieja opcion.
echo "###########################"
echo "# Iniciando fire iptables #"
echo "###########################"
echo "----------------------"

# Binarios del programa
IPTABLES="/usr/bin/iptables"
ECHO="/usr/bin/echo"


## Definimos variables
#RED_EXT="wlp4s1"    ## Interface conectada a internet
RED_EXT="enp2s0"
IP_EXTER="172.16.1.33"
## IP de interface wlan0
# IP_TITO="XXX.XXX.148.212"
# IP_PHONE="172.16.1.36"
# PS3="172.16.1.76"
## Paises bloqueados con GeoIP
# GEO_IP="BR,DE,US,JP,FR,CZ,CN,EG,FI,HK,IL,IQ,KP,KR,PK,PT,RU,TW"
# IP_PS3="172.16.1.37"

## FLUSH de reglas
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
#$IPTABLES -t nat -F
#$IPTABLES -t nat -X
#$IPTABLES -t mangle -F
#$IPTABLES -t mangle -X
#$IPTABLES -t raw -F
#$IPTABLES -t raw -X
#$IPTABLES -t security -F
#$IPTABLES -t security -X

## Establecemos politica por defecto: DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

## Empezamos a filtrar? no! empezamos a abrir! porque ahora esta TODO denegado.
## Debemos decir de manera explicita qué es lo que queremos abrir

# Operar en localhost sin limitaciones
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

# Esto es para logueo y trabajo de PSAD
#$IPTABLES -A INPUT -j LOG
#$IPTABLES -A FORWARD -j LOG

# Permitimos que la maquina pueda salir a la web
$IPTABLES -A INPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

# Ya tambien a webs seguras
$IPTABLES -A INPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

# Permitir ping desde adentro hacia afuera
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT


# Permitir conexion con VLC puerto 8080

# Esto hay que escribirlo en la terminal, para que funcione el VLC
# vlc --extraintf=luahttp --fullscreen --qt-start-minimized
# via: http://blog.desdelinux.net/como-controlar-vlc-desde-tu-android
#
#$IPTABLES -A INPUT -p udp -s $IP_PHONE --sport 5353 -j ACCEPT
#$IPTABLES -A OUTPUT -p udp --dport 5353 -j ACCEPT
#$IPTABLES -A INPUT -p tcp -s $IP_PHONE --sport 1024:65535 -d $IP_EXTER --dport 8080 -m conntrack --ctstate NEW -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -s $IP_EXTER --sport 8080 -d $IP_PHONE --dport 1024:65535 -j ACCEPT

# Amarok 2 - Android remote server

# $IPTABLES -A INPUT -p tcp -s $IP_PHONE --dport 5454 -j ACCEPT

# Permitir paso de HTTP y HTTPS

#$IPTABLES -A INPUT -i $RED_EXT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
#$IPTABLES -A OUTPUT -o $RED_EXT -p tcp -m multiport --sports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

# KVirc
$IPTABLES -A INPUT -p tcp -m tcp --dport 7000 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp --sport 7000 -j ACCEPT


# Servidor para otros equipos Multimedia en la red local
#$IPTABLES -A INPUT -i eth0 -s 172.16.0.0/12 -j ACCEPT

# Servidor web, se permiten la entrada y salidad de peticiones. Cambiar la ip del source por 0/0 en caso para todo el mundo
# $IPTABLES -A INPUT -p tcp -s $IP_TITO --sport 1024:65535 -d $IP_EXTER --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# $IPTABLES -A OUTPUT -p tcp -s $IP_EXTER --sport 80 -d $IP_TITO --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT

# FTP

# $IPTABLES -A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 5211 -j ACCEPT

# Proteccion para SSH


$IPTABLES -A INPUT -p tcp -m tcp --dport 22 -j LOG --log-prefix "INTENTO DE ACCESO A SSH:" --log-level 4 --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp -m tcp --dport 22 -j DROP


# Puertos usado por Samba para la gente de WIN
# Via: https://www.guatewireless.org/internetworking/protocolos/samba-configuracion-de-los-puertos-del-firewall-iptables.html
#$IPTABLES -A INPUT -s $IP_EXTER -m conntrack --ctstate NEW -p tcp --dport 137 -j ACCEPT
#$IPTABLES -A INPUT -s $IP_EXTER -m conntrack --ctstate NEW -p tcp --dport 138 -j ACCEPT
#$$IPTABLES -A INPUT -s $IP_EXTER -m conntrack --ctstate NEW -p tcp --dport 139 -j ACCEPT
#$IPTABLES -A INPUT -s $IP_EXTER -m conntrack --ctstate NEW -p tcp --dport 445 -j ACCEPT

# Reglas recivir y enviar correos con Thunderbird

#$IPTABLES -A INPUT -p tcp -m tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT

#$IPTABLES -A INPUT -p tcp -m tcp --sport 993 -m conntrack --ctstate ESTABLISHED -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -m tcp --dport 993 -j ACCEPT

# HOTMAIL
#$IPTABLES -A INPUT -p tcp -m tcp --sport 587 -m conntrack --ctstate ESTABLISHED -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -m tcp --dport 587 -j ACCEPT

# GMAIL
#$IPTABLES -A INPUT -p tcp -m tcp --sport 465 -m conntrack --ctstate ESTABLISHED -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT

# PopCorn Time
#$IPTABLES -A INPUT -p tcp -m tcp --sport 40210 -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -m tcp --dport 40210 -j ACCEPT


# Radiolive247.ro
$IPTABLES -A INPUT -p tcp -m tcp --sport 9000 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp --sport 9744 -j ACCEPT

$IPTABLES -A OUTPUT -p tcp -m tcp --dport 9000 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp --dport 9744 -j ACCEPT

# Radio Formula-Internacional
$IPTABLES -A INPUT -p tcp -m tcp --sport 8300 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp --dport 8300 -j ACCEPT
# Reglas aMule
$IPTABLES -A INPUT -p tcp -m tcp --dport 16420 -m conntrack --ctstate NEW -m comment --comment "aMule" -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp --sport 16420 -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "aMule" -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 9995 -m comment --comment "aMule" -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 9995 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 16423 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 16423 -j ACCEPT
# Reglas para bitTorrent
$IPTABLES -A INPUT -p tcp -m tcp --dport 51413 -m conntrack --ctstate NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp --sport 51413 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# $IPTABLES -A INPUT -p udp --dport 6969 -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 8881 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 8881 -j ACCEPT
# DHT
$IPTABLES -A INPUT -p udp --dport 7881 -j ACCEPT

# Reglas necesarias para FTP pasivo y activo. Se permiten conexiones entrantes YA establecidas
# --tcp-flags ALL SYN,ACK
# $IPTABLES -A INPUT -p tcp -m tcp --sport 20:22 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# $IPTABLES -A INPUT -p tcp -m tcp --tcp-flags ALL SYN,ACK --dport 20:22 -j LOG --log-prefix "INTENTO DE FTP: "
# $IPTABLES -A OUTPUT -p tcp -m tcp --dport 20:22 -j ACCEPT
# $IPTABLES -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT
# $IPTABLES -A OUTPUT -p tcp -m tcp --dport 1024:65535 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

# Permitimos consultas DNS
$IPTABLES -A INPUT -p udp -m udp --sport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

# Permitimos consultar servidores ntp para sincronizarse el reloj
$IPTABLES -A INPUT -p udp -m udp --dport 123 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m udp --sport 123 -j ACCEPT

# Barrera de backup por si cambiamos a modo ACCEPT temporalmente
# Con esto protegemos los puertos reservados y otros well-known
$IPTABLES -A INPUT -p tcp -m tcp --dport 1:1024 -j DROP
$IPTABLES -A INPUT -p udp -m udp --dport 1:1024 -j DROP
$IPTABLES -A INPUT -p tcp -m tcp --dport 1723 -j DROP
$IPTABLES -A INPUT -p tcp -m tcp --dport 3306 -j DROP
$IPTABLES -A INPUT -p tcp -m tcp --dport 5432 -j DROP


# Anti-spoofing (falseo de ip origen)

$IPTABLES -A INPUT -i $RED_EXT -s $IP_EXTER -j LOG --log-prefix "INTENTO DE MIM:" --log-level 4 --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -i $RED_EXT -s $IP_EXTER -m comment --comment "Anti-MIM" -j DROP
$IPTABLES -A INPUT -i $RED_EXT -s 10.0.0.0/24 -m comment --comment "Anti-MIM" -j DROP
$IPTABLES -A INPUT -i $RED_EXT -s 172.16.0.0/12 -m comment --comment "Anti-MIM" -j DROP
$IPTABLES -A INPUT -i $RED_EXT -s 192.168.0.0/24 -m comment --comment "Anti-MIM" -j DROP
$IPTABLES -A INPUT -i $RED_EXT -s 224.0.0.0/8 -j DROP
$IPTABLES -A INPUT -i $RED_EXT -d 127.0.0.0/8 -j DROP
$IPTABLES -A INPUT -i $RED_EXT -d 255.255.255.255 -j DROP

# Seguridad a nivel del KERNEL

# Habilita tcp_window_scaling
$ECHO "1" > /proc/sys/net/ipv4/tcp_window_scaling

# Deshabilitar broadcast
$ECHO "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Deshabilitar el ping… quizá discutible.
$ECHO "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Deshabilitar la redirección del ping
$ECHO "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
$ECHO "0" > /proc/sys/net/ipv4/conf/default/accept_redirects

# Registrar los accesos extraños, paquetes falseados, etc..
$ECHO "0" > /proc/sys/net/ipv4/conf/all/log_martians
$ECHO "0" > /proc/sys/net/ipv4/conf/default/log_martians

$ECHO "0" > /proc/sys/net/ipv4/conf/default/accept_source_route

$ECHO "0" > /proc/sys/net/ipv4/conf/default/secure_redirects
$ECHO "0" > /proc/sys/net/ipv4/conf/all/secure_redirects


# via: http://security.stackexchange.com/questions/4603/tips-for-a-secure-iptables-config-to-defend-from-attacks-client-side


# No envia msg ICMP o no se comporta como router
$ECHO "1" > /proc/sys/net/ipv4/ip_forward
# Se habilita ip_forward para que trabaje las reglas de bloqueo para nmap, mas abajo estan.
$ECHO "0" > /proc/sys/net/ipv4/conf/all/send_redirects
$ECHO "0" > /proc/sys/net/ipv4/conf/default/send_redirects

# Drop pack-route
$ECHO "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

# Seguridad tcp_syncookies
$ECHO "1" > /proc/sys/net/ipv4/tcp_syncookies

# Numeros de paquetes para conexiones pasivas de SYNACK
$ECHO "2" > /proc/sys/net/ipv4/tcp_synack_retries

# Otra proteccion contra sync
$ECHO "1" > /proc/sys/net/ipv4/tcp_rfc1337

# Sanacion para el spoffing, verifica el source.
$ECHO "1" > /proc/sys/net/ipv4/conf/all/rp_filter
$ECHO "1" > /proc/sys/net/ipv4/conf/default/rp_filter


# Rango de puertos permitidos
$ECHO "1024 64000" > /proc/sys/net/ipv4/ip_local_port_range

# Previene la vulnerabilidad TOCTOU

$ECHO "1" > /proc/sys/fs/protected_symlinks
$ECHO "1" > /proc/sys/fs/protected_hardlinks


# Oculta las direcciones simbolicas del kernel
# No funciona en kernel precompilado
# via: https://wiki.archlinux.org/index.php/Sysctl#Security

$ECHO "1" > /proc/sys/kernel/kptr_restrict

# http://www.netfilter.org/documentation/HOWTO/es/packet-filtering-HOWTO-7.html

# Anti-flooding o inundación de tramas SYN."
$IPTABLES -N syn-flood
$IPTABLES -A INPUT -i $RED_EXT -p tcp --syn -j syn-flood
#$IPTABLES -A LOGGING -m limit --limit 1/s --limit-burst 4 -j LOG --log-prefix "Anti-Flood:" --log-level 4
$IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A syn-flood -j DROP

# Por nivel del kernel
$ECHO "1" > /proc/sys/net/ipv4/tcp_syncookies
$ECHO "4096" > /proc/sys/net/ipv4/tcp_max_syn_backlog
$ECHO "5" > /proc/sys/net/ipv4/tcp_syn_retries
$ECHO "2" > /proc/sys/net/ipv4/tcp_synack_retries

# Anti-DDOS ataque
# via: http://www.theperfectarts.com/2012/05/ddos-attack-solution-part-2/#.UQ06hOk2sr0
#$IPTABLES -A INPUT -p tcp –-tcp-flags ALL NONE -j DROP
#$IPTABLES -A INPUT -p tcp –-tcp-flags SYN,FIN SYN,FIN -j DROP
#$IPTABLES -A INPUT -p tcp –-tcp-flags SYN,RST SYN,RST -j DROP
#$IPTABLES -A INPUT -p tcp –-tcp-flags FIN,RST FIN,RST -j DROP
#$IPTABLES -A INPUT -p tcp –-tcp-flags ACK,FIN FIN -j DROP
#$IPTABLES -A INPUT -p tcp –-tcp-flags ACK,PSH PSH -j DROP
#$IPTABLES -A INPUT -p tcp –-tcp-flags ACK,URG URG -j DROP


# Guardar los accesos con paquetes fragmentados, recurso utilizado para tirar
# servidores y otras maldades (bug en Apache por ejemplo)
$IPTABLES -A INPUT -i $RED_EXT -f -j LOG --log-prefix "Fragmento!"
$IPTABLES -A INPUT -i $RED_EXT -f -j DROP


# Optimizaciones TWEAK extras a nivel del kernel

# Ganancia de 4 bytes en velocidad, al deshabilitar el time stamps sobre la red
# $ECHO "1" > /proc/sys/net/ipv4/tcp_timestamps

# Se volvio habilitr, porque da problemas con la red FB
$ECHO "0" > /proc/sys/net/ipv4/tcp_timestamps

# Aumentamos el tamaño del buffer, para mi caso una 4 megabytes la conexion
# 4194304 bytes = 4Mbytes
#$ECHO "67108864" > /proc/sys/net/core/wmem_max
#$ECHO "67108864" > /proc/sys/net/core/rmem_max


# El siguiente ejemplo bloquea todo el tráfico de lunes a viernes por la noche.
# via: http://delanover.com/2012/06/21/iptables-filter/
# $IPTABLES -A OUTPUT -s 0/0 -m time –timestart 00:00 –timestop 08:00 –weekdays Mon,Tue,Wed,Thu,Fri -j DROP

# Drop INVALID

#$IPTABLES -A LOGGING -m conntrack --ctstate INVALID -j LOG --log-prefix "IPTables Packet Entrantes Invalidos:" --log-level 7
$IPTABLES -A INPUT -m conntrack --ctstate INVALID -j LOG --log-prefix "PAQ-INVALIDOS:" --log-level 4 --log-tcp-options --log-ip-options
$IPTABLES -A INPUT -m conntrack --ctstate INVALID -j DROP
$IPTABLES -A OUTPUT -m conntrack --ctstate INVALID -j DROP


#$IPTABLES -I INPUT -m geoip --src-cc PS -m limit --limit 5/minute -j LOG --log-level 7 --log-prefix 'GeoIP FW Ban PS:'
#$IPTABLES -I INPUT -m geoip --src-cc PS -j DROP


# Logeo de paquetes caidos
# via: http://nexolinux.com/comandos-mas-usados-para-gestionar-iptables
$IPTABLES -N LOGGING
$IPTABLES -A INPUT -j LOGGING
$IPTABLES -A LOGGING -m limit --limit 2/minute -j LOG --log-prefix "PAQUETS RECHAZADOS: " --log-level 4
$IPTABLES -A LOGGING -j DROP

#Mensajes del kernel, para ver mas informacion
$ECHO "6" > /proc/sys/kernel/printk

# Optimizacion para no usar la particion if swap > 2GiB
$ECHO "0" > /proc/sys/vm/swappiness
$ECHO "50" > /proc/sys/vm/dirty_background_ratio
$ECHO "80" > /proc/sys/vm/dirty_ratio


# Evita los frizados pequenos del sistema

$ECHO "4194304" > /proc/sys/vm/dirty_background_bytes
$ECHO "4194304" > /proc/sys/vm/dirty_bytes


# Hace uso muy bajo del archivo swap

$ECHO "1" > /proc/sys/vm/swappiness

# Buffer para un DDos, establecido a 1G en bytes
$ECHO "1048560" > /proc/sys/net/core/rmem_default
#/usr/sbin/hping3 -p 80 -S --flood 172.16.1.40

# Habilita el uso del magic key o sysrq
$ECHO "1" > /proc/sys/kernel/sysrq

# Incremento del hugepages
# mas info: https://wiki.archlinux.org/index.php/KVM
$ECHO "1060" > /proc/sys/vm/nr_hugepages



## Addons, bloquea el scan de nmap
## C0ded by Liyan Oz
## Hay que habilitar ip_forward para que esto funcione

$IPTABLES -t filter -A INPUT -p TCP -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -t filter -A INPUT -p UDP -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -t filter -A INPUT -p ICMP -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -t filter -A INPUT -m state --state INVALID -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j LOG --log-prefix "FIN: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j LOG --log-prefix "PSH: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ACK,URG URG -j LOG --log-prefix "URG: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "XMAS scan: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "NULL scan: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-prefix "pscan: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG --log-prefix "pscan 2: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j LOG --log-prefix "pscan 2: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j LOG --log-prefix "SYNFIN-SCAN: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,FIN -j LOG --log-prefix "NMAP-XMAS-SCAN: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,FIN -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL FIN -j LOG --log-prefix "FIN-SCAN: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL FIN -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,SYN,FIN -j LOG --log-prefix "NMAP-ID: "
$IPTABLES -t filter -A INPUT -p tcp --tcp-flags ALL URG,PSH,SYN,FIN -j DROP

$IPTABLES -t filter -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "SYN-RST: "


# Actualizar hora por si acaso.
# /usr/sbin/ntpdate -s ntp.ubuntu.com

echo " ##########################"
echo " ## IPTABLES CONFIGURADO ##"
echo " ##########################"
echo " --------------------------"
echo " ##########################"
echo " ##    Estado generar:   ##"
echo " ## sudo iptables -L -nv ##"
echo " ##########################"
# Fin del script
Muchas gracias a los dos luego echaré un vistazo detalladamente
3 respuestas