Liberar espacio en Windows 7, 8, 8.1, 10

¿Como liberar espacio de disco en Windows 7 y posteriores.?

Windows desde las versiones de Vista, ha incluido en su sistema una carpeta llamada winsxs, corresponderia al nombre de Windows Side by Side, esta carpeta es un archivo de librerias de windows, en su mayoria dll, las cuales con cada actualizacion e instalaciones de programas van creciendo hasta llegar a ocupar muchisimos megas, mas bien muchos gigas.

Para la limpieza de Windows de esos archivos innecesarios, comenzaremos con algo simple, que cada tanto nos combiene hacer y es usar el Liberador de Espacio.
Comenzaremos utilizando el atajo (Win + R) para  ejecutar el programa.

escribimos cleanmgr.exe, esto nos ejecutara el programa de limpieza de archivos.

Nos aparecera un cuadro en donde elegiremos la unidad a limpiar. y el proceso demorara unos minutos.

Una vez concluido esto nos aparecerá una lista con los archivos a eliminar y el espacio que ocupan.

Aca el siguiente paso es sencillo, primero le damos click a limpiar archivos de sistemas, esto hara que vuelva a repetir el proceso de busqueda seleccionando nuevamente la unidad, y finalmente cuando termine le damos aceptar y comenzara con el borrado de esos arhchivos que son presindibles.

Ahora comenzaremos a eliminar archivos huerfanos del sistema para lo cual utilizaremos el siguiente programa, en su momento lo baj desde la pagina del creador, la cual actualmente no existe mas, asi que les dejo el link para la descarga.
Dicho archivo se llama Windows Clean UP bajalo desde acá.

Ejecutamos el archivos comenzara a buscar y nos dará un alista de archivos a eliminar. Seleccionamos los archivos a eliminar, tildando el el cuadro cada uno y hacemos click en Delete Selected, nos pedirán confirmación uno por uno y finalmente  volverá a escanear la unidad.

Ahora abriremos la consola de comandos, en windows llamado Simbolo de sistema y lo ejecutaremos en modo administrador.

y escribiremos el Siguiente comando

DISM.exe /online /Cleanup-Image /SPSuperseded

Esto demorara un tiempo y la consola nos dirá esto

 

Finalmente la ganancia que obtuve fue casi del 50%

Espero que les halla servido de Utilidad.

 

 

 

 

 

Instalación del Cliente Windows de BASCULA BACKUP

BACULA WINDOWS: EL CLIENTE

BACULA WINDOWSEn la parte 2 vamos a ver como instalar bacula windows. Vamos a ver como sincronizar nuestro servidor de bacula con la máquina del cliente. es muy importante que preparemos bien la máquina cliente para que se puedan ver las dos máquina.

Os explicaré también como abrir los puertos del Firewall de Windows.

 

Lo primero que tenemos que hacer es descargar el cliente de bacula windows:

Descargamos la ultima versión aquí.

Debemos seleccionar el tipo de ejecutable, 32 o 64 bits. Para saberlo haz  clic botón derecho de Mi PC y en tipo de sistema nos dice algo parecido a esto:

Tipo de sistema:       Sistema Operativo de 64 bits.

INSTALACIÓN CLIENTE BACULA WINDOWS

Ejecutamos el fichero que nos hemos descargado.

BACULA WINDOWS INSTALACION

NEXT ->

BACULA WINDOWS INSTALACION

I Agree

BACULA WINDOWS INSTALACION

Yo os recomiendo que seleccionéis la instalación Automática. NEXT ->

BACULA WINDOWS INSTALACION

Si es para nuestra máquina y queremos controlarlo con la consola le daremos a todos los checks, sin embargo si es para un cliente recomiendo instalar solo el Cliente.

NEXT ->

BACULA WINDOWS INSTALACION

Introducimos los parámetros que hemos configurado en el fichero /etc/bacula/bacula-dir.conf

INSTALL

CONFIGURAR CLIENTE BACULA WINDOWS

Los ficheros de configuración en Windows se encuentran en la carpeta c:\Program Files\Bacula. Entramos en esta carpeta y editamos algunos ficheros.

bacula-fd.conf

Director {Name = ubuntu-dir

Password = “saldjsaldjsañlja

}

#

# Restricted Director, used by tray-monitor to get the

#   status of the file daemon

#

Director {

Name = PC1

Password = “saldjsaldjsañlja

Monitor = yes

}

Nos aseguramos que en el fichero bat.conf tiene esta configuración:

Director {Name = ubuntu-dir

DIRport = 9101

address = 192.168.66.129

Password = “saldjsaldjsañlja

}

al igual con el fichero bconsole.conf

Director {Name = ubuntu-dir

DIRport = 9101

address = 192.168.66.129

Password = “saldjsaldjsañlja

}

Una vez realizados los cambios tenemos que reiniciar los servicios de BACULA. Para ello nos vamos a inicio -> ejecutar y tecleamos services.msc

seleccionamos el servicio Bacula File Backup y Reiniciar

BACULA WNDOWS SERVICIO

CONFIGURAR FIREWALL DE WINDOWS PARA CLIENTE BACULA WINDOWS

Una vez realizada la instalación tenemos que habilitar el Firewall para que el servidor de bacula vea al cliente por las puertos 9101, 9102 y 9103

Para ello creamos una regla en el firewall. Vamos a Inicio – Ejecutar y teclamos firewall

Reglas de entrada y nueva regla.

BACULA WINDOWS FIREWALL

BACULA WINDOWS FIREWALL

BACULA WINDOWS FIREWALL

BACULA WINDOWS FIREWALL

BACULA WINDOWS FIREWALL

y le damos a Finalizar para acabar con la parte de BACULA WINDOWS

 

ASP.NET en Linux con Apache

ASP.NET

Apache con ASP.NET

 

ASP.NET sobre Apache
Corriendo ASP.NET sobre Apache

En esta oportunidad vamos a instalar lo necesario para poder correr paginas ASP.NET en nuestro servidor Linux corriendo Apache, uno de los servidores web mas utilizados en el mundo.

Estas son las primeras cosas que tenemos que instalar.

  1. Apache 2 (lo instalamos con apt-get o como mas les guste).
  2. Módulo para multiproceso: apache2-mpm-worker.
  3. Módulo de Monolibapache2-mod-mono.
  4. Interfaz entre Mono y servidor: mono-apache-server.
  1. Reiniciamos el servicio de Apache para que recargue la configuración: sudo /etc/init.d/apache2 restart
  2. Activamos el módulo (a2enmod significa apache2 enable module): sudo a2enmod mod_mono
  3. Vemos qué versión de ASP.NET está activada (lo recomendable es que sea la 2 y no la 1). Para comprobarlo nos dirigimos a: /etc/apache2/mods-available y vemos el fichero mod_mono.conf, debería estar así (comentada con # la primera):
    #Include /etc/mono-server/mono-server-hosts.conf
    Include /etc/mono-server2/mono-server2-hosts.conf

Con estos cuatros pasos, ya nuestro Apache puede servir paginas con ASP.NET.

Espero que esto les sirva y no se olviden de comentar.

Servidor de correo en UBUNTU con postfix y dovecot

Ubuntu Mail Server

Servidor de correo en Ubuntu, la alternativa a Gmail

Alojando mi correo personal en mi propio servidor

Introducción

Es normal o al menos más común mantener tu blog o página web en tu propio servidor que hacer lo mismo con tu servidor de correos, principalmente por el spam, y por que es más dificil mantener un servidor de correos que un servidor web. Esto porque debido al spam es posible que algunos de tus correos no lleguen a destino debido a el IP de tu servidor no sea conocida o hubiera sido utilizada en algún momento para enviar spam.

Igualmente muchos hackers tratarán de hacerse de tu servidor para enviar campañas de spam a travéz de él.

Pero la satisfacción de tener tu información contigo y no dependiendo de otros, especialmente Google, es grande y el trabajo extra a veces vale la pena.

Algunas cosas han cambiado desde los días en que la única forma de acceder tu correo era a travéz de Eudora, POP3 y desde tu computador, hoy en día llevamos el correo a todas partes en nuestro teléfono, y normalmente quienes te envían correos esperan una respuesta pronta.

Yo había dejado de alojar mi propio correo sobre todo debido a activesync, que es por el momento la mejor tecnología para sincronizar tu correo con el móvil, pero ahora esta disponible una versión opensource, ya veremos como se usa.

Configurando tu propio servidor de correos

Los requerimientos para mi correo son, pues la verdad solo una, correo electrónico confiable, calendario ya lo tengo disponible en el servidor Exchange de la oficina, y el directorio de contactos aún no estoy seguro de donde lo alojare, pero puede que lo haga con CardDav o con mi cuenta de Gmail, despues de todo tengo una para mis aplicaciones Android, solo que no la uso para correo. Por lo tanto, considerando que lo único que requiero es correo, y que lo acceso principalmente del celular y de Microsoft Outlook cuando estoy en la máquina de la oficina (Windows 8) o Mail.app en Mac, por lo tanto no requiero una interfaz gráfica.

El software que voy a utilizar para cubrir mis necesidades es:

  • Ubuntu (El sistema operativo)
  • Postfix (Para recibir el correo y enviarlo via SMTP)
  • Dovecot (Para recuperar el correo vía IMAP para los clientes de escritorio)
  • Procmail (Para clasificar correo)
  • D-push (Para recuperar el correo vía ActiveSync para el cliente de mi Android)
  • Amazon SES

Vamos a explicar un poco como se configura cada uno de estos componentes para lograr lo deseado, no vamos a mostrar como instalar Ubuntu, normalmente es solo arrancarlo en algún proveedor de VPS

Postfix

Vamos a comenzar con postfix, que es un servidor que nos permite recibir y enviar correos mediante el protocolo SMTP, existen otras opciones como sendmail o exim, que son tan buenas como esta, pero vamos a utilizar postfix, comencemos instalandolo.

sudo apt-get install postfix

Y vamos a configurarlo para recibir nuestros correos, colocarlos en nuestro buzón (vamos a usar Maildir), igualmente vamos a configurarlo para que podamos autenticar contra él y que reciba de esta manera nuestros correos para enviarlos al mundo, para esto último vamos a optar por un relay-host, es decir un servidor que hará las verdaderas entregas, al cual le entregaremos toda la correspondencia que tenemos. Hacemos esto porque de este modo evitamos que nuestro correo sea considerado spam, por que el IP no estuviera limpio, o por que algo en la configuración no es correcta.

Vamos a utilizar Amazon SES para que entregue nuestros correos, el precio es totalmente acequible, solo 10 centavos de dólar por cada 1.000 correos.

El principal archivo de configuracion es main.cf, vamos a colocar este contenido dentro de él.

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
delay_warning_time = 4h
mydomain = dominio.com
myhostname = mail.dominio.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.dominio.com, localhost.example.com, localhost, dominio.com
relayhost = email-smtp.us-east-1.amazonaws.com
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:tu-login-ses:tu-password-ses
smtp_sasl_security_options = noanonymous
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
home_mailbox = Maildir/

Eso es todo, vamos con el siguiente.

Dovecot

Dovecot, es la interfaz que vamos a utilizar para exponer nuestros buzones de correo al mundo mediante IMAP o POP3, en este caso vamos a configurar IMAP, pues hoy en día casi todos verificamos el correo de varios lugares a la vez.

También vamos a utilizar dovecot para darnos la autenticación requerida para que postfix nos permita enviar correos solo a los usuarios con cuenta en el servidor. La configuración de Dovecot en Ubuntu no es monolítica, es decir no esta en un solo archivo, por lo que veamos a ver solo los que se requieren cambiar, es decir que no tengan los valores por defecto.

Este es contenido de /etc/dovecot/dovecot.conf

!include_try /usr/share/dovecot/protocols.d/*.protocol
listen = *, ::
!include conf.d/*.conf
!include_try local.conf

Este el de /etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain login
!include auth-system.conf.ext

Este el de /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir
namespace inbox {
  inbox = yes
}

Vamos con /etc/dovecot/conf.d/10-master.conf

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}
service lmtp {
  unix_listener lmtp {
    #mode = 0666
  }
}
service imap {
}
service pop3 {
}
service auth {
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}
service auth-worker {
}
service dict {
  unix_listener dict {
  }
}

Y finalmente /etc/dovecot/conf.d/10-ssl.conf

ssl = yes
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem

Con esto tenemos Dovecot configurado y listo para entregarnos las correspondencia via IMAP, esto es más que suficiente para la PC de escritorio o para nuestra laptop, pero para la tablet y en especial para nuestro celular tenemos que tener una mejor opción. IMAP puede funcionar en el celular pero no es muy eficiente desde el punto de vista de consumo de batería, algo que siempre debemos cuidar con los celulares hoy en día, pero para ello existe ActiveSync.

Para implementar ActiveSync en Ubuntu vamos a utilizar el paquete z-push, que en Debian se llama d-push, debe tener alguna diferencia pero no lo investigue.

d-push

Para funcionar correctamente d-push requiere de Apache o algún otro servidor web, y de PHP, en general si instalas el paquete este instalará todo lo necesario, pero lo que hace es instalar mod-php de Apache y no es la manera más eficiente de interactuar con PHP, si solo usarás el servidor para tu correo y solo tendras pocos clientes, entonces adelante. Si por el contrario, tendras uno o más blogs de WordPress o Drupal y además varios clientes usando ActiveSync, entonces lo que haremos es instalar Apache + PHP-FPM y luego asegurarnos que Ubuntu no instale mod-phpluego de ello podemos instalar d-push

sudo apt-get install d-push

Asegurate de marcar la autoconfiguración de Apache cuando se te pregunte si deseas hacerlo, yo lo hice para Apache 1 ya que es automático. En general no tienes que hacer ningun cambio a la configuracion de d-push, solo debes crear un sitio al que apuntaras tus dispositivos móviles. E aquí un ejemplo:

<VirtualHost localhost:8080>
        ServerName mail.dominio.com
        DocumentRoot /var/www/mail.dominio.com
   DirectoryIndex index.php
   <Directory /var/www/mail.dominio.com/>
      AllowOverride All
      Require all granted
      #Order Deny,Allow
      #Allow from all
   </Directory>

<Directory /usr/lib/cgi-bin/>
        Require all granted
</Directory>

</VirtualHost>

Dado que tengo Nginx delante, es Nginx con el que manejo https requerido para d-push, en realidad no es requerido y se puede trabajar con el puerto 80 u 8080, pero es buena idea tener una conexión segura, asi que vamos con Nginx.

Lo primero es preparar Nginx para manejar una conexión encriptada, luego configuras el sitio como en el ejemplo de abajo.

server {
    listen 80;
    listen 443 ssl;

    root /var/www/mail.dominio.com/;
    index index.html index.htm;

    server_name mail.dominio.com;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        proxy_pass http://localhost:8080;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Como puede verse, Nginx se encarga de la conexión segura, y luego pasa el requerimiento a Apache que opera tras bambalinas.

Con eso hemos terminado, ya tenemos un servidor de correos que envía correos de forma segura mediante Amazon SES, y que recibe el correo dirigido a nosotros y nos lo entrega de manera eficiente en nuestras aplicaciones de escritorio y móviles utilizadon conexiones seguras y encriptadas.

Procmail

En mi caso re-envío correo de otras cuentas a esta cuenta para tener todo el correo en un solo lugar, utilizo una cuenta para facebook, Twitter, LinkedIn y demás subscripciones que no es mi cuenta principal, por lo que todo el correo enviado a esa cuenta y luego re-enviado aquí lo filtro y archivo en un directorio específico, la forma en que lo hago es mediante procmail al momento de recibir el correo.

Vamos a ver como se puede configurar.

sudo apt-get install procmail

El primer archivo que vamos crear es /etc/procmailrc y tendrá este contenido.

DROPPRIVS=yes
ORGMAIL=${HOME}/Maildir/
DEFAULT=${ORGMAIL}
:0
* ? /usr/bin/test -d $DEFAULT || /bin/mkdir $DEFAULT
{ }
:0 E
{
        EXITCODE=127
        HOST=bail.out
}

Luego en directorio del usuario que va a clasificar su correo mediante procmail son necesarios otros archivos. Vamos crearlos. Asegurate de estar conectado al servidor usando el usuario del que quieres clasificar su correo. Creamos el archivo .forward y ponemos este contenido adentro:

"|IFS=' ' && exec /usr/bin/procmail || exit 75 g"

Luego creamos el archivo .procmailrc e insertamos este contenido:

VERBOSE=no
PMDIR=$HOME/Procmail 
LOGFILE=$PMDIR/log
INCLUDERC=$PMDIR/filtros.rc
SHELL=/bin/sh

Finalmente creamos el archivo ~/Procmail/filtros.rc y colocamos allí los filtros, veamos solo un ejemplo:

:0
* ^TO_cuenta-social@gmail.com
.social/

:0
$HOME/Maildir/

Puedes buscar más ejemplos en Google, o DuckDuckGo

Amazon SES

Finalmente, tenemos que configurar Amazon SES, eso lo vamos a dejar fuera del alcance de este sitio, pues esta suficientemente bien explicado en el sitio de Amazon. Puedes utilizar MailGuy o Mandrill o cualquier otro servicio, solo asegurate de cambiar estas lineas en/etc/postfix/main.cf

relayhost = email-smtp.us-east-1.amazonaws.com
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:tu-login-ses:tu-password-ses
smtp_sasl_security_options = noanonymous

Las mismas deben ser cambiadas de acuerdo al servicio que utilices.

Conclusión

Como puedes ver, es posible instalar y configurar un servidor de correos eficiente y que tenga lo requerido las comunicaciones de hoy en día. Quedó por ver como instalar Spamassassin, y actualizaré el artículo para hacerlo, de momento no lo instalé debido a que gracias a Dios no tengo mucho spam en la cuenta de correos que manejo con este servidor.

1. En mi caso incluso tengo Nginx como proxy delante de Apache, de este modo puedo correr blogs de WordPress directo con Nginx y sitios estáticos con Nginx, o cachear el contenido que sirve Apache, si te preguntas para que tengo Apache, pues porque algún software es más sencillo de configurar con Apache y a veces quiero evitar la molestia.

Configurando GMAIL Como Relay

Editamos  /etc/postfix/main.cf

# sets gmail as relay
relayhost = [smtp.gmail.com]:587
# use tls
smtp_use_tls=yes
# use sasl when authenticating to foreign SMTP servers
smtp_sasl_auth_enable = yes
# path to password map file
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# list of CAs to trust when verifying server certificate
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# eliminates default security options which are imcompatible with gmail
smtp_sasl_security_options =

Configuracion APN Movistar

Como por alguna razón siempre termino borrando la configuración del APN de Movistar, dejo esto por si alguien lo necesita.

Como configurar APN (Internet y MMS) de Movistar Argentina

APN Access Point Name es el nombre de punto de acceso (NPA) para 2G, 3G y 4G que debe configurarse en el dispositivo móvil para que pueda acceder a Internet.
A continuación te explico los pasos para la configurar los APN de Movistar Argentina en dispositivos con Android.

Pasos:1. Buscar en el menú de Ajustes (Configuración) la opción APN.
Esta puede variar de ubicación según el equipo.
En Android 4.4 se encuentra en Ajustes > Mas > Redes móviles > APN2. Presionar el botón de menú y seleccionar APN nuevo e ingresar los siguientes datos:
Nombre:Movistar WAP
APN: wap.gprs.unifon.com.ar
Proxy: 200.5.68.10
Puerto: 8080
Nombre de usuario: wap
Contraseña: wap
Servidor:No definido
MMSC:No definido
Proxy MMS:No definido\
Puerto de MMS:No definido
MCC: 722
MNC: 07
Tipo de autenticacion: PAP
Tipo de APN: default
Protocolo APN: IPv4
Activar/desactivar APN: habilitado

Como alternativa también se puede utilizar esta otra configuracion:Nombre: Movistar INTERNET
APN: internet.gprs.unifon.com.ar
Proxy: No definido
Puerto: No definido
Nombre de usuario: internet
Contraseña: internet
Servidor: No definido
MMSC: No definido
Proxy MMS: No definido
Puerto de MMS: No definido
MCC: 722
MNC: 07
Tipo de autenticacion: PAP
Tipo de APN: default
Protocolo APN: IPv4
Activar/desactivar APN: habilitado

3. Presionar el boton de menu y seleccionar Guardar

4. Presionar nuevamente el botón de menú y seleccionar
APN nuevo e ingresar los siguientes datos:
Nombre: Movistar MMS
APN: mms.gprs.unifon.com.ar
Proxy: No definido
Puerto: No definido
Nombre de usuario: mms
Contraseña: mms
Servidor: No definido
MMSC: http://mms.movistar.com.ar
Proxy MMS: 200.68.32.239
Puerto de MMS: 8080
MCC: 722
MNC: 07
Tipo de autenticacion: No definido
Tipo de APN: mms
Activar/desactivar APN: habilitado

5. Presionar el botón de menú y seleccionar Guardar

Listo la configuración ya debe de funcionar.

Simulador Abierto – Meridian Virtual Grid

Nuevamente el simulador de OpenSim esta on line nuevamente, seguimos haciendo pruebas con el hypergrid, y hasta ahora funciona bien, lastima que Osgrid se cayo y tubieron muchisimos problemas para intentar recuperar los datos del Raid, esperemos que pronto se recuperen.

Meridian Virtual Grid, esta abierto falta un poco terminar de configurar bien el tema de los IM Offline, y asi poder crear bien la configuracion para que se puedan anexar nuevas regiones de usuarios.

Se buscan colaboradores in world para mejorar el aspecto fisico del land de Meridian, y anexar nuevos.

Yupick Driscoll

13 Herramientas de Google Desconocidas para la Mayoría de Usuarios

13 Herramientas de Google Desconocidas para la Mayoría de UsuariosEstos son algunos de los recursos de Google que no son tan conocidos para la mayor parte de los usuarios.Gran parte están destinadas a programadores y webmaster, pero con otras, podemos aprender algo mientras pasamos un buen rato.

Y es que Google, con una cuota en el mercado de buscadores aplastante y con sus innumerables herramientas y servicios, se ha metido en nuestras vidas de forma irremediable. Todos conocemos y usamos cada día algo que tenga que ver con la compañía de Mountain View: Maps, YouTube, Gmail, Chrome, Drive, etc.

1x1.trans

Estas son algunas de las más conocidas, pero Google extiende sus tentáculos sobre cualquier actividad que nos podamos imaginar. Estoy casi seguro de que, incluso, estando al tanto de todo lo que tiene que ver con la tecnología, no conoces la existencia de algunas de las herramientas que te vamos a presentar. Vamos allá.

1. Google Ngram Viewer

Nos permite buscar o comparar palabras o grupos de palabras entre los libros publicados desde el año 1500 hasta la actualidad en diferentes idiomas y países. Los resultados nos los muestra en un gráfico con el eje de los años y el de porcentaje del total de la muestra de libros.

1x1.trans

Es interesante para saber de qué se hablaba y qué se publicaba en distintitas épocas y si se hacía más o menos de algunos temas, pudiendo comprobar la tendencia de popularidad de esas palabras en el tiempo. Introduce “Apple” y “PC” en distintos idiomas y mira a ver qué pasa.

2. Google Correlate

1x1.trans

Es parte de Google Trends y, por lo tanto, analiza la tendencia en el tiempo de las palabras que usamos en las búsquedas, relacionadas con otras. Por ejemplo, si ponemos “pérdida de peso” podremos saber la tendencia de esa frase comparada con otras como “calorías”, “quemagrasas”, “parafarmacia”, etc.

1x1.trans

También tenemos la posibilidad de hacer la búsqueda inversa, es decir, dibujamos directamente en el gráfico y sobre él nos mostrará las búsquedas que más se aproximen a la curva que hemos dibujado.

3. Google Trends

1x1.trans

Es una de mis favoritas. Una herramienta perfecta para saber de qué se está, o ha estado, hablando en el mundo. Puedes buscar por fecha, categorías, países, idiomas, etc.

1x1.trans

Con la función Explorar podrás saber la tendencia de las búsquedas a lo largo del tiempo, el interés geográfico y las búsquedas relacionadas. Una auténtica joya.

4. Google Think Insights

1x1.trans

Esta herramienta está destinada a un sector más especifico como es el de los empresarios. Aparte de consejos e información sobre negocios de éxito, tenemos a nuestra disposición una serie de herramientas para, por ejemplo, analizar sitios web (PageSpeed) u optimizar campañas publicitarias.

5. Google Public Data Explorer

Como su nombre sugiere, nos encontramos con una herramienta con la quepodemos acceder, examinar y buscar en muchas bases de datos de todo el mundo (sobre todo públicas) para realizar una representación gráfica de ellos. Los resultados nos los puede mostrar en gráficos de distinto tipo, teniendo la opción de filtrarlos para obtener la información que realmente necesitemos.

1x1.trans

Se pueden realizar comparativas entre categorías, enlazar los datos con otros elementos o insertarlos en nuestra página web, actualizándose automáticamente, sin que tengamos que hacer nada.

6. Full Value of Mobile

1x1.trans

En realidad se trata de una calculadora para saber el impacto que tiene sobre el negocio de una empresa el uso de la tecnología móvil en todas sus variantes.

1x1.trans

Introduciendo unos sencillos datos como el número de clicks, visitas, compras sobre el total o conversiones, nos muestra el dinero generadopor el uso de dispositivos móviles para comprar, reservar, localizar o solicitar información de nuestro negocio.

7. Get Your Business Online

Este servicio de Google pone a disposición de los usuarios una serie derecursos para que pequeños negocios o empresas de ámbito local puedan tener presencia en Internet y tener la posibilidad de mejorar sus balances.

1x1.trans

Ofrece herramientas para empezar desde cero con una página, lecciones y tutoriales interactivos, consejos para buscadores, herramientas para webmasters, recomendaciones en el uso de redes sociales para atraer clientes, etc. En definitiva, un buen sitio para empezar a sacar beneficios si estás en la red.

8. Webmaster Tools

Son un conjunto de herramientas para webmasters que ofrecen la posibilidad de monitorizar el tráfico de una web, analizar errores y mejorar el funcionamiento interno de un sitio.

1x1.trans

Una de ellas es Places para empresas, herramienta que nos ayudará a gestionar, de una manera más fácil, la presencia de nuestra empresa en Internet en relación a los servicios de Google. Puedes crear una ficha de empresa para aparecer en los resultados destacados, actualizar rápidamente tus datos de contacto o interactuar con los clientes.

9. Google Fonts

Los que nos dedicamos al diseño, conocemos Google Fonts desde hace algún tiempo, un lugar donde podemos buscar y descargar tipos de fuentes para nuestras creaciones. Bajo Open Source podemos utilizar libremente y de forma gratuita los tipos tanto, a nivel particular, como comercial.

Como es habitual, podemos aplicar filtros a las búsquedas, que pueden ser por categorías (serif, sans serif, handwriting, etc), tipo de caracteres (latino, cirílico, griego, etc), grosor, altura o inclinación.

1x1.trans

Para facilitar la elección, nos permite personalizar el texto de muestra de los tipos, pudiendo modificar algunos de los atributos de las fuentes. Una función muy útil es la de añadir a la colección con la que podrás ir eligiendo los tipos que quieras y bajártelos todos de una vez en un archivo zip.

10. Google Developers

1x1.trans

Un sitio web lleno de recursos para todos los programadores cuyo desarrollo tenga que ver, todo o en parte, con cualquiera de los productos y servicios de Google. Nombrarlos todos sería imposible, así que, vamos con las secciones principales del sitio.

1x1.trans

  • Productos: accedemos a categorías como programador de dispositivos móviles, de juegos, programador web, AdWords, etc.
  • Conferencias: sobre cualquier temática. Mediante un planning sabemos las fechas de los encuentros y de las que están en curso en estos momentos. Pulsando sobre cualquiera de ellas podemos saber más sobre los datos del evento, asistentes, etc.
  • Escaparate: es el lugar donde los desarrolladores muestran sus creaciones. A modo de portfolio, te puedes encontrar aplicaciones muy logradas y otras, bueno, no tanto.
  • Live: todo el potencial de Internet en un solo sitio. Presentaciones en vivo, diálogos en foros, streaming de vídeo, chat, para conectar con empleados de Google, otros desarrolladores o expertos del sector.
  • Grupos: rizamos el rizo, sólo para auténticos programadores con mayúscula. Demostraciones eminentemente técnicas, charlas sobre APIs de cualquier tecnología de Google y, hasta, eventos llamadoscode sprints en los que los desarrolladores se limitan, en un periodo de tiempo dado, sólo a escribir código.

11. Dart

1x1.trans

Dart es un lenguaje de programación orientado a objetos con el que Google pretende destronar a javascript como lenguaje de aplicaciones web. Ha sido creado para que, incluso, los programadores principiantes puedan aprenderlo, aunque, como es lógico, conviene un tanto de experiencia en programación.

Aunque lleva ya unos años entre nosotros, todavía se encuentra en fase de desarrollo. Para empezar a utilizarlo debes descargarte el entorno de trabajo y el editor, disponibles para Windows, Linux o Mac.

12. Google Keep

1x1.trans

Es una aplicación simple y fácil de usar con la que podremos tomar notas de texto, de voz, fotos y checklist. Nos permite sincronizar automáticamente con Drive a través de todos nuestro dispositivos, realizar búsquedas y ordenarlas y disponerlas de la forma que queramos.

13. Google Sky

1x1.trans

Salió como añadido a Google Earth y nos permite explorar el universo. Puedes ver la posición de planetas, constelaciones y hasta el nacimiento de galaxias lejanas como se verían desde el propio telescopio Hubble y desde otros observatorios astronómicos.

Si sabes el nombre de la galaxia o el de una estrella, tienes un campo de búsqueda para localizarlas y no hace falta que pongas el nombre correcto, ya que, la aplicación corregirá el error si te equivocas

vía 13 Herramientas de Google Desconocidas para la Mayoría de Usuarios.

Diferentes configuracion IPTABLES con ejemplos

1. Qué es un firewall

Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos. El firewall puede ser un dispositivo físico o un software sobre un sistema operativo. En general debemos verlo como una caja con DOS o mas interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse o no. Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT.

Esa sería la definición genérica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una IOS que filtra el tráfico TCP/UDP/ICMP/../IP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red. Esta sería la tipología clásica de un firewall:

Figura 1: esquema de firewall típico entre red local e internet

Esquema típico de firewall para proteger una red local conectada a internet a través de un router. El firewall debe colocarse entre el router (con un único cable) y la red local (conectado al switch o al hub de la LAN)

Dependiendo de las necesidades de cada red, puede ponerse uno o más firewalls para establecer distintos perímetros de seguridad en torno a un sistema. Es frecuente también que se necesite exponer algún servidor a internet (como es el caso de un servidor web, un servidor de correo, etc..), y en esos casos obviamente en principio se debe aceptar cualquier conexión a ellos. Lo que se recomienda en esa situación es situar ese servidor en lugar aparte de la red, el que denominamos DMZ o zona desmilitarizada. El firewall tiene entonces tres entradas:

Figura 2: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En la zona desmilitarizada se pueden poner tantos servidores como se necesiten. Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a él, la red local sigue protegida por el firewall. Esta estructura de DMZ puede hacerse también con un doble firewall (aunque como se ve se puede usar un único dispositivo con al menos tres interfaces de red). Sería un esquema como este:

Figura 3: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doble firewall(perímetro)
Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como protección de internet en las empresas, aunque ahí también suelen tener una doble función: controlar los accesos externos hacia dentro y también los internos hacia el exterior; esto último se hace con el firewall o frecuentemente con un proxy (que también utilizan reglas, aunque de más alto nivel).
También, en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o más firewalls ya sea filtrando toda la instalación o parte de ella:

Figura 4: esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

 

 

Sea el tipo de firewall que sea, generalmente no tendrá mas que un conjunto de reglas en las que se examina el origen y destino de los paquetes del protocolo tcp/ip. En cuanto a protocolos es probable que sean capaces de filtrar muchos tipos de ellos, no solo los tcp, también los udp, los icmp, los gre y otros protocolos vinculados a vpns. Este podría ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer gráfico:

Politica por defecto ACEPTAR.
Todo lo que venga de la red local al firewall ACEPTAR
Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR
Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR
Todo lo que venga de hora.rediris.es al puerto udo 123 ACEPTAR
Todo lo que venga de la red local y vaya al exterior ENMASCARAR
Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR
Todo lo que venga del exterior al puerto tcp 3389 DENEGAR
Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es:
– Habilita el acceso a puertos de administración a determinadas IPs privilegiadas
– Enmascara el trafico de la red local hacia el exterior (NAT, una petición de un pc de la LAN sale al exterior con la ip pública), para poder salir a internet
– Deniega el acceso desde el exterior a puertos de administración y a todo lo que este entre 1 y 1024.

 

Hay dos maneras de implementar un firewall:
1) Política por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegará lo que se diga explícitamente.
2) Política por defecto DENEGAR: todo esta denegado, y solo se permitirá pasar por el firewall aquellos que se permita explícitamente.

Como es obvio imaginar, la primera política facilita mucho la gestión del firewall, ya que simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa; el resto no importa tanto y se deja pasar. Por ejemplo, si queremos proteger una máquina linux, podemos hacer un netstat -ln (o netstat -an, o netstat -puta | grep LISTEN), saber que puertos están abiertos, poner reglas para proteger esos puertos y ya está. ¿Para qué vamos a proteger un puerto que realmente nunca se va a abrir?
El único problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son peligrosos. Si la política por defecto es ACEPTAR y no se protege explícitamente, nos la estamos jugando un poco.

En cambio, si la política por defecto es DENEGAR, a no ser que lo permitamos explícitamente, el firewall se convierte en un auténtico MURO infranqueable. El problema es que es mucho más difícil preparar un firewall así, y hay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentación de empezar a meter reglas super-permisivas.
Esta configuración de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mínimamente el sistema. Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls.

IMPORTANTE
El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); después de eso NO SE MIRARÁN MÁS REGLAS para ese paquete. ¿Cuál es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no sirvan de nada.


 

2. Qué es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4 de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de iptables no es como un servidor que lo iniciamos o detenemos o que se pueda caer por un error de programación(esto es una pequeña mentira, ha tenido alguna vulnerabilidad que permite DoS, pero nunca tendrá tanto peligro como las aplicaciones que escuchan en determinado puerto TCP): iptables esta integrado con el kernel, es parte del sistema operativo. ¿Cómo se pone en marcha? Realmente lo que se hace es aplicar reglas. Para ellos se ejecuta el comando iptables, con el que añadimos, borramos, o creamos reglas. Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de firewall.

Notas: bueno, para los más geeks y tocapelotas. Vale, se puede implementar un script de inicio en /etc/rc.d/INIT.d (o /etc/INIT.d ) con el que hagamos que iptables se “inicie o pare” como un servidor más. Lo podemos hacer nosotros o es probable que venga en la distribución (como en redhat por ejemplo). También se pueden salvar las reglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicación o front-end desde la X o desde webmin.

Vale, tenemos una máquina linux con soporte para iptables, tiene reglas aplicadas y empiezan a llegar/salir/pasar paquetes. No nos liemos: olvidemos cuantas tarjetas de red hay, que direcciones ip tiene la máquina y olvidemos si el paquete entra o sale. Las reglas de firewall están a nivel de kernel, y al kernel lo que le llega es un paquete (digamos, un marrón 😉 ) y tiene que decidir que hacer con él. El kernel lo que hace es, dependiendo si el paquete es para la propia maquina o para otra maquina, consultar las reglas de firewall y decidir que hacer con el paquete según mande el firewall. Este es el camino que seguiría un paquete en el kernel:

Figura 5: cuando un paquete u otra comunicación llega al kernel con iptables se sigue este camino

Como se ve en el gráfico, básicamente se mira si el paquete esta destinado a la propia maquina o si va a otra. Para los paquetes (o datagramas, según el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARD.
INPUT,OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Pero antes de aplicar esas reglas es posible aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destino. Veremos ejemplos.
E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar los paquetes; son reglas poco conocidas y es probable que no las usen.
Por tanto tenemos tres tipos de reglas en iptables:
– MANGLE
– NAT: reglas PREROUTING, POSTROUTING
– FILTER: reglas INPUT, OUTPUT, FORWARD.


 

3. Al grano: creando un firewall con iptables

En este tutorial se ha intentado dar una breve introducción sobre lo que es un firewall, sus tipologías básicas y en concreto se presenta el sistema iptables. Pero vamos al grano y empezamos a ver configuraciones de firewall con iptables, empezando desde la más básica a las más complejas, en las que se establece la denegación como política por defecto.

Nota: se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible, y especialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables. Con iptraf podemos comprobar si las conexiones TCP/IP se llegan a establecer o no. Una conexión tcp/ip empieza con el three-way-handshake:
– La maquina que desea conectarse a otra envia un paquete con flan SYN
– Si la otra maquina acepta, envia un SYN/ACK
– Entonces la máquina establece la conexión.

Si el firewall esta denegando la conexión, con iptraf veremos que la maquina origen solo manda paquetes con el flan S (de SYN), y que del otro lado no sale nada. Saber usar iptraf nos ayudará mucho.


 

3.1 Proteger la propia máquina
Muy bien, tenemos una máquina linux pinchada en internet y queremos protegerla con su propio firewall. Lo único que tenemos que hacer es crear un script de shell en el que se van aplicando las reglas.
Los scripts de iptables pueden tener este aspecto:

Saludo a la afición (echo)
Borrado de las reglas aplicadas actualmente (flush)
Aplicación de políticas por defecto para INPUT, OUPUT, FORWARD
Listado de reglas iptables.

Ojo con el orden de las reglas!

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 195.65.34.234 -j ACCEPT

# A un colega le dejamos entrar al mysql para que mantenga la BBDD
iptables -A INPUT -s 231.45.134.23 -p tcp –dport 3306 -j ACCEPT

# A un diseñador le dejamos usar el FTP
iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT

# El puerto 80 de www debe estar abierto, es un servidor web.
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

# Y el resto, lo cerramos
iptables -A INPUT -p tcp –dport 20:21 -j DROP
iptables -A INPUT -p tcp –dport 3306 -j DROP
iptables -A INPUT -p tcp –dport 22 -j DROP
iptables -A INPUT -p tcp –dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script
Nota para freaks y geeks: siiii, que ya lo se, se puede mejorar este script usando variables, se puede poner el comando con el path completo, pero limítense a hacer copy-paste. Para el resto de mortales, no olvidarse de ponerle flags de ejecución: chmod +x firewall1.sh o chmod 750 firewall1.sh

En fin, ya se ve, un script de los más simple, con unas pocas reglas con las que cerramos puertos al público a los que no tienen porque tener acceso, salvo el 80. Pero cualquiera con algo de ojo se habrá dado cuenta de que ni se filtra el UDP ni el ICMP. Apostaría cualquier cosa a que el sistema tiene algún puerto udp abierto, y además peligroso como el SNMP. Como he dicho anteriormente, en este tipo de firewall es recordable hacer un netstat para ver que puertos están en estado de escucha (abiertos), y salve que un rootkit nos haya modificado los binarios, netstat nos dará la información precisa que necesitamos. Hay gente que se decanta por hacerse un nmap así mismos. Cuidado: dependiendo de cómo lo ejecutemos quizá no nos muestre todos los puertos, ya que suele mirar los bien conocidos.
Imaginemos que hemos dado un repaso a nuestro sistema, y ahora si que tenemos mejor identificados los puertos tcp y udp abiertos. Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024, los reservados tanto para tcp como udp.

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 195.65.34.234 -j ACCEPT

# A un colega le dejamos entrar al mysql para que mantenga la BBDD
iptables -A INPUT -s 231.45.134.23 -p tcp –dport 3306 -j ACCEPT

# A un diseñador le dejamos usar el FTP
iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT

# El puerto 80 de www debe estar abierto, es un servidor web.
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de
# barreras, antes hay que abrir a los que si tienen acceso.
iptables -A INPUT -p tcp –dport 1:1024 -j DROP
iptables -A INPUT -p udp –dport 1:1024 -j DROP

# Cerramos otros puertos que estan abiertos
iptables -A INPUT -p tcp –dport 3306 -j DROP
iptables -A INPUT -p tcp –dport 10000 -j DROP
iptables -A INPUT -p udp –dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

¿Sencillo, no? Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizás uses PostgreSQL). Si tiene miedo de perder el control de una máquina remota, pruebe el script en una máquina local y asegúrese de que aplica lo que usted quiere. Funcionar va a funcionar seguro.

– Versión con DROP por defecto

Vale, queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dar determinado servicio. Con DROP por defecto se protege la maquina perfectamente, aunque hay que añadir algunas reglas para que la propia máquina sea capaz de salir a internet.¿ Para qué? hombre, porque la maquina necesita actualizaciones, consultar DNS por udp, sacar correo etc.

Veamos un posible script:

 

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina con DROP por defecto
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto: DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

## Empezamos a filtrar? no! empezamos a abrir! porque ahora esta TODO denegado.
## Debemos decir de manera explicita qué es lo que queremos abrir

# Operar en localhost sin limitaciones
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 195.65.34.234 -j ACCEPT
iptables -A OUTPUT -d 195.65.34.234 -j ACCEPT

# Este es el servicio que DA la maquina a internet, por tanto todo paquete entrante se acepta para
# ese puerto y los salientes vinculados se aceptan.
/sbin/iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT

# Permitimos que la maquina pueda salir a la web
/sbin/iptables -A INPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT

# Ya tambien a webs seguras
/sbin/iptables -A INPUT -p tcp -m tcp –sport 443 -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 443 -j ACCEPT

# Reglas necesarias para FTP pasivo y activo. Se permiten conexiones entrantes YA establecidas
/sbin/iptables -A INPUT -p tcp -m tcp –sport 20:21 -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 20:21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 1024:65535 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT

# Permitimos la consulta a un primer DNS
/sbin/iptables -A INPUT -s 211.95.64.39 -p udp -m udp –sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 211.95.64.39 -p udp -m udp –dport 53 -j ACCEPT

# Permitimos la consulta a un segundo DNS
/sbin/iptables -A INPUT -s 211.95.79.109 -p udp -m udp –sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 211.95.79.109 -p udp -m udp –dport 53 -j ACCEPT

# Permitimos consultar el reloj de hora.rediris.es (un pentium166) para sincronizarse
/sbin/iptables -A INPUT -s 130.206.3.166 -p udp -m udp –dport 123 -j ACCEPT
/sbin/iptables -A OUTPUT -d 130.206.3.166 -p udp -m udp –sport 123 -j ACCEPT

# Barrera de backup por si cambiamos a modo ACCEPT temporalmente
# Con esto protegemos los puertos reservados y otros well-known
/sbin/iptables -A INPUT -p tcp -m tcp –dport 1:1024 -j DROP
/sbin/iptables -A INPUT -p udp -m udp –dport 1:1024 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp –dport 1723 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp –dport 3306 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp –dport 5432 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script


3.2 Firewall de una LAN con salida a internet
Ahora vamos a ver una configuración de firewall iptables para el típico caso de red local que necesita salida a internet.

Figura 6: esquema de firewall típico entre red local e internet

¿Qué es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascaramiento en iptables), con lo que se haría dos veces NAT en el firewall y en el router. Entre el router y el firewall lo normal es que haya una red privada (192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de las necesidades puede que los dos tengan IP pública. El router se supone que hace un NAT completo hacia dentro (quizá salvo puerto 23), o sea que desde el exterior no se llega al router si no que de forma transparente se “choca” contra el firewall. Lo normal en este tipo de firewalls es poner la política por defecto de FORWARD en denegar (DROP), pero eso lo vemos más adelante.
Veamos como sería este firewall-gateway:

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet
##
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script
Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internet, denegando el acceso a Kazaa o edonkey. Esta sería una configuración simple pero efectiva.

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet
## con filtro para que solo se pueda navegar.
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 443 -j ACCEPT

# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp –dport 53 -j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

 

Supongamos que este firewall tiene alguna función adicional: es un servidor proxy y además es un servidor de correo. Darle funcionalidades de este tipo a un firewall no es recomendable, porque si no se protegen bien esos puertos o si no está actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local. De todas formas muchas empresas no se pueden permitir o no quieren tener una máquina para cada cosa, bastante les cuesta a muchas poner un firewall. Por tanto: si se añaden servicios que deben estar abiertos al público en el propio firewall, nos la estamos jugando, y se recomienda pasar el servicio a otra máquina y ponerla en la DMZ.
Supongamos también que la empresa tiene comerciales en ruta y que se conectan a internet desde su portátil y con una ip dinámica. Supongamos también que el jefe de la empresa quiere acceder a la red local desde casa con una conexión ADSL. Ahora en el firewall debieramos tener instalado un servidor SMTP, pop3, y un PPTPD.

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet
## con servicios abiertos de puerto 25, 110, y 1723
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

## Abrimos el acceso a puertos de correo

# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 25 -j ACCEPT
# Abrimos el pop3
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 110 -j ACCEPT

# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe
iptables -A INPUT -s 211.45.176.24 -p tcp –dport 1723 -j ACCEPT

## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 443 -j ACCEPT

# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp –dport 53 -j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp –dport 10000 -j DROP

# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe.
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp –dport 1723 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

 
¡Más difícil todavía!
Ahora queremos compartir algún servicio pero de un servidor que tenemos dentro de la red local, por ejemplo el IIS de un servidor windows2000, y además permitir la gestión remota por terminal server para esta máquina para una empresa externa. En este caso lo que hay que hacer es un redirección de puerto. Antes de iptables esto se podía hacer fácilmente con un servidor como rinet. Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a él te lleva hasta el puerto de otra máquina, como una tubería. Con Iptables podemos hacer redirecciones con una ventaja: no perdemos la información de IP origen, cosa que con rinet sí ocurría. En fin, veamos la configuración, con las nuevas reglas de DNAT:

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet
## con servicios abiertos de puerto 25, 110, y 1723
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar

## REDIRECCIONES

# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos
# a una maquina interna
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to 192.168.10.12:80

# Los accesos de un ip determinada a Terminal server se redirigen e esa
# maquina
iptables -t nat -A PREROUTING -s 221.23.124.181 -i eth0 -p tcp –dport 3389 -j DNAT –to 192.168.10.12:3389
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

## Abrimos el acceso a puertos de correo

# Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 25 -j ACCEPT
# Abrimos el pop3
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 110 -j ACCEPT

# Y abrimos el puerto pptpd para la ip del adsl de casa del jefe
iptables -A INPUT -s 211.45.176.24 -p tcp –dport 1723 -j ACCEPT

## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD

# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 443 -j ACCEPT

# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp –dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp –dport 53 -j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP

# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp –dport 10000 -j DROP

# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe.
iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp –dport 1723 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

Bueno ya tenemos montada la red, pero conviene insistir en que esta última configuración, con las redirecciones y los servicios de correo funcionando en el firewall es bastante insegura. ¿Qué ocurre si hackean el servidor IIS de la red local? Pues que el firewall no sirve de gran cosa, lo poco que podría hacer una vez se ha entrado en la red local es evitar escaneos hacia el exterior desde la máquina atacada, aunque para ello el firewall debiera tener una buena configuración con denegación por defecto. Si necesitamos ese servidor IIS, basta con comprar una tarjeta de red por 6€ o dolares y crear una DMZ.


3.3 Firewall de una LAN con salida a internet con DMZ

Bueno, esto se va complicando. Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos las cosas bien y colocamos ese servidor IIS en una DMZ:

Figura 7: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitir:
– Acceso de la red local a internet.
– Acceso público al puerto tcp/80 y tcp/443 del servidor de la DMZ
– Acceso del servidor de la DMZ a una BBDD de la LAN
– Obviamente bloquear el resto de acceso de la DMZ hacia la LAN.
¿Qué tipo de reglas son las que hay que usar para filtrar el tráfico entre la DMZ y la LAN? Solo pueden ser las FORWARD, ya que estamos filtrando entre distintas redes, no son paquetes destinados al propio firewall.

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet con DMZ
##
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos
# a una maquina interna
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to 192.168.3.2:80

# Los accesos de un ip determinada HTTPS se redirigen e esa
# maquina
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 443 -j DNAT –to 192.168.3.2:443

# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local y de la DMZ
# para que puedan salir haca fuera
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Permitimos el paso de la DMZ a una BBDD de la LAN:
iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.5 -p tcp –dport 5432 -j ACCEPT

iptables -A FORWARD -s 192.168.10.5 -d 192.168.3.2 -p tcp –sport 5432 -j ACCEPT

## permitimos abrir el Terminal server de la DMZ desde la LAN
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.3.2 -p tcp –sport 1024:65535 –dport 3389 -j ACCEPT

# … hay que hacerlo en uno y otro sentido …
iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.0/24 -p tcp –sport 3389 –dport 1024:65535 -j ACCEPT

# … por que luego:
# Cerramos el acceso de la DMZ a la LAN
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP

## Cerramos el acceso de la DMZ al propio firewall
iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

Vamos a ver: si las máquinas de la DMZ tienen una ip pública hay que tener muchísimo cuidado de no permitir el FORWARD por defecto. Si en la DMZ hay ip pública NO ES NECESARIO HACER REDIRECCIONES de puerto, sino que basta con rutar los paquetes para llegar hasta la DMZ. Este tipo de necesidades surgen cuando por ejemplo tenemos dos máquinas con servidor web (un apache y un IIS); ¿A cuál de las dos le redirigimos el puerto 80? No hay manera de saberlo (No, con servidores virtuales tampoco, piénsalo), por eso se deben asignar IPs públicas o en su defecto usar puertos distintos.
Por tanto hay que proteger convenientemente toda la DMZ. Tampoco haría falta enmascarar la salida hacia el exterior de la DMZ, si tiene una ip pública ya tiene una pata puesta en internet; obviamente hay que decirle al router como llegar hasta esa ip pública. Así podría ser esta red:

Figura 8: esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs públicas

 

Y este podría ser un firewall adecuado:
#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet con DMZ
## pero con IPs públicas.
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local y de la DMZ
# para que puedan salir haca fuera
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZ
iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 80 -j ACCEPT
iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 443 -j ACCEPT
iptables -A FORWARD -d 212.194.89.150/30 -j DROP
## Permitimos el paso de la DMZ a una BBDD de la LAN:
iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.5 -p tcp –dport 5432 -j ACCEPT

# en el otro sentido lo mismo
iptables -A FORWARD -s 192.168.10.5 -d 212.194.89.152 -p tcp –sport 5432 -j ACCEPT

## permitimos abrir el Terminal server de la DMZ desde la LAN
iptables -A FORWARD -s 192.168.10.0/24 -d 212.194.89.152 -p tcp –sport 1024:65535 –dport 3389 -j ACCEPT

# … hay que hacerlo en uno y otro sentido …
iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -p tcp –sport 3389 –dport 1024:65535 -j ACCEPT

# … por que luego:
# Cerramos el acceso de la DMZ a la LAN
iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -j DROP

## Cerramos el acceso de la DMZ al propio firewall
iptables -A INPUT -s 212.194.89.152 -i eth2 -j DROP

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

ATENCIÓN
Merece la pena pararse a explicar esta parte del firewall:

## permitimos abrir el Terminal server de la DMZ desde la LAN
iptables -A FORWARD -s 192.168.10.0/24 -d 212.194.89.152 -p tcp -sport 1024:65535 –dport 3389 -j ACCEPT

# … hay que hacerlo en uno y otro sentido …
iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -p tcp –sport 3389 –dport 1024:65535 -j ACCEPT

# … por que luego:
# Cerramos el acceso de la DMZ a la LAN
iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -j DROP

Lo que nos lleva a dos cuestiones:
¿Por qué hay que explicitar la abertura en uno y otro sentido? Porque la tercera regla cierra todo lo que va de la DMZ a la red local. Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ y que a su vez pueda volver a la LAN. Esto de tener que especificar la abertura en uno y otro sentido será el pan de cada día en un iptables con política DROP por defecto: mejor protección pero más trabajo.

¿Por qué se explicita el puerto de origen/destino 1024:65535 en la primera y segunda regla? Imaginemos que un hacker logra acceso a la máquina de la DMZ. Si no especificamos el puerto de destino en esas dos reglas, el hacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp/3389, cosa fácil para un hacker que sepa algo de C o que tenga el programa pertinente a mano. De todas formas el hacker tendría que saber que existe ese tipo de reglas, si es listo probara con puertos de gestión o con puertos netbios. El problema es que se deja un vínculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahí es donde reside el peligro.

En las conexiones “legales” no se usa como puerto origen nada por debajo del 1024; cuando alguien se conecta a otro puerto en su extremo abre un puerto por encima del 1024. Especificándolo en la regla de firewall protegeremos un poco mejor la LAN, aunque los puertos por encima de 1024 estarán en peligro.


3.4 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendría que dar mayor problema, aunque la primera vez que lo montemos, el enmascaramiento nos jugará una mala pasada. Por eso conviene echar un vistazo en este caso.

Figura 9: esquema de firewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel), y que si el firewall nos deja podríamos llegar de la central a las delegaciones y viceversa usando las IPs privadas. Vaya que se puede hacer un ping desde la central a 192.168.30.x y nos responde. Para ello es imprescindible que el router de la central tenga una ruta metida para llegar a 192.168.10.0/24 y por supuesto cada una ruta para cada delegación. Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs privadas haciendo ping.

Supongamos también que en la central esta el servidor de correo que lógicamente debe tener el puerto 25 accesible desde internet, y debe ser accesible desde las delegaciones para puerto 25, 110 (pop3) o 143(imap). La salida a internet (web, ftp, etc..) cada uno la hace por su lado.

Veamos una posible configuración para este caso.
#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet con DMZ
## y delegaciones. Las delegaciones deben tener acceso al correo de la DMZ
##
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos
# a la maquina de la DMZ
iptables -t nat -A PREROUTING -i eth0 \
-p tcp –dport 25 -j DNAT –to 192.168.3.2:25

# Todo lo que venga por el interfaz del router(eth0) y vaya al 110
# siempre que sea una delegacion se acepta y redirije
iptables -t nat -A PREROUTING -s 192.168.20.0/24 -i eth0 \
-p tcp –dport 110 -j DNAT –to 192.168.3.2:110

iptables -t nat -A PREROUTING -s 192.168.30.0/24 -i eth0 \
-p tcp –dport 110 -j DNAT –to 192.168.3.2:110

# Todo lo que venga por el interfaz del router(eth0) y vaya al 110
# siempre que sea una delegacion se acepta y redirije
iptables -t nat -A PREROUTING -s 192.168.20.0/24 -i eth0 \
-p tcp –dport 143 -j DNAT –to 192.168.3.2:143

iptables -t nat -A PREROUTING -s 192.168.30.0/24 -i eth0 \
-p tcp –dport 143 -j DNAT –to 192.168.3.2:143
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local y de la DMZ
# para que puedan salir haca fuera
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
# Cuidado con este enmascaramiento.
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Para que desde la red local se salga hacia fuera hay que ENMASCARAR
# pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE
# ENMASCARAR, debemos meter una regla FORWARD explicita para que no enmascare
# porque si no una petición de la LAN a otra delegacion no se meteria
# en el tunel.
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -d 192.168.10.0/24 -j ACCEPT

iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.30.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.30.0/24 -d 192.168.10.0/24 -j ACCEPT
# Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN
# a puertos de correo

# En principio lo que va de LAN -> DMZ se acepta
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.3.0/24 -j ACCEPT

# Luedo desde la DMZ a la LAN solo se acepta 25,110,143
iptables -A FORWARD -s 192.168.3.0/24 -p tcp –sport 25 \
-d 192.168.10.0/24 -j ACCEPT

iptables -A FORWARD -s 192.168.3.0/24 -p tcp –sport 143 \
-d 192.168.10.0/24 -j ACCEPT

iptables -A FORWARD -s 192.168.3.0/24 -p tcp –sport 143 \
-d 192.168.10.0/24 -j ACCEPT

# Cerramos el acceso de la DMZ a la LAN
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP

## Cerramos el acceso de la DMZ al propio firewall
iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP

## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones, ya que sin esas reglas y con el enmascaramiento de por medio no se podría acceder a las delegaciones. Cabe resaltar que entre delegaciones no hay visibilidad total, solamente la central vería a todas las demás, y las delegaciones solamente la central.
La delegaciones accederían al servidor de correo con una redirección, o sea que ellos se configurarían el servidor de correo como 192.168.10.1, mientras que desde la LAN se accedería directamente. Se puede hacer de distintas maneras.

Lo interesante sería poner ese firewall con DROP por defecto, se tratará de mostrar esa configuración al final.

 


 

 

3.5 Firewall puro y duro entre redes

En este caso olvidémonos de redes locales y de NAT. Aquí solo tendremos reglas de filtrado INPUT y FORWARD. Pongamos que tenemos el siguiente escenario:

Figura 10: esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que están al otro lado de este dispositivo, todos ellos de la red 211.34.149.0/24
Cada uno de ellos da un servicio determinado, y puede estar gestionado desde distintas IPs, lo que significa que habrá que dar acceso a determinados puertos de gestión (22, 3389, etc..).
Este podría ser el aspecto del script del firewall:

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre redes.
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# A nuestro firewall tenemos acceso total desde la nuestra IP
iptables -A INPUT -s 210.195.55.15 -j ACCEPT

# Para el resto no hay acceso al firewall
iptables -A INPUT -s 0.0.0.0/0 -j DROP

## Ahora podemos ir metiendo las reglas para cada servidor
## Como serán paquetes con destino a otras máquinas se aplica FORWARD

## Servidor WEB 211.34.149.2
# Acceso a puerto 80
iptables -A FORWARD -d 211.34.149.2 -p tcp –dport 80 -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.2 -p tcp –dport 22 -j ACCEPT

# El resto, cerrar
iptables -A FORWARD -d 211.34.149.2 -j DROP
## Servidor MAIL 211.34.149.3
# Acceso a puerto 25, 110 y 143
iptables -A FORWARD -d 211.34.149.3 -p tcp –dport 25 -j ACCEPT
iptables -A FORWARD -d 211.34.149.3 -p tcp –dport 110 -j ACCEPT
iptables -A FORWARD -d 211.34.149.3 -p tcp –dport 143 -j ACCEPT

# Acceso a gestion SNMP
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p udp –dport 169 -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p tcp –dport 22 -j ACCEPT

# El resto, cerrar
iptables -A FORWARD -d 211.34.149.3 -j DROP
## Servidor IRC 211.34.149.4
# Acceso a puertos IRC
iptables -A FORWARD -d 211.34.149.4 -p tcp –dport 6666:6668 -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.4 -p tcp –dport 22 -j ACCEPT

# El resto, cerrar
iptables -A FORWARD -d 211.34.149.4 -j DROP
## Servidor NEWS 211.34.149.5
# Acceso a puerto news
iptables -A FORWARD -d 211.34.149.5 -p tcp –dport news -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 213.194.68.115 -d 211.34.149.5 -p tcp –dport 22 -j ACCEPT

# El resto, cerrar
iptables -A FORWARD -d 211.34.149.5 -j DROP
## Servidor B2B 211.34.149.6
# Acceso a puerto 443
iptables -A FORWARD -d 211.34.149.6 -p tcp –dport 443 -j ACCEPT

# Acceso a una ip para gestionarlo
iptables -A FORWARD -s 81.34.129.56 -d 211.34.149.6 -p tcp –dport 3389 -j ACCEPT

# El resto, cerrar
iptables -A FORWARD -d 211.34.149.6 -j DROP
## Servidor CITRIX 211.34.149.7
# Acceso a puerto 1494
iptables -A FORWARD -d 211.34.149.7 -p tcp –dport 1494 -j ACCEPT

# Acceso a una ip para gestionarlo
iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp –dport 3389 -j ACCEPT

# acceso a otro puerto quiza de BBDD
iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp –dport 1434 -j ACCEPT

# acceso a otro puerto quiza de BBDD
iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p udp –dport 1433 -j ACCEPT

# El resto, cerrar
iptables -A FORWARD -d 211.34.149.7 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script
Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertos, protegeremos de manera eficaz todos lo puertos abiertos de las máquinas.

 


3.6 Firewall con política por defecto DROP

Aquí llega la sección para los auténticos administradores de pelo en pecho.
¿Qué supone el hecho de establecer como política por defecto la denegación?
” Se debe explicitar cada conexión permitida en los dos sentidos.
” Se debe conocer perfectamente qué debe estar abierto y qué no.
” Es muchos más difícil de mantener y si se hace conviene hacerlo desde el principio.
” No todo es más trabajo: también supone un firewall mucho más seguro.

En el ejemplo de la DMZ ya se presentaba esta situación en las reglas forward de una a otra red. Para ilustrar el DROP por defecto, vamos a mostrar la configuración del ejemplo anterior de firewall entre redes pero con política por defecto DROP.

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre redes con DROP por defecto
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto: DROP!!!
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# A nuestro firewall tenemos acceso total desde la nuestra IP
iptables -A INPUT -s 210.195.55.15 -j ACCEPT
iptables -A OUTPUT -d 210.195.55.15 -j ACCEPT

# Para el resto no hay acceso al firewall
# En principio esta de más, pero si rebajamos los permisos temporalmente
# nos cubre las espaldas
iptables -A INPUT -s 0.0.0.0/0 -j DROP

## Ahora podemos ir metiendo las reglas para cada servidor
## Como serán paquetes con destino a otras máquinas se aplica FORWARD

## Servidor WEB 211.34.149.2
# Acceso a puerto 80
iptables -A FORWARD -d 211.34.149.2 -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -s 211.34.149.2 -p tcp –sport 80 -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.2 -p tcp –dport 22 -j ACCEPT

iptables -A FORWARD -s 211.34.149.2 -d 210.195.55.15 -p tcp –sport 22 -j ACCEPT

 

## Servidor MAIL 211.34.149.3
# Acceso a puerto 25, 110 y 143
iptables -A FORWARD -d 211.34.149.3 -p tcp –dport 25 -j ACCEPT
iptables -A FORWARD -s 211.34.149.3 -p tcp –sport 25 -j ACCEPT

iptables -A FORWARD -d 211.34.149.3 -p tcp –dport 110 -j ACCEPT
iptables -A FORWARD -s 211.34.149.3 -p tcp –sport 110 -j ACCEPT

iptables -A FORWARD -d 211.34.149.3 -p tcp –dport 143 -j ACCEPT
iptables -A FORWARD -s 211.34.149.3 -p tcp –sport 143 -j ACCEPT

# Acceso a gestion SNMP
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p udp –dport 169 -j ACCEPT

iptables -A FORWARD -s 211.34.149.3 -d 210.195.55.15 -p udp –sport 169 -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p tcp –dport 22 -j ACCEPT

iptables -A FORWARD -s 211.34.149.3 -d 210.195.55.15 -p tcp –sport 22 -j ACCEPT
## Servidor IRC 211.34.149.4
# Acceso a puertos IRC
iptables -A FORWARD -d 211.34.149.4 -p tcp –dport 6666:6668 -j ACCEPT
iptables -A FORWARD -s 211.34.149.4 -p tcp –sport 6666:6668 -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.4 -p tcp –dport 22 -j ACCEPT

iptables -A FORWARD -s 211.34.149.4 -d 210.195.55.15 -p tcp –sport 22 -j ACCEPT
## Servidor NEWS 211.34.149.5
# Acceso a puerto news
iptables -A FORWARD -d 211.34.149.5 -p tcp –dport news -j ACCEPT
iptables -A FORWARD -s 211.34.149.5 -p tcp –sport news -j ACCEPT

# Acceso a nuestra ip para gestionarlo
iptables -A FORWARD -s 213.194.68.115 -d 211.34.149.5 -p tcp –dport 22 -j ACCEPT

iptables -A FORWARD -s 211.34.149.5 -d 213.194.68.115 -p tcp –sport 22 -j ACCEPT

# El resto, cerrar
iptables -A FORWARD -d 211.34.149.5 -j DROP
## Servidor B2B 211.34.149.6
# Acceso a puerto 443
iptables -A FORWARD -d 211.34.149.6 -p tcp –dport 443 -j ACCEPT
iptables -A FORWARD -s 211.34.149.6 -p tcp –sport 443 -j ACCEPT

# Acceso a una ip para gestionarlo
iptables -A FORWARD -s 81.34.129.56 -d 211.34.149.6 -p tcp –dport 3389 -j ACCEPT

iptables -A FORWARD -s 211.34.149.6 -d 81.34.129.56 -p tcp –sport 3389 -j ACCEPT
## Servidor CITRIX 211.34.149.7
# Acceso a puerto 1494
iptables -A FORWARD -d 211.34.149.7 -p tcp –dport 1494 -j ACCEPT
iptables -A FORWARD -s 211.34.149.7 -p tcp –sport 1494 -j ACCEPT

# Acceso a una ip para gestionarlo
iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp –dport 3389 -j ACCEPT

iptables -A FORWARD -s 211.34.149.7 -d 195.55.234.2 -p tcp –sport 3389 -j ACCEPT

# acceso a otro puerto quiza de BBDD
iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp –dport 1434 -j ACCEPT

iptables -A FORWARD -s 211.34.149.7 -d 195.55.234.2 -p tcp –sport 1434 -j ACCEPT

# acceso a otro puerto quiza de BBDD
iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p udp –dport 1433 -j ACCEPT

iptables -A FORWARD -s 211.34.149.7 -d 195.55.234.2 -p udp –sport 1433 -j ACCEPT

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

Ya esta, hemos levantado un verdadero muro entre internet y el conjunto de servidores que esta
Tras el firewall. No se puede ni hacer un ping a las máquinas, salvo que se haya dado acceso total a una ip. Si quisieramos dar acceso al ping, pondríamos algo así:

Es más llevadero aplicar el DROP por defecto cuando el firewall es para la propia máquina. El primer escenario de esta manual trataba sobre este caso, ahora lo revisamos con la política por defecto drop.

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
## con política por defecto DROP
## Pello Xabier Altadill Izura
## www.pello.info – pello@pello.info

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

## Empezamos a filtrar

# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 195.65.34.234 -j ACCEPT
iptables -A OUTPUT -d 195.65.34.234 -j ACCEPT

# A un colega le dejamos entrar al mysql para que mantenga la BBDD
iptables -A INPUT -s 231.45.134.23 -p tcp –dport 3306 -j ACCEPT
iptables -A OUTPUT -d 231.45.134.23 -p tcp –sport 3306 -j ACCEPT

# A un diseñador le dejamos usar el FTP
iptables -A INPUT -s 80.37.45.194 -p tcp –dport 20:21 -j ACCEPT
iptables -A OUTPUT -d 80.37.45.194 -p tcp –sport 20:21 -j ACCEPT

# El puerto 80 de www debe estar abierto, es un servidor web.
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
# Aquí están las reglas de cerrar. Como hemos comentado en la configuración
# anterior conviene tener esto escrito por si en algún momento se relaja el
# firewall y s cambia a de DROP a ACCEPT por defecto
# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de
# barreras, antes hay que abrir a los que si tienen acceso.
iptables -A INPUT -p tcp –dport 1:1024
iptables -A INPUT -p udp –dport 1:1024

# Cerramos otros puertos que estan abiertos
iptables -A INPUT -p tcp –dport 3306 -j DROP
iptables -A INPUT -p tcp –dport 10000 -j DROP
iptables -A INPUT -p udp –dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script


4. Cómo depurar el funcionamiento del firewall

Programas útiles
IPTRAF. Sin duda alguna uno de los programas más prácticos para depurar el firewall es iptables, ya que con el podemos observar si la conexiones se establecen o no; es un programa de consola que es aconsejable controlar ya que muestra en tiempo real el tráfico que atraviesa nuestra máquina con todo lujo de detalles: origen/destino de ips y puertos, tráfico total o tráfico total según el interfaz de red, etc… Si vemos muchas conexiones simultaneas y nos perdemos, existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa.

NMAP. La herramienta para escanear puertos por excelencia, rechace imitaciones. Es una herramienta de consola rápida, efectiva y con multitud de opciones. Podemos usarla desde máquinas ajenas a nuestra red para comprobar si realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que “visión” pueden tener los hackers de nuestro sistema.

SHELL. En el propio script del firewall podemos añadir algunas opciones para descubrir fallos de sintaxis en las reglas. Claro, imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el script. ¿Cuál es? Es probable que el mensaje de error no aclare lo suficiente, por eso se puede añadir algo así al final de cada regla:


iptables -A INPUT -s 195.55.234.2 -j ACCEPT && echo ” regla-21 ok”
iptables -A INPUT -s 213.62.89.145 -j ACCEPT && echo ” regla-22 ok”

Si la regla se ejecuta bien mostrará el mensajito de ok.
Otra opción algo mas cutre sería ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta. Cabe reseñar que puede fallar una regla, pero a partir de ella el resto se ejecutan con normalidad.

Fuente : http://www.pello.info/filez/firewall/iptables.html

VBoxManager Ejecutar Maquina Virtual sin entorno Grafico

VirtualBox para mi es el mejor programa para crear maquinar virtuales, ya sea desde linux, windows y hasta androids, pero que pasa si queremos ejecutar esa maquinas virtuales en un servidor puro, es decir que no tiene interfaz gráfica y la queremos dejar ejecutando en el sistema.

VirtualBox tiene erramientas de comandos como  es el VBoxManager, que nos da multiples opciones.

 

Lo que primero hacemos es listar las maquinas virtuales para conocer el nombre e la que queremos ejecutar ya que tiene que ser escrito tal cual lo tiene registrado virtualbox

VBoxManage list

Luego ejecutaremos

VBoxManage startvm nombredemaquinavirtual -type headless

 

con esto ejecutaremos nuestra maquina virtual sin abrir ninguna interfaz gráfica en el servidor y poder utilizar ya sea un escritorio remoto o algún programa vnc para conectarnos, siempre que lo tengamos instalado dentro de la maquina virtual.