• Suscríbete al Feed Espacio Linux
  • Suscríbete al Feed por Email
  • Sigue a Espacio Linux en Identi.ca
  • Espacio Linux también en Facebook
  • Sigue a Espacio Linux en Twitter
  • Sigue a Espacio Linux en Google +
          Iniciar sesión | Registrarse

Consejos de Seguridad en Linux

Introducción
En este artículo explicaré como hacer su estación Linux más segura tras tomar medidas de
seguridad básicas. Este artículo le permitirá a cualquiera ajustar la seguridad de una estación corriendo Red Hat Linux.

Seguridad de la BIOS
Siempre establezca una contraseña en la BIOS para prohibir la
carga del sistema a través de un disquete cambiando la
configuración de su BIOS. Esto le cerrará el paso a las
personas no deseadas para que puedan cargar su sistema Linux con
un disco especial de inicio y lo protegerá a usted de las
personas que traten de cambiar las características de la BIOS
como lo son iniciar el sistema de un disquete o cargar el
servidor sin preguntar la contraseña.

Seguridad de LILO
Agregue estos tres parámetros en el archivo
“/etc/lilo.conf”, esto son, time-out, restricted y
password. Estas opciones preguntarán por una contraseña si se
le pasan parámetros al cargador de Linux durante el inicio
(tales como “linux single”).

Paso 1
Edite el archivo /etc/lilo.conf (vi /etc/lilo.conf) y agregue o
cambie las tres opciones:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
time-out=00 #cambie esta línea a 00
prompt
Default=linux
restricted #agregue esta línea
password= #agregue esta línea y
ponga su contraseña

image=/boot/vmlinuz-2.2.14-12
label=linux
initrd=/boot/initrd-2.2.14-12.img
root=/dev/hda6
read-only

Paso 2
El archivo “/etc/lilo.conf” debería tener permisos de
lectura únicamente para root porque contiene contraseñas sin
encriptar.

[root@kapil /]# chmod 600 /etc/lilo.conf (no tendrá
permisos de lectura para nadie nunca más).

Paso 3
Actualice su archivo de configuración “/etc/lilo.conf” para que los cambios tengan efecto.

[Root@kapil /]# /sbin/lilo -v (para actualizar el archivo
lilo.conf).

Paso 4


Una medida más de seguridad que usted puede tomar para asegurar
el archivo “/etc/lilo.conf” es establecerlo como
inalterable, utilizando el comando chattr.
* Para establecer al archivo como
inalterable, simplemente utilice el comando:

[root@kapil /]# chattr +i /etc/lilo.conf
Esto prevendrá cualquier cambio (accidental u de otra forma) al
archivo “lilo.conf”.

Para más información acerca de
la seguridad de lilo, lea mi artículo sobre LILO.

Deshabilitar todas las cuentas especiales
Usted debería borrar todos los usuarios por defecto y cuentas de
grupo que usted no utilice en su sistema como lo son lp, sync,
shutdown, halt, news, uucp, operator, games, gopher, etc.
Para borrar una cuenta de usuario:

[root@kapil /]# userdel L

Para borrar un grupo:

[root@kapil /]# groupdel LP

Elegir las contraseñas adecuadas
Usted debería seguir la siguiente directiva antes de escoger la
contraseña adecuada.

Longitud de la contraseña: La
longitud mínima aceptable de la contraseña por defecto cuando
usted instala su sistema Linux es 5. Esto no es suficiente y debe
ser de 8. Para hacer esto usted debe editar el archivo login.defs
(vi /etc/login.defs) y cambiar la línea que dice:

  • PASS_MIN_LEN
    5
    para que diga:
    PASS_MIN_LEN 8

    “login.defs” es el archivo de configuración
    para el programa login.

Active el soporte para contraseñas shadow o “sombreadas”
Usted debería habilitar la característica de contraseñas
sombreadas. Usted puede utilizar la utilidad
“/usr/sbin/authconfig” para habilitar la
característica de contraseñas sombreadas en su sistema. Si
usted quiere convertir las contraseñas y grupos existentes en su
sistema a contraseñas y grupos sombreados entonces usted puede
usar los comandos pwconv, grpconv respectivamente.

La cuenta root
La cuenta “root” es la cuenta más privilegiada en un
sistema Unix. Cuando el administrador olvida salir del prompt
root del sistema antes de abandonar el sistema entonces el
sistema debería automáticamente salir del shell o intérprete
de comandos. Para hacer eso, usted debe establecer la variable
especial llamada “TMOUT” especificando el tiempo en
segundos.
Edite su archivo profile (“perfil”), “vi
/etc/profile” y agregue la siguiente línea en algún lugar
después de la línea que dice:

“HISTFILESIZE=”
TMOUT=3600

El valor que ingresamos para la variable “TMOUT=” está
en segundos y representa 1 hora (60 * 60 = 3600 segundos). Si
usted pone esta línea en su archivo “/etc/profile”,
entonces la salida automática del sistema luego de una hora se
aplicará para todos los usuarios en el sistema. Usted puede
configurar esta variable en los archivos “.bashrc”
individuales de cada usuario para sacarlos a ellos
automáticamente del sistema después de un cierto tiempo.
Después que este parámetro ha sido establecido en su sistema,
usted debe salir del sistema y luego ingresar nuevamente (como
root) para que los cambios tengan efecto.

Deshabilite todos los accesos de consolas y equivalentes para los usuarios regulares
Usted debería deshabilitar todos los accesos de consolas y
equivalentes para los programas como shutdown, reboot, y halt
para los usuarios regulares en su servidor.
Para hacer esto, ejecute el siguiente comando:

[root@kapil /]# rm -f
/etc/security/console.apps/
Donde nombre_servicio es el nombre del programa al cual usted
quiere deshabilitarle el acceso desde la consola y equivalentes.

Deshabilite y desinstale todos los servicios sin utilizar
Usted debería deshabilitar y desinstalar todos los servicios que
usted no utiliza para que usted tenga una cosa menos de qué
preocuparse. Mire su archivo “/etc/inetd.conf” y
deshabilite lo que usted no necesita comentándolos (al agregar
un # al comienzo de la línea), y luego envíele a su proceso
inetd un comando SIGHUP para actualizarlo de acuerdo al actual
archivo “inetd.conf”. Para hacer esto:
Paso 1


Cambie los permisos en “/etc/inetd.conf” a 600,
de esa forma solamente el root puede leer o escribir en él.

[Root@kapil /]# chmod 600 /etc/inetd.conf

Paso 2
ASEGÚRESE que el propietario del archivo
“/etc/inetd.conf” es root.

Paso 3
Edite el archivo inetd.conf (vi /etc/inetd.conf) y deshabilite
los servicios como:
ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3,
finger, auth, etc a menos que usted planee utilizarlos. Si está
apagado es mucho menos riesgo.

Paso 4
Envíe una señal HUP a su proceso inetd
[root@kapil /]# killall -HUP inetd

Paso 5
Establezca al archivo “/etc/inetd” inalterable,
utilizando el comando chattr así nadie puede modificar
ese archivo
* Para establecer al archivo como inalterable, simplemente
ejecute el siguiente comando:

[root@kapil /]# chattr +i /etc/inetd.conf
Esto prevendrá cualquier cambio (accidental u de otra forma) al
archivo “inetd.conf”. La única persona que puede
establecer o limpiar este atributo es el súper-usuario root.
Para modificar el archivo inetd.conf usted necesitará desactivar
la bandera inalterable:
* Para desactivar el atributo inalterable, simplemente
ejecute el siguiente comando:

[root@kapil /]# chattr -i /etc/inetd.conf

TCP_WRAPPERS
Al utilizar TCP_WRAPPERS usted puede hacer a su servidor
más seguro contra la intrusión exterior. La mejor política es
negar todas las máquinas poniendo “ALL: ALL@ALL,
PARANOID” en el archivo “/etc/host.deny” y luego
explícitamente listar las máquinas de confianza que están
permitidas en su máquina en el archivo
“/etc/hosts.allow”. TCP_WRAPPERS está controlado desde
dos archivos y la búsqueda finaliza a la primera coincidencia.
/etc/hosts.allow
/etc/hosts.deny

Paso 1
Edite el archivo hosts.deny (vi /etc/hosts.deny) y agregue las
líneas siguientes:
# Niega el acceso a todos.
ALL: ALL@ALL, PARANOID
Lo cual significa que todos los servicios, todos los lugares son
bloqueados, a menos que ellos tengan permitido el acceso a
través de las entradas en el archivo hosts.allow.

Paso 2
Edite el archivo hosts.allow (/etc/hosts.allow) y agregue por
ejemplo, la siguiente línea:

ftp: 202.54.15.99 foo.com
Para su máquina cliente: 200.54.15.99 es la dirección IP y
foo.com el nombre del sitio de uno de sus clientes que tienen
permitido utilizar ftp.

Paso 3
El programa tcpdchk es el chequeador de configuraciones de
tcpd wrapper. Examina su configuración tcp wrapper y reporta
todos los problemas potenciales y reales que encuentra.

* Después de que su
configuración está hecha, corra el programa tcpdchk.

[Root@kapil /]# tcpdchk

No permita que el archivo de asuntos del sistema sea mostrado
Usted no debería mostrar su archivo de asuntos del sistema
cuando la gente ingresa en forma remota. Para hacer esto, usted
puede
cambiar la opción de telnet en su archivo
“/etc/inetd.conf”.
Para hacer esto cambie la línea en “/etc/inetd.conf”:

telnet stream
tcp nowait root
/usr/sbin/tcpd in.telnetd

Para que luzca como:
telnet stream tcp
nowait root /usr/sbin/tcpd
in.telnetd -h

Agregando la bandera “-h” al final causará que el
demonio no muestre ninguna información del sistema y sólo
recibirá al usuario con “login:”. Recomiendo utilizar
sshd en lugar de eso.

Cambie el archivo “/etc/host.conf”
El archivo “/etc/host.conf” especifica de qué manera
son resueltos los nombres.
Edite el archivo host.conf (vi /etc/host.conf) y agregue las
siguientes líneas:
# Buscar nombres primero vía DNS luego retrocede hasta
/etc/hosts.
order bind,hosts
# Tenemos máquinas con múltiples direcciones IP.
multi on
# Chequea IP spoofing (engaño).
nospoof on

La primera opción es para
resolver el nombre de la máquina primero a través de DNS y
luego el archivo hosts. La opción multi determina si una
máquina en el archivo “/etc/hosts” puede tener
direcciones IP múltiples (interfase múltiple de red).
La opción nospoof indica que cuide la permisión de engaño de
direcciones IP en esta máquina.

Inmunizar el archivo “/etc/services”
Usted debe inmunizar el archivo “/etc/services” para
prevenir borrados o agregados no autorizados de servicios.

* Para inmunizar el archivo “/etc/services”,
utilice el comando:

[root@kapil /]# chattr +i /etc/services

Prohíba el ingreso del root desde diferentes consolas
El archivo “/etc/securetty” le permite a usted
especificar a cuales dispositivos TTY el usuario “root”
puede acceder. Edite el archivo “/etc/securetty” para
deshabilitar cualquier tty que usted no necesite comentándolas
(# al comienzo de la línea).

Bloquear a cualquiera para que haga “su” y se convierta en root
El comando su (Usuario Substituto) le permite a usted convertirse
en otro usuario existente en el sistema. Si usted no quiere que
cualquiera haga “su” para convertirse en root o
restringir el comando “su” para ciertos usuarios
entonces agregue las dos líneas siguientes al comienzo del
archivo de configuración de “su” en el directorio
“/etc/pam-d”.

Paso 1
Edite el archivo “su” (vi /etc/pam.d/su) y agregue las
dos líneas siguientes al comienzo del archivo:

auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/Pam_wheel.so group=wheel

Lo cual significa que sólo los
miembros del grupo “wheel” pueden hacer “su”
para convertirse en root, además incluye el nombre de usuario
para poder ingresar. Usted puede agregar los usuarios al grupo
wheel para que sólo esos usuarios puedan hacer “su”.

Shell


El intérprete de comandos bash guarda los últimos 500 comandos
en el archivo “~/.bash_history” (donde “~/”
es su directorio personal) para facilitarle a usted a repetir
comandos largos. Cada usuario que tenga una cuenta en el sistema
tendrá este archivo “Bash_history” en su directorio
personal. El intérprete de comandos bash debería almacenar una
menor cantidad de comandos y borrarlos cuando el usuario salga
del sistema.

Paso 1
Las líneas HISTFILESIZE y HISTSIZE en el archivo
“/etc/profile” determinan el tamaño de los viejos
comandos que el archivo “Bash_logout” puede mantener
para todos los usuarios en su sistema. Recomiendo sumamente
configurar HISTFILESIZE y HISTSIZE dentro del archivo
“/etc/profile” a un valor bajo como 30.
Edite el archivo profile (vi /etc/profile) y cambie las líneas
a:

HISTFILESIZE=30
HISTSIZE=30

Lo cual significa que, el archivo “Bash_logout” dentro
del directorio personal de cada usuario puede almacenar 30 viejos
comandos y no más.
Paso 2
El administrador debería además agregar dentro del archivo
“/etc/skel/Bash_logout” la línea “rm -f
$HOME/Bash_history
“, para que cada vez que un usuario
sale del sistema, su archivo “Bash_history” sea
borrado.
Edite el archivo Bash_logout (vi /etc/skel/Bash_logout) y agregue
la línea siguiente:
rm -f $HOME/Bash_history

Deshabilite el comando de apagado a través del teclado Control-Alt-Delete
Para hacer esto comente la línea (con un “#”) listada
más abajo en su archivo “/etc/inittab”.
Para hacer esto, edite el archivo inittab (vi /etc/inittab) y
cambie la línea:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Para que diga:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Ahora, para que el cambio tenga efecto escriba lo siguiente en el
intérprete:

[root@kapil /]# /sbin/init q

Arreglar los permisos dentro del directorio “/etc/rc.d/init.d” para los archivos de guiones (scripts)
Arregle los permisos de los archivos de guiones que son
responsables de iniciar y detener todos sus procesos normales que
necesitan ser ejecutados al inicio del sistema. Para hacer esto:

[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/*
Lo cual significa que sólo el usuario root tiene permisos de
Lectura, Escritura y Ejecución para ejecutar los archivos de
guiones dentro de este directorio.

Esconda la información de su sistema
Por defecto, cuando usted ingresa al sistema en una máquina
Linux, le dice a usted el nombre de la distribución Linux,
versión, versión del kernel, y el nombre del servidor. Esta es
suficiente información para que un cracker obtenga información
acerca de su servidor. Usted debería recibir a los usuarios con
“Login:”.
Paso 1
Para hacer esto, edite el archivo “/etc/rc.d/rc.local”
y coloque un “#” al frente de las líneas siguientes
como se muestra:

# This will overwrite /etc/issue
at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you
reboot.
#echo “” > /etc/issue
#echo “$R” >> /etc/issue
#echo “Kernel $(uname -r) on $a $(uname -m)” >>
/etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue

Paso 2
Luego, quite los siguientes archivos: “issue.net” y
“issue” dentro del directorio “/etc”:

[root@kapil /]# rm -f /etc/issue
[root@kapil /]# rm -f /etc/issue.net

Deshabilite los programas SUID/SGID sin utilizar
Un usuario regular podrá ejecutar un programa como root si éste
está establecido como SUID. Un administrador de sistemas
debería minimizar el uso de estos programas SUID/SGID y
deshabilitar los programas que no se necesitan.

Paso 1
* Para encontrar todos los archivos con el bit ‘s’ de los
programas que pertenecen al root, utilice el comando:

[root@kapil]# find / -type f ( -perm -04000 -o -perm -02000 )
-exec ls ­lg {} ;

* Para deshabilitar el bit
suid en los programas seleccionados anteriormente, escriba el
siguiente comando:
[root@kapil /]# chmod a-s [program]

Después de seguir las
anteriores directivas de seguridad, un administrador de sistemas
puede mantener un nivel básico de seguridad. Algunas de las
tareas mencionadas anteriormente son un proceso continuo. El
administrador del sistema continuamente tiene que seguir las
directivas anteriores para mantener al sistema seguro.

Escrito por: Kapil Sharma
Correo electrónico: kapil@linux4biz.net
Website: http://www.linux4biz.net
Kapil Sharma es un consultor de seguridad en Linux e Internet. Él ha estado trabajando en varios sistemas Linux/Unix y seguridad en Internet por más de 2 años. Está manteniendo un sitio web http://www.linux4biz.net para suministrar soporte gratuito como así también comercial para soluciones web, Linux y Unix.

Copyright © 2000, Kapil Sharma
Publicado en la edición 58 de
La Gaceta de Linux,
Octubre del 2000
Traducción al Español por: Lucas Maximiliano Sola
el día 11 de Octubre 2000, para
La Gaceta de Linux


Temas:
Documentación, Seguridad


Etiquetas:
, ,

Feed Espacio LinuxSi este artículo ha sido de tu interés, considera hacer un comentario o suscribirte al feed para que te enteres de nuevos artículos a través de tu lector de noticias o email.

Acerca del autor

Publica un comentario

Puedes usar estas etiquetas XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <em> <strong>