Sei sulla pagina 1di 12

INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES

“AÑO DEL BUEN SERVICIO AL CIUDADANO”

FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL: Ingeniería De
Sistemas

CENTRO ULADECH: Huaraz

ASIGNATURA:
Administración de
Servidores

CICLO:
Octavo

DOCENTE TUTOR:
Ing. Bogar Mantilla Gordillo

NOMBRE DEL ESTUDIANTE


Victor José Carreño
Guerra

FECHA 25 de Julio del 2017

PAGINA 1
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES

Implementación de la seguridad en los servidores Linux - Centos

Linux es un sistema operativo estable y bastante seguro ya que tiene un modelo de


seguridad incorporado por defecto. Desde el lanzamiento de su primera versión, Linux se
actualiza constantemente, manteniendo siempre la opción de ajustar y personalizar la
seguridad según a tus necesidades. Aunque Linux es un sistema operativo seguro no es a
prueba de todo principalmente si no se ajusta la misma, así que en este post te daremos
algunos tips para que puedas incrementar la seguridad en tus servidores Linux y puedas
proteger tus datos.

Es importante asegurar lo mejor posible nuestros servidores para proteger nuestros


datos de cualquier atacante. En este post explicaremos algunas medidas para
aumentar un poco más la seguridad en servidores Linux.
A continuación algunos pasos a seguir para mejorar la seguridad:

1. Actualizar software y kernel periódicamente


Uno de los aspectos fundamentales para proteger cualquier sistema informático
consiste en tener el software siempre actualizado, la última versión del Kernel
(estable) y parches de seguridad de esta forma logramos minimizar las posibles
intrusiones a través de vulnerabilidades conocidas y/o exploits públicos.
La mayoría de las distribuciones Linux cuentan con algún tipo de gestor de paquetes
que simplifica esta tarea.

2. Advanced Packaging Tool (APT)


Gestor de paquetes que simplifica en gran medida la instalación, actualización y
eliminación de programas, disponible en distribuciones Linux
como Debian y Ubuntu.
Se puede realizar una actualización de todo el software instalado de esta forma:
apt-get update && apt-get upgrade

3. Yellow dog Updater, Modified (YUM)


Este otro gestor de paquetes está basado en RPM, originado en la distro YellowDog,
y está disponible en distribuciones como Fedora, CentOS, Red Hat…
Para realizar una actualización de todo el software se puede hacer de la siguiente
forma:
yum updates && yum check-update

PAGINA 2
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES
4. Desinstalar software y deshabilitar servicios innecesarios
Seguramente no se utilizarán todos los servicios que están funcionando en el sistema
por ello es recomendable deshabilitar los servicios innecesarios ya que de esta forma
reduce fácilmente la probabilidad de acceder a través de un servicio o software
vulnerable.

4.1 Servicios basados en /etc/init.d


 Iniciar servicio: /etc/init.d/NOMBRE_SERVICIO start
 Detener servicio: /etc/init.d/NOMBRE_SERVICIO stop
 Habilitar servicio: update-rc.d NOMBRE_SERVICIO enable
 Deshabilitar servicio: update-rc.d NOMBRE_SERVICIO disable
 Estado del servicio: /etc/init.d/NOMBRE_SERVICIO status
*Si se detiene un servicio pero no se deshabilita, este servicio se volverá a ejecutar
al reiniciar el servidor, para evitar esto es necesario deshabilitarlo completamente.

4.2 Servicios basados en UpStart


 Iniciar servicio: service NOMBRE_SERVICIO start
 Detener servicio: service NOMBRE_SERVICIO stop
 Estado del servicio: status NOMBRE_SERVICIO
*Para deshabilitar un servicio basado en UpStart, de forma que no se vuelva a
ejecutar al reiniciar el sistema, es necesario editar el
archivo ‘/etc/init/NOMBRE_SERVICIO’ y borrar o comentar (con #) la línea que
comienza con la palabra ‘start’.

5. Cifrar las comunicaciones


Si nuestro servidor recoge datos de usuarios o visitantes es recomendable usar algún
tipo de certificado SSL para cifrar la comunicación entre cliente y servidor.

6. Cerrar y bloquear puertos no usados


Al igual que los servicios, no necesitamos la mayoría de los puertos por eso se
recomienda cerrar los que no se vayan a usar y filtrar los puertos abiertos a través
de algún cortafuegos.
Podemos ver los puertos a la escucha con netstat o usando un escáner de puertos
como nmap.
netstat -tulpn
Para bloquear un puerto se podría usar el firewall de Linux (iptables) y denegar el
acceso al puerto o desactivar el servicio que lo está usando sino es necesario.

PAGINA 3
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES

7. Configurar software

7.1 Secure Shell (SSH)


SSH es un protocolo seguro que utiliza cifrado en todas las comunicaciones entre
equipos. SSH es seguro pero podemos configurarlo para que lo sea aún más.
El archivo de configuración de SSH normalmente se encuentra
en: ‘/etc/ssh/sshd_config’. Este archivo contiene varias opciones de configuración
pero nos centraremos en las más importantes.
 Port: El puerto por defecto del servicio es el 22, es recomendable cambiarlo
por otro puerto con lo que evitaríamos ataques de bots automatizados
intentando acceder por fuerza bruta o mediante algún tipo de vulnerabilidad.
Aunque existen herramientas que permiten escanear puertos y se podría
localizar el puerto usado pero al menos se le complicará un poco más al
atacante y se evitarán escaneos automatizados.
 Protocol 2: Existen dos versiones del protocolo de SSH. La versión 1 está en
desuso pero todavía se utiliza por temas de compatibilidad y contiene varias
vulnerabilidades conocidas con lo cual está totalmente desaconsejada. Se
recomienda usar sólo la versión 2 del protocolo.
 PermitRootLogin no: Practicamente todos los sistemas crean por defecto al
usuario root y muchos atacantes intentan acceder usando este usuario y
crackeando la contraseña por fuerza bruta o de alguna otra forma. Al desactivar
el inicio root, este usuario no podrá iniciar sesión en SSH. Es recomendable
crear otro usuario sin permisos root para permitirle acceso vía SSH y si
necesitamos realizar alguna tarea como root se puede usar ‘su’ o ‘sudo’ para
obtener premisos root.
 MaxAuthTries 5: Es recomendable limitar la cantidad de veces que se puede
ingresar un usuario y/o contraseña incorrecta. Al exceder el número de veces
permitidas la conexión se cerrará, aunque podemos volver a intentarlo
volviendo a conectar, y con esta medida se evitarán ataques persistentes y el
ataque será mucho más lento.
 LoginGraceTime 30: Podemos configurar los segundos disponibles para
ingresar el usuario y contraseña, si se excede el tiempo la conexión se cerrará.
 MaxStartups 3: Limitamos la cantidad de conexiones simultáneas de intento
de acceso (login) por dirección IP. Existen ataques divididos en varios equipos
con el objetivo de acelerar el ataque y de esta forma evitaríamos esto.

*Para que los cambios tengan efecto es necesario reiniciar el servicio


con ‘/etc/init.d/ssh restart’ ó ‘service ssh restart’.

PAGINA 4
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES

8. File Transfer Protocol (FTP)


Uno de los servidores FTP más utilizados es ‘proFTPd’ y por defecto dispone de
varias opciones nada recomendadas como mostrar la versión utilizada ya que con
esta información un atacante podría buscar algún exploit conocido para la versión
usada.
El archivo de configuración normalmente se encuentra en: ‘/etc/proftpd.conf’.
Mejoraremos algunas opciones de configuración.
 ServerName “NOMBRE”: Podemos personalizar el nombre que el servidor
FTP mostrará al conectarnos, por defecto seria “proFTPdD Server”. Es
recomendable cambiar el nombre para dificultar, a un posible atacante, la
búsqueda de vulnerabilidades.
 ServerIdent Off: Por defecto al conectar a un sevidor proftpd nos muestra la
versión usada. Se recomienda desactivar esta directiva para ocultar esta
información.
*Para que los cambios tengan efecto es necesario reiniciar el servicio
con ‘/etc/init.d/proftpd restart’ ó ‘service proftpd restart’ (si usamos Parallels
Plesk sería ‘/etc/init.d/xinetd restart’ ó ‘service xinetd restart’).

8.1 Apache
Apache es uno de los servidores web más utilizados en todo el mundo y por tanto el
más atacado. Se pueden configurar varias directivas en su archivo de configuración
para protegerlo. El archivo de configuración se encuentra
en: ‘/etc/httpd/conf/httpd.conf’.
 ServerTokens Prod: Usando esta directiva evitamos que Apache muestre
información innesesaria como su versión o la versión de PHP. Por defecto
estaría establecida en ‘Full’ y mostraría algo así en las cabeceras HTTP:
Server: Apache/2.2.15 (Unix) PHP/4.2.2 Mod/1.2
 ServerSignature Off: Esta opción está activada por defecto y muestra el
nombre del servidor, la versión, el host virtual, el mail del administrador en los
mensajes de error producidos. Es recomendable desactivar esta opción para
ocultar está información ya que un atacante podría usarla a su favor para por
ejemplo búscando vulnerabilidades en la versión de Apache usada o enviando
archivos maliciosos al administrador por correo electrónico.
*Para que los cambios tengan efecto es necesario reiniciar el servicio
con ‘/etc/init.d/apache2 restart’ó ‘service apache2 restart’.

9. MySQL
MySQL es un potente motor de bases de datos que suele usarse en conjunto con
páginas web desarrolladas en PHP.
 skip-networking: Por defecto MySQL permite conexiones desde fuera usando
el puerto 3306, pero en la gran mayoría de sistemas sólo se necesita conectar

PAGINA 5
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES
desde dentro del servidor con lo cual es un gran agujero de seguridad permitir
que se pueda acceder a la base de datos desde conexiones remotas ya que se
podría realizar un ataque por fuerza bruta hasta lograr acceder a la base de
datos. Estableciendo esta directiva se desactiva el puerto para las conexiones
remotas.
*Para que los cambios tengan efecto es necesario reiniciar el servicio
con ‘/etc/init.d/mysql restart’ ó ‘service mysql restart’.

10.Bind
La mayoría de los servidores Linux usan Bind como servidor DNS, por defecto es
bastante seguro pero podemos mejorarlo. Su archivo de configuración se encuentra
aquí: ‘/etc/named.conf’.
 version “BIND”: Dentro del archivo de configuración podemos configurar la
versión que se mostrará, podemos indicar ‘none’ o el valor que queramos, es
recomendable no mostrar la versión de Bind al igual que cualquier otro
software.
*Para que los cambios tengan efecto es necesario reiniciar el servicio
con ‘/etc/init.d/bind9 restart’ ó ‘service bind9 restart’ (también se puede
llamar named en lugar de bind9).

11.Registros de accesos
Una de las tareas más importantes para mantener la seguridad de un servidor
consiste en revisar los registros (logs) con cierta frecuencia para detectar si se intentó
acceder o explotar algún servicio activo. Si disponemos de otro servidor se
recomendaría enviar los registros a través SysLog ya que si se llegará a comprometer
un servidor y el atacante elimina los registros podríamos revisarlos igualmente en el
otro servidor que no fue comprometido.
Archivos de registros, ubicados en ‘/var/log/’:
 messages: Registro del sistema.
 kern.log: Registro del kernel.
 cron.log: Registro del demonio crond.
 maillog: Registro del servidor de correo del sistema.
 boot.log: Registro del arranque del sistema.
 mysqld.log: Registro de la bases de datos MySQL.
 secure: Registro de autenticación (Red Hat, Fedora, CentOS).
 auth.log: Registro de autenticación (Debian, Ubuntu, Linux Mint).
 utmp ó wtmp: Registro de inicio de sesión.

12.Otras medidas de seguridad

PAGINA 6
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES
12.1 Desactivar .bash_history
0001 rm ~/.bash_history # Eliminar historial del disco duro

0002 history -c # Borrar el historial almacenado en la memoria RAM

0003 export HISTFILESIZE=0

0004 export HISTSIZE=0

0005 unset HISTFILE

Otra opción posible es:


0001 rm ~/.bash_history # Eliminar historial del disco duro

0002 ln /dev/null ~/.bash_history -sf # Crear enlace simbólico del archivo de historial hacia NULL

*Es necesario cerrar la sesión y volver a iniciar sesión para que los cambios tengan
efecto.

4 Pasos para asegurar tu Servidor Centos

1.-Mantener el sistema Linux actualizado

Lo primero que hay que tener en cuenta es que el sistema debe estar actualizado: Lo mejor
que puedes hacer para mantener un sistema Linux seguro es tenerlo todo actualizado, y
mantener todos los paquetes del sistema de tu distribución de Linux en su última versión.

Sí has instalado Virtualmin, el propio programa, si lo has configurado, instalara las últimas
actualizaciones de tu distribución Linux.

Nos vamos a encontrar con “Software Package Updates” y “Virtualmin Package Updates” situados
en la pestaña System del menú Webmin. Podemos configurar ambas opciones para que todos los
días compruebe que si hay actualizaciones y las instale automaticamente.

Si no has instalado Virtualmin, deberas entrar en la linea se comandos y aplicar tú mismo


las actualizaciones con:

yum update y yum upgrade para CentOS


apt-get update y apt-get upgrade para Ubuntu

2.-Añadir un nuevo usuario a tu servidor que no sea root – Utilizar SSH Keys

Para el administrar el día a día en nuestro servidor utilizaremos un usuario que no sea root.

PAGINA 7
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES
En Linode hay un buen tutorial para realizar este pasó en CentOS y Ubuntu: Securing Your
Server.
Adicionalmente puedes deshabilitar la autenticación vía login/password y utilizar SSH Keys.
En el anterior link de Linode puedes encontrar la manera de hacerlo.

3.-Utilizaremos un Firewall
Si no te quieres complicar mucho con la iptables de Linux, puedes instalar CSF en tu servidor:
rm -fv csf.tgz
wget http://www.configserver.com/free/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
y si has instalado Virtualmin, puedes instalar el modulo especifico de CSF para controlar
graficamente CSF:

Webmin > Webmin Configuration > Webmin Modules


Vamos a “local file” y buscamos “/usr/local/csf/csfwebmin.tgz” e instalamos el modulo.

4.-Instalamos otros programas para mejorar la seguridad

También podemos instalar los siguientes programas y modulos para mejorar la seguridad
de nuestro servidor:

 mod_security – se trata de un módulo de Apache que bloquea las solicitudes que


considera sospechosas. www.modsecurity.org (es algo complicado de configurar, sobre
todo si usas WordPress)
 Fail2ban – bloquea las direcciones IP que han realizado demasiados intentos de conexión
fallidos (CSF también tiene esta funcionalidad). También hay un módulo Fail2Ban incluido
en Webmin. www.fail2ban.org
 rkhunter – un cazador de rootkit. Busca archivos inusuales y procesos en el servidor, y te
avisa si descubre algo. www.rootkit.nl

8 consejos para mejorar la seguridad de tu servidor Linux.

1. Crea particiones

Te recomendamos tener diferentes particiones. En caso de algún problema las particiones


disminuyen riesgos de que los datos se dañen.

Pero para esto tienes que asegurarte de instalar todas las aplicaciones de terceros en la
partición /opt y contar con las siguientes particiones:

/
/boot
/usr
/var

PAGINA 8
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES
/home
/tmp
/opt

2. Asegúrate de que los registros están funcionando

Asegúrate de que el archivo /var/log está funcionando correctamente, pues aunque Linux
normalmente hace circular los registros del kernel del servidor Web y de otras aplicaciones,
algunas veces esto no funciona correctamente.

3. Revisa los puertos de red que escuchan conexiones

Utilizando el comando “netstat” puedes ver la lista de todos los puertos abiertos posibles y
los programas asociados. Usa el comando “chkconfig” para desactivar todos los servicios de
red no deseados.

# netstat –tulpn

4. Seguridad física del sistema

Configura la BIOS para deshabilitar el arranque desde CD/DVD, u otros dispositivos externos
en la BIOS. Posteriormente habilita la contraseña del BIOS y también protege el archivo
GRUB con contraseña para restringir el acceso físico al sistema.

5. Emplea Secure Shell (SSH)

¿Sabes qué protocolo emplear para el envío de información? Telnet y rlogin utilizan texto
plano para el envío de información, así que esto ya es un fallo en la seguridad. Sin embargo
existe Secure Shell (SSH) que es un protocolo seguro porque utiliza cifrado en la
comunicación con el servidor.

Te recomendamos que no entres directamente como root. Utiliza “sudo” para ejecutar los
comandos que requieren comandos administrativos. Se encuentra especificado sudo en el
archivo /etc/sudoers/ y puedes editarlo con el comando “visudo” a través de la interfaz del
editor Vi.

También te recomendamos cambiar el puerto predeterminado para el protocolo SSH, el


puerto 22 el que tiene por defecto, cámbialo a otro número de puerto más alto o menos
convencional.

Modifica el archivo principal de configuración de SSH “/etc/ssh/sshd_config” con los


siguientes parámetros para poder restringir el acceso a usuarios.

# vi /etc/ssh/sshd_config

Deshabilitar root Login

PAGINA 9
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES
PermitRootLogin no

Permitir sólo usuarios específicos

AllowUsers username

Utilizar el Protocolo SSH Versión 2

Protocol 2

Cambiar puerto para escuchar conexiones entrantes

Port 50221

6. Actualiza el sistema

Otro consejo es que actualicees el software y más si hablamos de parches del kernel y
revisiones de seguridad.

# yum updates

# yum check-update

# sudo apt-get update

7. Neutraliza los puertos USB

Una manera de aumentar la seguridad es restringir a los usuarios a que conecten sus
memorias USB. Para logarlo debes crear el archivo /etc/modprobe.d/no-usb y
posteriormente tienes que agregar la siguiente línea para que de esta forma no se detecten
los dispositivos USB.

install usb-storage /bin/true

8. Evita usar las mismas contraseñas

Es muy recomendable que evites que los usuarios estén utilizando las mismas contraseñas
que ya han usado anteriormente. Para hacer esto debes de encontrar el archivo de
contraseñas que se ubica en /etc/security/ opasswd. Esto lo puedes hacer mediante el uso
del módulo PAM.

En los sistemas Red Hat Enterprise Linux, CentOS o Fedora se edita el archivo
/etc/pam.d/system-auth. Y en los sistemas Debian, Ubuntu o Linux Mint, debes editar el
archivo /etc/pam.d/common-password. Y posteriormente debes añadir la siguiente en la
sección auth:

auth sufficient pam_unix.so likeauth nullok

Y en la sección password debes agregar la siguiente línea para evitar que el usuario utilice
las 5 últimas contraseñas usadas en el sistema:

PAGINA
10
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES
password sufficient pum_unix.so nullok use_authtok md5 shadow remember=5

Referencias Bibliográficas

 Choez, D. (2013). Universidad Estatal de Guayaquil Carrera de Ingenieria en


Sistemas Computacionales. Recuperado el 24 de Julio de 2017, de
http://repositorio.ug.edu.ec/bitstream/redug/2535/1/Tesis_FINAL.pdf

 Eduardo, I. P. (2011). latecnologiasocial. Recuperado el 23 de Julio de 2017, de


http://latecnologiasocial.bligoo.es/media/users/14/745746/files/117525/Manual_Cen
tOS 5_6.pdf

 Linux, A. (2012). aptitudelinux.com.ar. Recuperado el 25 de Julio de 2017, de


http://aptitudelinux.com.ar/index.php/108-instalar-y-configurar-servidor-ftp-
proftpd-encentos

 Balboa, M. A. (s.f.). Instalacion y configuracion de un servidor DNS en linux.


Obtenido de http://www.inegi.gob.mx/inegi/contenidos/espanol/prensa/contenidos/a
rticulos/tecnologia/dns03.pdf

 Cabrera, N. L.-M. (23 de 10 de 2008). FIREWALL Configuración básica de iptables


para VoIP. Obtenido de gt voip:
http://www.voip.unam.mx/mediawiki/index.php/FIREWALL_Configur
ación_básica_de_iptables_para_VoIP#.C2.BFQu.C3.A9_es_Iptables.3 F

 Quiroz, B. (s.f.). Linux tambien como firewall. Obtenido de


http://jornadas.lugmen.org.ar/files/material/QuirozB_Firewall_20061005.pdf

PAGINA
11
INGENIERÍA DE SISTEMAS ADMINISTRACION DE SERVIDORES

 Segu-Info. (2009). Políticas de Seguridad. Obtenido de Segu-Info: http://www.segu-


info.com.ar/politicas/

PAGINA
12

Potrebbero piacerti anche