You are on page 1of 6

seguridad

Hardening en Linux

Hardening en Linux
Ricardo Lozano Coln

linux@software.com.pl

La seguridad ha sido un tema que hasta hace unos aos no era muy atendida por los
lideres en tecnologas de la informacin, no porque no fuera importante ms bien porque
la informacin no se comparta como se hace en estos momentos, y todo gracias a
Internet que ha permitido que lo que se hace hoy en alguna comunidad se conozca
maana alrededor del mundo. El Hardening lo debemos entender como la serie de pasos
a seguir para hacer ms robusta nuestra instalacin de Linux, coloquialmente conocido
como Endurecer.

42

ntes que nada debemos definir algo que ser


imprescindible durante el ciclo de vida del servidor Linux -el tipo de servicio que va brindar, en este artculo vamos a explicar paso a paso
como aplicar un Hardening bsico a un servidor Linux, aplica
para cualquier tipo: Servidor WEB, Base de Datos o Aplicaciones. Sabemos que ningn sistema operativo por naturaleza
es seguro y eso SI debera preocuparnos antes de conectarlo
a la red y ms si estar en la DMZ (Zona Desmilitarizada) de
nuestra organizacin, por lo que siempre y reitero - siempre
que vayamos a instalar un equipo Linux deberamos cumplir
con un Checklist (una serie de pasos) como el propuesto o
uno desarrollado de acuerdo a las necesidades internas del
Departamento de Seguridad de cada Organizacin:

Muchas veces y seguro les parecer familiar hemos visto ordenadores en lugares que no cumplen con estas condiciones
y que aunque parezca extrao ofrecen servicios relevantes,
como el proceso de nmina, de contabilidad o planeacin,
las cosas han ido cambiando y ahora que se ha dado la fusin
entre el Negocio y la Tecnologa se han establecido las reglas
que se deben seguir para que por un lado se cumplan los

Seguridad Fsica,
BIOS,
Particionamiento,
Software mnimo necesario,
IP,
Actualizar sistema,
SSH,

Linux+ 12/2008

Cuentas de acceso,
Servicios del Sistema,
Puertos.

Seguridad Fsica

No demos el primer paso sin definir y tener claro que nuestro


ordenador tendr que ubicarse en un lugar -seguro- adaptado
con los estndares mnimos recomendados, un centro de
cmputo sera lo ideal, que cuente con:

Aire acondicionado,
Piso falso,
Unidad de Energa Ininterrumpida (UPS),
Sistema de Control de Acceso etc.

seguridad
Hardening en Linux
objetivos de la organizacin con el apoyo de la ello tendra que conocer la contrasea o tener extendida si existe). La extendida nos sirve para
tecnologa y por otro se crea en la tecnologa habilitados los medios para intentar hacer uso albergar ms particiones, llamadas lgicas con lo
como optimizacin de procesos de negocios.
del mismo.
que logramos tener ms de 4 particiones en total.
Las Particiones lgicas siempre sern albergadas
BIOS
Particionamiento
dentro de una extendida. Particionamiento para
Es importante adems de actualizar el BIOS Definir un adecuado particionamiento de nuestro servidores en produccin se recomienda tener al
de nuestro ordenador protegerlo contra mo- disco duro quitara a los administradores muchos menos y separados:
dificaciones a su configuracin, para ello se dolores de cabeza, si es la primera vez que insrecomienda:
talas Linux y con fines prcticos se recomienda / raz
usar el particionamiento automtico, en este caso /boot
Establecer una contrasea,
Linux realiza dicha tarea por nosotros, con todas /home
Quitar arranque por CD,
las implicaciones que ello pueda traer, sin embar- /usr
Quitar arranque por USB,
go si lo que queremos es tener mejor organizada /var
Quitar arranque por Discket.
nuestra informacin y el acceso a ella se reco- /tmp
mienda hacer un particionamiento personalizado swap
Estas simples medidas nos permitirn asegurar considerando los siguientes puntos. Lo que deque en caso de que alguien tuviera acceso f- beramos saber. Un disco duro puede tener hasta Algo que no debemos dejar a un lado y que desico al ordenador no podr entrar ya que para cuatro particiones principales (incluyendo la pendera mucho el rendimiento de nuestro ordenador es el espacio asignado a nuestra memoria
Listado 1. Inventariando y Eliminando Software
SWAP, existe an el mito que la SWAP debe ser
el doble de nuestra memoria fsica -RAM-, ojo
[root@host ~]# rpm -qa | more
esto solo aplica o aplicaba para ordenadores de
cpio-2.6-20
124,256 o incluso para 512 Megas en RAM, en
time-1.7-27.2.2
la actualidad con los ordenadores que existen
redhat-logos-4.9.99-8.el5.centos
esta regla desaparece, por lo que de ninguna
libXext-1.0.1-2.1
manera deberemos superar los 2GB en la melibXcursor-1.1.7-1.1
moria SWAP:
libXinerama-1.0.1-2.1

cracklib-dicts-2.8.9-3.3
aspell-es-0.50-13.2.2

ftp-0.17-33.fc6
Supongamos que queremos desinstalar FTP : -ejecutamos[user@host ~]# rpm -e ftp-0.17-33.fc6

Listado 2. Configurando una IP Esttica

Hasta 512 M en RAM asignar el doble de


memoria SWAP.
Hasta 1GB en RAM asignar la misma cantidad para la memoria SWAP.
Entre 2 y hasta 4 GB de RAM asignar la
mitad de memoria SWAP.
Con ms de 4GB no deber exceder los
2GB de memoria SWAP.

[user@host ~]$ cd /etc/sysconfig/network-scripts/


[user@host ~]$ vi ifcfg-eth0 (en caso que estemos usando esta interfaz)
DEVICE=eth0
BOOTPROTO=none
IPADDR=x.x.x.x
peerdns=no
NETMASK=x.x.x.x
GATEWAY=x.x.x.x
USERCTL=no
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
TYPE=Ethernet
(Nota: No olvidar que si nuestro ordenador va a tener acceso a Internet se
debe
poner la puerta de enlace correcta o jams podr comunicarse al exterior)
[user@host ~]$ cd /etc/hosts
[user@host ~]$ vi hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
x.x.x.x nombre.dominio nombre

Figura 1. Endureciendo Linux

www.lpmagazine.org

43

seguridad
Hardening en Linux
Adems considera que en alguna de estas particiones se guardaran los respaldos, por lo que
se le deber asignar ms espacio en DD (Disco
Duro), adems de una particin para los datos
o las aplicaciones (/opt), antes de tomar la
decisin es recomendable tener claro para que
servir cada una de ellas. OJO:
Seguir las buenas prcticas y recomendaciones te puede salvar de muchas tareas administrativas o de tener ordenadores parchados.

Software Mnimo Necesario

Actualizar Sistema

Antes de cualquier cosa y una vez instalado el


ordenador debemos aplicar las ltimas actualizaciones del sistema operativo, esto tardar
dependiendo del nmero de los mismas, afortunadamente para los que no les gusta el instalar
con un (configure,make,make install) existe la
herramienta YUM que permite instalar, desinstalar y actualizar software sin la necesidad de
preocuparnos por las dependencias pues en su
uso ya vienen implcitas (Listado 3).

red, por naturaleza y definicin es seguro... sin


embargo podemos ayudarle a tener un mayor
control sobre lo que permita durante su uso:

Cambiar el puerto por default

[user@host ~]$ vi /etc/ssh/sshd_config


# $OpenBSD: sshd_config,v 1.73 2005/
12/06 22:38:28 reyk Exp $
#Port 22 -cambiarlo por uno que se
encuentre libre-

Una parte muy importante en el hardening es SSH


Negar el acceso remoto como root
considerar solo instalar el software necesario, Secure Shell es el protocolo que permite accesolo lo que se va utilizar, aquellos que hemos sar ordenadores de manera remota a travs de la #PermitRootLogin no
instalado linux alguna vez o ms bien muchas
Listado 3. Parmetros Bsicos de YUM
veces sabemos que lo recomendable es instalar
# Actualizar el sistema
solo la -base- y a partir de esto ir instalando lo
[user@host ~]$ yum update
que vayamos usando.
Loading "rhnplugin" plugin
Sin embargo si por alguna razn instalamos
# rhel-i386-server-5 100% |=========================| 1.4 kB 00:00
algn paquete RPM (Package Manager) y posSetting up Update Process
terior a la instalacin inicial deseramos elimi# Resolving Dependencies
narlo el proceso a seguir es el presentado en el
--> Running transaction check
Listado 1. Y as sucesivamente para todo aquel
---> Package initscripts.i386 0:8.45.19.1.EL-1 set to be updated
paquete que no deseemos en nuestro sistema.
--> Finished Dependency Resolution
Pero recalco que el 90% de lo que queremos
# Dependencies Resolved
instalar ya debe estar definido desde la instala# Package Arch Version Repository Size
cin y post instalacin solo debera ser el 10%
# Updating:
de agregar paquetes.

IP

Es recomendable asignar una Direccin IP -fija- a


los ordenadores que tienen el rol de -productivosinclusive y como mejor practica se debera asignar
un segmento de red exclusivo para los mismos, lo
cual nos permitir un control ms preciso y limpio, entendamos como limpio a la actividad de no
mezclar ordenadores personales de uso diario con
ordenadores que brindan un servicio como puede
ser el correo electrnico.
Los archivos que debemos cambiar muestra el Listado 2.

initscripts i386 8.45.19.1.EL-1 rhel-i386-server-5 1.6 M


# Transaction Summary
Install 0 Package(s)
Update 1 Package(s)
Remove 0 Package(s)
# Total download size: 1.6 M
# Is this ok [y/N]: y -para instalar la actualizacin# Bsqueda de paquetes
[user@host ~]$ yum search postgres (yum search nombre-del-paquete)
Loading "rhnplugin" plugin
rhel-i386-server-5 100% |=========================| 1.4 kB 00:00
postgresql-devel.i386 : PostgreSQL development header files and libraries.
libdbi-dbd-pgsql.i386 : PostgreSQL plugin for libdbi
php-pdo.i386 : A database access abstraction module for PHP applications
postgresql-server.i386 : The programs needed to create and run a
PostgreSQL server.
postgresql.i386 : PostgreSQL client programs and libraries.
qt-PostgreSQL.i386 : PostgreSQL drivers for Qt's SQL classes.
Etc.
Instalar paquetes
[user@host ~]$ yum install postgresql.i386
Desinstalar paquetes
[user@host ~]$ yum remove postgresql.i386
Paquetes disponibles para instalar
[user@host ~]$ yum list available
Paquetes instalados en el sistema
[user@host ~]$ yum list installed
Paquetes instalados en el sistema y que requieren acualizarse

Figura 2. Endureciendo Linux

44

[user@host ~]$ yum list update

Linux+ 12/2008

Club Pro

Listado 4. Cuentas de acceso


[user@host ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
=========================================
NOLOGIN = Nos sirve para decirle al servidor que ese usuario an cundo
este dentro del archivo de password no tiene permitido hacer login al
servidor, es decir accesar.
BASH = Nos sirve para decirle al servidor que ese usuario determinado
puede hacer login al servidor y tiene asignado un espacio home.
Nota: El caso anterior no aplica para los usuario de administracin
por ejemplo: admin1, admin2, es decir si el usuario no es necesario y
no cumple una funcin dentro del servidor no debera existir -as de
sencillo-.


DESARROLLADORES.ES

www.desarrolladores.es
Desarrollo de Portales de Gestin Avanza
dos, Extranets, Intranets, Aplicaciones M2M
y Aplicaciones GIS. Uso de tecnologas con
licencias GNU/GPL. Experiencia en proyectos de Administracin Pblica. Especializados en plataformas de gestin usando
TOMCAT, JSP, JAVA, POSTGRESQL y JASPER REPORTS.

Listado 5. Puertos
Una herramienta que nos puede servir bastante para este caso es sin duda
NMAP la cual nos sirve para escanear puertos, hacer sniffing y monitorear
nuestro sistema.
[user@host ~]$ nmap -sT localhost (para puertos TCP)
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-09-30 14:38
CDT
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1672 closed ports
PORT STATE SERVICE

EVO Sistemas Libres

22/tcp open ssh

www.evosistemas.com/
Desarrollo de software, aplicaciones
basadas en web, integracin, mantenimiento, administracin y migracin de
sistemas de software libre, consultora
TIC, sistemas VoIP.
central@evosistemas.com

25/tcp open smtp


80/tcp open http
111/tcp open rpcbind
443/tcp open https
953/tcp open rndc
3306/tcp open mysql
5432/tcp open postgres
[user@host ~]$ nmap -sU localhost (para puertos UDP)
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-09-30 14:41
CDT
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1484 closed ports
PORT STATE SERVICE
111/udp open|filtered rpcbind
947/udp open|filtered unknown
950/udp open|filtered unknown
Nota: En el caso que detectemos que un puerto -est abierto- que a su
vez est asociado a un servicio, debemos cerrarlo y en su caso apagar el
servicios.
Otras opciones de NMAP:
[user@host ~]$ nmap -F (fast scan)
[user@host ~]$ nmap -p 1-50 (rango de puertos)

www.lpmagazine.org

Zitralia

info@zitralia.com
Zitralia es una compaa espaola de
I+D+i pionera en el desarrollo de sistemas de seguridad avanzada en entornos
distribuidos y sistemas de acceso remoto.
El objetivo fundamental de la compaa se
centra en mitigar el acceso ilegtimo y el
robo de datos, mediante tecnologas punteras de proteccin de la informacin.

seguridad
Hardening en Linux

Colocar un Banner de Bienvenida/Adve- por lo que casi es un hecho que los servicios que
rtencia
tengamos activos correspondern al software
instalado, por lo que es importante asegurar que
[user@host ~]$ cd /etc/ssh/
dichas herramientas inician y estn en el nivel de
[user@host ~]$ touch banner
arranque correcto del sistema operativo:
Nota: El mensaje debe contener un aviso en el
que se alerta a los usuarios sobre que el sistema
que estn accesando es privado y que por tal
motivo todo el tiempo que dure la conexin
ser monitoreada, registrada y en su caso investigada.

veles de servicio determinados originalmente.


Ojo: Si apagamos un servicios con el comando
/etc/init.d/iptables stop solo ser de
manera provisional, es decir que en el siguiente
reinicio del ordenador nuestro servicios de
iptables arrancar en los niveles configurados
Activar servicios en los niveles de arran- originalmente.
que del sistema operativo

Puertos

Podramos tratar de entender esta parte como


una de las ms importantes, ya que entre ms
6:off
-puertas abiertas- dejemos en nuestro servidor
httpd 0:off 1:off 2:off 3:on 4:off 5:
ser ms vulnerable, por ello en esta etapa
Asegurarse que dentro del archivo de con- off 6:off
debemos pararnos y explorar detenidamente -si
figuracin se hizo referencia al banner:
ip6tables 0:off 1:off 2:off 3:off 4:
nuevamente!- las herramientas que se instalaoff 5:on 6:off
ron en el ordenador, de ello depende que solo
# no default banner path
dejemos abierto lo necesario, por ejemplo si
Banner /etc/ssh/banner
Ejemplo: Como vemos el servicio de ip6tables instalamos el manejador de base de datos Post[user@host ~]$ vi banner
solo est activo en el nivel de arranque 5, pero gres sin lugar a duda debemos dejar abierto el
- Mensaje Personalizadonosotros queremos que este en el nivel 2,3,4 y puerto que le corresponde (5432) y as sucesi5, ejecutamos lo siguiente:
vamente para cada servicio que viva en nuestro
Reiniciar el servicio de SSH
ordenador (Listado 5).
[user@host ~]$ chkconfig --list

hidd 0:off 1:off 2:on 3:on 4:on 5:on

[user@host ~]$chkconfig --level 234


[user@host ~]$ /etc/init.d/sshd res-

ip6tables on

tart

con la opcin -off- hacemos el proceso conCuentas de Acceso


trario, es decir apagamos dicho servicios en
En muchas de las organizaciones no hay un solo determinado nivel de arranque del sistema
administrador de ordenadores, lo que puede operativo:
ocasionar una serie de conflictos al momento
de realizar tareas administrativas, para lo cual [user@host ~]$ chkconfig --list
se sugiere crear cuentas de acceso por el n- hidd 0:off 1:off 2:on 3:on 4:on 5:on
mero de administradores y darles permisos con 6:off
la herramienta SUDO para ejecutar comando httpd 0:off 1:off 2:off 3:on 4:off 5:
que solamente root podra, con esto tendremos off 6:off
un control ms detallado de los comando que ip6tables 0:off 1:off 2:on 3:on 4:on
se pueden ejecutar, por ejemplo tal vez uno de 5:on 6:off
nuestros administradores solamente debera
tener permisos de realizar respaldos, entonces Activar y Apagar servicios:
solo le damos permisos de ejecutar los comandos
correspondientes a la creacin de respaldos. Otro [user@host ~]$ chkconfig ip6tables off
caso y es el que describiremos aqu es cuando ins- [user@host ~]$ chkconfig --list
talamos software adicional, se me ocurre Apache, hidd 0:off 1:off 2:on 3:on 4:on 5:on
Postgres, SSH etc, dichas instalaciones y la ma- 6:off
yora del software crea usuarios por default que httpd 0:off 1:off 2:off 3:on 4:off 5:
muchas veces solo maneja de manera interna lo off 6:off
que quiere decir que como primer actividad debe- ip6tables 0:off 1:off 2:off 3:off 4:
mos quitarle acceso al servidor a todo usuario que off 5:off 6:off
solo trabaje de manera local (Listado 4).
Con la opcin -on- hacemos el proceso contraServicios del Sistema
rio, es decir activamos dicho servicios en los niRecordemos que una de las caractersticas de Linux, es que es multitarea, lo que quiere decir que
puede ejecutar distintas tareas/procesos a la vez,
sin embargo no deberamos jugar con ello y si es- En la red
pecificar que servicios son los que deberan estar
https://www.redhat.com/docs/manua
funcionando. Los servicios tienen una relacin
ls/enterprise/RHEL-4-Manual/en-US/
directa con el Software Mnimo recomendado
Security_Guide/

46

Linux+ 12/2008

Conclusiones

Como vemos asegurar un servidor Linux implica considerar muchas variables, sin embargo
puede no ser tan tormentoso si llevamos consigo un orden de ideas, si seguimos ciertas buenas prcticas que nos ayuden a cumplir con el
cometido asegurar linux, esto es lo mnimo que
deberamos cumplir ya que una vez cumplido
esto podramos y sugerimos aplicar las misma
idea a ciertos servicios como apache, base de
datos, servidor de aplicaciones etc. Un segundo
nivel en este tema sera el manejo de:

Iptables,
Permisos especficos a archivos de datos,
Hardening sobre servicios,
Hardening sobre el Kernel etc.

Nota

Todos los comandos mostrados en este documento fueron probados en Linux Centos 5.2,
lo que quiere decir que funcionan en toda la
familia RedHat.

Sobre el autor
Ricardo Lozano Coln gusta del Software
Libre y de todo lo que refiera a la aplicacin
de estndares y buenas prcticas en las
Tecnologas de la Informacin (TI), actualmente aparte de Laborar en el Instituto Federal Electoral participa en proyectos para
Universidad de Negocios ISEC usando
Software Libre.

You might also like