User Tools

Site Tools


informatica:linux:iptables

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
informatica:linux:iptables [2012/05/10 17:16] javiinformatica:linux:iptables [2012/10/17 07:21] javi
Line 6: Line 6:
  
 http://wiki.legido.com/doku.php?id=informatica:linux:red:mapear_trafico_entre_interfaces http://wiki.legido.com/doku.php?id=informatica:linux:red:mapear_trafico_entre_interfaces
 +
  
  
 ===== Escribir en log ===== ===== Escribir en log =====
  
-Vamos a anyadir una entrada en un archivo por cada regla que se aplique, típicamente para registrar cada vez que se bloquea un determinado acceso.+2 objetivos:
  
-1. Crear un archivo de log dedicado:+-Anyadirle una etiqueta a cada tipo de mensaje en funcion de la cadena que coincide, al objeto de facilitar posteriormente el analisis de los logs 
 +-Escribir (con rsyslog) en un log distinto a /var/log/messages
  
-  sudo vim /var/log/iptables.log+1. Ejemplo del script para crear reglas de iptables, lo grabamos como '/tmp/cortafuegos.sh':
  
-2. Modificar el archivo de configuración del demonio de log (syslog o rsyslog):+<code> 
 +#!/bin/bash
  
-  sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak+# Creamos variables 
 +IPTABLES=/sbin/iptables
  
-Y anyadir la siguiente linea:+# Borrado de reglas de iptables 
 +$IPTABLES -F INPUT 
 +$IPTABLES -F OUTPUT 
 +$IPTABLES -F FORWARD 
 +$IPTABLES -t filter -F 
 +$IPTABLES -t nat -F 
 +$IPTABLES -t mangle -F
  
-  ... +########################## LOG ###############################
-  kern.warning /var/log/iptables.log+
  
-3. Reiniciar el servicio y asegurarnos que arranca correctamente:+LOG_PREFIX="IPTABLES -"
  
-  sudo /etc/init.d/rsyslog restart +# Si las reglas no funcionan escribo una linea 
-  ps ax | grep syslog+$IPTABLES -A FORWARD -j LOG --log-prefix "$LOG_PREFIX FILTER_FORWARD " --log-tcp-options --log-ip-options 
 +$IPTABLES -A INPUT -j LOG --log-prefix "$LOG_PREFIX INPUT " --log-tcp-options --log-ip-options 
 +$IPTABLES -t nat -A PREROUTING -j LOG --log-prefix "$LOG_PREFIX NAT_PREROUTING " --log-tcp-options --log-ip-options 
 +$IPTABLES -t nat -A POSTROUTING -j LOG --log-prefix "$LOG_PREFIX NAT_POSTROUTING " --log-tcp-options --log-ip-options 
 +$IPTABLES -t nat -A OUTPUT -j LOG --log-prefix "$LOG_PREFIX NAT_OUTPUT " --log-tcp-options --log-ip-options 
 +$IPTABLES -A OUTPUT -j LOG --log-prefix "$LOG_PREFIX OUTPUT " --log-tcp-options --log-ip-options 
 + 
 +########################## DROP ############################### 
 + 
 +# Cierro todo a cal y canto 
 +$IPTABLES -P INPUT DROP 
 +$IPTABLES -P FORWARD DROP 
 +</code> 
 + 
 +En este ejemplo el prefijo es "IPTABLES -". 
 + 
 +2. Damos permisos de ejecucion y lo ejecutamos: 
 + 
 +  chmod +x /tmp/cortafuegos.sh 
 +  sudo /tmp/cortafuegos.sh
  
-4. Crear un archivo que contenga las reglas del cortafuegos (iptables):+3. Crear el siguiente archivo:
  
-  sudo mkdir /etc/iptables +  sudo mkdir -p /etc/rsyslog.conf/iptables.conf
-  sudo vim /etc/iptables/iptables.test.rules+
  
 Con el siguiente contenido: Con el siguiente contenido:
  
 <code> <code>
-*filter +:msg, contains, "IPTABLES --/var/log/iptables.log 
--A INPUT -p tcp --dport 666 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 4 +& ~
-COMMIT+
 </code> </code>
  
-Creo que no hace falta '--log-level 4', se tiene que probar+4. Reiniciar el servicio y asegurarnos que arranca correctamente:
  
-5Cargar las reglas:+  sudo /etc/init.d/rsyslog restart 
 +  ps ax | grep syslog
  
-  iptables-restore < /etc/iptables/iptables.test.rules+5Probamos a conectarnos al puerto TCP 666:
  
-6. Probar:+  telnet localhost 666
  
-En el servidor:+6. En otor terminal, en el mismo servidor:
  
-  sudo tail -F /var/log/iptables.log+  sudo tail -F /var/log/iptables.log 
  
-En el cliente:+Y veremos algo asi:
  
-  telnet nombre.publico.servidor 666+  Oct 17 09:15:13 kvm kernel: [746890.975199] IPTABLES - OUTPUT IN= OUT=lo SRC=127.0.0.1 DST=127.0.0.1 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=666 DPT=55703 WINDOW=0 RES=0x00 ACK RST URGP=0 
  
-Deberiamos ver la siguiente linea en el servidor (mapear puertos en el router...):+7. (OPCIONALRotamos logs:
  
-  May  9 10:11:32 jj kernel: iptables denied: IN=vmbr0 OUT= MAC=00:22:64:b1:c5:0a:64:68:0c:7e:f9:0d:08:00 SRC=IP_PUBLICA_CLIENTE DST=192.168.1.200 LEN=60 TOS=0x00 PREC=0x00 TTL=53 ID=31566 DF PROTO=TCP SPT=35538 DPT=666 WINDOW=14600 RES=0x00 SYN URGP=0 +<code> 
 +/etc/logrotate.d/iptables 
 + 
 +/var/log/iptables.log 
 +
 + rotate 7 
 + daily 
 + missingok 
 + notifempty 
 + delaycompress 
 + compress 
 + postrotate 
 + invoke-rc.d rsyslog reload > /dev/null 
 + endscript 
 +
 +</code>
  
 ===== Ejemplo OpenVZ ===== ===== Ejemplo OpenVZ =====
Line 162: Line 204:
 #$IPTABLES -A INPUT -j LOG --log-prefix "INPUT " #$IPTABLES -A INPUT -j LOG --log-prefix "INPUT "
 #$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT " #$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT "
 +</code>
 +
 +===== Mostrar numero de paquetes =====
 +
 +<code>
 +sudo iptables -L -n -v -x
 +
 +Chain INPUT (policy ACCEPT 384086 packets, 61462048 bytes)
 +    pkts      bytes target     prot opt in     out     source               destination         
 +     398    23805 ACCEPT     udp  --  virbr1 *       0.0.0.0/           0.0.0.0/          udp dpt:53 
 +              0 ACCEPT     tcp  --  virbr1 *       0.0.0.0/           0.0.0.0/          tcp dpt:53 
 +            897 ACCEPT     udp  --  virbr1 *       0.0.0.0/           0.0.0.0/          udp dpt:67 
 +              0 ACCEPT     tcp  --  virbr1 *       0.0.0.0/           0.0.0.0/          tcp dpt:67 
 +
 +Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 +    pkts      bytes target     prot opt in     out     source               destination         
 +  156432 229715525 ACCEPT     all  --  *      virbr1  0.0.0.0/           10.0.0.0/24         state RELATED,ESTABLISHED 
 +   92451  5243004 ACCEPT     all  --  virbr1 *       10.0.0.0/24          0.0.0.0/          
 +            897 ACCEPT     all  --  virbr1 virbr1  0.0.0.0/           0.0.0.0/          
 +            480 ACCEPT     tcp  --  eth0   virbr1  0.0.0.0/           10.0.0.3            tcp dpt:1723 
 +              0 ACCEPT     47   --  eth0         0.0.0.0/           10.0.0.3            
 +              0 LOG        all  --  *      *       0.0.0.0/           0.0.0.0/          LOG flags 0 level 4 prefix `FILTER_FORWARD ' 
 +
 +Chain OUTPUT (policy ACCEPT 370021 packets, 87787030 bytes)
 +    pkts      bytes target     prot opt in     out     source               destination 
 </code> </code>
informatica/linux/iptables.txt · Last modified: 2015/04/13 20:19 by 127.0.0.1