[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Firewalling rules (Reglas de firewall)
Ok, estas son las reglas de firewall prometidas (un poco tarde porque
estaba atendiendo algo urgente primero).
Incluyo tambien un script para usar en /etc/rc.d/init.d/
Las reglas de firewalling estan en rc.firewall.redescolar, y el script
para init.d es "firewall"
Si quieren mas informacion, vayan a la pagina de David Ranch y bajense
el documento TrinityOS (Es probablemente necesario, ya que este lo base
en el de el y no en el mio, porque es mas legible, aunque parezca
increible), en
http://www.ecst.csuchico.edu/~dranch/LINUX/index-linux.html
\\\\\
Ok, these are the promised firewall rules (i was somewhat busy this
morning).
Included is a script for using in /etc/rc.d/init.d/
The firewalling rules are in "rc.firewall.redescolar", and the starter
script is "firewall".
I suggest going to the homepage of David Ranch and downloading the
TrinityOS document, it has more explanations about it
----------------------------------
Jaime Herazo B.
Colegio Cristiano J. Vender Murphy
----------------------------------
Now, to get caffeine!! :)
#!/bin/sh
#
# chkconfig: 2345 11 89
#
# description: Carga la firewall
#
# processname: firewall
# pidfile: /var/run/firewall.pid
# config: /etc/rc.d/rc.firewall
# probe: true
# Source function library.
. /etc/rc.d/init.d/functions
# Chequear que la red este activada (runlevels 2 en adelante)
[ "XXXX${NETWORKING}" = "XXXXno" ] && exit 0
[ -x /sbin/ifconfig ] || exit 0
# Atender los distintos casos en que se llame el script
case "$1" in
start)
/etc/rc.d/rc.firewall
;;
stop)
echo -e "\nEliminando firewall y colocando las politicas por defecto en ACCEPT\n"
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P output ACCEPT
/sbin/ipchains -P forward ACCEPT
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
;;
restart)
$0 stop
$0 start
;;
status)
/sbin/ipchains -L
;;
*)
echo "Usage: firewall {start|stop|status}"
exit 1
esac
exit 0
#!/bin/sh
# rc.firewall para redescolar
# Basada en el script rc.firewall-3.58 de David Ranch ubicado en
# www.ecst.csuchico.edu/~dranch/LINUX/TrinityOS-files/rc.firewall-trinityos
#********************************************************************
# Inicio
#********************************************************************
echo -e "\n\nCargando la Firewall"
echo "----------------------------------------------------------------------"
#--------------------------------------------------------------------
# Variables
#--------------------------------------------------------------------
# The loopback interface and address
#
LOOPBACKIF="lo"
LOOPBACKIP="127.0.0.1"
# Interface externa
#
# Asumimos que la interface hacia afuera es ppp0, porque es la mas comun
#
EXTIF="ppp0"
echo Interface Externa: $EXTIF
# Direccion IP de la interface externa
EXTIP=`/sbin/ifconfig | grep -A 4 $EXTIF | awk '/inet/ { print $2 } ' | sed -e s/addr://`
if [ "$EXTIP" = '' ]; then
echo "No se pudo determinar la direccion IP. "
exit 1
fi
echo IP externa: $EXTIP
# Direccion de broadcast de la red externa
EXTBROAD=`/sbin/ifconfig | grep -A 1 $EXTIF | awk '/Bcast/ { print $3 }' | sed -e s/Bcast://`
echo Broadcast externa: $EXTBROAD
# Gateway externa
#
EXTGW=`/sbin/route -n | grep -A 4 UG | awk '{ print $2}'`
echo Default GW: $EXTGW
echo " --- "
# interface interna
INTIF="eth0"
echo Interface interna: $INTIF
# Direccion IP de la interface interna
INTIP="192.168.1.1"
echo IP interna: $INTIP
# Red de la interface interna
INTLAN="192.168.1.0/24"
echo Red de la interface interna: $INTLAN
echo " --- "
# Mascara IP equivalente a "todo" (universo)
UNIVERSE="0.0.0.0/0"
# Mascara IP para broadcast
BROADCAST="255.255.255.255"
# Puertos altos no privilegiados
UNPRIVPORTS="1024:65535"
# Puertos que usa X
XWINDOWS_PORTS="6000:6010"
##### En la firewall original de David Ranch mencionan servidores DNS esclavos
## Dejo este trozo sin modificar
# The TCP/IP address of your slave DNS servers (if any).
# This is OPTIONAL!
#
# Disabled by default.
#SECONDARYDNS="10.200.200.69"
#echo Secondary DNS IP: $SECONDARYDNS
######### Fin de este trozo
# Habilitar logging (a syslog). Si se quiere desactivar, descomentar la
# siguiente linea y comentar la posterior
# LOGGING=" "
LOGGING="-l"
echo " --- "
echo "----------------------------------------------------------------------"
###### Debugging: Esto es del script original. Esta seccion crea un archivo en
# tmp con las variables que se acaban de definir, importante si uno usa ppp y
# hay problemas. Seccion sin modificar
#--------------------------------------------------------------------
# Debugging Section
#--------------------------------------------------------------------
# If you are having problems with the firewall, uncomment the lines
# below and then re-run the firewall to make sure that the firewall
# is not giving any errors, etc. The output of this debugging
# script will be in a file called /tmp/rc.firewall.dump
#--------------------------------------------------------------------
#
#echo " - Debugging."
#echo Loopback IP: $LOOPBACKIP > /tmp/rc.firewall.dump
#echo Loopback interface name: $LOOPBACKIF >> /tmp/rc.firewall.dump
#echo Internal interface name: $INTIF >> /tmp/rc.firewall.dump
#echo Internal interface IP: $INTIP >> /tmp/rc.firewall.dump
#echo Internal LAN address: $INTLAN >> /tmp/rc.firewall.dump
#echo ----------------------------------------------------- >> /tmp/rc.firewall.dump
#echo External interface name: $EXTIF >> /tmp/rc.firewall.dump
#echo External interface IP: $EXTIP >> /tmp/rc.firewall.dump
#echo External interface broadcast IP: $EXTBROAD >> /tmp/rc.firewall.dump
#echo External interface default gateway: $EXTGW >> /tmp/rc.firewall.dump
#echo ----------------------------------------------------- >> /tmp/rc.firewall.dump
#echo External secondary DNS: $SECONDARYDNS >> /tmp/rc.firewall.dump
#echo External secured host: $SECUREHOST >> /tmp/rc.firewall.dump
#--------------------------------------------------------------------
# General
#--------------------------------------------------------------------
# Performs general processing such as setting the multicast route
# and DHCP address hacking.
#
### Este ruleset activa una ruta de multicasting. Esto puede ser util, pero
# necesito leer mas al respecto. Lo dejo sin modificar
# Multicast is a powerful, yet seldom used aspect of TCP/IP for multimedia
# data. Though it isn't used much now (because most ISPs don't enable multicast
# on their networks, it will be very common in a few more years. Check out
# www.mbone.com for more detail.
#
# Adding this feature is OPTIONAL.
#
# Disabled by default.
#echo " - Adding multicast route."
#/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev $EXTIF
# Desactivar ataques de IP Spoofing
#
# Activa unas caracteristicas del kernel que impiden los ataques en que se
# manda un paquete por una interface diciendo que viene de otra
#
#
echo " - Disabling IP Spoofing attacks."
for file in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo "2" > $file
done
# habilitar caracteristicas especiales para direcciones ip dinamicas
#
echo " - Enabling dynamic TCP/IP address hacking."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
##### Timeouts (tiempo para que una conexion inactiva se cierre)
# Dejo los comentarios intactos puesto que esto es variable y el caso
# predeterminado suele ser suficiente.
#--------------------------------------------------------------------
# Masquerading Timeouts
#--------------------------------------------------------------------
# Set timeout values for masq sessions (seconds).
#
# Item #1 - 2 hrs timeout for TCP session timeouts
# Item #2 - 10 sec timeout for traffic after the TCP/IP "FIN" packet is received
# Item #3 - 60 sec timeout for UDP traffic
#
# Note to ICQ users: You might want to set the UDP timeout to something
# like 160.
#
echo " - Changing IP masquerading timeouts."
/sbin/ipchains -M -S 7200 10 60
###### Modulos de Masquerading
# Los moduloes del kernel que permiten usar servicios especiales, como irc,
# realaudio, quake, etc.
echo " - Loading masquerading modules."
#/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_ftp
#/sbin/modprobe ip_masq_irc
#/sbin/modprobe ip_masq_quake
#/sbin/modprobe ip_masq_raudio
#/sbin/modprobe ip_masq_vdolive
#--------------------------------------------------------------------
# Politicas por defecto
#--------------------------------------------------------------------
# Colocamos por defecto REJECT y cancelamos cualquier regla anterior
#--------------------------------------------------------------------
# El hecho que por defecto se coloque REJECT implica que a lo que se le permite
# pasar por la firewall solo sea lo que abrimos explicitamente, y lo demas se
# bloquee.
#
echo " - Eliminando reglas ya cargadas"
# Eliminamos reglas cargadas
#
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
echo " - Politica por defecto es REJECT"
/sbin/ipchains -P input REJECT
/sbin/ipchains -P output REJECT
/sbin/ipchains -P forward REJECT
#********************************************************************
# Reglas de entrada
#********************************************************************
echo "----------------------------------------------------------------------"
echo "Reglas de entrada:"
#--------------------------------------------------------------------
# Trafico entrante de la red interna
#--------------------------------------------------------------------
# Estas reglas controlan el trafico de entrada en la LAN interna.
# Por defecto esta activado, pero se puede cambiar si se necesita.
#--------------------------------------------------------------------
echo " - Filtros de entrada de la red interna"
# Servidor DHCP
#
# Si este es un servidor DHCP, esto es necesario.
echo " Servidor DHCPd "
/sbin/ipchains -A input -j ACCEPT -i $INTIF -p udp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps
/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps
#--------------------------------------------------------------------
# Trafico entrante de la interface externa
#--------------------------------------------------------------------
# Estas reglas regulan el trafico entrante desde la interface externa
#--------------------------------------------------------------------
#
echo " - Filtros de entrada en la interface externa"
# FTP: Habilitar la maquina como servidor FTP para
#
# Deshabilitado por defecto, abrir si es necesario
# echo " Servidor FTP"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ftp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ftp-data
# HTTP: Habilitar la maquina como servidor web
#
# Deshabilitado por defecto, abrir si es necesario
# echo " Servidor web"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP http
# ICMP: Habilitar ICMP
#
# NOTA: Si se deshabilita ICMP puede que haya servicios que funcionen mal
#
/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP
# NNTP: Habilitar la maquina como servidor de News
#
# Deshabilitado por defecto, abrir si es necesario
# echo " Servidor de news"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP nntp
# NTP: Si se quiere usar la maquina para sincronizar los relojes de otras.
# Con muchas maquinas esto es util (sobre todo si no es compatible Y2K)
#
# Deshabilitado por defecto, abrir si es necesario
# echo " Servidor de hora"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ntp
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP ntp
# TELNET: Habilitar la maquina como servidor de telnet
#
# NOTA: Esto no es recomendable. Es mejor usar SSH
#
# Deshabilitado por defecto, abrir si es necesario
# echo " Servidor de telnet"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP telnet
# SSH server: Habilitar la maquina como servidor de SSH
# for SSH access.
#
# Deshabilitado por defecto, abrir si es necesario
# echo " Servidor de SSH"
#/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ssh
#--------------------------------------------------------------------
# Rechazar cosas especificas
#--------------------------------------------------------------------
# Estas son algunas cosas especificas que deseamos desactivar
#--------------------------------------------------------------------
echo " - Rechazar entradas especificas"
# Paquetes desde la interface externa que dicen ser de la red interna. Anotar.
/sbin/ipchains -A input -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE $LOGGING
# NFS: Rechazar trafico de NFS hacia internet.
#
# NOTE: NFS es un riesgo de seguridad muy grande para activarlo en internet
#
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 2049
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 2049 -d $EXTIP
# SMB: Rechazar trafico de SMB por la interface externa
# No queremos que monten discos a traves de internet, sobre todo siendo el
# hecho de que hay gente buscandolos por ser una de las mas grandes fallas
# de seguridad en windows
#
#
echo " - Rechazamos trafico de SMB"
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 137
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 138
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 139
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 137 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 138 -d $EXTIP
/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 139 -d $EXTIP
#--------------------------------------------------------------------
# Trafico de entrada
#--------------------------------------------------------------------
# Trafico de entrada permitido (para servicios publicos)
#--------------------------------------------------------------------
echo " - Habilitando servicios publicos"
# AUTH: Protocolo de autenticacion. Es mejor desabilitarlo en /etc/inetd.conf
# Lo permitimos porque hay clientes que no pueden soportar un rechazo de
# solicitudes de AUTH
#
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE auth
# BOOTP/DHCP: Rechazar trafico BOOTP/DHCP sin un destino autorizado
# Esta es la primera de muchas reglas redundantes, colocadas en pos de la
# paranoia :)
#
/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE bootpc
# DNS: Servidor DNS. Si la maquina es un servidor DNS esto debe ser habilitado
#
# El autor original recomienda asegurar mas el servidor DNS. Para eso es mejor
# leer el documento de TrinityOS
#
# Deshabilitado por defecto
# echo " Servidor DNS"
#/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE domain
#/sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $UNIVERSE domain
# RIP: Deshabilitar trafico de RIP (protocolo de enrutamiento)
#
# Deshabilitado por defecto
#/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE -d $UNIVERSE route
# SMTP: Habilitar SMTP. Si la maquina es servidor esto es necesario
#
# Deshabilitado por defecto
# echo " Servidor SMTP"
#/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $EXTIP smtp
# SQUID Proxy
#
# Si usan squid como caching proxy, estas reglas redireccionan todo el trafico
# de web al puerto 3128 (el puerto por defecto de squid); de esa manera, si se
# usa squidguard, squidblock o algo en ese estilo no se podria desactivar
# simplemente desactivando el proxy, ademas de hacer que funcione
# transparentemente.
#
# Deshabilitado por defecto
#echo " SQUID transparent proxy"
#/sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -p tcp -d $LOOPBACKIP/32 www
#/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $INTLAN -d $INTIP/32 www
#/sbin/ipchains -A input -j REDIRECT 3128 -i $INTIF -p tcp -s $INTLAN -d $INTLAN www $LOGGING
################ Esto es un ejemplo de como bloquear dominios especificos
# usando ipchains. Sin modificar del original
#--------------------------------------------------------------------
# Specific Input Rejections from ANY interface
#--------------------------------------------------------------------
# These rulesets reject specific traffic that you do not want out of
# the system.
#--------------------------------------------------------------------
#echo " - Reject traffic for specific domains."
#Do not allow ANY internal hosts to be able to reach the following sites:
#
#Disabled by default.
#The Doubleclick example will filter ALL types of traffic to the given
# class-C networks including WWW, SMTP(email, etc traffic. If you
# want a slightly less restrictive example, see the AOL example.
#
#Doubleclick.net and .com is reknown for their WWW ad banners
#
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 63.160.54.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 128.11.92.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.206.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.207.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.208.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.210.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 204.178.112.160/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 204.253.104.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.10.202.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.203.243.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.211.225.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.228.86.0/24
#/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 209.67.38.0/24
#AOL.com is reknown for their users sending SPAM to millions of people on
# the Inet. Though you might want to filter email from them, you
# might want to still be able to go look at some of their their
# WWW pages. This example ONLY filters EMAIL and nothing else.
#
#/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE -d 152.163.159.0/24 25
#/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE -d 205.188.157.0/24 25
# Habilitar acceso a internet de la red interna
# ------------------------------------------------
# Esto esta puesto al final para que ocurra despues de todos los recjects
# anteriores
#
/sbin/ipchains -A input -j ACCEPT -i $INTIF -s $INTLAN -d $UNIVERSE
# Si no se activa la interface loopback hay problemas
/sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE
# PUERTOS ALTOS
#
# habilitar el uso de los puertos altos
#
#
echo " - Habilitar el trafico de respuesta en los puertos altos no privilegiados"
/sbin/ipchains -A input -j ACCEPT ! -y -p tcp -s $UNIVERSE -d $EXTIP $UNPRIVPORTS
/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE ftp-data -d $EXTIP $UNPRIVPORTS
/sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $EXTIP $UNPRIVPORTS
#--------------------------------------------------------------------
# Regla final (Denegar cualquier otra cosa)
#--------------------------------------------------------------------
#
echo " - Regla final (Denegar lo demas)"
# Cualquier otra cosa no habilitada hasta este punto es denegada y anotada
/sbin/ipchains -A input -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING
#********************************************************************
# Reglas de salida
#********************************************************************
echo "----------------------------------------------------------------------"
echo "Reglas de salida:"
#--------------------------------------------------------------------
# Trafico saliente de la red interna
#--------------------------------------------------------------------
# Reglas para controlar el trafico de salida de la red interna, en este caso no
# hay muchas restricciones
#--------------------------------------------------------------------
echo " - Colocando los filtros de salida de la red interna"
# Interface local, carta blanca (salida hacia cualquier lado es valido
/sbin/ipchains -A output -j ACCEPT -i $INTIF -s $UNIVERSE -d $INTLAN
# Interface loopback
/sbin/ipchains -A output -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE
# DHCP: Si la maquina es servidor DHCP es necesario activar esto.
#
# Desactivado por defecto
# echo " Servidor DHCPd"
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p udp -s $INTIP/32 bootps -d $BROADCAST/0 bootpc
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 bootps -d $BROADCAST/0 bootpc
# HTTP: Esto es un ejemplo de permitir acceso web a la red interna sin
# permitirlo al exterior
#
# Desactivado por defecto
# echo " Servidor web interno"
#/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 http -d $INTLAN
#--------------------------------------------------------------------
# Trafico saliente en la interface externa
#--------------------------------------------------------------------
echo " - Filtros de salida de la interface externa"
# FTP: Habilitar trafico FTP si la maquina es servidor
#
# Desactivado por defecto
# echo " Servidor FTP"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $UNIVERSE
# HTTP: Habilitar trafico web si la maquina es servidor
#
# Desactivado por defecto
# echo " Servidor web"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP http -d $UNIVERSE
# NTP: Habilitar trafico NTP (de hora) si la maquina es servidor
#
# Desactivado por defecto
# echo " Servidor de hora"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ntp -d $UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p udp -s $EXTIP ntp -d $UNIVERSE
# TELNET: Habilitar telnet sobre internet (no recomendado)
#
# Desactivado por defecto
# echo " Servidor de telnet"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $UNIVERSE
# SSH: permitir trafico de salida SSH
#
# Desactivado por defecto
# echo " Servidor SSH"
#/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $UNIVERSE
#--------------------------------------------------------------------
# Trafico de salida de todas las interfaces
#--------------------------------------------------------------------
# Se habilita el trafico comun a todas las interfaces (servicios publicos)
#--------------------------------------------------------------------
echo " - Filtros de salida en todas las interfaces"
# AUTH: Habilitar solicitudes de ident (desactivar en inetd.conf)
#
/sbin/ipchains -A output -j ACCEPT -p tcp -s $UNIVERSE auth -d $UNIVERSE
# DNS: Primordial para un servidor DNS
#
# Desactivado por defecto
# echo " Servidor DNS"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP domain -d $UNIVERSE
#/sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP domain -d $UNIVERSE
# ICMP: Permitir trafico ICMP (necesario para algunos servicios)
#
/sbin/ipchains -A output -j ACCEPT -p icmp -s $UNIVERSE -d $UNIVERSE
# NNTP: Habilitar trafico de News al exterior
#
# Desactivado por defecto
# echo " Servidor de News"
#/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP nntp -d $UNIVERSE
# SMTP: permitir trafico SMTP de salida
#
/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP smtp -d $UNIVERSE
#--------------------------------------------------------------------
# Rechazar salidas especificas
#--------------------------------------------------------------------
# Rechazar salidas especificas del sistema
#--------------------------------------------------------------------
echo " - Rechazar salidas especificas"
# Rechazar trafico saliente a la red interna desde la interface externa.
# Anotar.
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d $INTLAN $LOGGING
# Trafico desde la red externa proveniente de la red interna. Anotar
/sbin/ipchains -A output -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE $LOGGING
# SMB
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 137 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 138 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 139 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 137 -d $UNIVERSE 137 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 138 -d $UNIVERSE 138 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 139 -d $UNIVERSE 139 $LOGGING
# RPC.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE sunrpc $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP sunrpc -d $UNIVERSE $LOGGING
# Mountd.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 635 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 635 -d $UNIVERSE $LOGGING
# PPTP.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 1723 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 1723 $LOGGING
# Remote Winsock.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 1745 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 1745 $LOGGING
# NFS.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 2049 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 2049 -d $UNIVERSE $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 2049 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 2049 -d $UNIVERSE $LOGGING
# PcAnywhere.
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 5631 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 5631 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 5632 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 5632 $LOGGING
# Xwindows.
#
# Este detalle debe ser verificado, porque esto puede variar si en la
# distribucion fue modificado. Por defecto tiene los de Redhat (6000-6007).
#
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE $XWINDOWS_PORTS $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE $XWINDOWS_PORTS $LOGGING
# NetBus.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 12345 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 12346 $LOGGING
# NetBus Pro.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 20034 $LOGGING
# BackOrifice
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE/0 31337 $LOGGING
# Win Crash Trojan.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 5742 $LOGGING
# Socket De Troye.
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 30303 $LOGGING
# Unknown Trojan Horse (Master's Paradise [CHR])
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 40421 $LOGGING
# Trinoo UDP flooder - Este puerto puede cambiar algun dia
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 27665 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 27444 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 31335 -d $UNIVERSE/0 $LOGGING
#IPSEC VPNs
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 500 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 500 $LOGGING
# Shaft distributed flooder - Este puerto puede cambiar algun dia
/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 20432 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 18753 -d $UNIVERSE/0 $LOGGING
/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 20433 -d $UNIVERSE/0 $LOGGING
#--------------------------------------------------------------------
# Permitir los puertos altos para trafico de salida
#
echo " - Permitiendo los puertos altos para trafico de salida"
/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP $UNPRIVPORTS -d $UNIVERSE
/sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP $UNPRIVPORTS -d $UNIVERSE
#--------------------------------------------------------------------
# Regla final (coger todo lo demas)
#--------------------------------------------------------------------
echo " - Regla final (coger todo lo demas)"
# Cualquier otra cosa es negada y anotada.
#
/sbin/ipchains -A output -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING
#********************************************************************
# Reglas de forwarding
#********************************************************************
#
echo "----------------------------------------------------------------------"
echo "Reglas de forwarding:"
#--------------------------------------------------------------------
# Con estas reglas permitimos el masquerading
#--------------------------------------------------------------------
# Este primera regla es necesaria si se usa Diald, para habilitar la interface
# fantasma sl0
# Deshabilitado por defecto
#
#/sbin/ipchains -A forward -j MASQ -i sl0 -s $INTLAN -d $UNIVERSE/0
#--------------------------------------------------------------------
# Habilitar forwarding y masquerading con la red interna
#--------------------------------------------------------------------
# Habilitar ip frowarding en el kernel (con /proc)
# Redhat usa el archivo /etc/sysconfig/network en la linea que dice
# FORWARD_IPV4 colocandolo a true
#
echo " - Habilitar ip forwarding"
echo "1" > /proc/sys/net/ipv4/ip_forward
# Masquerading desde la red local, interface local a donde sea
#
echo " - Habilitar IP Masquerading en la red interna."
/sbin/ipchains -A forward -j MASQ -i $EXTIF -s $INTLAN -d $UNIVERSE
# Habilitar "Always Defragment" para sistemas con masquerading
#
echo " - Habilitando IP Always Defragment para la red interna"
echo "1" > /proc/sys/net/ipv4/ip_always_defrag
# Cualquier otro intento de forwarding es denegado y anotado
#
/sbin/ipchains -A forward -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING
#********************************************************************
# Final!!!
#********************************************************************
echo "----------------------------------------------------------------------"
echo -e "Firewall implementada.\n\n"