CategoríaServidores

Mejorar seguridad de servidor Linux

1.- Instalar y ejecutar solo lo necesario

Muchas distribuciones o paquetes pueden iniciar ciertos servicios, ejecutándose en diferentes puertos. Eso podría suponer un riesgo de seguridad. Entonces, abrir la terminal y ejecutar:

netstat -npl

La salida mostrará que servicios se están ejecutando y en que puertos. Si detecta algún servicio que no debería estar funcionando, detenerlo. También se debe vigilar los servicios que están habilitados y se ejecutan al inicio del sistema. Se puede  comprobar con el siguiente comando en sistemas que ejecutan systemd:

systemctl list-unit-files --type=service | grep enabled

Dependiendo del sistema,  se obtendrá una salida como la que se muestra en la Figura 1 anterior. Si aparece algún servicio no deseado, deshabilitarlo usando el comando systemctl:

systemctl disable service_name

2.- Restringir acceso al servidor

No es buena práctica utilizar el acceso root. Para lo cual se debe crear un nuevo usuario.

Agregar usuario para Red Hat / Centos

A.- Agregar usuario

useradd nombreusuario

B.- Crear contraseña para el usuario:

passwd nombreusuario

Ingresar la contraseña respectiva.

C.- Ahora se deben dar poderes “sudo”.  Para lo cual ejecutar el siguiente comando:

EDITOR=nano visudo

D.- Buscar la siguiente línea:

# %wheel ALL=(ALL) ALL

E.- Descomentar la línea (el símbolo # significa que está comentado; simplemente eliminar el símbolo para descomentar) para que se vea así:

%wheel ALL=(ALL) ALL

F.- Guardar y cerrar el archivo. Si el usuario no pertenece al grupo de wheel, se puede agregar ejecutando este comando:

# usermod -aG wheel nombreusuario
Agregar usuario para Ubuntu / Debian

A.- Agregar usuario:

adduser nombreusuario

Responder algunas preguntas que hará el sistema, incluida la creación de la contraseña para este usuario.

B.- Una vez creado, proporcionar al usuario los poderes de sudo:

gpasswd -a nombreusuario sudo

Abrir otra ventana del terminal e iniciar sesión en el servidor con el usuario recién creado y probar algunos comandos con sudo.

3.- Deshabilitar root

Para hacerlo, abrir el archivo de configuración sshd:

sudo vi /etc/ssh/sshd_config

A continuación, buscar la línea comentada:

#PermitRootLogin yes

Para editar el archivo, presionar la letra “A” del teclado y cambiar a:

#PermitRootLogin no

Luego presionar ESC para salir de la edición y finalmente guardar presionando ingresar los siguientes caracteres y presionar ENTER

:wq

Reiniciar servicio:

Para Red Hat / Centos:

sudo /etc/init.d/sshd restart

Para Ubuntu / Debian:

sudo /etc/init.d/ssh restart

Importante: No desconectarse del servidor todavía ya que se debe comprobar que el nuevo usuario tiene acceso vía SSH, de lo contrario no se podrá ingresar al servidor.
Si todo funciona bien, cerrar la sesión del servidor de forma segura como root.

4.- Cambiar puerto

De esta forma se dificulta el acceso vía SSH ya que el puerto por defecto (22) estará cerrado.

Abrir archivo sshd_config (esta vez como sudo, porque ya no se puede iniciar sesión en el servidor como root):

sudo vi /etc/ssh/sshd_config

Buscarla siguiente línea comentada:

#Port 22

Para editar el archivo, presionar la letra “A” del teclado y cambiar al puerto elegido. Importante es verificar que este puerto no sea utilizado por otro servicio.

Para esta prueba se usará el puerto 1966:

Port 1966

Luego presionar ESC para salir de la edición y finalmente guardar presionando ingresar los siguientes caracteres y presionar ENTER

:wq

Una vez más, antes de cerrar sesión en el servidor, verificar la configuración abriendo otra ventana de terminal e iniciar inicie sesión usando este patrón:

ssh -p{port_number} nombreusuario@server_IP

Ejemplo:

ssh -p1966 nombreusuario@server_IP

 

Fuente: https://www.linux.com/learn/how-make-your-linux-server-more-secure

Actualización de paquetes Linux (Ubuntu/Debian)

Actualización de paquetes de seguridad (Ubuntu/Debian)

Conectar vía SSH y correr los siguientes comandos:

grep security /etc/apt/sources.list | tee /etc/apt/security.sources.list
apt-get update
apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list

Presionar “Y” (sin comillas) y luego “ENTER”Press “Y” and “Enter”.

Para verificar y aplicar actualizaciones, haga esto:

apt-get update
apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list

Actualización de todos los paquetes (Ubuntu/Debian)

Conectar vía SSH y correr los siguientes comandos:

apt-get update && apt-get upgrade

Presionar “Y” (sin comillas) y luego “ENTER”

 

Fuente: https://www.3cx.com/blog/voip-howto/os-security-updates-debian/

Editar php.ini en Mamp (no pro)

Los archivos php.ini se encuentran en:

/Applications/MAMP/bin/php/phpX.X.XX/conf/php.ini

Las X.X.XX corresponden a la versión de PHP que se quiera editar (ej: php7.3.1)

Apache caido / cPanel httpd down

Reiniciar Apache cPanel (opción 1):
WHM -> Reinicie los servicios -> Servidor HTTP (Apache)

Reiniciar Apache SSH (opción 2):
sudo service httpd restart

Resultado:
Starting httpd: AH00526: Syntax error on line 338 of /etc/apache2/conf/httpd.conf:
SSLCertificateFile: file ‘/var/cpanel/ssl/cpanel/mycpanel.pem’ does not exist or is empty

Solución:
Ir a: /var/cpanel/ssl/cpanel/
En caso de que exista ‘mycpanel.pem’, eliminarlo (rm cpanel.pem)
Renombrar ‘mycpanel.pem.disable’ (mv mycpanel.pem.disable mycpanel.pem)
Reinciar Apache (sudo service httpd restart)

 

cPanel tips y códigos varios

Forzar backup

/usr/local/cpanel/bin/backup –force

Asignar y compartir IP

https://documentation.cpanel.net/display/CKB/How+to+Share+Multiple+IP+Addresses

Backup: remote SFTP fails validation / Falla de validación SFTP en cPanel/WHM

Problema típico se relaciona con el path o directorio de copias de seguridad ya que por error de determinada versión de cPanel, este no permite agregar el primer slash (ej: /backup/), por lo que debemos editarlo manualmente.

Crear el respaldo remoro vía SFTP y guardar SIN validar.

Luego ingresar vía SSH/SFTP/FTP al servidor y editar el archivo: /var/cpanel/backups/$destination-name_UID_$.backup_destination

A continuación un ejemplo de los datos del archivo en cuestión:

authtype: password
disabled: 0
host: *******
id: r1bXfb3sa2BshagsdvDUzh387fvgaUUE
name: backup
password: ***********
path: /backup/
port: 22
timeout: 30
type: SFTP
upload_system_backup: 1
username: ***

Se agregó el slash antes de backup

Cómo instalar WordPress desde la consola SSH

Hay muchos tutoriales en la red de como instalar WordPress paso a paso, pero todo son instalaciones desde cPanel o guías de instalación a través de SSH incompletas que no nos dicen como crear la base de datos y asociarla a un usuario con comandos de consola. Para poner solución a todo lo anterior he creado esta completa guía de cómo instalar WordPress desde la consola SSH de forma fácil y sencilla.

Instalar WordPress a través de la shell SSH es una tarea sencilla, pero requiere conocer unos comandos básicos los cuales trataré de explicar brevemente según los vayamos necesitando y doy por hecho que emplearemos PuTTY y que tenéis conocimientos necesarios para abrir una sesión SSH en vuestro servidor.

Cómo instalar WordPress desde la consola SSH

Antes de empezar doy por hecho que nuestro servidor tiene instalado Apache, MySQL y PHP. También hay que tener en cuenta que instalaremos nuestro WordPress en el directorio /usr/home/vozidea/public_html/ por lo que nuestros comandos y ejemplos este será el directorio de referencia.

Antes de comenzar necesitaremos los siguientes datos:

  • Usuario y contraseña de root (u otro usuario con permisos suficientes) para iniciar sesión en el servidor remoto a través de PuTTY.
  • Usuario y contraseña de usuario root de MySQL.

1) Descargar la última versión de WordPress.

Antes de nada emplearemos el comando cd (permite cambiar de carpeta o directorio) para situarnos en nuestra carpeta de instalación: cd /usr/home/vozidea/public_html/

En este paso emplearemos el comando wget para descargar la última versión de WordPress con SSH.

Para descargar la última versión de WordPress en español nos dirigimos a: https://es.wordpress.org/releases/

Una vez dentro de la página anterior copiamos el enlace del archivo con extensión .tar.gz, a día de hoy el enlace corresponde a la versión de WordPress 5.2.2 y es https://es.wordpress.org/wordpress-5.2.2-es_ES.tar.gz , el cual empleamos en el siguiente comando:
wget https://es.wordpress.org/wordpress-5.2.2-es_ES.tar.gz

A la hora de descargar la última versión de WordPress en inglés es más sencillo, porque el nombre de archivo es siempre el mismo (latest.tar.gz), por lo que la URL de descarga nunca varía. Con el siguiente comando descargamos la última versión de WordPress en inglés:
wget https://wordpress.org/latest.tar.gz

Con esto ya tenemos en nuestro servidor descargada la última versión de WordPress y dependiendo de si lo queremos en inglés o español utilizaremos uno u otro enlace de descarga. En esta guía yo voy instalar la versión en español, por lo que el nombre de archivo descargado y que emplearé en los siguientes pasos será wordpress-5.2.2-es_ES.tar.gz.

2) Descomprimir los archivos de WordPress.

Ya tenemos en el servidor el paquete comprimido de WordPress pero necesitamos descomprimirlo. Como hemos descargado el archivo con extensión .tar.gz emplearemos el siguiente comando para descomprimir:
tar -xzvf wordpress-5.2.2-es_ES.tar.gz

Tras ejecutar este comando se creará una carpeta de nombre wordpress que contiene todos los archivos necesarios, pero nosotros no queremos instalar WordPress dentro de esa carpeta, por lo que tenemos que mover todos los archivos de /usr/home/vozidea/public_html/wordpress/ a /usr/home/vozidea/public_html/. Esto lo conseguimos ejecutando el siguiente comando:
mv ./wordpress/* ./

Este comando mueve todos los archivos que hay dentro de la carpeta wordpress en la carpeta actual.

Ahora podemos borrar la carpeta wordpress ya que está vacía y no sirve de nada, para esto ejecutamos el comando:
rm -rf ./wordpress

Con esto ya tenemos la instalación web accesible a través de la URL correspondiente, en nuestro caso sería:
https://www.vozidea.com/

Pero antes de proceder con la instalación vamos a ver cómo crear una base de datos y asignarle un usuario, todo esto a través de SSH con diferentes comandos.

3) Crear usuario y base de datos MySQL para instalar WordPress.

Lo que vamos a hacer en este paso es crear un usuario, que le llamaremos vozidea y después crearemos una base de datos de nombre vozidea_blog. Después le asignaremos a esta base de datos el usuario vozideadándole los permisos necesarios. Esto lo realizaremos con SSH empleando los siguientes comandos:

  • Accedemos como root a MySQL:
    mysql -u root -p
    Nos pedirá que introduzcamos el password MySQL.
  • Creamos el usuario MySQL de nombre vozidea y de contraseña pn3Fh6Td:
    CREATE USER 'vozidea'@'localhost' IDENTIFIED BY 'pn3Fh6Td';
  • Creamos la base de datos vozidea_blog:
    CREATE DATABASE vozidea_blog;
  • Asignamos permisos al usuario vozidea sobre la base de datos vozidea_blog:
    GRANT ALL PRIVILEGES ON vozidea_blog.* TO 'vozidea'@'localhost';
  • Recargamos los privilegios:
    FLUSH PRIVILEGES;

Ahora cuando llegue el momento de la instalación de WordPress ya disponemos de los datos necesarios:

  • Nombre de la base de datos: vozidea_blog
  • Usuario MySQL: vozidea
  • Contraseña del usuario MySQL: pn3Fh6Td

Espero que os haya servido de ayuda esta guía de cómo instalar WordPress desde la consola SSH. El paso número 3 donde creo el usuario y base de datos MySQL yo prefiero crear un usuario para el blog porque lo veo más ordenado, pero sea como sea nunca emplear vuestro usuario root de MySQL directamente en la instalación de WordPress ya que es una mala práctica de seguridad.

Fuentehttps://www.vozidea.com/como-instalar-wordpress-desde-la-consola-ssh

Conectarse vía SSH con llave privada

La llave que usaremos debe estar con extensión .PEM y con permisos 400

Para establecer los permisos, ejecutamos el siguiente comando desde terminal:

chmod 400 nombre-de-la-llave.pem

 

Posteriomente para conectarnos, ejecutamos:

ssh -inombre-de-la-llave.pem.pem usuario@hostname

Deshabilitar la autenticación de dos pasos en WHM por línea de comandos

Si tienes activado la autenticación de 2 pasos en WHM  (two-factor authentication) y no puedes acceder a la aplicación en tu smartphone, una forma sencilla de deshabilitarla es por medio de línea de comandos.

whmapi1 twofactorauth_disable_policy

Reparar Quotas en WHM/cPanel | Fix Quotas in WHM/cPanel

Para solucionar el problema de las Quotas en WHM/cPanel, realizar el siguiente cambio:

Editar el archivo fstab, ubicado en /etc/fstab

Código para editar fstab: sudo nano /etc/fstab

/dev/md3 /home ext4 defaults,usrquota 1 2

Guardar: CTRL + O
Cerrar: CTRL + X

Una vez realizado este cambio, remontar con el siguiente comando:

mount -o remount /home

 

Fuentehttps://documentation.cpanel.net/display/CKB/How+to+Fix+Quotas

© 2019 Grafreek

Tema por Anders NorénSubir ↑