[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"