Hardening

HARDENING SEGURIDAD LINUX Actualizaciones de Seguridad • Linux es considerado un sistema operativo seguro. Sin embar

Views 100 Downloads 1 File size 555KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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 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 # passwd # cat /etc/passwd # su - $ id $ exit

Practica 4: # cat /etc/fstab chown root:root chmod 0644  (-rw-r--r--) # cat /etc/shadow chown root:root chmod 0000  (--- --- ---)

# cat /etc/passwd chown root:root chmod 0644  (-rw-r--r--) # cat /etc/group chown root:root chmod 0644  (-rw-r--r--)

Practica 5: # cp /etc/login.defs /etc/login.defs.orig # vi /etc/login.defs PASS_MAX_DAYS PASS_MIN_DAYS PASS_MIN_LEN PASS_WARN_AGE

Maximum number of days a password may be used. Minimum number of days allowed between password changes Minimum acceptable password length. Number of days warning given before a password expires.

PASS_MAX_DAYS PASS_MIN_DAYS PASS_MIN_LEN PASS_WARN_AGE

99999 0 8 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 # chage -M 60 -m 7 -W 7

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 # usermod -e yyyy-mm-dd -f 2 # chage -I -1 -m 0 -M 99999 -E -1 •

Locking and unlocking password for user.

# passwd -l # passwd -u # 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 ALL=(ALL) ALL 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 @ -p 333