<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title># rm-rf.es &#187; Seguridad</title>
	<atom:link href="http://rm-rf.es/categoria/seguridad/feed/" rel="self" type="application/rss+xml" />
	<link>http://rm-rf.es</link>
	<description>Administración de sistemas, Unix, Linux, FreeBSD, Windows, hosting, dominios, servidores...</description>
	<lastBuildDate>Sat, 28 Jan 2012 19:36:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Verificar la integridad y seguridad de ficheros con RPM</title>
		<link>http://rm-rf.es/verificar-la-integridad-y-seguridad-de-ficheros-con-rpm/</link>
		<comments>http://rm-rf.es/verificar-la-integridad-y-seguridad-de-ficheros-con-rpm/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 19:36:55 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2479</guid>
		<description><![CDATA[RPM nos ofrece una utilidad muy valiosa que nos permite verificar la integridad y seguridad de todos los paquetes y aplicaciones instaladas en el sistema (con yum o rpm). Básicamente, lo que vamos a hacer es verificar todos los ficheros de todos los paquetes instalados en el sistema. La verificación consiste en comprobar la información [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img align="right" class=" size-full wp-image-2480" title="rpm" src="http://rm-rf.es/wp-content/uploads/2012/01/rpm.png" alt="rpm" width="128" height="128" />RPM</strong> nos ofrece una utilidad muy valiosa que nos permite <strong>verificar la integridad y seguridad de todos los paquetes y aplicaciones instaladas en el sistema (con <a href="http://rm-rf.es/6-trucos-utiles-del-gestor-de-paquetes-yum/" title="6 trucos útiles del gestor de paquetes yum">yum</a> o <a href="http://rm-rf.es/comandos-rpm/" title="Comandos RPM">rpm</a>)</strong>. Básicamente, lo que vamos a hacer es verificar todos los ficheros de todos los paquetes instalados en el sistema. La verificación consiste en comprobar la información de estos ficheros con la que hay almacenada en la base de datos rpm. Vamos a verificar el <strong>MD5 checksum, los permisos, el propietario y grupo, tamaño del fichero</strong>, etc. Para ello utilizaremos los parámetros <strong>&#8211;verify</strong> o <strong>-V</strong>.</p>
<p>De primeras podemos descartar los ficheros de configuración, ya que lo más normal es que su contenido cambie, aunque todavía podríamos revisar su configuración de permisos, propietario, etc.</p>
<p>Si queremos hacer una revisión de todos los ficheros del sistema, algo que lógicamente puede tardar bastante tiempo, utilizaremos el siguiente comando. Hay que tener en cuenta que en caso <strong>de no haber salida todo es correcto</strong>:</p>
<pre># rpm -Va</pre>
<p>Si queremos hacer la revisión de un único paquete lo indicamos y quitamos el parámetro &#8220;a&#8221;:</p>
<pre># rpm -V telnet</pre>
<p>Y si quisiéramos revisar un único fichero:</p>
<pre># rpm --verify --file /usr/bin/chcon</pre>
<p>¿Y qué sucede si se detecta algún problema? Vamos a verlo. Voy a hacer un backup del binario /usr/sbin/apachectl y a reescribirlo:</p>
<pre># mv /usr/sbin/apachectl /usr/sbin/apachectl.BAK
# touch /usr/sbin/apachectl
# rpm -V --file /usr/sbin/apachectl
S.5....T.  c /etc/httpd/conf/httpd.conf
S.5....T.    /etc/rc.d/init.d/httpd
S.5....T.  c /etc/sysconfig/httpd
SM5....T.    /usr/sbin/apachectl</pre>
<p>Como véis ahora sí que hay salida. Tenemos 8 puntos que se pueden convertir en otros caracteres cuando hay algo que no cuadra:</p>
<ul>
<li><strong>5</strong>: fallo en el checksum MD5</li>
<li><strong>S</strong>: discrepancia en el tamaño del fichero</li>
<li><strong>T</strong>: fecha de modificación distinta al original</li>
<li><strong>L</strong>: enlace simbólico</li>
<li><strong>D</strong>: dispositivo</li>
<li><strong>U</strong>: usuario</li>
<li><strong>G</strong>: grupo</li>
<li><strong>M</strong>: permisos</li>
</ul>
<p>Así pues, en el ejemplo anterior vemos como el binario apachectl tiene un checksum MD5 distinto, distinto tamaño, fecha de modificación y de permisos. La &#8220;c&#8221; es de fichero de configuración.</p>
<p>Si queremos comprobar de una tacada la integridad de todos los binarios de /usr/sbin, es tan sencillo como:</p>
<pre># rpm -Va | grep "/usr/sbin"
S.5....T.    /usr/sbin/apachectl</pre>
<p>Podemos añadir un mayor nivel de debug con el parámetro &#8220;v&#8221;, &#8220;vv&#8221; más debug aún:</p>
<pre># rpm -Vv --file /usr/sbin/apachectl
# rpm -Vvv --file /usr/sbin/apachectl</pre>
<p>Como veis, esta es una buena y sencilla forma de asegurarnos que los binarios del sistema no han sido alterados y también de tener un control del estado de los ficheros de configuración, etc.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/6-trucos-utiles-del-gestor-de-paquetes-yum/" title="6 trucos útiles del gestor de paquetes yum">6 trucos útiles del gestor de paquetes yum</a></li><li><a href="http://rm-rf.es/%c2%bfque-es-mejor-compilar-o-usar-yum-apt/" title="¿Qué es mejor, compilar o usar yum/apt?">¿Qué es mejor, compilar o usar yum/apt?</a></li><li><a href="http://rm-rf.es/bug-en-rrdtool-1228-texto-en-graficos-y-leyenda/" title="Bug en RRDtool 1.2.28 , texto en gráficos y leyenda">Bug en RRDtool 1.2.28 , texto en gráficos y leyenda</a></li><li><a href="http://rm-rf.es/rhn_register-y-yum-a-traves-de-un-proxy/" title="rhn_register y yum a través de un proxy">rhn_register y yum a través de un proxy</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/verificar-la-integridad-y-seguridad-de-ficheros-con-rpm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Instalar y configurar TigerVNC server y utilizarlo con un túnel SSH</title>
		<link>http://rm-rf.es/instalar-y-configurar-tigervnc-server-y-utilizarlo-con-un-tunel-ssh/</link>
		<comments>http://rm-rf.es/instalar-y-configurar-tigervnc-server-y-utilizarlo-con-un-tunel-ssh/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 18:13:22 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[vnc]]></category>
		<category><![CDATA[vnc-server]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2457</guid>
		<description><![CDATA[Instalar y configurar el servidor VNC TigerVNC es realmente sencillo. Lo que muchas veces no nos paramos a pensar es que el protocolo en sí no es seguro por lo que el tráfico no está cifrado al conectar al escritorio remoto. Vamos a ver como solucionarlo. Lo primero es instalar TigerVNC con yum (RHEL, CentOS, [...]]]></description>
			<content:encoded><![CDATA[<p>Instalar y configurar el <strong>servidor VNC TigerVNC</strong> es realmente sencillo. Lo que muchas veces no nos paramos a pensar es que <strong>el protocolo en sí no es seguro por lo que el tráfico no está cifrado al conectar al escritorio remoto</strong>. Vamos a ver como solucionarlo.</p>
<p>Lo primero es instalar TigerVNC con yum (RHEL, CentOS, Scifi linux, etc). En este caso instalo también el cliente para hacer las pruebas en local:</p>
<pre># yum install tigervnc-server tigervnc</pre>
<p>Una vez instalado debemos saber que la configuración se realiza en el fichero <strong>/etc/sysconfig/vncservers</strong>. Los comentarios del fichero nos indican claramente como configurarlo, también hice un artículo hace un tiempo, echadle un vistazo: <a href="http://rm-rf.es/instalar-configurar-vnc-server-en-centos-rhel-fedora/" title="Instalar y configurar vnc-server en CentOS/RHEL/Fedora">Instalar y configurar vnc-server en CentOS/RHEL/Fedora</a></p>
<p>He creado un usuario &#8220;alex&#8221; al que únicamente se le permite el acceso local por seguridad:</p>
<pre># The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own).  You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, see this URL:
# http://kbase.redhat.com/faq/docs/DOC-7028

# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.

# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.

# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
VNCSERVERS="2:ale
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
</pre>
<p>Creamos el password VNC para el usuario del siguiente modo:</p>
<pre># su alex -c "vncpasswd"
Password: XXXX
Verify: XXXX
</pre>
<p>Arrancamos el servidor VNC para el usuario alex:</p>
<pre>[alex@localhost /]$ vncserver
xauth:  creating new authority file /home/alex/.Xauthority

New 'rhcsa:1 (alex)' desktop is rhcsa:1

Starting applications specified in /home/alex/.vnc/xstartup
Log file is /home/alex/.vnc/rhcsa:1.log
</pre>
<p>Llegados a este punto podemos acceder sin problemas en local al escritorio remoto con el comando <strong>vncviewer</strong>:</p>
<pre>$ vncviewer localhost:1</pre>
<p><strong>Desde fuera no, por motivos de seguridad</strong>. Para ello vamos a crear un <a href="http://rm-rf.es/encapsular-trafico-a-traves-de-un-tunel-cifrado-con-ssh/" title="Encapsular tráfico a través de un tunel cifrado con SSH">tunel SSH</a> de modo que las conexiones VNC con el exterior sí que estén cifradas. Vamos a usar por ejemplo el puerto 6922 para el tunel. El servidor VNC se encuentra en la IP 10.0.0.100, desde el equipo remoto con el que queremos conectar al servidor creamos el tunel:</p>
<pre>$ ssh alex@10.0.0.100 -L 6922:10.0.0.100:5901 -N</pre>
<p>Y ya está, podemos acceder remotamente al servidor VNC de forma segura con el nuevo puerto:</p>
<pre>$ vncviewer localhost:6922</pre>
<p>Si queréis usar el estandar podéis mantener los puertos de VNC:</p>
<pre>$ ssh alex@10.0.0.100 -L 5901:10.0.0.100:5901 -N</pre>
<pre>$ vncviewer localhost:1</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/reinstalar-centos-de-forma-remota-via-vnc-sin-acceso-fisico-al-servidor/" title="Reinstalar CentOS de forma remota vía VNC (sin acceso físico al servidor)">Reinstalar CentOS de forma remota vía VNC (sin acceso físico al servidor)</a></li><li><a href="http://rm-rf.es/instalar-configurar-vnc-server-en-centos-rhel-fedora/" title="Instalar y configurar vnc-server en CentOS/RHEL/Fedora">Instalar y configurar vnc-server en CentOS/RHEL/Fedora</a></li><li><a href="http://rm-rf.es/ssh-authorized_keys-y-umask/" title="ssh, authorized_keys y umask">ssh, authorized_keys y umask</a></li><li><a href="http://rm-rf.es/usar-autenticacion-ldap-openldap-con-opensshd-sshd/" title="Usar autenticación LDAP (OpenLDAP) con OpenSSHD (sshd)">Usar autenticación LDAP (OpenLDAP) con OpenSSHD (sshd)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/instalar-y-configurar-tigervnc-server-y-utilizarlo-con-un-tunel-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encriptar un filesystem con LUKS y cryptsetup</title>
		<link>http://rm-rf.es/encriptar-un-filesystem-con-luks-y-cryptsetup/</link>
		<comments>http://rm-rf.es/encriptar-un-filesystem-con-luks-y-cryptsetup/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 08:47:54 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[encriptacion]]></category>
		<category><![CDATA[encriptar]]></category>
		<category><![CDATA[sistema ficheros]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2344</guid>
		<description><![CDATA[LUKS (Linux Unified Key Setup) es un cifrado que trabaja a nivel de bloque de fichero sobre la partición o volumen lógico y que permite encriptar sistemas de ficheros, para los cuales es necesaria una passphrase o keyfile para su desencriptado. Encriptar un sistema de ficheros es especialmente útil cuando trabajamos con información sensible en [...]]]></description>
			<content:encoded><![CDATA[<p><img class=" size-full wp-image-2345" title="luks" src="http://rm-rf.es/wp-content/uploads/2011/11/luks.png" alt="luks" width="330" height="112" align="right" /><strong>LUKS (Linux Unified Key Setup)</strong> es un cifrado que trabaja a nivel de bloque de fichero sobre la partición o volumen lógico y que permite <strong>encriptar sistemas de ficheros</strong>, para los cuales es necesaria una <strong>passphrase o keyfile</strong> para su desencriptado. Encriptar un sistema de ficheros es especialmente útil cuando trabajamos con información sensible en dispositivos físicos portatiles, como por ejemplo pendrives, ordenadores portátiles, etc.</p>
<p>Vamos a encriptar un sistema de ficheros de un disco secundario sobre un sistema RHEL 6 (CentOS). Para encriptar particiones de sistema (filesystem / o /home por ejemplo) es preferible hacerlo en el momento de la instalación, ya que resulta más sencillo y evitamos la pérdida de datos posterior.</p>
<h3>Preparación del sistema</h3>
<p>Para la encriptación con LUKS necesitamos tener cargado el módulo de kernel <strong>dm_crypt</strong> así como el paquete <strong>cryptsetup-luks</strong>:</p>
<pre># lsmod | grep dm_cry
dm_crypt               10848  0
dm_mod                 63859  5 dm_crypt,dm_mirror,dm_log</pre>
<p>Si no está cargado en vuestro sistema hacedlo con modprobe:</p>
<pre># modprobe dm_crypt</pre>
<p>Acordaos de configurarlo (por defecto es probable que con modprobe sea suficiente) para que sea <a href="http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-kernel-modules-persistant.html" target="_blank">persistente a reinicios</a>.</p>
<p>Instalamos <strong>cryptsetup-luks</strong> en caso de que no esté instalado:</p>
<pre># yum install cryptsetup-luks</pre>
<pre># rpm -qa | grep cryptse
cryptsetup-luks-libs-1.1.2-2.el6.i686
cryptsetup-luks-1.1.2-2.el6.i686</pre>
<h3>Preparación del sistema de ficheros/partición</h3>
<p>Vamos a asumir que tenemos ya el sistema de ficheros creado. Podéis revisar los siguientes artículos si tenéis dudas, tanto de crear una partición estándar como un LVM:</p>
<ul>
<li><a title="Gestión de LVM en Linux (Logical Volume Manager)" href="http://rm-rf.es/gestion-de-lvm-en-linux-logical-volume-manager/">Gestión de LVM en Linux (Logical Volume Manager)</a></li>
<li><a title="Crear y eliminar particiones con fdisk en Linux" href="http://rm-rf.es/crear-y-eliminar-particiones-con-fdisk-en-linux/">Crear y eliminar particiones con fdisk en Linux</a></li>
</ul>
<p>Algo recomendable pero que suele llevar bastante tiempo es, lo primero de todo, <strong>llenar de datos aleatorios la partición a encriptar</strong>. Repito que puede llevar bastante tiempo dependiendo del tamaño de la partición. Si sólo estáis haciendo pruebas no es necesario que lo hagáis (sustituid /dev/volgroup1/logvol1 por vuestra partición o volumen):</p>
<pre># dd if=/dev/urandom of=/dev/volgroup1/logvol1</pre>
<h3>Encriptación del filesystem</h3>
<p>Llegados a este punto ya tenemos el sistema de ficheros preparado para su encriptación. Haremos uso del comando <strong>cryptsetup</strong>. Lo primero que haremos es asignar la passphrase. Cuanto más compleja sea mejor, igual que cualquier password:</p>
<p><em>Nota: se eliminará cualquier dato del filesystem</em></p>
<pre># cryptsetup luksFormat /dev/volgroup1/logvol1

WARNING!
========
This will overwrite data on /dev/volgroup1/logvol1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: *********
Verify passphrase: *********</pre>
<p>Al tratarse de un filesystem encriptado debemos mapearlo ya que no se puede leer directamente. Esa unidad mapeada será la que montaremos y utilicemos como un filesystem estándar. Vamos a sacar el UUID del sistema de ficheros encriptado para utilizarlo si queremos en lugar de la etiqueta (LABEL):</p>
<pre># cryptsetup luksUUID /dev/volgroup1/logvol1
79da86ea-70f2-4a80-82cb-6c614a885a37</pre>
<p>Mapeamos el sistema de ficheros contra encrypted-fs:</p>
<pre># cryptsetup luksOpen /dev/volgroup1/logvol1 encrypted-fs
Enter passphrase for /dev/volgroup1/logvol1:</pre>
<p>Y ya tenemos el volumen listo para particionar en /dev/mapper/encrypted-fs. Le damos formato y lo montamos:</p>
<pre># mkfs.ext4 /dev/mapper/encrypted-fs</pre>
<p>Finalmente, lo añadimos a fstab para el arranque al inicio del sistema. Podemos hacerlo con el UUID o con la etiqueta (LABEL) del fs:</p>
<pre># tune2fs -l /dev/mapper/encrypted-fs | grep UUID
Filesystem UUID:          9578a03e-949b-4fe8-a16c-57024b01fe89</pre>
<p>Lo añadimos a /etc/fstab:</p>
<pre>UUID=9578a03e-949b-4fe8-a16c-57024b01fe89 /encrypted-fs ext4    defaults 0 0</pre>
<p>Y añadimos también la siguiente entrada a /etc/crypttab para que solicite la passphrase en el arranque del sistema:</p>
<pre>encrypted-fs /dev/volgroup1/logvol1 none</pre>
<p>Si reiniciáis, durante el arranque se os solicitará la passphrase del volumen:</p>
<pre>logvol1 is password protected: *************</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/encriptacion-y-desencriptacion-con-gnupg/" title="Encriptación y desencriptación con GnuPG">Encriptación y desencriptación con GnuPG</a></li><li><a href="http://rm-rf.es/encriptar-mensajes-de-gmail-con-firegpg/" title="Encriptar mensajes de Gmail con FireGPG">Encriptar mensajes de Gmail con FireGPG</a></li><li><a href="http://rm-rf.es/gestion-de-particiones-con-parted-en-linux/" title="Gestión de particiones con parted en Linux">Gestión de particiones con parted en Linux</a></li><li><a href="http://rm-rf.es/montar-un-filesystem-por-uuid-o-label/" title="Montar un filesystem por UUID o label">Montar un filesystem por UUID o label</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/encriptar-un-filesystem-con-luks-y-cryptsetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 trucos para securizar PHP</title>
		<link>http://rm-rf.es/10-trucos-para-securizar-php/</link>
		<comments>http://rm-rf.es/10-trucos-para-securizar-php/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 09:07:58 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2308</guid>
		<description><![CDATA[En esta entrada vamos a ver unos cuantos puntos que nos servirán para securizar PHP en nuestro servidor web. Nos centramos en la configuración propia de PHP, hay que tener en cuenta que la securización de la capa aplicación es tanto o más importante que la de la configuración del servidor. Hay que tener siempre [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" class=" size-thumbnail wp-image-1651" style="margin-left: 10px; margin-right: 10px;" title="php 5.3.6" src="http://rm-rf.es/wp-content/uploads/2011/03/php-150x150.jpg" alt="php 5.3.6" width="150" height="150" /></p>
<p>En esta entrada vamos a ver unos cuantos puntos que nos servirán para <strong>securizar PHP en nuestro servidor web</strong>. Nos centramos en la configuración propia de PHP, hay que tener en cuenta que <strong>la securización de la capa aplicación es tanto o más importante que la de la configuración del servidor</strong>. Hay que tener siempre actualizados a la última versión estable y con los parches de seguridad correctamente aplicados cualquier cms o script de terceros tipo WordPress, Joomla, Oscommerce, etc.</p>
<h3>Ocultar la versión de PHP</h3>
<p>En su día hice un artículo completo sobre esto, podéis verlo aquí (<a title="Ocultar la versión de PHP" href="http://rm-rf.es/ocultar-la-version-de-php/">ocultar la versión de PHP</a>). Básicamente evitamos que con un simple telnet puedan averiguar la versión de PHP que hay corriendo en el servidor:</p>
<pre># telnet servidor 80

Connected to xxx.com (xx.xx.xx.xx).
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 13 Aug 2010 14:18:09 GMT
Server: Apache/1.3.26 (Unix) mod_gzip/1.3.26.1a PHP/5.3.3
Last-Modified: Fri, 12 Feb 2010 12:22:56 GMT
ETag: "44967c-6f-53ca4800"
Accept-Ranges: bytes
Content-Length: 111
Connection: close
Content-Type: text/html

Connection closed by foreign host.</pre>
<p>Para evitar esto cambiamos a off la siguiente variable en el fichero de configuración general <strong>php.ini</strong>:</p>
<pre>expose_php Off</pre>
<h3>Deshabilitar funciones peligrosas</h3>
<p>También hice un artículo hace un tiempo: <a title="PHP: Deshabilitar funciones peligrosas" href="http://rm-rf.es/php-deshabilitar-funciones-peligrosas/">PHP: Deshabilitar funciones peligrosas</a>. Existen funciones que en servidores con aplicaciones estándar rara vez se usan, pero que por contra pueden generar graves problemas de seguridad si el atacante consigue utilizarlas. Es preferible desactivar el mayor número posible y en caso de que una de ellas sea necesario valorar su activación o proponer alternativas.</p>
<p>Las funciones a deshabilitar se añaden en la directiva &#8220;disable_functions&#8221; en el fichero php.ini. Aquí tenéis un ejemplo con funciones peligrosas que conviene desactivar:</p>
<p>disable_functions = &#8220;apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode&#8221;</p>
<p>O un ejemplo más conservador:</p>
<pre>disable_functions ="system,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,pcntl_exec"</pre>
<h3>deshabilitar session ID en URL</h3>
<p>Si queremos que las URL’s de nuestros sitios PHP no muestren los ID de sesiones:</p>
<pre>http://ejemplo.com/?PHPSESSID=4kgj577sgabvnmhjgkdiuy1956if6ska</pre>
<p>Modificamos la directiva siguiente en el fichero php.ini:</p>
<pre>session.use_trans_sid = off</pre>
<h3>Deshabilitar register_globals</h3>
<p>Pese a ser una directiva antigua y que se encuentra en periodo de extinción todavía quedan desarrolladores/programadores que la utilizan. Esta función permite al atacante manipular cualquier variable global definida en la programación. Por defecto está deshabilitada en las versiones actuales de PHP, pero conviene revisarlo por si en algún momento se ha activado:</p>
<pre>register_globals = Off</pre>
<h3>Desactivar acceso a URL remotas en funciones de manejo de ficheros</h3>
<p>Funciones como include, fopen o file_get_contents permiten, además de hacer llamadas a ficheros locales, llamar a ficheros vía URL, esto puede provocar graves errores de seguridad invocando a scripts maliciosos que se encuentran fuera de nuestro servidor y su ejecución remota.</p>
<p>Para deshabilitarlo modificamos la directiva allow_url_fopen a Off en el php.ini:</p>
<pre>allow_url_fopen = Off</pre>
<h3>Evitar el acceso a la información de PHP</h3>
<p>Como ya sabéis con un simple script como el siguiente podemos ver vía URL toda la información de PHP, su compilación, sus módulos activados, versión, directivas de configuración, etc.</p>
<pre>&lt;? phpinfo() ?&gt;</pre>
<p>Si queremos desactivarlo, únicamente hay que modificar a Off la siguiente directiva en el fichero php.ini:</p>
<pre>expose_php = Off</pre>
<p>Si en algún momento necesitáis conocer alguna información, siempre podéis averiguarla desde línea de comandos: <a title="Información sobre PHP desde línea de comandos" href="http://rm-rf.es/informacion-php-linea-comandos/">información sobre PHP desde línea de comandos</a></p>
<h3>Safe Mode</h3>
<pre>safe_mode = On</pre>
<p>Si bien por defecto safe_mode On puede significar una restricción demasiado fuerte en determinados entornos, puede ayudar mucho a incrementar la seguridad de nuestro servidor. Activar safe_mode implica que <strong>los scripts PHP únicamente pueden acceder a los ficheros que tienen como propietario el mismo que ellos</strong>. De este modo evitamos por ejemplo que tengan acceso de lectura a ficheros de sistema como /etc/passwd entre otros.</p>
<p>Efectivamente, esto puede ser un problema en el momento que necesitamos acceder a información generada por otros usuarios en el sistema (ficheros de otras aplicaciones. La solución es la siguiente:</p>
<pre>safe_mode = Off
safe_mode_gid = On</pre>
<p>Activamos safe_mode_gid en lugar de safe_mode, de modo que <strong>en lugar de revisar el usuario se revisa el grupo</strong>. Independientemente del UID del fichero, necesitaremos que estar dentro del grupo para poder acceder al ficheros. El grupo del script PHP deberá ser el mismo que el del fichero a acceder.</p>
<p>Otro punto a tener en cuenta con safe_mode es que no podremos ejecutar binarios. Únicamente aquellos que ubiquemos en el directorio especificado en la configuración:</p>
<pre>safe_mode_exec_dir = /directorio</pre>
<p>Esto se solaparía con las funciones deshabilitadas anteriormente, como por ejemplo system() o exec().</p>
<h3>open_basedir</h3>
<pre>open_basedir = /directorio</pre>
<p>La directiva open_basedir permite configurar que PHP pueda acceder únicamente a los ficheros de un único directorio (y sus subdirectorios). Es una buena forma de enjaular PHP si realmente sólo necesitamos que acceda a un determinado directorio.</p>
<h3>Visualización y registro de errores</h3>
<pre>display_errors = Off
log_errors = On
error_log = /ruta/fichero/log</pre>
<p>Con estas tres directivas, evitamos que cualquier error o warning se muestre por pantalla y hacemos que se registren directamente en un log especificado. De este modo podemos evitar que se muestre información sensible por pantalla. También podéis hacer uso de la directiva <strong>error_reporting</strong> si queréis mostrar por pantalla los errores. Con ella podéis especificar que se muestren únicamente los warning, los notice o lo que queráis.</p>
<h3>SQL Injection</h3>
<p>En su día se utilizaba magic_quotes para limpiar los datos de entrada de un script PHP, pero es una directiva obsoleta a partir de PHP 5.3 así que no merece la pena hablar de ella. En su defecto, si usáis servidor web Apache, os recomiendo encarecidamente configurar <a title="Instalación y configuración de Mod_Security" href="http://rm-rf.es/instalacion-y-configuracion-de-mod_security/">mod_security</a> y habilitar sus reglas que permiten detectar y parar una gran cantidad de ataques de este tipo, y sino, puedes crear tus propias reglas.</p>
<p>Como último apunte, conviene siempre si es posible mantener una versión estable de PHP, libre de bugs y fallos de seguridad. Seguro además que una vez aplicados estos trucos os toca lidiar con los programadores. Se quejarán de algo seguro ;)</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/ocultar-la-version-de-php/" title="Ocultar la versión de PHP">Ocultar la versión de PHP</a></li><li><a href="http://rm-rf.es/encriptar-un-filesystem-con-luks-y-cryptsetup/" title="Encriptar un filesystem con LUKS y cryptsetup">Encriptar un filesystem con LUKS y cryptsetup</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/10-trucos-para-securizar-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seguridad Unix con TCP Wrappers</title>
		<link>http://rm-rf.es/seguridad-unix-con-tcp-wrappers/</link>
		<comments>http://rm-rf.es/seguridad-unix-con-tcp-wrappers/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 16:58:15 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2220</guid>
		<description><![CDATA[El otro día hablábamos sobre securizar un sistema Linux con iptables y en otro artículo encontrábamos un firewall basado en FreeBSD llamado pfSense. Hoy vamos a ver cómo securizar un sistema Unix (Linux, BSD&#8230;) a través de TCP Wrappers,  un buen complemento de iptables. La wikipedia lo define como: TCP Wrapper (&#8220;Envoltorio de TCP&#8221;) es [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2221" style="margin-left: 20px; margin-right: 20px;" title="Seguridad Unix TCP Wrappers" src="http://rm-rf.es/wp-content/uploads/2011/09/seguridad.jpg" alt="Seguridad Unix TCP Wrappers" width="198" height="198" align="right" />El otro día hablábamos sobre <a title="Introducción a iptables" href="http://rm-rf.es/introduccion-a-iptables/">securizar un sistema Linux con iptables</a> y en otro artículo encontrábamos un <a title="pfSense: Firewall Open Source basado en FreeBSD" href="http://rm-rf.es/pfsense-firewall-open-source-basado-en-freebsd/">firewall basado en FreeBSD llamado pfSense</a>. Hoy vamos a ver <strong>cómo securizar un sistema Unix (Linux, BSD&#8230;) a través de TCP Wrappers</strong>,  un buen complemento de iptables. La wikipedia lo define como:</p>
<blockquote><p>TCP Wrapper (&#8220;Envoltorio de TCP&#8221;) es un sistema de red ACL que trabaja en terminales y que se usa para filtrar el acceso de red a servicios de protocolos de Internet que corren en sistemas operativos (tipo UNIX), como Linux o BSD. Permite que las direcciones IP, los nombres de terminales y/o respuestas de consultas ident de las terminales o subredes sean usadas como tokens sobre los cuales filtrar para propósitos de control de acceso.</p></blockquote>
<p>Bien, partimos de la base de que tenemos dos ficheros configurables, <strong>/etc/hosts.deny</strong> y <strong>/etc/hosts.allow</strong>. En ellos podemos <strong>especificar que IPs, hostnames o redes pueden acceder a determinados servicios</strong> del sistema. TCP Wrappers suele venir instalado por defecto en la mayoría de sistemas operativos Unix.</p>
<p>La sintaxis básica de estos ficheros es la siguiente:</p>
<pre>daemon : dirección : acción
ó
daemon : dirección</pre>
<p>Daemon es el demonio/servicio a filtrar, dirección es la <strong>dirección, host o subred</strong> y acción si denegamos o aceptamos el acceso. Para <strong>saber si un servicio puede ser configurado para filtrado vía TCP Wrappers</strong> hay que saber si su binario está enlazado con la biblioteca libwrap.a. Para ello:</p>
<pre># ldd /usr/sbin/sshd | grep libwrap.so
	libwrap.so.0 =&gt; /lib/libwrap.so.0 (0x001ce000)</pre>
<p>Si la salida es NULL el demonio no está compilado con TCP Wrappers y no funcionará. Si devuelve algo como lo anterior sí que lo está. Vamos a ver entonces unos cuantos ejemplos:</p>
<h3>Permitir acceso ssh únicamente a unas IPs</h3>
<p><strong>/etc/hosts.allow</strong> Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.</p>
<pre>sshd: 192.168.0.111 192.168.0.112 192.168.0.113</pre>
<p><strong>/etc/hosts.deny</strong> Denegamos al resto.</p>
<pre>sshd: ALL</pre>
<h3>Bloquear todo excepto lo declarado en /etc/hosts.allow</h3>
<p><strong>/etc/hosts.allow</strong></p>
<pre>sshd: 192.168.0.111 192.168.0.112 192.168.0.113</pre>
<p><strong>/etc/hosts.deny</strong> Denegamos acceso al resto de servicios excepto SSH a las Ips indicadas. La máquina quedará blindada excepto el acceso SSH a las Ips permitidas:</p>
<pre>ALL: ALL</pre>
<h3>Permitir también el uso de sendmail a una subred y unos hosts concretos</h3>
<p><strong>/etc/hosts.allow</strong> Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.</p>
<pre>sshd: 192.168.0.111 192.168.0.112 192.168.0.113
sendmail: 10.0.0.0/24 test.com prueba.com</pre>
<p><strong>/etc/hosts.deny</strong></p>
<pre>ALL: ALL</pre>
<h3>Permitir todo y bloquear el acceso total a una única IP</h3>
<p><strong>/etc/hosts.allow</strong></p>
<pre>ALL: ALL</pre>
<p><strong>/etc/hosts.deny</strong></p>
<pre>ALL: 192.168.0.115</pre>
<h3>Filtrar y ejecutar un comando tras un intento de acceso</h3>
<p><strong>/etc/hosts.allow</strong></p>
<pre>ALL: ALL</pre>
<p><strong>/etc/hosts.deny</strong></p>
<pre>ALL: 192,168.0.115 \
   : spawn (/bin/echo %a desde %h intento acceder a %d &gt;&gt; \
    /var/log/connections.log) \
   : deny</pre>
<p>Aquí ya depende todo si queremos aplicar una política restrictiva desde el principio, bloquear todo y a partir de ahí comenzar a abrir servicios a determinadas Ips, rangos o hosts o si por el contrario queremos dejar todo abierto y cerrar servicios a determinadas Ips,etc.</p>
<p>Si os resulta interesante, disponéis de más información en el <a href="http://www.freebsd.org/doc/es/books/handbook/tcpwrappers.html" target="_blank">handbook de freebsd</a> o en <a href="http://linux.about.com/od/commands/l/blcmdl5_hostsde.htm" target="_blank">Linux about.com</a>. Esta ha sido una mera introducción a TCP Wrappers</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/encriptar-un-filesystem-con-luks-y-cryptsetup/" title="Encriptar un filesystem con LUKS y cryptsetup">Encriptar un filesystem con LUKS y cryptsetup</a></li><li><a href="http://rm-rf.es/10-trucos-para-securizar-php/" title="10 trucos para securizar PHP">10 trucos para securizar PHP</a></li><li><a href="http://rm-rf.es/comando-chage-tiempo-de-vida-de-claves-y-usuarios-en-gnulinux/" title="Comando chage: tiempo de vida de claves y usuarios en GNU/Linux">Comando chage: tiempo de vida de claves y usuarios en GNU/Linux</a></li><li><a href="http://rm-rf.es/permisos-especiales-setuid-setgid-sticky-bit/" title="Permisos especiales (setuid, setgid, sticky bit)">Permisos especiales (setuid, setgid, sticky bit)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/seguridad-unix-con-tcp-wrappers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Repositorio CentOS-5.6 Continuous Release ( CR ) disponible</title>
		<link>http://rm-rf.es/repositorio-centos-5-6-continuous-release-cr-disponible/</link>
		<comments>http://rm-rf.es/repositorio-centos-5-6-continuous-release-cr-disponible/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 20:32:31 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[repositorios]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2196</guid>
		<description><![CDATA[CentOS ha publicado un nuevo repositorio a través de mirror.centos.org. CentOS-5.6 Continuous Release ( CR ) contiene rpms que serán incluidas en la próxima versión de la rama 5.X de CentOS, pero que debido a que son actualizaciones de seguridad y soluciones a bugs conocidos es recomendable instalarlas sin tener que esperar a que salgan [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rm-rf.es/wp-content/uploads/2011/04/centos.jpg"><img class="size-full wp-image-1699" style="margin: 0px;" title="CentOS" src="http://rm-rf.es/wp-content/uploads/2011/04/centos.jpg" alt="CentOS" width="330" height="126" align="right" /></a><strong>CentOS</strong> ha publicado un nuevo repositorio a través de mirror.centos.org. CentOS-5.6 Continuous Release ( CR ) contiene <strong>rpms que serán incluidas en la próxima versión de la rama 5.X de CentOS, pero que debido a que son actualizaciones de seguridad y soluciones a bugs conocidos</strong> es recomendable instalarlas sin tener que esperar a que salgan a la luz con la nueva versión 5.7, que saldrá aproximadamente en una semana.</p>
<p>Se recomienda encarecidamente activar estos repositorios y actualizar el sistema. Únicamente hay que instalar los siguientes repos y actualizar el sistema. Como ya sabéis se añadirá el nuevo repositorio CentOS-CR.repo en la ruta /etc/yum.repos.d/. Podéis descargar los rpm a continuación:</p>
<p><strong>i386:</strong></p>
<p>http://mirror.centos.org/centos/5.6/cr/i386/RPMS/centos-release-cr-5-6.el5.centos.1.i386.rpm</p>
<p>md5: 67bbeb40cb77a91379847074667d2956<br />
sha256: 50cd9f3d35b391a9009a9caae80182dcfccfa5abaf4ff4ef5f4d880bcf26b04c</p>
<p><strong>x86_64:</strong></p>
<p>http://mirror.centos.org/centos/5.6/cr/x86_64/RPMS/centos-release-cr-5-6.el5.centos.1.x86_64.rpm</p>
<p>md5: c447f54818a657a9dfd7fdd28a28cfcc<br />
sha256: dab390a0fca17612e438b215fc90448ebcef982e96e25cbea8426f00edc8b7a5</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/como-crear-un-repositorio-local-de-yum/" title="Cómo crear un repositorio local de yum">Cómo crear un repositorio local de yum</a></li><li><a href="http://rm-rf.es/como-instalar-rrdtool-en-centos-5/" title="Cómo instalar RRDtool en CentOS 5">Cómo instalar RRDtool en CentOS 5</a></li><li><a href="http://rm-rf.es/bondingteamingtrunking-en-rhel-y-centos/" title="Bonding/Teaming/Trunking en RHEL y CentOS">Bonding/Teaming/Trunking en RHEL y CentOS</a></li><li><a href="http://rm-rf.es/selinux-semanage-command-not-found/" title="SELinux &#8216;semanage: command not found&#8217;">SELinux &#8216;semanage: command not found&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/repositorio-centos-5-6-continuous-release-cr-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pfSense: Firewall Open Source basado en FreeBSD</title>
		<link>http://rm-rf.es/pfsense-firewall-open-source-basado-en-freebsd/</link>
		<comments>http://rm-rf.es/pfsense-firewall-open-source-basado-en-freebsd/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 19:07:53 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2187</guid>
		<description><![CDATA[Estos días hemos estado probando a nivel local la distribución pfSense, firewall Open Source basado en FreeBSD y que en su día comenzó siendo un fork del proyecto m0n0wall. La principal función de pfSense es la de ser usado a modo de firewall o router, pero si vamos más allá descubrimos que cumple a la [...]]]></description>
			<content:encoded><![CDATA[<p>Estos días hemos estado probando a nivel local la distribución <strong>pfSense, firewall Open Source basado en FreeBSD</strong> y que en su día comenzó siendo un fork del proyecto m0n0wall.</p>
<p>La principal función de pfSense es la de ser usado a modo de <strong>firewall o router</strong>, pero si vamos más allá descubrimos que cumple a la perfección con otras funciones como la de <strong>conectividad VPN (IPsec, OpenVPN, PPTP)</strong>, <strong>balanceo de carga</strong>, <strong>NAT</strong>, tabla de estado, posible configuración de <strong>failover</strong> entre dos nodos físicos pfSense, <strong>Dynamic DNS</strong>, informacíon vía <strong>RRD</strong> a tiempo real con gráficas, servidor <strong>DHCP y Relay</strong>, etc.</p>
<p>Si no disponéis del presupuesto necesario para la adquisición de un buen firewall comercial, dadle una oportunidad a esta distribución. Los requerimientos mínimos son 128 MB de RAM y una de 100 MHz Pentium.</p>
<p>Toda la <a href="http://www.pfsense.org/" target="_blank">información sobre pfSense en el sitio web oficial</a>.</p>
<div align="center"><img src="http://rm-rf.es/wp-content/uploads/2011/08/pfSense.jpg" alt="pfSense Firewall" title="pfSense Firewall" width="647" height="399" class="size-full wp-image-2188" /></div>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/introduccion-a-iptables/" title="Introducción a iptables">Introducción a iptables</a></li><li><a href="http://rm-rf.es/freebsd-comando-ps-no-muestra-todas-las-columnas/" title="FreeBSD: comando PS no muestra todas las columnas">FreeBSD: comando PS no muestra todas las columnas</a></li><li><a href="http://rm-rf.es/apf-unable-to-load-iptables-module-ip_tables-aborting/" title="APF: Unable to load iptables module (ip_tables), aborting">APF: Unable to load iptables module (ip_tables), aborting</a></li><li><a href="http://rm-rf.es/bloquear-direcciones-ip-windows-2003-server/" title="Bloquear direcciones IP en Windows 2003 Server">Bloquear direcciones IP en Windows 2003 Server</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/pfsense-firewall-open-source-basado-en-freebsd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Introducción a iptables</title>
		<link>http://rm-rf.es/introduccion-a-iptables/</link>
		<comments>http://rm-rf.es/introduccion-a-iptables/#comments</comments>
		<pubDate>Sun, 28 Aug 2011 17:22:11 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[apf]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[firewall apf]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2154</guid>
		<description><![CDATA[Muchos sysadmins estamos acostumbrados a utilizar Frontends del firewall iptables para facilitarnos el trabajo, como por ejemplo APF Firewall. Yo soy uno de ellos. Independientemente de esto, conviene saber como funciona iptables de forma interna para evitar la dependencia de este tipo de aplicaciones de terceros para configurar de forma correcta el firewall del kernel [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2157" style="margin-left: 20px; margin-right: 20px;" title="firewall" src="http://rm-rf.es/wp-content/uploads/2011/08/firewall.jpg" alt="firewall" width="200" height="200" align="right" />Muchos sysadmins estamos acostumbrados a utilizar Frontends del <strong>firewall iptables</strong> para facilitarnos el trabajo, como por ejemplo <a title="Como instalar y configurar el firewall APF" href="http://rm-rf.es/como-instalar-y-configurar-el-firewall-apf/">APF Firewall</a>. Yo soy uno de ellos. Independientemente de esto, conviene saber como funciona <strong>iptables</strong> de forma interna para evitar la dependencia de este tipo de aplicaciones de terceros para configurar de forma correcta el <strong>firewall del kernel Linux</strong>. Vamos a ver algunos puntos que nos ayudarán a comprender su funcionamiento.</p>
<h2>Listar reglas, Chain y políticas de Iptables</h2>
<p>Con estos comandos podemos ver de un vistazo la configuración establecida en el firewall.</p>
<p>Ver el listado de reglas activas en el firewall:</p>
<pre># iptables -L</pre>
<p>Borrar todas las reglas establecidas en el firewall:</p>
<pre># iptables -F</pre>
<p>Pone a 0 los contadores de bytes y paquetes:</p>
<pre># iptables -Z</pre>
<p>Iptables tiene 3 Chain (cadenas) sobre las cuales construir las reglas, establecer políticas comunes, etc: <strong>INPUT, FORWARD y OUTPUT</strong>. La política por defecto para ellas es de aceptar todo:</p>
<pre># iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination</pre>
<p>También podemos listar únicamente las reglas y política de una Chain concreta:</p>
<pre># iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination</pre>
<p>Si no fuera suficiente estas tres Chain podemos crear nuevas o eliminar podemos hacerlo, así como renombrar las ya existentes:</p>
<p>Crear una nueva Chain llamada TEST:</p>
<pre># iptables -N TEST</pre>
<p>Eliminarla:</p>
<pre># iptables -X TEST</pre>
<p>Renombrarla a TEST2:</p>
<pre># iptables -E TEST TEST2</pre>
<h2>Establecer políticas por defecto</h2>
<p><strong>Para poder empezar a configurar Iptables debemos partir de una base, una política por defecto que aceptará o denegará el tráfico para cada una de las Chain</strong> vistas anteriormente (INPUT OUTPUT o FORWARD). Si quisierais blindar el sistema podríais partir de una base &#8216;<em>paranoica</em>&#8216; denegando todo:</p>
<pre># iptables -P INPUT DENY
# iptables -P OUTPUT DENY
# iptables -P FORWARD DENY</pre>
<p>En el momento que lo hicierais perderíais toda conectividad en la máquina, así que nosotros vamos a comenzar aceptando todo y aplicando pequeñas restricciones en nuestra máquina, una vez configurado todo es cuando podríamos aplicar la configuración restrictiva de arriba:</p>
<pre># iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT</pre>
<p>Veréis que estamos añadiendo las reglas directamente desde la línea de comandos, lo óptimo es <strong>añadirlas dentro de un script para así ejecutarlo todo de forma automática cuando arrancamos el equipo</strong>, lo veremos después.</p>
<h2>Filtrado de puertos, IPs, rangos&#8230;</h2>
<p>Una vez establecida la política por defecto, podemos comenzar a definir nuestras reglas específicas para cada cadena (Chain). La estructura del comando usado para filtrado de puertos, ips, etc es la siguiente:</p>
<h3>Filtrado/apertura de un puerto/rango de puertos</h3>
<pre># iptables -A &lt;INPUT|OUTPUT|FORWARDING&gt; -p &lt;tcp|udp&gt; --dport &lt;PUERTO_DESTINO&gt; -j &lt;ACCEPT|DROP&gt;</pre>
<p>Así por ejemplo si quisieramos cerrar el puerto de entrada tcp 21 (FTP) para toda la máquina:</p>
<pre># iptables -A INPUT -p tcp --dport 21 -j DROP</pre>
<p>Permitir el tráfico de entrada por el puerto 80, necesario por ejemplo si el equipo es un servidor web:</p>
<pre># iptables -A INPUT -p tcp --dport 80 -j ACCEPT</pre>
<p>Para bloquear un rango de puertos, simplemente especificamos el primer y último puerto del rango, en este ejemplo bloqueamos la salida tcp de los puertos 2000 al 3000:</p>
<pre># iptables -A OUTPUT -p tcp --dport 2000:3000 -j DROP</pre>
<h3>Permitir/denegar puertos a determinadas IPs, interfaces de red o CIDR</h3>
<pre># iptables -A &lt;INPUT|OUTPUT|FORWARDING&gt; -s &lt;IP|RANGO&gt; -p &lt;tcp|udp&gt; --dport &lt;PUERTO_DESTINO&gt; -j &lt;ACCEPT|DROP&gt;</pre>
<p>Es probable que necesitemos configurar políticas de aceptación o denegación de puertos a determinadas IPs, o incluso el acceso/denegación total a las mismas. La IP la especificaremos con el parámetro <strong>-s</strong>. Vamos a ver unos ejemplos:</p>
<p>Aceptar todo el tráfico de entrada de una IP:</p>
<pre># iptables -A INPUT -s 192.168.1.128 -j ACCEPT</pre>
<p>Denegar todo el tráfico de entrada a una IP:</p>
<pre># iptables -A INPUT -s 192.168.1.128 -j DROP</pre>
<p>Aceptar a una IP el acceso a un determinado puerto:</p>
<pre># iptables -A INPUT -s 192.168.1.128  -p tcp --dport 25 -j ACCEPT</pre>
<p>Para el tema de rangos, podemos usar la notación CIDR. Vamos a aceptar todo el tráfico en la red local:</p>
<pre># iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT</pre>
<p>También podemos especificar reglas restringiendo según interfaces de red en lugar de IPs o rangos. Esto lo hacemos mediante el parámetro <strong>-i</strong>:</p>
<pre># iptables -A INPUT -i eth0 -j ACCEPT</pre>
<h2>Nuestro primer script de Iptables</h2>
<p>Antes de hacer el script conviene saber qué puertos tenemos abiertos en la máquina para configurarlos previamente y evitar problemas. Podemos usar <a title="Escanear rango de Ips" href="http://rm-rf.es/escanear-rango-de-ips/">nmap</a> o <a title="Netstat: Estado de las conexiones" href="http://rm-rf.es/netstat-estado-de-las-conexiones/">netstat</a> para averiguarlo. Un ejemplo de un típico servidor con servicios web, MySQL, correo, etc podría ser el siguiente:</p>
<pre># nmap -sTU localhost

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2011-08-27 21:14 CEST
Interesting ports on localhost (127.0.0.1):
Not shown: 3152 closed ports
PORT     STATE         SERVICE
1/tcp    open          tcpmux
21/tcp   open          ftp
25/tcp   open          smtp
80/tcp   open          http
110/tcp  open          pop3
143/tcp  open          imap
443/tcp  open          https
465/tcp  open          smtps
783/tcp  open          spamassassin
993/tcp  open          imaps
995/tcp  open          pop3s
3306/tcp open          mysql
161/udp  open|filtered snmp</pre>
<p>La salida de nmap nos ofrece una guía clara sobre los puertos a abrir. A partir de aquí es cuestión de construir nuestro script con las reglas correspondientes, estableciendo primero las políticas generales y luego definiendo el filtrado/apertura concreta de puertos, si queremos restringir puertos a determinadas IPs, bloquear el acceso a rangos CIDR, etc.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
<span style="color: #666666; font-style: italic;"># Primero limpiamos cualquier regla haciendo un flush</span><br />
<span style="color: #666666; font-style: italic;"># tambien reseteamos contadores (-Z) y las Chain personalizadas</span><br />
<span style="color: #666666; font-style: italic;"># que se hayan creado (-X)</span><br />
iptables <span style="color: #660033;">-F</span><br />
iptables <span style="color: #660033;">-X</span><br />
iptables <span style="color: #660033;">-Z</span><br />
<br />
<span style="color: #666666; font-style: italic;"># Politicas por defecto (ACEPTAR TODO)</span><br />
iptables <span style="color: #660033;">-P</span> INPUT ACCEPT<br />
iptables <span style="color: #660033;">-P</span> OUTPUT ACCEPT<br />
iptables <span style="color: #660033;">-P</span> FORWARD ACCEPT<br />
<br />
<span style="color: #666666; font-style: italic;"># Cerramos ssh excepto para nuestra red privada</span><br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">22</span> <span style="color: #660033;">-s</span> 192.168.1.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">22</span> <span style="color: #660033;">-j</span> DROP<br />
<br />
<span style="color: #666666; font-style: italic;"># Tenemos un servidor MySQL pero únicamente para servir en local</span><br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">3306</span> <span style="color: #660033;">-i</span> lo <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">3306</span> <span style="color: #660033;">-j</span> DROP<br />
<br />
<span style="color: #666666; font-style: italic;"># Aceptamos todas las conexiones FTP, HTTP y HTTPS</span><br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">21</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">80</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">443</span> <span style="color: #660033;">-j</span> ACCEPT<br />
<br />
<span style="color: #666666; font-style: italic;"># Servicios de correo</span><br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">25</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">143</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">110</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">443</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">465</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">993</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">995</span> <span style="color: #660033;">-j</span> ACCEPT<br />
<br />
<span style="color: #666666; font-style: italic;"># SNMP lo vamos a permitir para nuestra red local</span><br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> udp <span style="color: #660033;">--dport</span> <span style="color: #000000;">161</span> <span style="color: #660033;">-s</span> 192.168.1.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> <span style="color: #660033;">-j</span> ACCEPT<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> udp <span style="color: #660033;">--dport</span> <span style="color: #000000;">161</span> <span style="color: #660033;">-j</span> DROP<br />
<br />
<span style="color: #666666; font-style: italic;"># Una vez que hayamos abierto todo lo necesario, podemos cerrar</span><br />
<span style="color: #666666; font-style: italic;"># el resto o un rango especifico de puertos conocidos...</span><br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> <span style="color: #000000;">1</span>:<span style="color: #000000;">1024</span> <span style="color: #660033;">-j</span> DROP<br />
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> udp <span style="color: #660033;">--dport</span> <span style="color: #000000;">1</span>:<span style="color: #000000;">1024</span> <span style="color: #660033;">-j</span> DROP</div></div>
<p>Este es un <strong>ejemplo sencillo (¡ojo, no verificado!) que muestra las posibilidades más básicas de iptables</strong>, hay que tener en cuenta que no hemos tratado más que TCP y UDP sobre rasgos generales, no tratamos <strong>ICMP</strong> ni configuraciones detalladas. Para ello, os emplazo y recomiendo la guía que encontraréis el <a href="http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall-html/" target="_blank">TLDP</a> (The Linux Documentation Project) o a futuros artículos que complemetarán a este y enlazaré conforme vayamos avanzando.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/como-instalar-y-configurar-el-firewall-apf/" title="Como instalar y configurar el firewall APF">Como instalar y configurar el firewall APF</a></li><li><a href="http://rm-rf.es/apf-unable-to-load-iptables-module-ip_tables-aborting/" title="APF: Unable to load iptables module (ip_tables), aborting">APF: Unable to load iptables module (ip_tables), aborting</a></li><li><a href="http://rm-rf.es/ejemplos-de-reglas-para-iptables/" title="Ejemplos de reglas para IPtables">Ejemplos de reglas para IPtables</a></li><li><a href="http://rm-rf.es/bloquear-con-iptables-el-trafico-desdehacia-una-direccion-ip/" title="Bloquear con IPTABLES el tráfico desde/hacia una dirección IP">Bloquear con IPTABLES el tráfico desde/hacia una dirección IP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/introduccion-a-iptables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consejos para reducir el SPAM en tu correo</title>
		<link>http://rm-rf.es/consejos-para-reducir-el-spam-en-tu-correo/</link>
		<comments>http://rm-rf.es/consejos-para-reducir-el-spam-en-tu-correo/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 14:37:36 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1843</guid>
		<description><![CDATA[El Spam es uno de los mayores quebraderos de cabeza tanto para los administradores de sistemas como para el usuario final de Internet, y parece q lo seguira siendo durante un tiempo&#8230; Centrándonos en el usuario final, gracias a unos simples consejos podemos reducir el correo basura en nuestras cuentas de correo en un porcentaje [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: right;" src="http://rm-rf.es/wp-content/uploads/2011/06/spam2.jpg" alt="SPAM" width="200" height="133" />El <strong><a title="SPAM" href="http://es.wikipedia.org/wiki/Spam" target="_blank">Spam</a></strong> es uno de los mayores quebraderos de cabeza tanto para los administradores de sistemas como para el usuario final de Internet, y parece q lo seguira siendo durante un tiempo&#8230; Centrándonos en el usuario final, gracias a unos simples consejos podemos reducir el correo basura en nuestras cuentas de correo en un porcentaje muy alto.</p>
<ul>
<li><strong>Registros en sitios web</strong>: La mayor parte de los internautas se registran continuamente en foros, blogs, tiendas y todo tipo de webs online, el resultado suele ser que nuestra dirección de correo electrónico queda almacenada en decenas de bases de datos, para posteriormente (<em>en gran parte de los casos</em>) ser usadas para envío de boletines y/o publicidad.Es recomendable en estos casos tener una <strong>dirección de correo electrónico alternativa</strong>, y usarla para todos estos registros, de este modo nuestro e-mail habitual quedará libre de este tipo de correos.</li>
<li><strong>Buzones globales</strong>: Este tipo de buzones, también conocido como cuentas <em>atrapalo todo</em> o <em>catch all</em> son uno de los mayores focos de spam. Básicamente, estas cuentas recogen los correos de todas aquellas cuentas de nuestro dominio que reciben emails y no existen.Solución: No utilizar nunca configuraciones de buzón global en nuestras cuentas de correo.</li>
<li><strong>Filtros en clientes de correo</strong>: La mayor parte de clientes de correo (Outlook, Thunderbird&#8230;) cuentan con filtros internos para detectar correos basura. Conviene activarlos</li>
<li><strong>Sentido común</strong>: Consejo que se suele presuponer y es desgraciadamente poco habitual. Controla a quién das tu dirección e-mail, evita publicarla en foros, sitios web, mantén limpio de virus, troyanos, spyware y demás tu ordenador&#8230;</li>
</ul>
<p>Como podéis observar, son consejos muy básicos, pero eficaces. ¿Algún consejo para añadir?</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/exim-establecer-filtros-anti-spam-para-entrada-y-salida-de-correo/" title="Exim: establecer filtros anti-spam para entrada y salida de correo">Exim: establecer filtros anti-spam para entrada y salida de correo</a></li><li><a href="http://rm-rf.es/estadisticas-de-correo-spam-y-virus-con-mailgraph/" title="Estadísticas de correo, spam y virus con Mailgraph">Estadísticas de correo, spam y virus con Mailgraph</a></li><li><a href="http://rm-rf.es/consulta-la-reputacion-de-una-ip-en-cientos-de-listas-anti-spam/" title="Consulta la reputación de una IP en cientos de listas anti-spam">Consulta la reputación de una IP en cientos de listas anti-spam</a></li><li><a href="http://rm-rf.es/spamassassin-crear-regla-que-examine-las-cabeceras-en-busca-de-una-cadena/" title="SpamAssassin: Crear regla que examine las cabeceras en busca de una cadena">SpamAssassin: Crear regla que examine las cabeceras en busca de una cadena</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/consejos-para-reducir-el-spam-en-tu-correo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Operaciones bancarias en Internet de forma segura</title>
		<link>http://rm-rf.es/operaciones-bancarias-en-internet-de-forma-segura/</link>
		<comments>http://rm-rf.es/operaciones-bancarias-en-internet-de-forma-segura/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 14:28:00 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[phising]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1839</guid>
		<description><![CDATA[Voy a recopilar una serie de entradas que tenía publicadas en otro blog. En esta primera voy a tratar un tema delicado, las operaciones bancarias a través de Internet. Dejando a un lado el phising (que abarcaría otro artículo completo), muy a menudo escuchamos, ya sea a través de conocidos o por los medios, que [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left;"><img style="margin: 5px;" title="Candado Internet" src="http://rm-rf.es/wp-content/uploads/2011/06/candado.gif" alt="Candado Internet" width="200" height="160" /></div>
<p>Voy a recopilar una serie de entradas que tenía publicadas en otro blog. En esta primera voy a tratar un tema delicado, las <strong>operaciones bancarias a través de Internet</strong>.</p>
<p>Dejando a un lado el phising (<em>que abarcaría otro artículo completo</em>), muy a menudo escuchamos, ya sea a través de conocidos o por los medios, que suceden graves delitos relacionados con robos de tarjetas y demás información sensible a través de Internet.</p>
<p>Hoy en día gran parte de los internautas realizan compras online, y podríamos asegurar que un porcentaje realmente elevado no toma <strong>ninguna medida de seguridad </strong>a la hora de hacerlo. Independientemente de la seguridad que nos pueda ofrecer la tienda online, banco o sitio web contra el que realizamos la operación, no servirán de nada sino hacemos lo mismo en nuestro ordenador.</p>
<p>Mis consejos para realizar operaciones bancarias por Internet de forma segura son los siguientes:</p>
<h3>Evitar el pago con tarjeta de crédito, utilizar métodos alternativos.</h3>
<p>Cuando hablo de métodos alternativos, no solamente me refiero a pagar por transferencia bancaria u otro medio de pago tradicional. El <strong>pago por PayPal</strong> está muy extendido por las tiendas online (permite la transferencia de dinero entre usuarios que tengan correo electrónico, sin facilitar ningún dato de tus tarjetas de crédito).</p>
<h3>Los keylogger son tu mayor enemigo.</h3>
<p>Un <a href="http://es.wikipedia.org/wiki/Keylogge" target="_blank">Keylogger</a> es un tipo de software que se encarga de registrar las pulsaciones que se realizan en el teclado, para memorizarlas en un fichero y/o enviarlas a través de internet. Se propagan como un virus y están muy extendidos en sistemas con Microsoft Windows. Si tu ordenador está infectado con uno, al teclear tu tarjeta de crédito o cualquier otro dato sensible puedes estar enviandolo por Internet a los delincuentes (quienes almacenan miles de datos bancarios para su utilización de forma ilegal).</p>
<p>La principal solución para combatir un Keylogger es la utilización de un buen <strong>antivirus</strong>, <strong>antispyware</strong> y demás herramientas, además de <strong>mantener actualizado el sistema</strong> siempre con los últimos parches de seguridad.</p>
<h3>Uso de un Live-CD.</h3>
<p>Soy de la opinión de que <strong>el punto número 2 no te dará el 100% de garantías de estar limpio de este tipo de malware</strong>, así que os recomiendo utilizar un Live-CD cuando vayáis a efectuar compras online, operaciones bancarias, etc.</p>
<blockquote><p>Definición de Live-CD (<a href="http://es.wikipedia.org/wiki/Live_CD" target="_blank">Wikipedia</a>):</p>
<p>Es un sistema operativo (normalmente acompañado de un conjunto de aplicaciones) almacenado en un medio extraíble, tradicionalmente un CD o un DVD (de ahí sus nombres), que puede ejecutarse desde éste sin necesidad de instalarlo en el disco duro de una computadora, para lo cual usa la memoria RAM como disco duro virtual y el propio medio como sistema de archivos.</p></blockquote>
<p>Esta medida nos garantiza que el sistema está limpio de virus y software malicioso siempre que lo utilicemos. Existen gran variedades de Live-CD GNU/Linux que podemos utilizar para esta tarea, muchos de los cuales únicamente arrancan un navegador (Firefox):</p>
<ul>
<li><a href="http://www.ubuntu.com/getubuntu/download" target="_blank">Ubuntu Live CD</a></li>
<li><a href="http://www.knoppix.org/" target="_blank">Knopixx</a></li>
<li><a href="http://webconverger.com/about/" target="_blank">Webconverger</a> (Sólo contiene firefox).</li>
</ul>
<p>Hay centenares de LiveCD, <a href="http://www.goblinx.com.br/en/">GoblinX</a>, <a href="http://frenzy.org.ua/eng/">Frenzy</a>, <a href="http://mutagenix.org/">Mutagenix</a>, <a href="http://theory.kaos.to/projects.html">Anonym.OS</a>, <a href="http://cdlinux.berlios.de/">CDlinux</a>&#8230; tenéis una lista completa <a href="http://www.frozentech.com/content/livecd.php" target="_blank">aquí</a>.</p>
<h3>Despídete de Windows</h3>
<p>La última regla y también la más radical. Personalmente os recomiendo el uso de un Live-CD o directamente no utilizar Windows a la hora de realizar operaciones bancarias, manejar y guardar información sensible en el PC, etc.</p>
<p>Los virus en GNU/Linux, BSD o Mac OS X están mucho menos difundidos y tus posibilidades de sufrir este problema serán mínimas o nulas. Sé que esto último es muy complicado, pero por lo menos espero que hagáis caso de alguna de las recomendaciones expuestas en este artículo para evitar males mayores.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/generador-claves-password-contrasenas-aleatorios/" title="Generador de passwords aleatorios">Generador de passwords aleatorios</a></li><li><a href="http://rm-rf.es/navegar-por-internet-de-forma-segura-con-kioskcd/" title="Navegar por Internet de forma segura con KioskCD">Navegar por Internet de forma segura con KioskCD</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/operaciones-bancarias-en-internet-de-forma-segura/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

