Está en la página 1de 26

HARDENING

SEGURIDAD LINUX
Actualizaciones de Seguridad
• Linux es considerado un sistema operativo seguro. Sin
embargo existen vulnerabilidades que han salido a luz
publica y son corregidas bajo las actualizaciones de
seguridad que ofrece cada distribución. Cabe anotar que
muchas de las vulnerabilidades no son inherentes
únicamente al sistema operativo, si no a su
configuración, uso y actualización.
Deshabilitando servicios no utilizados
• es una buena practica eliminar
o deshabilitando servicios que
no son necesarios, con el fin de
fortalecer la seguridad en
nuestros servidores, incluso
ayuda a mejorar el rendimiento
al disminuir el consumo de
recursos físicos del servidor.
Usuarios y Grupos
Mantenga esquemas de revisión:
• Acceso y permiso a los archivos y directorios.
• Las contraseñas de sus usuarios.
• Acceso a los usuarios y grupos.
• Usuarios huérfanos.
Validación de Key Files
• Los archivos de seguridad del Linux suelen ser los puntos
de ataque, es importante tener políticas de seguridad
sobre los archivos de seguridad del sistema:

/etc/fstab
/etc/shadow
/etc/passwd
/etc/group
Políticas de Seguridad de contraseñas
• Fortalecer las contraseñas de acceso a los usuarios de sistema
operativo con el fin de disminuir accesos no autorizados al sistema
con cuentas existentes en el sistema operativo, ejemplo:
Acceso remoto por SSH
• Telnet no es recomendable para tomar control del sistema de manera
remota, para este tipo de asistencias SSH se convierte en un buen
aliado. Sin embargo es importante considerar ciertas recomendaciones
de seguridad para disminuir los accesos no autorizados al servidor.

• SSH al contrario que telnet, las comunicaciones entre el cliente y


servidor viajan cifradas desde el primer momento de forma que si un
usuario malintencionado intercepta los paquetes de datos entre el
cliente y el servidor, será muy difícil que pueda extraer la información
ya que se utilizan sofisticados algoritmos de cifrado.
Limitando el acceso a root
• Es posible protegerse de intentos de acceso externos a nuestro
servidor Linux estableciendo una contraseña segura para el usuario
root, sin embargo sigue siendo posible el acceso mediante fuerza
bruta.

• Para ello, una de las prácticas recomendadas es bloquear el acceso


del usuario root, realizar los accesos con algún usuario que no sea
habitual y una vez dentro, cambiar a root si es necesario.
Security Enhanced Linux
• Al ejecutar un kernel SELinux MAC se protege al sistema de
aplicaciones maliciosas o dañadas que pueden perjudicar o destruir
el sistema. SELinux define el acceso y los derechos de transición
de cada usuario, aplicación, proceso y archivos en el sistema.
• SELinux utiliza una serie de reglas — conocidas en conjunto como
una política («policy») — para autorizar o denegar operaciones.
Estas reglas son difíciles de crear. Afortunadamente se
proporcionan dos políticas estándar (targeted, dirigida, y strict,
estricta) para evitar gran parte del trabajo de configuración.
Firewall Linux
• Iptables es un firewall incluido en el kernel de Linux desde la
versión 2.4 que está incluido en el sistema operativo. Es un firewall
basado en reglas, su funcionamiento se basa en aplicar reglas que
el mismo firewall ejecute. Estas IPtables también se encuentran en
los firmwares basados en Linux y por supuesto, los dispositivos
Android.

• El uso de IPtables es bastante complejo, por lo que vamos a hacer


un vistazo general sobre sus opciones
Laboratorio
Practica 1:
• # cd /etc/yum.repos.d
• # wget http://public-yum.oracle.com/public-yum-ol6.repo
• # yum update
Practica 2:
• # ps -ax
• # chkconfig
• # chkconfig <service_name> off
• # yum erase xinetd ypserv tftp-server telnet-server rsh-server
Practica 3:
• # groupadd seguridad
• # groupadd uao
• # useradd -s /bin/bash -g seguridad -G uao -m <user_name>
• # passwd <user_name>
• # cat /etc/passwd
• # su - <user_name>
• $ id
• $ exit
Practica 4:
# cat /etc/fstab # cat /etc/passwd
chown root:root chown root:root
chmod 0644  (-rw-r--r--) chmod 0644  (-rw-r--r--)
# cat /etc/shadow # cat /etc/group
chown root:root chown root:root
chmod 0000  (--- --- ---) chmod 0644  (-rw-r--r--)
Practica 5:
# cp /etc/login.defs /etc/login.defs.orig
# vi /etc/login.defs
PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MIN_DAYS Minimum number of days allowed between password changes
PASS_MIN_LEN Minimum acceptable password length.
PASS_WARN_AGE Number of days warning given before a password expires.

PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 8
PASS_WARN_AGE 7
Practica 5:
LOGIN_RETRIES Max number of login retries if password is bad
LOGIN_TIMEOUT Max time in seconds for login
PASS_CHANGE_TRIES Maximum number of attempts to change password if rejected

LOGIN_RETRIES 3
LOGIN_TIMEOUT 60
PASS_CHANGE_TRIES 5

# chage -l <user_name>
# chage -M 60 -m 7 -W 7 <user_name>
Practica 5:
• If you see that the account expires use usermod or chage command to extend the user
expiry time and :

# usermod -e yyyy-mm-dd <user_name>


# usermod -e yyyy-mm-dd -f 2 <user_name>
# chage -I -1 -m 0 -M 99999 -E -1 <user_name>

• Locking and unlocking password for user.

# passwd -l <user_name>
# passwd -u <user_name>
# cat /etc/shadow
Practica 5:
# cp /etc/pam.d/system-auth /root/system-auth.orig
# vi /etc/pam.d/system-auth

• Edit/add password line and append remember=13 to prevent a user from re-using any of
his or her last 13 passwords:

password sufficient pam_unix.so use_authtok md5 shadow remember=13


Practica 6:
# visudo
<user_name> ALL=(ALL) ALL
<user_name> argus= /sbin/iptables, /usr/sbin/tcpdump

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old
# vi /etc/ssh/sshd_config
Practica 6:
# Edit the following parameters:

Port 333
PermitRootLogin no
Protocol 2
AllowGroups seguridad ## or AllowUsers wilson.grisales
ClientAliveInterval 300
ClientAliveCountMax 0
IgnoreRhosts yes
PermitEmptyPasswords no
Practica 7:
# cp /etc/sysctl.conf /etc/sysctl.conf.orig
# vi /etc/sysctl.conf

add the folllowing parameters:

# Enable IP spoofing protection


net.ipv4.conf.all.rp_filter=1
# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0
# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
# Disable ICMP
net.ipv4.icmp_echo_ignore_all = 1
Practica 8:
# yum -y install policycoreutils-python
# iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
# semanage port -a -t ssh_port_t -p tcp 333
# semanage port -l | grep ssh
# service iptables save
# service sshd stop
# service sshd start
# ssh <user_name>@<ip_address> -p 333

También podría gustarte