#!/bin/bash # rc.firewall v2.1 by loop || http://foc.neoartis.org # Colaboradores: # Orko # # Script para filtrar el acceso a distintos servicios (los mas comunes), dejando tan solo # acceso a la red local y, en algunos casos (vnc, webmin), tambien a IPs concretas, # definibles. # # TODO # - Ajustar variable de IP's permitidas para no tener que ir cambiando los apartados, que # baste con especificar todas las IP's permitidas en una sola variable PERMIT. Comprobacion # de si se espefican o no, para no tener que comentar nada por abajo. # - Ajustar variable de red para que se puedan especificar subredes sin tener que tocar nada # mas que la(s) variable(s). Mismo mecanismo que el anterior. :) # - Terminar TOS, LOGGING # VARIABLES - Cambialas si es necesario! LOOPBACK=127.0.0.1 RED=192.168.1.0/24 ALL=0.0.0.0/0 # Especifica tres IPs permitidas para los servicios webmin y vnc. Si no especificas todas, # comenta las lineas en la parte de script que hacen referencia al webmin y al vnc. Si no # filtras el webmin (webmin=0) ni el vnc, olvidate de esto. PERMIT1= PERMIT2= PERMIT3= # Elige ipchains (kernel 2.2) o iptables (kernel 2.4) firewall=iptables # NAT - Masquerade # 0 = off ; 1 = on nat=0 # ICMP # 0 = off ; 1 = on icmp_echo=0 # Desactivar respuesta a los ICMP's de tipo 'echo' icmp_broad=1 # Desactivar la devolucion del ping de broadcast # UDP # 0 = off; 1 = on udp_juegos=0 # Mejorar la compatibilidad con algunos juegos de Internet, pero a # expensas de la seguridad. Activa esta opcion SOLO si es # ESTRICTAMENTE necesario # LOGGING [NO IMPLEMENTADO AUN] # 0 = off; 1 = on logging=0 # Activar logging a nivel de kernel. Debes tener el kernel compilado # con dicho soporte # TOS (Type Of Service) [NO IMPLEMENTADO AUN] # 0 = off; 1 = on # # Habilita esta opcion para optimizar el rendimiento de los servicios ftp, ssh y www. # Debes tener el kernel compilado con dicho soporte. # # Para cambiar los flags de los tipos de servicios que van por defecto en este script # sigue la tabla siguiente y modifica la que corresponda en el codigo del script mas # abajo. No se recomienda a menos que sepas lo que haces. ;P # # ipchains iptables # 0x01 0x10 = Retraso Minimo = 16 # 0x01 0x08 = Maximo Rendimiento = 8 # 0x01 0x04 = Maxima Fiabilidad = 4 # 0x01 0x02 = Minimo Coste = 2 # 0x01 0x00 = Servicio Normal = 0 # tos=0 # REGLAS DE FILTRADO DE PUERTOS # 0 = off ; 1 = on sendmail=0 # SMTP (25) sendmail_submission=1 # SMTP (587) bind=1 # NAMESERVER (53) rndc=1 # RNDC (953) dhcp=1 # BOOTPS (67) apache=0 # HTTP (80) squid=1 # PROXY CACHE (8080) mysql=1 # MYSQL (3306) x11=0 # X11 EXPORT (6000) kdm=0 # KDM EXPORT (1024) impresora=0 # SPOOLER (515) cups=0 # CUPS (631) samba=1 # NETBIOS (137-139) snmp=0 # SNMP/TRAP (161-162) webmin=1 # WEBMIN (10000) pop=0 # POP3 (110) imap=0 # IMAP (143) vnc=1 # VNC (5800-5900) ntpd=1 # NTPD (123) ntpserver= # especifica la IP del servidor de hora que uses para # evitar que dicha IP entre en el filtro anterior, si # esta activado (ntpd=1) ############################################################################### # FINAL CONFIG - No toques mas # ############################################################################### if [[ $firewall == ipchains ]]; then ipchains=`which ipchains` else iptables=`which iptables` fi if [[ $logging == "1" ]]; then if [[ $firewall == ipchains ]]; then log="-l" else log=--log-level warn --log-prefix firewall fi else log=" " fi case "$1" in start) echo "Lanzando Firewall..." # Limpieza de reglas if [[ $firewall == ipchains ]]; then $ipchains -F input $ipchains -F output $ipchains -F forward else $iptables -F $iptables -X $iptables -Z if [[ $nat == 1 ]]; then $iptables -t nat -F $iptables -t nat -X $iptables -t nat -Z fi fi # # PROTECCIONES VARIAS # # Proteccion contra IP Spoof if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then for f in /proc/sys/net/ipv4/conf/*/rp_filter do echo "1" > $f done else echo echo "PROBLEMAS ESTABLECIENDO LA PROTECCION IP SPOOF!" echo fi # Confundir el OS fingerprinting del NMAP /bin/echo "255" > /proc/sys/net/ipv4/ip_default_ttl # Proteccion contra TCP SYN Cookies [ -f /proc/sys/net/ipv4/tcp_syncookies ] && /bin/echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Evitando la IP Fragmentation [ -f /proc/sys/net/ipv4/ip_always_defrag ] && /bin/echo 1 > /proc/sys/net/ipv4/ip_always_defrag # ICMP # Desactivar respuesta a los ICMP's de tipo 'echo' if [[ $icmp_echo == 1 ]]; then echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all fi # Evitando la devolucion del ping de broadcast if [[ $icmp_broad == 1 ]]; then [ -f /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ] && /bin/echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts fi # Desactivar ICMP Re-directs if [[ $icmp_noredirect == 1 ]]; then for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo "0" > $file done fi # Activar proteccion contra malas respuestas ICMP if [[ $icmp_bogus == 1 ]]; then echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses fi # Desactivar enrutado IP for i in /proc/sys/net/ipv4/conf/*/accept_source_route do /bin/echo 0 > $i done # Loguear spoofed packets, source routed packets (SRP) y redirect packets for i in /proc/sys/net/ipv4/conf/*/log_martians do /bin/echo 1 > $i done # Denegar paquetes de Internet que dicen provenir de nuestro interface loopback if [[ $firewall == ipchains ]]; then $ipchains -A input -j REJECT -p all -s localhost -i eth0 $log else $iptables -A INPUT -p all -s localhost -i eth0 -j DROP $log fi # # MASQUERADE / NAT # if [[ $nat == 1 ]]; then if [[ $firewall == ipchains ]]; then echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/depmod -a $ipchains -P forward DENY $ipchains -A forward -j MASQ -s $RED -d $ALL else echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/depmod -a $iptables -t nat -A POSTROUTING -s $RED -o eth0 -j MASQUERADE fi fi # # UDP Juegos: Mejora la compatibilidad con algunos juegos de Internet, pero a expensas de # la seguridad. Debe de ser activado solo si es estrictamente necesario. # if [[ $udp_juegos == 1 ]]; then echo "1" > /proc/sys/net/ipv4/ip_masq_udp_dloose else echo "0" > /proc/sys/net/ipv4/ip_masq_udp_dloose fi # # TOS: establece los flags de los tipos de servicios para marcar las prioridades # # ipchains iptables # 0x01 0x10 = Retraso Minimo = 16 # 0x01 0x08 = Maximo Rendimiento = 8 # 0x01 0x04 = Maxima Fiabilidad = 4 # 0x01 0x02 = Minimo Coste = 2 # 0x01 0x00 = Servicio Normal = 0 if [[ $tos == 1 ]]; then if [[ $firewall == ipchains ]]; then # minimo retraso $ipchains -A output -p TCP -d $ALL 21 -t 0x01 0x10 $ipchains -A output -p TCP -d $ALL 22 -t 0x01 0x10 $ipchains -A output -p TCP -d $ALL 80 -t 0x01 0x10 # maximo rendimiento $ipchains -A output -p TCP -d $ALL 20 -t 0x01 0x08 else # REVISAR ESTE APARTADO PARA IPTABLES, SEGURO QUE ESTA MAL ;PP # minimo retraso $iptables -I output -p tcp -m tos --tos 16 --dport 21 $iptables -I output -p tcp -m tos --tos 16 --sport 21 $iptables -I output -p tcp -m tos --tos 16 --dport 22 $iptables -I output -p tcp -m tos --tos 16 --sport 22 # maximo rendimiento $iptables -I output -p tcp -m tos --tos 8 --dport 20 fi fi # # FILTRADO DE PAQUETES # # sendmail solo para red local if [[ $sendmail == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 25 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 25 else $iptables -I INPUT -p tcp -s $ALL --dport 25 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 25 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 25 -j ACCEPT fi fi # sendmail submission solo para red local if [[ $sendmail_submission == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 587 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 587 else $iptables -I INPUT -p tcp -s $ALL --dport 587 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 587 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 587 -j ACCEPT fi fi # bind solo para red local if [[ $bind == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 53 $ipchains -A input -p udp -j ACCEPT -s $LOOPBACK -d $ALL 53 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 53 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 53 $ipchains -A input -p udp -j ACCEPT -s $RED -d $ALL 53 $ipchains -A input -p udp -j DENY -s $ALL -d $ALL 53 else $iptables -I INPUT -p tcp -s $ALL --dport 53 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 53 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 53 -j ACCEPT $iptables -I INPUT -p udp -s $ALL --dport 53 -j DROP $iptables -I INPUT -p udp -s $RED --dport 53 -j ACCEPT $iptables -I INPUT -p udp -s $LOOPBACK --dport 53 -j ACCEPT fi fi # rndc solo para local if [[ $rndc == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 953 $ipchains -A input -p udp -j ACCEPT -s $LOOPBACK -d $ALL 953 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 953 $ipchains -A input -p udp -j DENY -s $ALL -d $ALL 953 else $iptables -I INPUT -p tcp -s $ALL --dport 953 -j DROP $iptables -I INPUT -p tcp -s $LOOPBACK --dport 953 -j ACCEPT $iptables -I INPUT -p udp -s $ALL --dport 953 -j DROP $iptables -I INPUT -p udp -s $LOOPBACK --dport 953 -j ACCEPT fi fi # dhcp solo para red local if [[ $dhcp == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 67 $ipchains -A input -p udp -j ACCEPT -s $RED -d $ALL 67 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 67 $ipchains -A input -p udp -j DENY -s $ALL -d $ALL 67 else $iptables -I INPUT -p tcp -s $ALL --dport 67 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 67 -j ACCEPT $iptables -I INPUT -p udp -s $ALL --dport 67 -j DROP $iptables -I INPUT -p udp -s $RED --dport 67 -j ACCEPT fi fi # apache solo para red local if [[ $apache == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 80 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 80 else $iptables -I INPUT -p tcp -s $ALL --dport 80 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 80 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 80 -j ACCEPT fi fi # squid solo para red local if [[ $squid == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 8080 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 8080 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 8080 else $iptables -I INPUT -p tcp -s $ALL --dport 8080 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 8080 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 8080 -j ACCEPT fi fi # MySQL solo para red local if [[ $mysql == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 3306 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 3306 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 3306 else $iptables -I INPUT -p tcp -s $ALL --dport 3306 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 3306 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 3306 -j ACCEPT fi fi # X11 solo para local if [[ $x11 == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p udp -j DENY -s $ALL -d $ALL 6000 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 6000 else $iptables -I INPUT -p tcp -s $ALL --dport 6000 -j DROP $iptables -I INPUT -p tcp -s $LOOPBACK --dport 6000 -j ACCEPT $iptables -I INPUT -p udp -s $ALL --dport 6000 -j DROP $iptables -I INPUT -p udp -s $LOOPBACK --dport 6000 -j ACCEPT fi fi # KDM solo para local if [[ $kdm == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p udp -j DENY -s $ALL -d $ALL 1024 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 1024 else $iptables -I INPUT -p tcp -s $ALL --dport 1024 -j DROP $iptables -I INPUT -p tcp -s $LOOPBACK --dport 1024 -j ACCEPT $iptables -I INPUT -p udp -s $ALL --dport 1024 -j DROP $iptables -I INPUT -p udp -s $LOOPBACK --dport 1024 -j ACCEPT fi fi # impresora solo para red local if [[ $impresora == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 515 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 515 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 515 else $iptables -I INPUT -p tcp -s $ALL --dport 515 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 515 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 515 -j ACCEPT fi fi # cups solo para red local if [[ $cups == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 631 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 631 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 631 else $iptables -I INPUT -p tcp -s $ALL --dport 631 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 631 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 631 -j ACCEPT fi fi # samba solo para red local if [[ $samba == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 137:139 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 137:139 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 137:139 else $iptables -I INPUT -p tcp -s $ALL --dport 137:139 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 137:139 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 137:139 -j ACCEPT fi fi # SNMP solo para red local if [[ $snmp == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 161:162 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 161:161 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 161:162 $ipchains -A input -p udp -j ACCEPT -s $LOOPBACK -d $ALL 161:162 $ipchains -A input -p udp -j ACCEPT -s $RED -d $ALL 161:162 $ipchains -A input -p udp -j DENY -s $ALL -d $ALL 161:162 else $iptables -I INPUT -p tcp -s $ALL --dport 161:162 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 161:162 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 161:162 -j ACCEPT $iptables -I INPUT -p udp -s $ALL --dport 161:162 -j DROP $iptables -I INPUT -p udp -s $RED --dport 161:162 -j ACCEPT $iptables -I INPUT -p udp -s $LOOPBACK --dport 161:162 -j ACCEPT fi fi # webmin solo para red local y permitidos if [[ $webmin == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 10000 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT1 -d $ALL 10000 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT2 -d $ALL 10000 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT3 -d $ALL 10000 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 10000 else $iptables -I INPUT -p tcp -s $ALL --dport 10000 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 10000 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT1 --dport 10000 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT2 --dport 10000 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT3 --dport 10000 -j ACCEPT fi fi # POP3 solo para red local if [[ $pop == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 110 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 110 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 110 else $iptables -I INPUT -p tcp -s $ALL --dport 110 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 110 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 110 -j ACCEPT fi fi # IMAP solo para red local if [[ $imap == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 143 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 143 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 143 else $iptables -I INPUT -p tcp -s $ALL --dport 143 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 143 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 143 -j ACCEPT fi fi # VNC solo para red local y permitidos if [[ $vnc == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 5800 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 5800 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT1 -d $ALL 5800 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT2 -d $ALL 5800 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT3 -d $ALL 5800 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 5800 $ipchains -A input -p tcp -j ACCEPT -s $LOOPBACK -d $ALL 5900 $ipchains -A input -p tcp -j ACCEPT -s $RED -d $ALL 5900 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT1 -d $ALL 5900 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT2 -d $ALL 5900 $ipchains -A input -p tcp -j ACCEPT -s $PERMIT3 -d $ALL 5900 $ipchains -A input -p tcp -j DENY -s $ALL -d $ALL 5900 else $iptables -I INPUT -p tcp -s $ALL --dport 5800 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 5800 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 5800 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT1 --dport 5800 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT2 --dport 5800 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT3 --dport 5800 -j ACCEPT $iptables -I INPUT -p tcp -s $ALL --dport 5900 -j DROP $iptables -I INPUT -p tcp -s $RED --dport 5900 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT1 --dport 5900 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT2 --dport 5900 -j ACCEPT $iptables -I INPUT -p tcp -s $PERMIT3 --dport 5900 -j ACCEPT $iptables -I INPUT -p tcp -s $LOOPBACK --dport 5900 -j ACCEPT fi fi # ntpd solo para red local y servidor de hora especificado if [[ $ntpd == 1 ]]; then if [[ $firewall == ipchains ]]; then $ipchains -A input -p udp -j ACCEPT -s $LOOPBACK -d $ALL 123 $ipchains -A input -p udp -j ACCEPT -s $RED -d $ALL 123 $ipchains -A input -p udp -j ACCEPT -s $ntpserver -d $ALL 123 $ipchains -A input -p udp -j DENY -s $ALL -d $ALL 123 else $iptables -I INPUT -p udp -s $ALL --dport 123 -j DROP $iptables -I INPUT -p udp -s $RED --dport 123 -j ACCEPT $iptables -I INPUT -p udp -s $ntpserver --dport 123 -j ACCEPT $iptables -I INPUT -p udp -s $LOOPBACK --dport 123 -j ACCEPT fi fi ;; stop) echo "Finalizando Firewall..." echo "0" > /proc/sys/net/ipv4/ip_forward if [[ $firewall == ipchains ]]; then $ipchains -F input $ipchains -F output $ipchains -F forward else $iptables -F $iptables -X $iptables -Z if [[ $nat == 1 ]]; then $iptables -t nat -F $iptables -t nat -X $iptables -t nat -Z fi fi ;; restart) $0 stop $0 start ;; status) if [[ $firewall == ipchains ]]; then $ipchains -L else $iptables -L fi ;; *) echo "Uso: `basename $0` {start|stop|restart|status}" exit 1 esac