Actualizado el 28 de Febrero del 2018 (Publicado el 26 de Julio del 2017)
625 visualizaciones desde el 26 de Julio del 2017
702,7 KB
11 paginas
Creado hace 16a (27/08/2007)
Buenas prácticas para asegurar un servidor
Linux es considerado un sistema operativo seguro. Sin embargo, se ha admitido que Linux
está siendo utilizado más y más. Por ello, es también más atractivo para los hackers y
crackers. Existen, algunos exploits que han sido descubiertos, han habido anuncios de
seguridad que se han hecho públicos rápidamente y han sido reparados. Por lo tanto,
aunque instale su servidor en Linux debe tomar medidas para mantener su servidor seguro.
Pues muchas de las vulnerabilidades en nuestros sistemas no son inherentes únicamente al
sistema operativo, sino a su configuración, uso y actualización.
Existen algunas medidas que se pueden tomar para mejorar en gran medida la segura de
Linux. Aquí tienes las más comunes y utilizadas de ellas:
• Medios de instalación: Este elemento afectará a la velocidad de instalación y
recuperación de un equipo. También influirá en la seguridad. Existen varios métodos:
FTP – rápida, requiere una tarjeta de red, y un servidor de ftp preferiblemente
conocido (como el ftp de la ULA)
HTTP – también rápida, y algo más segura que hacer una llamada a un FTP
público desconocido
Samba – rápida, un buen método si dispones de una máquina windows
(comparte el cdrom).
NFS – no tan rápida, pero dado que nfs está implementado en la mayoría de
las redes UNIX existentes (y NT tiene un servidor NFS de MS gratis), es casi
indolora.
CDROM – si tienes un lector de cdrom rápido, la mejor apuesta es introducir
el cd y arrancar desde él, pulsar enter unas cuantas veces y ya estás listo.
Tienes que estar atento del nivel de actualización del sistema, de ser
necesario, debes realizar una actualización al finalizar la instalación.
Disco duro – generalmente la más dolorosa, las ventanas confunden los
nombres de fichero, la instalación desde una partición ext2 suele ser algo
menos dolorosa.
Imágenes ISO en CD Si quieres tostar tu propia distribución X en CD, como
el caso de ULAnix, este tipo de instalación permiten estandarizar los equipos
que instalas y así facilitar su mantenimiento en el tiempo.
• Actualiza las herramientas del sistema, las aplicaciones y el kernel: La causa
más común de ataques en un sistema es la inhabilidad de los administradores de
mantener sus servidores al día con el proceso de actualizaciones. Mantener un
esquema de actualización regular del kernel, las herramientas y las utilidades te
asegurará que tu sistema no está expuesto a los atacantes que conocen
vulnerabilidades y exploits que ya están a su disposición. Para mantener un servidor
linux al día puede conseguir más información aquí: actualizaciones en linux
• Utiliza contraseñas sombra ó shadow password: es altamente recomendable la
utilización de este tipo de contraseñas, es una vulnerabilidad conocida del sistema
operativo Unix y consiste en que el archivo de usuarios /etc/passwd tiene permisos
de lectura para cualquier usuario y sólo de escritura para root. En este archivo hay un
campo con el hash del password de cada usuario. Esta información puede ser
utilizada por un atacante para descifrar una contraseña por medio de un ataque de
fuerza bruta. Para evitar esta vulnerabilidad se crearon las contraseña sombra, que
consiste en colocar el hash de la contraseña en un archivo /etc/shadow ó
/etc/master.passwd en el que sólo root tiene permisos de lectura. Para más detalles
de cómo utilizar este tipo de contraseñas puedes conseguir más información en:
contraseñas en linux
• Política de acceso: Asegúrese de mantener una política de acceso y usuarios
segura. Especialmente, para los usuarios con acceso al shell. Sus contraseñas
deben ser complejas y cambiadas regularmente (por lo menos trimestralmente). Si
administras más de un servidor, resiste la tentación de colocarles la misma
contraseña (si un intruso lograr entrar a uno de tus servidores, podrá hacerlo a
todos). Crea usuarios no root para las tareas no root, una práctica común entre los
administradores es utilizar root para todas sus tareas, crea usuarios por cada
persona que entrará al sistema y otorga permisos de acuerdo a las tareas que
realizarán en el equipo. Utiliza sudo para proporcionar acceso a comandos
privilegiados cuando sea necesario. Estas políticas te permitirán llevar un mejor
control del uso del equipo y determinar un comportamiento extraño de los usuarios,
incluyendo root.
Utiliza las claves de las BIOS para mantener a los usuarios alejados de la BIOS
(nunca deberían estar ahí, recuerda también que las BIOS viejas tienen claves
universales.).
Coloca clave al prompt de LILO.
• Configura el servidor para que arranque únicamente del disco duro
adecuado.
• Utiliza el shell seguro (ssh): cambia el uso de acceso de telnet a ssh. Telnet es
inseguro por 2 razones: Primero, sus sesiones no están cifradas, lo que implica, que
todo lo que se transmite, incluyendo tu usuario y contraseña se transmiten en texto
claro. Segundo, un puerto abierto de telnet es uno de los primero lugares que un
craker buscará para tratar de conectarse a un servidor.
SSH provee un servicio de comunicación cifrado y comprimido, lo que mejora
substancialmente la seguridad con respecto a la conexiones con telnet. Puedes
proveer un tu servidor un servicio ssh como servidor y como cliente para permitir
conexiones entrantes y salientes.
• Utiliza cortafuegos: para que incluso si instalan servicios estos no sean accesibles
al resto del mundo. Para ello utiliza herramientas cómo iptables que permiten filtrado
de paquetes de acuerdo a su protocolo, dirección ip, red, etc.
• Restringe el acceso a servicios externos: un error común en la configuración de
un servidor es dejar abierto el uso a servicios externos que no serán utilizados y
algunos que son inseguros, como telnet. ç
Para ello debes editar el archivo “etc/hosts.allow” y el archivo “/etc/hosts.deny''
para restringir el acceso a tus servicios. En el siguiente ejemplo puedes ver como se
restringe el acceso solo al servicio ssh, negando las conexiones por telnet.
Primero, en el archivo “/etc/hosts.allow”:
# vi /etc/hosts.allow
sshd: 150.185.180.0/255.255.254.0
Segundo, niega el acceso al resto de los servicios escribiendo en el
/etc/hosts.deny
# vi /etc/hosts.deny
ALL:ALL except 127.0.0.1: Deny
• Apagar y desinstalar servicios innecesarios: Para conocer los servicios que se
están utlizando y qué puertos están abiertos en tu servidor ejecuta los siguientes
comandos:
# nmap localhost (para conocer los servicios abiertos)
Starting Nmap 4.20 ( http://insecure.org ) at 20070808 14:30 VET
Warning: Hostname localhost resolves to 2 IPs. Using 192.168.2.1.
Interesting ports on sunrayeth1 (192.168.2.1):
Not shown: 1691 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
Nmap finished: 1 IP address (1 host up) scanned in 0.223 seconds
Si existe algún servicio innecesario puedes deshabilitarlo colocando un el carácter de
comentario “#” en el servicio que no necesitas en el archivo ``/etc/inetd.conf''.
Después de realizar los cambios, entrando como root, reinicia el demonio inetd
(utilizando el script “/etc/rc.d/init.d/inet restart'' para que tome los
cambios que realizaste.
# runlevel (para conocer los servicios que se están ejecutando)
# ls /etc/rc2.d/
Para impedir que los servicios que no se están utilizando se ejecuten utilice el
comando updaterc.d .Una vez que se impida el arranque de estos servicios hay que
detenerlos.
Por ejemplo para detener el servicio apache:
# updaterc.d f apache remove
updaterc.d: /etc/init.d/apache exists during rc.d purge (continuing)
Removing any system startup links for /etc/init.d/apache ...
/etc/rc0.d/K20apache
/etc/rc1.d/K20apache
/etc/rc2.d/S20apache
/etc/rc3.d/S20apache
/etc/rc4.d/S20apache
/etc/rc5.d/S20apache
/etc/rc6.d/K20apache
# /etc/init.d/apache stop
Stopping web server: apache.
Una vez realizados los cambios reinicia el servidor y verifica que los puertos para los
servicios innecesarios están cerrados y que no se están ejecutando.
• Evite el uso de los comandos “r” (Ej. rlogin, rsh.)
En el uso diario de Linux es frecuente la ejecución de comandos en máquinas
remotas. Tradicionalmente esta necesidad se resolvía con los comandos "r" esto es:
rlogin, rsh y rcp. Estos comandos lanzan un shell en la máquina remota y permiten
al usuario ejecutar comandos. El usuario debe usar una usuario en la máquina
remota, por lo que debe pasar por los métodos de autenticación. Los comandos r
usan la autenticación simple de usuario y contraseña, y utilizan una conexión en texto
claro, por lo que estas pueden ser interceptadas por la red.
La autenticación para los comandos "r" también se puede controlar desde algunos
archivos de configuración como son:
• /etc/hosts.equiv : a nivel de sistema, equivalencia entre usuarios de
distintas máquinas. Se puede evitar la introducción de contraseñas.
• $HOME/.rhosts: a nivel de usuario, permite el acceso a usuarios de otras
máquinas sin utilizar contraseña.
Cómo deshabilitar los comandos “r”
Los comandos “r” se controlan desde el demonio inet, para deshabilitarlos puedes
comentar sus entradas en el fichero /etc/inetd.conf. Si tu distribución utiliza
Xinetd puedes comprobar si están deshabilitados con el siguiente comando:
root@localhost root]# chkconfig list|grep E "rlogin|shell|exec"
kshell: off
rexec: off
rlogin: off
En nuestro caso ya están deshabilitados. Si alguno de ellos no lo estuviera puedes
conseguirlo con el comando:
root@localhost root]# chkconfig rlogin off
fuente: Enrique Galdú. Ssh sustituye a rsh Después de la r viene la s.
• Revise los permisos y la propiedad de los archivos de configuración del
sistema y los servic
Comentarios de: recomendaciones adm linux (0)
No hay comentarios