Lo primero es asegurarnos de que a la máquina física no se puede acceder sin permiso. Además en caso de que el servidor disponga de tarjeta de acceeso remoto tipo ILO o similar, hay que configurarla en una VLAN propia que se utilice exclusivamente para gestión, si no se va a utilizar dicha tarjeta hay que desactivarla.
En caso de que no podamos restringir dicho acceso o para una mayor seguridad:
Siempe que sea posible hay que instalar el SO desde DVD sin que esté conectado a la red hasta que se hayan completado el bastionado. Descargarnos la imagen desde el sitio oficial y verificar la integridad de la misma.
En caso contrario el equipo debe de instalarse desde un segmento de la red aislado del resto, sin acceso desde el exterior y con un acceso a internet restringido.
Elegir siempre la instalación mínima y posteriormente añadir sólo los servicios o paquetes necesarios para la función a realizar.
Para el bastionado de la red tenemos que tener en cuenta lo siguiente:
system-config-networko editando el fichero correspondiente a nuestra tarjeta, que se encuentra en la ruta /etc/sysconfig/networking/devices
Los DNS hay que especificarlos en el archivo /etc/resolv.conf
Para ver si tenemos IPV6 activo ejecutamos
ifconfig | grep inet6
Para deshabilitarlo sin reiniciar el sistema, ejecutar:
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
otra forma sería:
sysctl -w net.ipv6.conf.all.disable_ipv6=1 sysctl -w net.ipv6.conf.default.disable_ipv6=1
Comprobar si se está ejecutando Zeroconf
ps -e | grep avahiSi devuelve algún resultado es que avahi está activo. Para deshabilitarlo: Añadir la línea NOZEROCONF=yes Al archivo /etc/sysconfig/network y eliminar el paquete
yum -y remove avahi
Ejecutar
sudo netstat -tuanp | grep LISTEN
Si tenemos servicios innecesarios en /etc/init.d se encuentran los scripts de gestión del sistema SystenV tradicional y en /etc/init se encuentran los servicios adaptdos al sistema upstart. Para ver que servicios tenemos ejecutamos
ls -1 /etc/init.d > servicioso bien
ls -1 /etc/init >> servicios
Para deshabilitar un servicio determinado
chkconfig <service> off
Se utilizarán algunos parámetros de control de sysctl para proteger al sistema ante situaciones que introducen riesgo en las comunicaciones.
El archivo /etc/sysctl.conf debe contener las siguientes líneas:
Hay que configurar todos los servidores para que se sincronizen con el mismo servidor de tiempo, ya que es muy necesario a la hora de investigar acciones que suceden en más de una máquina
Para configurar un servidor de tiempo hay que seguir estos pasos:
yum install ntp
server X.X.X.X
Las acciones a realizar son las siguientes:
Ejecutar el siguiente comando para cada usuario que requiera privilegios de administrador
usermod -G wheel -a usuario
Editar el archivo /etc/pam.d/su y asegurarse de que contiene la línea
auth required pam_wheel.so use_uid
Editando el archivo /etc/sudoers mediante el comando visudo y asegurarse de que contiene la línea
%wheel ALL=(ALL) ALL
A partir de ahora todos los usuarios que requieran la ejecución de los comandos su y sudo deben ser miembros del grupo wheel
Editar el archivo /etc/shadow y sustituir el campo de la contraseña de root por un ! los dos primeros campos de la línea deben ser iguales a los de la siguiente línea.
root:!:14698:0:99999:7:::
hash, recordar contraseñas antiguas y realizar comprobaciones a las nuevas cuando se cambie una de ellas. Editar el archivo /etc/pam.d/system-auth y asegurarse de que contiene la línea
password sufficient pam_unix.so obscure sha512 shadow nullok try_first_pass use_authtok remember=10
Editar el archivo /etc/login.defs y asegúrar que contiene las siguientes líneas
MD5_CRYPT_ENAB noENCRYPT_METHOD SHA512
En RedHat el archivo /etc/libuser.conf debe contener la línea
crypt_style = sha512
También puede ser interesante el uso de algunos módulos pam (plugable authentication modules):
Hay determinados casos en los que puede ser util tener usuarios que puedan iniciar sesión pero no tengan acceso a una SHELL, por ejemplo para usuarios de FTP.
Para crear usuario sin Shell hay que ejecutar el comando:
useradd -M -s /sbin/nologin usuario
Donde -M indica que no se creará el directorio HOME del usuario, si es necesario que tenga HOME hay que quitar este parámetro del comando, y -s indica la SHELL que se le asigna al usuario, al especificar /sbin/nologin se asigna una SHELL que impide el inicio de sesión en el sistema
Establecer el mensaje corporativo de inicio de sesión, para ello copiamos el texto en el archivo /etc/motd
En caso de usar syslogd el archivo /etc/syslog.conf debe contener la siguiente línea
auth.info,authpriv.info,user.crit @X.X.X.X
En caso de usar rsyslogd el archivo /etc/rsyslogd.conf debe contener la siguiente línea
auth.info,authpriv.info,user.crit @@X.X.X.X:PUERTO
Si se ha denegado la salida del tráfico mediante reglas de iptables habrá que permitir la salida al puerto 514 UDP mediante el comando
iptables -I OUTPUT -p udp -d X.X.X.X –dport 514 -j ACCEPT
Permitir el uso de cron y at tan solo al usuario root ejecutando los siguientes comandos
rm /etc/{cron.deny,at.deny}echo root > /etc/cron.allowecho root > /etc/at.allow
Para mejorar la seguridad del servicio SSH se deben realizar las siguientes acciones:
Editamos el archivo /etc/ssh/sshd_config y añadimos o cambiamos las líneas:
LoginGraceTime 120 ClientAliveInterval 300 ClientAliveCountMax 0 Banner /etc/ssh/ssh_banner AllowGroups wheel ListenAddress ip_por_donde_escucha
Los pasos genéricos que debemos seguir son:
Al configurar auditd hay que:
Para instalar y arrancar auditd durante el inicio del sistema ejecutar estos comandos
yum install auditd chkconfig auditd on
Una vez instalado y configurado hay que revisar el resultado del comando aureport regularmente
Una vez obtenido el listado de los archivo a auditar hay que agregarlos al archivo /etc/audit/audit.rules
Mantener el sistema actualizado con los últimos parches
Para ver los dispositivos ejecutar
lspci -v
lsusb
Una vez localizados, deshabilitar los módulos innecesarios
Algunos servicios que no deben existir en ningún caso son:
Desactivar el bit SUID y SGID en el máximo de programas Para buscar que archivos tienen el bit SUID/SGID activado ejecutar
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -print
Revisar el listado que aparece por si hay alguno al que podamos quitarselo
para desactivar este permiso
chmod -s ruta_al_ejecutable
La comprobación de integridad nos ayuda a localiza el punto de entrada de un ataque así como los archivos modificados o a los que han tenido acceso. Para esta tarea podemos utilizar estas herramientas:
find / -type t\ (-perm 04000 -o - perm -02000\) -exec ls -la {} \
find / name -rhosts -name .netrc