Securizar Mysql / MariadDB

En esta ocasión os traemos algunos consejos para securizar MySQL o MariaDB (Forks en general de Mysql) de forma algo más segura.

# Ejecutar mysql_secure_installation

Este script nos hace pasar por varios pasos:

  1. Cambiar la password de root si procede.
  2. Eliminar las bases de datos de test.
  3. Eliminar el acceso de root desde remoto (direcciones IP externas al servidor).

Es decir que solo con este script que viene en las instalaciones nos permite generar un alto grado de seguridad.

Deshabilitar el histórico de mysql

En el caso de que queramos deshabilitar este log, recordamos que se guarda todo lo realizado en el cliente de mysql, podemos eliminar el contenido o apuntarlo a null para que no guarde nada.

cd /root && ln -s .mysql_history /dev/null

Cambiar el usuario root por otro nombre

Podemos cambiar el usuario por defecto de root por otro usuario que nos convenga. Esto lo hacemos para que no se tenga acceso a través del mismo.

RENAME USER ‘root’@’localhost’ TO ‘foobar’@’localhost’;

FLUSH PRIVILEGES;

Cada base de datos debe tener su usuario/host/permisos

Por temas de seguridad es recomendable seguir los siguientes pasos por cada base de datos:

  1. Crear un usuario por cada base de datos.
  2. Crear el origen desde el cual se va a conectar.
  3. Darle los permisos que va a utilizar.

Securizando PHP a nivel servidor

Introducción

Hoy en día los administradores de sistemas nos solemos centrar mucho en el tema de seguridad. Como es evidente tratamos de cerrar los posibles caminos que puedan venir los ataques para curarnos ante el cliente. Como muchas veces no podemos controlar los scripts/programaciones de cada cliente tenemos que buscar ciertas formas que nos ayuden.

Recordamos que la mayor parte de las intrusiones o defacement en las webs suelen venir por CMS desactualizados. Así que siempre recomendamos que se actualice siempre que se pueda porque suelen tener correcciones de seguridad.

En nuestro caso vamos a trabajar con un poco de seguridad sobre nuestro php a nivel de servidor.

Las normas que vamos a seguir son:

1) Otorgar la menor información posible al atacante.

2) Deshabilitar funciones en PHP que permitan la ejecución de comandos o procesos en el servidor.

Actualizaciones:

27/04/2017: Añadido open_basedir, Securizar Sesiones, Nuevas funciones a deshabilitar.

Leer más

Seguridad en Apache

Introducción

La seguridad en Apache hoy en día es algo muy importante ya que es uno de los servidores web más conocidos y usados habitualmente.

Hemos querido realizar un conjunto de medidas que nos pueda ayudar a todos ser un poco menos vulnerable en el mundo de Internet.

Aparte de ello quería reunir las distintas prácticas que hace la gente y tenerlo centralizado para aquellos que quieran aprender.

Leer más

Flush Cache en Exim

Hola,

Nos encontramos con el siguiente mensaje a la hora de enviar correos:

"email@domain.tld all hosts for 'gibraltar.gov.gi' have been failing for a long time (and retry time not reached)"

Lo hemos detectado sobre un panel de control CPANEL + Sistema Operativo Centos 7.

La solución que hemos encontrado:

service exim stop
rm /var/spool/exim/db/* -fv
service exim start

Con esto la cache la libera y la irá generando según su necesidad.

Un saludo

Instalar LogWatch – Análisis de log para administradores

Introducción

Hace tiempo usaba unos logs que me llegaban a diario a mi correo sobre el estado de los servicios o revisión de los logs. Estos logs me servían de información para ver lo ocurrido en el durante el día o lo que había pasado. Entre los detalles que aparece:

  • Revisión de los paquetes instalados/desinstalados.
  • Revisión de posibles problemas en los logs.
  • Accesos no autorizados (IP).
  • Información de dichos accesos no autorizados.

Pues bien como todo buen administrador nosotros podemos tener herramientas que nos hagan nuestro trabajo más fácil y solventar posibles problemas e incidencias que vayan aconteciendo.

Sistemas Operativos probados : Ubuntu 16.04

En este manual vamos a explicar como instalar LogWatch y su configuración básica.

Leer más

Expandiendo las variables de entorno

Hola a todos!

Hoy nos hemos encontrado con un problema expandiendo las variables de entorno en uno de nuestros clientes y es que está intentando ejecutar el comando php desde fuera.

Aparentemente no es ningún problema, pero cuando tiene un PLESK o un sistema multi PHP te coge la versión del sistema por defecto.

Lo que hicimos para solventarlo fue la de meter un alias a php usando la versión que nos había facilitado el cliente.

A pesar de realizar esto efectivamente desde fuera no estaba funcionando, ya que seguía cogiendo la propia del sistema y no la que habíamos establecido en el .bashrc.

Pues la solución para que obtenga nuestras variables en “.bashrc” es poner la siguiente línea:

shopt -s expand_aliases

Con esto lo que hace es expandir las variables que hemos establecido a una shell no interactiva y saldría la versión de php que hemos configurado.

Un saludo

Apache validar por certificado

Introducción

Hace pocos días hubo un cliente que nos ha solicitado que parte de su web se pudiera acceder solicitando un certificado válido.

Para ello tenemos que configurar nuestro virtualhost para que pueda solicitar el certificado y si está permitido en el intermedio entonces le dejará pasar a la nueva sección.

Teniendo estas premisas vamos a trabajar en la configuración.

Apache validar por certificado

Antes de empezar a hablar podemos obtener la configuración a través de la documentación que nos ofrece Apache:

http://httpd.apache.org/docs/current/ssl/ssl_howto.html

Esta es la configuración que debemos realizar sobre nuestro virtualhost:

SSLVerifyClient none
SSLCACertificateFile /ruta-certificados-intermedios/certificados_buenos_fmnt.pem
SSLSessionCacheTimeout 600
SSLOptions +StdEnvVars

<Location /zona/web/1/>
SSLVerifyClient require
SSLVerifyDepth 5
</Location>

<Location /zona/web/2/>
SSLVerifyClient require
SSLVerifyDepth 5
</Location>

<Location /zona/web/3/>
SSLVerifyClient require
SSLVerifyDepth 5
</Location>

Vamos a explicar un poco la configuración:

SSLVerifyClient none: Tenemos que añadir esta directiva ya que no queremos que realice la validación antes.

SSLCACertificateFile ruta: Ruta donde se encuentran los intermedios, esto es lo que nos permitirá que los usuarios se puedan validad.

<Location /zona/web/1/>: Primera zona web donde solicitaremos el requisito de la validación del certificado.

Para ver otros parámetros existentes ver el enlace añadido y además este:

https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#ssloptions

Un saludo

Instalar certificados intermedios en shell de Linux

Introducción

Existen ocasiones en que desde nuestro entorno linux debemos acceder a webs con unos certificados intermedios específicos (estos no están por defecto en nuestro directorio de CA). Por lo tanto debemos aprender a gestionar dichas instalaciones a través de nuestro entorno SHELL (si no disponemos de entorno gráfico).

Para ello vamos a realizar un procedimiento para instalarlo en un sistema operativo RedHat/CentOS y que nos funcione correctamente.

Instalar certificados intermedios en shell de Linux

Lo primero que utilizamos es instalar los intermedio y además hacemos una recarga para que el servidor lo detecte.

yum install ca-certificates
update-ca-trust force-enable

Una vez realizado esto lo que haremos será descargar el certificado en el directorio correspondiente. Por ejemplo con el intermedio del certificado de moneda y timbre:

cd /etc/pki/ca-trust/source/anchors/
wget https://www.sede.fnmt.gob.es/documents/10445900/10526749/FNMTClase2CA.cer

Ejecutamos la actualización de las CA

update-ca-trust extract

Con esto tendremos nuestros certificados intermedios instalados y podemos realizar un curl a la web sin tener problemas de certificado.

Desactivar la confirmación de envío en postfix

Introducción

Al parecer en algunos paneles o inclusive configuraciones con postfix está activada la configuración de envío. Esto lo que quiere decir es que por cada envío que se realiza de manera correcta recibiremos un correo diciendo que se ha hecho bien.

Esto puede llegar a ser bastante molesto aunque hay personas que lo necesitan para saber si su correo ha llegado sin problemas.

Para el resto de los mortales esto puede llegar a ser un incordio.

Desactivar la confirmación de envío en postfix

Accedemos a nuestra configuración de Postfix “/etc/postfix/main.cf”

Añadimos o modificamos la línea por esto:

smtpd_discard_ehlo_keywords = silent-discard, dsn

Reiniciamos postfix

service postfix restart

Suexec – Cambiar el directorio por defecto en CentOS

Introducción

El problema que nos encontramos es que hay proveedores que cambian el directorio por defecto donde se encuentra el Suexec. Por ejemplo al parecer en las CentOS suele ser /home y en el caso de que cambiemos el directorio de nuestras webs esto no funcionaría.

En versiones de Debian lo tenemos un poco más fácil ya que han establecido algo llamado “suexec-custom” el cual nos permite cambiar el directorio suexec de una manera más fácil.

Para CentOS, por desgracia, no se puede hacer de la misma manera y las soluciones que tenemos son:

  1. Mover y configurar todo el contenido en /home
  2. Cambiar el directorio por defecto donde está configurado el suexec.

En nuestro caso elegiremos la opción 2 la cual nos llevará a compilar.

Leer más