<?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/sobre/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>Wed, 23 May 2012 19:38:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Nmap Online para tu IP o Clase C</title>
		<link>http://rm-rf.es/nmap-online-para-tu-ip-o-clase-c/</link>
		<comments>http://rm-rf.es/nmap-online-para-tu-ip-o-clase-c/#comments</comments>
		<pubDate>Sun, 06 May 2012 08:34:25 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Redes]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[nmap]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2638</guid>
		<description><![CDATA[Nmap Online nos permite utilizar Nmap directamente desde el navegador para poder analizar los puertos abiertos de nuestro equipo y toda la información que sabéis que puede ofrecer Nmap. Eso sí, la limitación es que podemos lanzarlo únicamente contra nuestra IP pública de salida y toda su clase C (/24) correspondiente. Básicamente, la idea es [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nmap-online.com" target="_blank">Nmap Online</a> nos permite <strong>utilizar <a title="Escanear rango de Ips" href="http://rm-rf.es/escanear-rango-de-ips/" target="_blank">Nmap</a> directamente desde el navegador para poder analizar los puertos abiertos de nuestro equipo</strong> y toda la información que sabéis que puede ofrecer Nmap. Eso sí, la limitación es que podemos lanzarlo únicamente contra <strong>nuestra IP pública de salida y toda su clase C (/24)</strong> correspondiente.</p>
<p>Básicamente, la idea es utilizarlo como herramienta durante la<strong> securización de nuestro sistema cuando no tenemos la posibilidad de utilizar una máquina remota para lanzar pruebas de seguridad de red y escaneos de puertos</strong>, algo necesario cuando estamos realizando configuraciones en nuestro firewall. No voy a entrar en posibles usos maliciosos que se le puedan dar a la herramienta. Es recomendable leer los <a href="http://nmap-online.com/tos.php" target="_blank">TOS</a> para tener claro que y que no se puede hacer, lo que se guardan en los registros de ese servidor, el tiempo que permanecen ahí esos datos, si son públicos, etc.</p>
<p>Como veis en la imagen, podemos realizar un escaneo rápido, completo o personalizado, especificando los parámetros de Nmap igual que lo haríamos en la línea de comandos.</p>
<div align="center"><img src="http://rm-rf.es/wp-content/uploads/2012/05/nmap-online.jpg" alt="Nmap Online" title="Nmap Online" width="612" height="395" class="size-full wp-image-2639" /></div>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/" title="Hacer persistentes los cambios en ulimit (limits.conf)">Hacer persistentes los cambios en ulimit (limits.conf)</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/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></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/nmap-online-para-tu-ip-o-clase-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hacer persistentes los cambios en ulimit (limits.conf)</title>
		<link>http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/</link>
		<comments>http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/#comments</comments>
		<pubDate>Wed, 02 May 2012 19:04:28 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[ulimit]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2633</guid>
		<description><![CDATA[Cuando cambiamos algún valor de los disponibles en ulimit, sólo se mantiene en nuestra sesión. Si salimos y volvemos a entrar los perdemos. Esto es útil para cambios temporales pero no cuando queremos que sean persistentes tras el cierre de sesión. Como ya sabéis la mayoría, el comando ulimit -a nos dice los valores y [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando cambiamos algún valor de los disponibles en <strong>ulimit</strong>, sólo se mantiene en nuestra sesión. Si salimos y volvemos a entrar los perdemos. Esto es útil para cambios temporales pero no cuando queremos que sean persistentes tras el cierre de sesión.</p>
<p>Como ya sabéis la mayoría, el comando <strong>ulimit -a</strong> nos dice los valores y límites establecidos para nuestro usuario:</p>
<pre>$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 20
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited</pre>
<p>Los que más se suelen cambiar son el número de ficheros abiertos de forma simultanea por el usuario, el número de procesos por usuario, ciclos de cpu, etc. Para nuestra sesión, lo solemos hacer directamente en la línea de comandos:</p>
<pre># ulimit -n
1024
# ulimit -n 2048
# ulimit -n
2048</pre>
<p>Si salimos de la sesión y entramos de nuevo, el valor volverá a ser 1024. En el caso de Red Hat y derivados, así como Debian debemos especificar estos valores en el fichero <strong>/etc/security/limits.conf</strong>, así los haremos persistentes.</p>
<p>El propio fichero está perfectamente documentado con comentarios, sino, también tenemos la página man de limits.conf para más información:</p>
<pre>$ man limits.conf</pre>
<pre>
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#        - NOTE: group and wildcard limits are not applied to root.
#          To apply a limit to the root user, <domain> must be
#          the literal username root.
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4
</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/the-debian-administrators-handbook/" title="The Debian Administrator’s Handbook">The Debian Administrator’s Handbook</a></li><li><a href="http://rm-rf.es/nmap-online-para-tu-ip-o-clase-c/" title="Nmap Online para tu IP o Clase C">Nmap Online para tu IP o Clase C</a></li><li><a href="http://rm-rf.es/faq-de-rhcs-red-hat-cluster-suite/" title="FAQ de RHCS (Red Hat Cluster Suite)">FAQ de RHCS (Red Hat Cluster Suite)</a></li><li><a href="http://rm-rf.es/red-hat-cluster-generic-error-al-crear-un-ip-resource/" title="Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource">Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/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/nmap-online-para-tu-ip-o-clase-c/" title="Nmap Online para tu IP o Clase C">Nmap Online para tu IP o Clase C</a></li><li><a href="http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/" title="Hacer persistentes los cambios en ulimit (limits.conf)">Hacer persistentes los cambios en ulimit (limits.conf)</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/nmap-online-para-tu-ip-o-clase-c/" title="Nmap Online para tu IP o Clase C">Nmap Online para tu IP o Clase C</a></li><li><a href="http://rm-rf.es/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li><li><a href="http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/" title="Hacer persistentes los cambios en ulimit (limits.conf)">Hacer persistentes los cambios en ulimit (limits.conf)</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>Comando chage: tiempo de vida de claves y usuarios en GNU/Linux</title>
		<link>http://rm-rf.es/comando-chage-tiempo-de-vida-de-claves-y-usuarios-en-gnulinux/</link>
		<comments>http://rm-rf.es/comando-chage-tiempo-de-vida-de-claves-y-usuarios-en-gnulinux/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 15:54:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[claves]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2225</guid>
		<description><![CDATA[Hace un tiempo vimos como establecer la caducidad de claves en Linux con el comando passwd. Hoy vamos a aprender otra forma de hacerlo, en este caso con el comando chage, con el que además podemos especificar la caducidad de la cuenta de un usuario concreto, no sólo de su clave. Echando un vistazo a [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo vimos como <a title="Configurar la caducidad de claves en Linux" href="http://rm-rf.es/configurar-la-caducidad-de-claves-en-linux/">establecer la caducidad de claves en Linux con el comando passwd</a>. Hoy vamos a aprender otra forma de hacerlo, en este caso con el <strong>comando chage</strong>, con el que además podemos <strong>especificar la caducidad de la cuenta de un usuario concreto</strong>, no sólo de su clave.</p>
<p>Echando un vistazo a la ayuda del comando vemos claramente la función de cada uno de los parámetros:</p>
<pre>$ chage --help
Modo de uso: chage [opciones] [USUARIO]

Opciones:
  -d, --lastday ULTIMO_DÍA      establece el último cambio de clave a
                                ULTIMO_DÍA
  -E, --expiredate FECHA_EXP    establece la fecha de caducidad de la
                                cuenta a FECHA_EXP
  -h, --help                    muestra este mensaje de ayuda y termina
  -I, --inactive INACTIV        desactiva la cuenta después de INACTIV
                                días desde la fecha de expiración
  -l, --list                    muestra la información de envejecimiento
                                de la cuenta
  -m, --mindays DÍAS_MIN        establece el número mínimo de días antes
                                de cambiar la clave a DÍAS_MIN
  -M, --maxdays DÍAS_MAX        establece el número máximo de días antes
                                de cambiar la clave a DÍAS_MAX
  -W, --warndays DÍAS_AVISO     establece el número de días de aviso
                                a DÍAS_AVISO</pre>
<p>Como podéis ver, se puede especifica la fecha exacta en la que expirará la clave de acceso, los días permitidos tras la expiración de la cuenta hasta que se desactiva por completo, los días de aviso, etc. Vamos a ver unos ejemplos:</p>
<h3>Cambiar la fecha de expiración de la cuenta al día 2011-9-28 al usuario foo</h3>
<pre># chage -E 2011-9-28 foo</pre>
<p>Listamos los atributos de caducidad especificados para esta cuenta:</p>
<pre># chage -l foo
Último cambio de contraseña					: sep 07, 2011
La contraseña caduca					: nunca
Contraseña inactiva					: nunca
La cuenta caduca						: sep 28, 2011
Mínimo número de días entre cambios de contraseña		: 0
Máximo número de días entre cambios de contraseña		: 99999
Número de días de aviso antes de que caduque la contraseña	: 7</pre>
<h3>Cambiar número de días entre cambios de clave (15) y la caducidad por inactividad de la clave (150)</h3>
<pre># chage -m 15 -M 15 -I 150 foo
# chage -l foo
Último cambio de contraseña					: sep 07, 2011
La contraseña caduca					: sep 22, 2011
Contraseña inactiva					: feb 19, 2012
La cuenta caduca						: sep 28, 2011
Mínimo número de días entre cambios de contraseña		: 15
Máximo número de días entre cambios de contraseña		: 15
Número de días de aviso antes de que caduque la contraseña	: 7</pre>
<h3>Obligar a cambiar la clave en el próximo intento de acceso</h3>
<pre># chage -d 0 foo</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/configurar-la-caducidad-de-claves-en-linux/" title="Configurar la caducidad de claves en Linux">Configurar la caducidad de claves en 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><li><a href="http://rm-rf.es/securizando-y-optimizando-linux/" title="Securizando y optimizando Linux">Securizando y optimizando Linux</a></li><li><a href="http://rm-rf.es/bucle-de-password-expirado-en-ldap-nativo-rhel-contra-sun-ldap/" title="Bucle de password expirado en ldap nativo RHEL contra Sun LDAP">Bucle de password expirado en ldap nativo RHEL contra Sun LDAP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/comando-chage-tiempo-de-vida-de-claves-y-usuarios-en-gnulinux/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/nmap-online-para-tu-ip-o-clase-c/" title="Nmap Online para tu IP o Clase C">Nmap Online para tu IP o Clase C</a></li><li><a href="http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/" title="Hacer persistentes los cambios en ulimit (limits.conf)">Hacer persistentes los cambios en ulimit (limits.conf)</a></li><li><a href="http://rm-rf.es/configurar-el-puerto-tcp-como-estatico-en-una-instancia-sql-server-2008/" title="Configurar el puerto TCP como estático en una instancia SQL Server 2008">Configurar el puerto TCP como estático en una instancia SQL Server 2008</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></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>Permisos especiales (setuid, setgid, sticky bit)</title>
		<link>http://rm-rf.es/permisos-especiales-setuid-setgid-sticky-bit/</link>
		<comments>http://rm-rf.es/permisos-especiales-setuid-setgid-sticky-bit/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 19:49:35 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[permisos]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1747</guid>
		<description><![CDATA[En Unix existen tres bits de permisos especiales que pueden ser asignados a directorios y/o ficheros ejecutables, setuid (set user information), setgid (set group information) y sticky. setuid EL bit setuid es asignable a ficheros ejecutables, y permite que cuando un usuario ejecute dicho fichero, el proceso adquiera los permisos del propietario del fichero ejecutado. [...]]]></description>
			<content:encoded><![CDATA[<p>En Unix existen tres bits de permisos especiales que pueden ser asignados a directorios y/o ficheros ejecutables, <strong>setuid (set user information), setgid (set group information) y sticky</strong>.</p>
<h2>setuid</h2>
<p>EL bit setuid es asignable a ficheros ejecutables, y permite que <strong>cuando un usuario ejecute dicho fichero, el proceso adquiera los permisos del propietario del fichero ejecutado</strong>. El ejemplo más claro de fichero ejecutable y con el bit setuid el</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">su</div></div>
<p>.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">su</div></div>
<p>sirve para ejecutar una shell con identificadores de grupo y de usuario distintos al nuestro, por ello ha de tener este bit y así permitir adquirir al usuario temporalmente permisos administrativos para poder hacer el cambio de usuario.</p>
<p>Podemos ver que el bit está asignado (s) haciendo un ls:</p>
<pre>$ ls -l /bin/su
-rw<strong>s</strong>r-xr-x 1 root root 31012 2009-04-04 07:49 /bin/su</pre>
<p>Para asignar este bit a un fichero:</p>
<pre># chmod u+s /bin/su</pre>
<p>Y para quitarlo:</p>
<pre># chmod u-s /bin/su</pre>
<p>Lógicamente, conviene utilizar este bit con extremo cuidado ya que puede provocar una escalada de privilegios en situaciones inseguras. Para que veáis un ejemplo de lo que se podría hacer.</p>
<p>El usuario &#8220;alex&#8221; no tiene permisos para ejecutar correctamente un fdisk -l:</p>
<pre>alex@linux:~$ fdisk -l</pre>
<p>La salida es 0, pero si asignamos el bit setuid al binario de fdisk&#8230;</p>
<pre># ls -l /sbin/fdisk
-rwsr-xr-x 1 root root 93048 2009-02-18 20:43 /sbin/fdisk</pre>
<p>Probamos de nuevo a ejecutar fdisk con el usuario &#8220;alex&#8221; y conseguimos privilegios de root:</p>
<pre>alex@linux:~$ fdisk -l

Disco /dev/sda: 160.0 GB, 160041885696 bytes
255 cabezas, 63 sectores/pista, 19457 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x000c3c51

Dispositivo Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1        3232    25959424    7  HPFS/NTFS
/dev/sda2            3233        9683    51817657+  83  Linux
/dev/sda3            9684        9855     1381590   82  Linux swap / Solaris
/dev/sda4            9856       19457    77128065   83  Linux</pre>
<p>Luego nos acordamos de volver a quitarlo:</p>
<pre># chmod u-s /sbin/fdisk</pre>
<h2>setgid</h2>
<p>Si el bit setuid permitía que el proceso adquiriera los permisos del propietario del fichero ejecutado, setgid hace lo mismo pero <strong>adquiriendo los privilegios del grupo asignado al fichero</strong>, también es asignable a directorios. Este bit entonces será muy útil cuando varios usuarios de un mismo grupo necesiten trabajar con recursos dentro de un mismo directorio.</p>
<p>En el siguiente ejemplo asignamos el bit setgid la carpeta /compartido, le asignamos permisos totales para el propietario y el grupo (770) y el bit segid (2):</p>
<pre>$ mkdir compartido &amp;&amp; chmod 2770 /compartido</pre>
<p>Si hacemos un ls veremos el bit asignado:</p>
<pre>$ ls -l
drwxrw<strong>s</strong>--- 2 alex alex      4096 2011-04-24 21:27 compartido</pre>
<p>Ahora vamos a hacer la prueba de crear un fichero dentro del directorio. Lo vamos a crear estando autenticados como root, pero al tener el bit setgid le asignará el grupo &#8220;alex&#8221; en lugar de root.</p>
<pre>$ su
# touch test
root@sistemas:/home/alex/compartido# ls -l
total 0
-rw-r--r-- 1 root alex 0 2011-04-24 21:28 test
# whoami
root</pre>
<p>En lugar de modo octal podéis asignar también los permisos setgid del siguiente modo:</p>
<pre>$ chmog g+s /compartido</pre>
<p>Y quitarlo:</p>
<pre>$ chmog g-s /compartido</pre>
<h2>sticky</h2>
<p>Este bit suele asignarse en directorios a los que todos los usuarios tienen acceso, y <strong>permite evitar que un usuario pueda borrar ficheros/directorios de otro usuario dentro de ese directorio, ya que todos tienen permiso de escritura</strong>. Seguro que lo estáis pensando, este bit se asigna siempre en /tmp y /var/tmp.</p>
<p>tmp tiene permisos 777, el bit sticky se asignaría del siguiente modo:</p>
<pre># chmod 1777 /tmp</pre>
<p>También así:</p>
<pre>chmod o+t /tmp</pre>
<p>Y para quitarlo:</p>
<pre>chmod o-t /tmp</pre>
<p>Si hacemos un ls veremos la &#8220;t&#8221; asignada:</p>
<pre>drwxrwxrw<strong>t</strong>  13 root root  4096 2011-04-24 20:55 tmp</pre>
<p>Esta es una visión general de estos tres bits especiales asignables a ficheros ejecutables y directorios en Unix/Linux.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/el-comando-umask/" title="El comando umask">El comando umask</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/diferencias-entre-soft-symbolic-y-hard-links/" title="Diferencias entre soft (symbolic) y hard links">Diferencias entre soft (symbolic) y hard links</a></li><li><a href="http://rm-rf.es/gestion-de-trabajos-en-bash-jobs-fg-bg/" title="Gestión de trabajos en BASH (jobs, fg, bg, &#038;&#8230;)">Gestión de trabajos en BASH (jobs, fg, bg, &#038;&#8230;)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/permisos-especiales-setuid-setgid-sticky-bit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bloquear IP o rango a nivel de Web Site en IIS 6.0</title>
		<link>http://rm-rf.es/bloquear-ip-o-rango-a-nivel-de-web-site-en-iis-6-0/</link>
		<comments>http://rm-rf.es/bloquear-ip-o-rango-a-nivel-de-web-site-en-iis-6-0/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 12:42:32 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[IIS]]></category>
		<category><![CDATA[IIS 6.0]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1726</guid>
		<description><![CDATA[Para bloquear el acceso a un sitio web en IIS a una determinada IP o rango debemos acceder a la gestión de IIS a través del Internet Information Services Manager, expandir los Web Sites y pinchar en propiedades del que queramos gestionar. Una vez dentro de la gestión, accedemos a la pestaña Directory Security y [...]]]></description>
			<content:encoded><![CDATA[<p>Para bloquear el acceso a un sitio web en IIS a una determinada IP o rango debemos acceder a la gestión de IIS a través del Internet <strong>Information Services Manager</strong>, expandir los Web Sites y pinchar en propiedades del que queramos gestionar. Una vez dentro de la gestión, accedemos a la pestaña <strong>Directory Security</strong> y pinchamos editar en la sección &#8220;<strong>Grant Or deny access to this resource using IP addresses or Domains names</strong>&#8220;.</p>
<div align="center"><img class="size-full wp-image-1729" title="denegar IP rango en IIS" src="http://rm-rf.es/wp-content/uploads/2011/04/IIS-denegar-ip.png" alt="denegar IP rango en IIS" width="471" height="454" /></div>
<p>Una vez dentro ya podemos visualizar configurar el comportamiento por defecto (permitir o denegar acceso a todo el mundo) y las excepciones:</p>
<div align="center"><img class=" size-full wp-image-1728" title="Denegar IPs y rangos en IIS" src="http://rm-rf.es/wp-content/uploads/2011/04/IIS-denegar-ip2.png" alt="Denegar IPs y rangos en IIS" width="438" height="247" /></div>
<p>Aquí es donde podemos añadir nombres de dominio, rangos e IPs tanto para denegar acceso como permitir (según la configuración por defecto establecida).</p>
<div align="center"><img src="http://rm-rf.es/wp-content/uploads/2011/04/IIS-denegar-ip3.png" alt="IIS bloquear IP" title="IIS bloquear IP" width="316" height="236" class=" size-full wp-image-1727" /></div>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/nmap-online-para-tu-ip-o-clase-c/" title="Nmap Online para tu IP o Clase C">Nmap Online para tu IP o Clase C</a></li><li><a href="http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/" title="Hacer persistentes los cambios en ulimit (limits.conf)">Hacer persistentes los cambios en ulimit (limits.conf)</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/10-trucos-para-securizar-php/" title="10 trucos para securizar PHP">10 trucos para securizar PHP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/bloquear-ip-o-rango-a-nivel-de-web-site-en-iis-6-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar la caducidad de claves en Linux</title>
		<link>http://rm-rf.es/configurar-la-caducidad-de-claves-en-linux/</link>
		<comments>http://rm-rf.es/configurar-la-caducidad-de-claves-en-linux/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 15:37:26 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[claves]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[password]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1577</guid>
		<description><![CDATA[El otro día aprendimos a securizar la gestión de claves en Linux mediante PAM, pero olvidé comentar un punto importante dentro de la gestión de contraseñas en un sistema GNU/Linux, se trata de la caducidad y expiración de claves de usuario. Mediante passwd podemos forzar que la clave de un usuario caduque pasados X días., Así [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día aprendimos a <a title="Securizar la gestión de claves en Linux mediante PAM" href="http://rm-rf.es/securizar-la-gestion-de-claves-en-linux-mediante-pam/">securizar la gestión de claves en Linux mediante PAM</a>, pero olvidé comentar un punto importante dentro de la gestión de contraseñas en un sistema GNU/Linux, se trata de la caducidad y expiración de claves de usuario.</p>
<p>Mediante <strong>passwd</strong> podemos <strong>forzar que la clave de un usuario caduque pasados X días</strong>., Así mismo, también podemos <strong>configurar el número de días que el usuario será avisado antes del cambio obligado de clave y el número de días una vez pasado este límite hasta que la cuenta se desactive</strong>.</p>
<p>Estos tres parámetros son los siguientes:</p>
<pre>-x, --maxdays DÍAS_MÁX        establece a DÍAS_MÁX el número máximo de días antes del cambio de la contraseña
-w, --warndays DÍAS_AVISO     establece los días de aviso de expiración a DÍAS_AVISO
-i, --inactive INACTIVO       establece la inactividad de la contraseña tras su expiración a INACTIVO</pre>
<p>Vamos a poner un ejemplo, si quisieramos que la clave del usuario &#8220;pruebas&#8221; caducara pasados 180 días, que le avisara durante los cinco últimos días de validez de la clave, y que si tras pasados 15 días sin modificar la clave se bloqueara, utilizaríamos la siguiente línea de comandos:</p>
<pre># passwd pruebas -x 180 -w 5 -i 15</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><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><li><a href="http://rm-rf.es/securizando-y-optimizando-linux/" title="Securizando y optimizando Linux">Securizando y optimizando Linux</a></li><li><a href="http://rm-rf.es/bucle-de-password-expirado-en-ldap-nativo-rhel-contra-sun-ldap/" title="Bucle de password expirado en ldap nativo RHEL contra Sun LDAP">Bucle de password expirado en ldap nativo RHEL contra Sun LDAP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/configurar-la-caducidad-de-claves-en-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ocultar la versión de PHP</title>
		<link>http://rm-rf.es/ocultar-la-version-de-php/</link>
		<comments>http://rm-rf.es/ocultar-la-version-de-php/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 14:19:35 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1421</guid>
		<description><![CDATA[Algo importante en la seguridad de servidores web es ofrecer siempre la menor cantidad de información acerca de las versiones del software instalado en el servidor. Hace ya bastante tiempo vimos cómo ocultar o enmascarar la versión de Apache o la versión de Bind. En este caso vamos a ocultar la versión de PHP, es extremadamente [...]]]></description>
			<content:encoded><![CDATA[<p>Algo importante en la seguridad de servidores web es ofrecer siempre la menor cantidad de información acerca de las versiones del software instalado en el servidor. Hace ya bastante tiempo vimos <a title="Cómo ocultar o enmascarar la versión de Apache" href="http://rm-rf.es/como-ocultar-o-enmascarar-la-version-de-apache/">cómo ocultar o enmascarar la versión de Apache</a> o <a title="Cómo ocultar la versión de Bind" href="http://rm-rf.es/como-ocultar-la-version-de-bind/">la versión de Bind</a>.</p>
<p>En este caso vamos a <strong>ocultar la versión de PHP</strong>, es extremadamente sencillo. Únicamente hay que editar el fichero de configuración general php.ini y modificar el siguiente parámetro a Off:</p>
<pre>expose_php Off</pre>
<p>Ya podemos verificar que al hacer la petición contra el sitio web la información PHP ya no se muestra:</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
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>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><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/nmap-online-para-tu-ip-o-clase-c/" title="Nmap Online para tu IP o Clase C">Nmap Online para tu IP o Clase C</a></li><li><a href="http://rm-rf.es/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li><li><a href="http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/" title="Hacer persistentes los cambios en ulimit (limits.conf)">Hacer persistentes los cambios en ulimit (limits.conf)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/ocultar-la-version-de-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

