Sunteți pe pagina 1din 6

seguridad

Hardening en Linux

Hardening en Linux
Ricardo Lozano Colín

La seguridad ha sido un tema que hasta hace unos años no era muy atendida por los
lideres en tecnologías de la información, no porque no fuera importante más bien porque
la información no se compartía 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
mañana alrededor del mundo. El Hardening lo debemos entender como la serie de pasos
a seguir para hacer más robusta nuestra instalación de Linux, coloquialmente conocido
como Endurecer.

A
ntes que nada debemos definir algo que será • Cuentas de acceso,
linux@software.com.pl

imprescindible durante el ciclo de vida del ser- • Servicios del Sistema,


vidor Linux -el tipo de servicio que va brindar- • Puertos.
, en este artículo vamos a explicar paso a paso
como aplicar un Hardening básico a un servidor Linux, aplica Seguridad Física
para cualquier tipo: Servidor WEB, Base de Datos o Aplica- No demos el primer paso sin definir y tener claro que nuestro
ciones. Sabemos que ningún sistema operativo por naturaleza ordenador tendrá que ubicarse en un lugar -seguro- adaptado
es seguro y eso SI debería preocuparnos antes de conectarlo con los estándares mínimos recomendados, un centro de
a la red y más si estará en la DMZ (Zona Desmilitarizada) de cómputo sería lo ideal, que cuente con:
nuestra organización, por lo que siempre y reitero - siempre
que vayamos a instalar un equipo Linux deberíamos cumplir • Aire acondicionado,
con un Checklist (una serie de pasos) como el propuesto o • Piso falso,
uno desarrollado de acuerdo a las necesidades internas del • Unidad de Energía Ininterrumpida (UPS),
Departamento de Seguridad de cada Organización: • Sistema de Control de Acceso etc.

• Seguridad Física, Muchas veces y seguro les parecerá familiar hemos visto or-
• BIOS, denadores en lugares que no cumplen con estas condiciones
• Particionamiento, y que aunque parezca extraño ofrecen servicios relevantes,
• Software mínimo necesario, como el proceso de nómina, de contabilidad o planeación,
• IP, las cosas han ido cambiando y ahora que se ha dado la fusión
• Actualizar sistema, entre el Negocio y la Tecnología se han establecido las reglas
• SSH, que se deben seguir para que por un lado se cumplan los

42 Linux+ 12/2008
seguridad
Hardening en Linux

objetivos de la organización con el apoyo de la ello tendría que conocer la contraseña o tener extendida si existe). La extendida nos sirve para
tecnología y por otro se crea en la tecnología habilitados los medios para intentar hacer uso albergar más particiones, llamadas lógicas con lo
como optimización de procesos de negocios. del mismo. que logramos tener más de 4 particiones en total.
Las Particiones lógicas siempre serán albergadas
BIOS Particionamiento dentro de una extendida. Particionamiento para
Es importante además de actualizar el BIOS Definir un adecuado particionamiento de nuestro servidores en producción se recomienda tener al
de nuestro ordenador protegerlo contra mo- disco duro quitara a los administradores muchos menos y separados:
dificaciones a su configuración, para ello se dolores de cabeza, si es la primera vez que ins-
recomienda: talas Linux y con fines prácticos se recomienda • / raíz
usar el particionamiento automático, en este caso • /boot
• Establecer una contraseña, 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 información y el acceso a ella se reco- • /tmp
mienda hacer un particionamiento personalizado • swap
Estas simples medidas nos permitirán asegurar considerando los siguientes puntos. Lo que de-
que en caso de que alguien tuviera acceso fí- beríamos saber. Un disco duro puede tener hasta Algo que no debemos dejar a un lado y que de-
sico al ordenador no podrá entrar ya que para cuatro particiones principales (incluyendo la pendera mucho el rendimiento de nuestro orde-
nador es el espacio asignado a nuestra memoria
Listado 1. Inventariando y Eliminando Software SWAP, existe aún el mito que la SWAP debe ser
el doble de nuestra memoria física -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 me-
libXcursor-1.1.7-1.1 moria SWAP:
libXinerama-1.0.1-2.1
cracklib-dicts-2.8.9-3.3 • Hasta 512 M en RAM asignar el doble de
aspell-es-0.50-13.2.2 memoria SWAP.
ftp-0.17-33.fc6 • Hasta 1GB en RAM asignar la misma can-
Supongamos que queremos desinstalar FTP : -ejecutamos- tidad para la memoria SWAP.
[user@host ~]# rpm -e ftp-0.17-33.fc6 • Entre 2 y hasta 4 GB de RAM asignar la
mitad de memoria SWAP.
Listado 2. Configurando una IP Estática • Con más 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 jamás 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

Además considera que en alguna de estas par- Actualizar Sistema red, por naturaleza y definición es seguro... sin
ticiones se guardaran los respaldos, por lo que Antes de cualquier cosa y una vez instalado el embargo podemos ayudarle a tener un mayor
se le deberá asignar más espacio en DD (Disco ordenador debemos aplicar las últimas actua- control sobre lo que permita durante su uso:
Duro), además de una partición para los datos lizaciones del sistema operativo, esto tardará
o las aplicaciones (/opt), antes de tomar la dependiendo del número de los mismas, afortu- • Cambiar el puerto por default
decisión es recomendable tener claro para que nadamente para los que no les gusta el instalar
servirá cada una de ellas. OJO: con un (configure,make,make install) existe la [user@host ~]$ vi /etc/ssh/sshd_config
Seguir las buenas prácticas y recomenda- herramienta YUM que permite instalar, desins- # $OpenBSD: sshd_config,v 1.73 2005/
ciones te puede salvar de muchas tareas admi- talar y actualizar software sin la necesidad de 12/06 22:38:28 reyk Exp $
nistrativas o de tener ordenadores parchados. preocuparnos por las dependencias pues en su #Port 22 -cambiarlo por uno que se
uso ya vienen implícitas (Listado 3). encuentre libre-
Software Mínimo Necesario
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 acce-
solo lo que se va utilizar, aquellos que hemos sar ordenadores de manera remota a través de la #PermitRootLogin no
instalado linux alguna vez o más bien muchas
veces sabemos que lo recomendable es instalar Listado 3. Parámetros Básicos de YUM
solo la -base- y a partir de esto ir instalando lo # Actualizar el sistema
que vayamos usando. [user@host ~]$ yum update
Sin embargo si por alguna razón instalamos Loading "rhnplugin" plugin
algún paquete RPM (Package Manager) y pos- # rhel-i386-server-5 100% |=========================| 1.4 kB 00:00
terior a la instalación inicial deseáramos elimi- Setting up Update Process
narlo el proceso a seguir es el presentado en el # Resolving Dependencies
Listado 1. Y así sucesivamente para todo aquel --> Running transaction check
paquete que no deseemos en nuestro sistema. ---> Package initscripts.i386 0:8.45.19.1.EL-1 set to be updated
Pero recalco que el 90% de lo que queremos --> Finished Dependency Resolution
instalar ya debe estar definido desde la instala- # Dependencies Resolved
ción y post instalación solo debería ser el 10% # Package Arch Version Repository Size
de agregar paquetes. # Updating:
initscripts i386 8.45.19.1.EL-1 rhel-i386-server-5 1.6 M
IP # Transaction Summary
Es recomendable asignar una Dirección IP -fija- a Install 0 Package(s)
los ordenadores que tienen el rol de -productivos- Update 1 Package(s)
inclusive y como mejor practica se debería asignar Remove 0 Package(s)
un segmento de red exclusivo para los mismos, lo # Total download size: 1.6 M
cual nos permitirá un control más preciso y lim- # Is this ok [y/N]: y -para instalar la actualización-
pio, entendamos como limpio a la actividad de no # Búsqueda de paquetes
mezclar ordenadores personales de uso diario con [user@host ~]$ yum search postgres (yum search nombre-del-paquete)
ordenadores que brindan un servicio como puede Loading "rhnplugin" plugin
ser el correo electrónico. rhel-i386-server-5 100% |=========================| 1.4 kB 00:00
Los archivos que debemos cambiar mues- postgresql-devel.i386 : PostgreSQL development header files and libraries.
tra el Listado 2. 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
[user@host ~]$ yum list update
Figura 2. Endureciendo Linux

44 Linux+ 12/2008
Listado 4. Cuentas de acceso
Club Pro
[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 aún cuándo
este dentro del archivo de password no tiene permitido hacer “login” al   
DESARROLLADORES.ES
servidor, es decir accesar.
www.desarrolladores.es
Desarrollo de Portales de Gestión Avanza
BASH = Nos sirve para decirle al servidor que ese usuario determinado dos, Extranets, Intranets, Aplicaciones M2M
puede hacer “login” al servidor y tiene asignado un espacio “home”. y Aplicaciones GIS. Uso de tecnologías con
Nota: El caso anterior no aplica para los usuario de administración licencias GNU/GPL. Experiencia en proy-
por ejemplo: admin1, admin2, es decir si el usuario no es necesario y ectos de Administración Pública. Especia-
lizados en plataformas de gestión usando
no cumple una función dentro del servidor no debería existir -así de
TOMCAT, JSP, JAVA, POSTGRESQL y JA-
sencillo-.
SPER 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
22/tcp open ssh EVO Sistemas Libres
25/tcp open smtp www.evosistemas.com/
80/tcp open http Desarrollo de software, aplicaciones
111/tcp open rpcbind basadas en web, integración, manteni-
miento, administración y migración de
443/tcp open https
sistemas de software libre, consultoría
953/tcp open rndc
TIC, sistemas VoIP.
3306/tcp open mysql central@evosistemas.com
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


Zitralia
info@zitralia.com
vez está asociado a un servicio, debemos cerrarlo y en su caso apagar el Zitralia es una compañía española de
servicios. I+D+i pionera en el desarrollo de siste-
Otras opciones de NMAP: mas de seguridad avanzada en entornos
distribuidos y sistemas de acceso remoto.
El objetivo fundamental de la compañía se
[user@host ~]$ nmap -F (fast scan)
centra en mitigar el acceso ilegítimo y el
[user@host ~]$ nmap -p 1-50 (rango de puertos) robo de datos, mediante tecnologías pun-
teras de protección de la información.

www.lpmagazine.org
seguridad
Hardening en Linux

• Colocar un Banner de Bienvenida/Adve- por lo que casi es un hecho que los servicios que veles de servicio determinados originalmente.
rtencia tengamos activos corresponderán al software Ojo: Si apagamos un servicios con el comando
instalado, por lo que es importante asegurar que /etc/init.d/iptables stop solo será de
[user@host ~]$ cd /etc/ssh/ dichas herramientas inician y están en el nivel de manera provisional, es decir que en el siguiente
[user@host ~]$ touch banner arranque correcto del sistema operativo: reinicio del ordenador nuestro servicios de
iptables arrancará en los niveles configurados
Nota: El mensaje debe contener un aviso en el • Activar servicios en los niveles de arran- originalmente.
que se alerta a los usuarios sobre que el sistema que del sistema operativo
que están accesando es privado y que por tal Puertos
motivo todo el tiempo que dure la conexión [user@host ~]$ chkconfig --list Podríamos tratar de entender esta parte como
será monitoreada, registrada y en su caso in- hidd 0:off 1:off 2:on 3:on 4:on 5:on una de las más importantes, ya que entre más
vestigada. 6:off -puertas abiertas- dejemos en nuestro servidor
httpd 0:off 1:off 2:off 3:on 4:off 5: será más vulnerable, por ello en esta etapa
• Asegurarse que dentro del archivo de con- off 6:off debemos pararnos y explorar detenidamente -si
figuración se hizo referencia al banner: ip6tables 0:off 1:off 2:off 3:off 4: nuevamente!- las herramientas que se instala-
off 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 Personalizado- nosotros queremos que este en el nivel 2,3,4 y puerto que le corresponde (5432) y así sucesi-
5, ejecutamos lo siguiente: vamente para cada servicio que viva en nuestro
• Reiniciar el servicio de SSH ordenador (Listado 5).
[user@host ~]$chkconfig --level 234
[user@host ~]$ /etc/init.d/sshd res- ip6tables on Conclusiones
tart Como vemos asegurar un servidor Linux im-
con la opción -off- hacemos el proceso con- plica considerar muchas variables, sin embargo
Cuentas de Acceso trario, es decir apagamos dicho servicios en puede no ser tan tormentoso si llevamos consi-
En muchas de las organizaciones no hay un solo determinado nivel de arranque del sistema go un orden de ideas, si seguimos ciertas bue-
administrador de ordenadores, lo que puede operativo: nas prácticas que nos ayuden a cumplir con el
ocasionar una serie de conflictos al momento cometido asegurar linux, esto es lo mínimo que
de realizar tareas administrativas, para lo cual [user@host ~]$ chkconfig --list deberíamos cumplir ya que una vez cumplido
se sugiere crear cuentas de acceso por el nú- hidd 0:off 1:off 2:on 3:on 4:on 5:on esto podríamos y sugerimos aplicar las misma
mero de administradores y darles permisos con 6:off idea a ciertos servicios como apache, base de
la herramienta SUDO para ejecutar comando httpd 0:off 1:off 2:off 3:on 4:off 5: datos, servidor de aplicaciones etc. Un segundo
que solamente root podría, con esto tendremos off 6:off nivel en este tema sería el manejo de:
un control más 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 • Iptables,
nuestros administradores solamente debería • Permisos específicos a archivos de datos,
tener permisos de realizar respaldos, entonces • Activar y Apagar servicios: • Hardening sobre servicios,
solo le damos permisos de ejecutar los comandos • Hardening sobre el Kernel etc.
correspondientes a la creación de respaldos. Otro [user@host ~]$ chkconfig ip6tables off
caso y es el que describiremos aquí es cuando ins- [user@host ~]$ chkconfig --list Nota
talamos software adicional, se me ocurre Apache, hidd 0:off 1:off 2:on 3:on 4:on 5:on Todos los comandos mostrados en este docu-
Postgres, SSH etc, dichas instalaciones y la ma- 6:off mento fueron probados en Linux Centos 5.2,
yoría del software crea usuarios por default que httpd 0:off 1:off 2:off 3:on 4:off 5: lo que quiere decir que funcionan en toda la
muchas veces solo maneja de manera interna lo off 6:off familia RedHat.
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 opción -on- hacemos el proceso contra- Sobre el autor
Servicios del Sistema rio, es decir activamos dicho servicios en los ni-
Ricardo Lozano Colín gusta del Software
Recordemos que una de las características de Li-
Libre y de todo lo que refiera a la aplicación
nux, es que es multitarea, lo que quiere decir que
de estándares y buenas prácticas en las
puede ejecutar distintas tareas/procesos a la vez,
Tecnologías de la Información (TI), actual-
sin embargo no deberíamos jugar con ello y si es- En la red
mente aparte de Laborar en el Instituto Fe-
pecificar que servicios son los que deberían estar
• https://www.redhat.com/docs/manua deral Electoral participa en proyectos para
funcionando. Los servicios tienen una relación
ls/enterprise/RHEL-4-Manual/en-US/ Universidad de Negocios ISEC usando
directa con el Software Mínimo recomendado
Security_Guide/ Software Libre.

46 Linux+ 12/2008

S-ar putea să vă placă și