Foros del Web » Administración de Sistemas » Unix / Linux »

Mi iptables, ¿como mejorar?

Estas en el tema de Mi iptables, ¿como mejorar? en el foro de Unix / Linux en Foros del Web. Mi iptables no es como el de Pello, que alguna vez vi su guía para iniciarme, aún así es pido opinión de expertos para mejorarlo, ...
  #1 (permalink)  
Antiguo 29/12/2008, 10:53
(Desactivado)
 
Fecha de Ingreso: julio-2008
Ubicación: (._. )( ・_・)(・_・ )?
Mensajes: 123
Antigüedad: 15 años, 9 meses
Puntos: 2
Mi iptables, ¿como mejorar?

Mi iptables no es como el de Pello, que alguna vez vi su guía para iniciarme, aún así es pido opinión de expertos para mejorarlo, sugerencias, apreciaciones o cualquier crítica es bienvenida, primero quiero aclarar que este iptables tiene política de denegar todo por defecto y sólo sirve para navegar, tampoco serviría para usar bitorrent o sistemas p2p similares, también cuento con una lista negra para ips (la parte del código omite comentarios y líneas en blanco).... aún así parece que iptables me es muy limitado a comparación de otros cortafuegos visto en windows llamado comodo. (muy avanzado)

Código bash:
Ver original
  1. #!/bin/bash
  2.  
  3. # Firewall v0.5 | Ultima modificación 05/12/08
  4. # Referencia sobre puertos http://isc.sans.org
  5.  
  6. # Declarando variables
  7.  
  8. fail=0
  9.  
  10. LNEGRA="/etc/lnegra"        # Lista Negra de ips o hosts
  11. IPT="/sbin/iptables"        # Ubicación de iptables
  12.  
  13. # Optener mi ip, en caso cambiar la ip fija, detener primero el cortafuegos.
  14. MIPC="$(ifconfig eth0 | sed -n "2s/[^:]*:[ \t]*\([^ ]*\) .*/\1/p")"
  15.  
  16. # Iniciando librería
  17. . /lib/lsb/init-functions
  18.  
  19. cstop() {
  20.     log_begin_msg "Cortafuegos detenido/purgado"
  21.         $IPT -P INPUT  ACCEPT || fail=1
  22.         $IPT -P OUTPUT ACCEPT || fail=1
  23.         $IPT -P FORWARD ACCEPT || fail=1
  24.         $IPT -F || fail=1
  25.         $IPT -X || fail=1
  26.         $IPT -Z || fail=1
  27.         $IPT -t nat -F || fail=1
  28.     log_end_msg $fail
  29. }
  30.  
  31. cstart() {
  32.     cstop
  33.  
  34.     echo "Iniciando Cortafuegos..."
  35.  
  36.     log_begin_msg "Denegar por defecto conecciones de entrada/salida/enrutamiento"
  37.         $IPT -P INPUT DROP || fail=1
  38.         $IPT -P OUTPUT DROP || fail=1
  39.         $IPT -P FORWARD DROP || fail=1
  40.     log_end_msg $fail
  41.  
  42.     if [ -f $LNEGRA ]; then
  43.         for HOST in `sed '/^ *#/d; /^ *$/d' $LNEGRA | awk '{print $1}'`; do
  44.             $IPT -A INPUT -s $HOST -d $MIPC -j DROP
  45.             $IPT -A OUTPUT -s $MIPC -d $HOST -j DROP
  46.         done
  47.     fi
  48.  
  49.     log_begin_msg "Añadiendo protecciones adicionales"
  50.         echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter || fail=1          # Prevenir spoofing - Chequea que la direccion de origen si exista
  51.         echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts || fail=1     # Denegar responder broadcast
  52.         echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all || fail=1            # Denegar responder ping
  53.         echo "1" > /proc/sys/net/ipv4/tcp_syncookies || fail=1              # Permitir SYN Cookies, previene algunos DoS
  54.     log_end_msg $fail
  55.  
  56.     log_begin_msg "Permitir localhost"
  57.         $IPT -A INPUT -i lo -j ACCEPT || fail=1
  58.         $IPT -A OUTPUT -o lo -j ACCEPT || fail=1
  59.     log_end_msg $fail
  60.  
  61.     log_begin_msg "Permitir acceso a la red local"
  62.         $IPT -A INPUT -s 192.168.1.0/24 -d $MIPC -p udp --sport 137 -j ACCEPT || fail=1
  63.         $IPT -A OUTPUT -s $MIPC -d 192.168.1.0/24 -p udp --dport 137 -j ACCEPT || fail=1
  64.         $IPT -A INPUT -s 192.168.1.0/24 -d $MIPC -p tcp --sport 139 -j ACCEPT || fail=1
  65.         $IPT -A OUTPUT -s $MIPC -d 192.168.1.0/24 -p tcp --dport 139 -j ACCEPT || fail=1
  66.         $IPT -A INPUT -s 192.168.1.0/24 -d $MIPC -p tcp --sport 445 -j ACCEPT || fail=1
  67.         $IPT -A OUTPUT -s $MIPC -d 192.168.1.0/24 -p tcp --dport 445 -j ACCEPT || fail=1
  68.     log_end_msg $fail
  69.  
  70.     log_begin_msg "Permitir consultas DNS"
  71.         $IPT -A INPUT -s 192.168.1.1 -d $MIPC -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT || fail=1
  72.         $IPT -A OUTPUT -s $MIPC -d 192.168.1.1 -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT || fail=1
  73.     log_end_msg $fail
  74.  
  75.     log_begin_msg "Permitir comando whois"
  76.         $IPT -A INPUT -s 0/0 -d $MIPC -p tcp --sport 43 ! --syn -j ACCEPT || fail=1
  77.         $IPT -A OUTPUT -s $MIPC -d 0/0 -p tcp --dport 43 -j ACCEPT || fail=1
  78.     log_end_msg $fail
  79.  
  80.     log_begin_msg "Permitir jabber de google"
  81.         $IPT -A INPUT -s talk.google.com -d $MIPC -p tcp --sport 5222 ! --syn -j ACCEPT || fail=1
  82.         $IPT -A OUTPUT -s $MIPC -d talk.google.com -p tcp --dport 5222 -j ACCEPT || fail=1
  83.     log_end_msg $fail
  84.  
  85.     log_begin_msg "Permitir repositorios"
  86.         $IPT -A INPUT -s ubuntu.com -d $MIPC -p udp -m state --state ESTABLISHED -j ACCEPT || fail=1
  87.         $IPT -A OUTPUT -s $MIPC -d ubuntu.com -p udp -m state --state NEW,ESTABLISHED -j ACCEPT || fail=1
  88.         $IPT -A INPUT -s launchpad.net -d $MIPC -p udp -m state --state ESTABLISHED -j ACCEPT || fail=1
  89.         $IPT -A OUTPUT -s $MIPC -d launchpad.net -p udp -m state --state NEW,ESTABLISHED -j ACCEPT || fail=1
  90.     log_end_msg $fail
  91.  
  92.     log_begin_msg "Permitir Http (80), Https (443) y Http-alt (8080)"
  93.         $IPT -A INPUT -s 0/0 -d $MIPC -p tcp --dport 1025:65535 -m multiport --source-ports 80,443,8080 ! --syn -j ACCEPT || fail=1
  94.         $IPT -A OUTPUT -s $MIPC -d 0/0 -p tcp --sport 1025:65535 -m multiport --destination-ports 80,443,8080 -j ACCEPT || fail=1
  95.     log_end_msg $fail
  96.  
  97.     #[COLOR="Red"]sin probar, no uso thunderbird ni similar[/COLOR]
  98.     #log_begin_msg "Permitir Smtp (25), Pop3 (110), Imap (143), Smtps (465), Submission (587), Imaps (993), Pop3s (995)"
  99.     #   $IPT -A INPUT -s 0/0 -d $MIPC -p tcp --dport 1025:65535 -m multiport --source-ports 25,110,143,465,587,993,995 ! --syn -j ACCEPT || fail=1
  100.     #   $IPT -A OUTPUT -s $MIPC -d 0/0 -p tcp --sport 1025:65535 -m multiport --destination-ports 25,110,143,465,587,993,995 -j ACCEPT || fail=1
  101.     #log_end_msg $fail
  102.    
  103.        # Crear logs con todo lo bloqueado
  104.        $IPT -A INPUT -d $MIPC -j LOG --log-prefix "access denied: " --log-level 4
  105.        $IPT -A OUTPUT -s $MIPC -j LOG --log-prefix "access denied: " --log-level 4
  106.  
  107.     if [ $fail -eq 0 ]
  108.         then
  109.             log_success_msg "Verifique que lo que se aplica con: sudo $0 status"
  110.         else
  111.             log_warning_msg "Se ha producido un error al aplicar alguna de las reglas"
  112.     fi
  113. }
  114.  
  115. cstatus() {
  116.         $IPT -L -n
  117. }
  118.  
  119. case "$1" in
  120.     start)
  121.     cstart;
  122.     ;;
  123.     stop)
  124.     cstop;
  125.     ;;
  126.     restart)
  127.     cstop;
  128.     cstart;
  129.     ;;
  130.     status)
  131.     cstatus;
  132.     ;;
  133.     *)
  134.     echo "Modo de uso: sudo $0 start|stop|restart|status"
  135. esac

Aqui hay algunas dudas, por ejemplo red local, he visto otros scripts que abren puertos 137 138 139 445 tcp y udp utilizando iptraf he visto que en mi red local utiliza sólo puerto 137 udp 139 tcp y 445 tcp y nada con el 138 ¿por que tcp/udp en otros script y el 138 cuando yo no veo eso, será que no está bien depurado? también he deshabilitado ntp y la consulta a los dns he puesto al router ya que el los resuelve...

Saludos.

Última edición por iphone; 06/01/2009 a las 08:22
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:57.