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/16 14:37] 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
  
-4. Crear un archivo que contenga las reglas del cortafuegos (iptables):+########################## DROP ###############################
  
-  sudo mkdir /etc/iptables +# Cierro todo a cal y canto 
-  sudo vim /etc/iptables/iptables.test.rules+$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 
 + 
 +3. Crear el siguiente archivo: 
 + 
 +  sudo mkdir -p /etc/rsyslog.conf/iptables.conf
  
 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 =====
informatica/linux/iptables.txt · Last modified: 2015/04/13 20:19 by 127.0.0.1