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

Reiniciar contraseña de ROOT en CentOS 7

Resumen de Reiniciar contraseña de ROOT en CentOS 7

He de reconocer que se me suele olvidar un poco realizar esto ya que no es algo habitual que se suela hacer, pero hay que tenerlo siempre en mente.

Reiniciar contraseña de root en Centos 7 cuando se ha perdido o has sido victima de una intrusión viene bien tenerlo cerca para hacer las gestiones de manera eficiente.

Editando el grub

En la parte casi del final del grub debemos detectar donde se encuentra la opción de “ro”.

Reiniciar contraseña de ROOT CentOS 7-1
Reiniciar contraseña de ROOT CentOS 7-1

Después debemos modificar dicho valor por el siguiente: “rw init=/sysroot/bin/sh” y pulsar control + x para iniciar el arranque del sistema.

Reiniciar contraseña de ROOT CentOS 7-2
Reiniciar contraseña de ROOT CentOS 7-2

En el sistema operativo

Ejecutamos el comando:

chroot /sysroot

Nos dará acceso al root al completo y podemos cambiar la contraseña de root:

passwd root

Con esto establecemos la contraseña y podemos reiniciar nuestro equipo.

Un saludo

Fuente del artículo

Ejecutar SFTP y FTP con Proftpd

Hola a todos!

En este documento vamos a trabajar sobre como ejecutar SFTP y FTP con Proftpd sin tener ninguna complicación para ello. Al parecer en la última versión de Debian 8 (no he probado en los demás) viene por defecto con la instalación de Proftpd que te fuerce directamente a realizar el SFTP. La cuestión es que, si no recuerdo mal, no te lo hace por el puerto por defecto. De hecho el puerto 21 lo deja deshabilitado.

Existen clientes que le gustan tener opciones de poder elegir:

  1. Que solo escuche por el puerto 21 y solo SFTP.
  2. Que estén los dos servicios corriendo FTP por el 21 y SFTP por el 22.
  3. Ejecutar el SFTP en otro puerto.

Intentaré explicar los 3 casos o por lo menos morir en el intento.

Leer más

Optimizar consultas MySQL utilizando índices

Introducción

En este artículo vamos a tratar de examinar como optimizar consultas MySQL utilizando índices.

Para ello vamos a tener un log activado en nuestro sistema que nos indicará aquellas consultas que tardan más de 3 segundos. Es lo que consideramos como consultas lentas.

Está claro que dependiendo de la consulta/registros podemos considerar lenta a partir de x segundos, pero eso lo dejaremos en manos del DBA.

También aclarar que a veces hay que reformular la consulta para ganar un mejor rendimiento.

Leer más

Función REPLACE de MySQL

Introducción

En este post vamos a usar la función REPLACE de MySQL la cual nos va a permitir cambiar valores que encontremos en nuestras tablas por unos nuevo.

Uno de los ejemplos donde comúnmente se suele usar es a la hora de cambiar el dominio a un blog WordPress, ya que hay que cambiar estos valores en la base de datos.

Usando la función REPLACE de MySQL

Vamos a analizar un ejemplo clásico:

UPDATE wp_posts SET post_content = REPLACE( post_content, 'a class="url" href="www.', 'a class="url" href="http://www.' );

En este ejemplo lo que nos encontramos es lo siguiente:

  • tabla: wp_posts
  • campo: post_content
  • sustituir: vamos a sustituir ‘a class=”url” href=”www.’, ‘a class=”url” href=”http://www.’.
    • Es decir que donde había un href=”www. ahora será href=”http://www. Hemos agregado la parte del http.

Con esto lo que conseguimos, en el caso de wordpress, es que funcionen las imágenes a la hora de cambiar el nombre del dominio.

Incompatibilidad de versiones MySQL

Introducción

Nos encontramos con un problema de incompatibilidad de versiones MySQL. Tenemos 2 servidores 1 con una versión de MySQL 5.0.x y otro con versión 5.5.x y teníamos que tener una conexión entre ambos.

En este caso la conexión se estaba realizando desde el servidor nuevo al viejo.

El error que nos daba era algo similar a esto:

Connect Error (2000) mysqlnd cannot connect to MySQL 4.1+ using old authentication

Lo cual indicaba un problema de compatibilidades entre versiones (evidentemente porque en el nuevo servidor usaba las librerías nuevas).

Solución Incompatibilidad de versiones MySQL

La solución que hemos tomado para solventar este problema fueron dos pasos:

1) En la configuración del MySQL viejo (/etc/my.cnf) tuvimos que quitar la compatibilidad de old-password. En nuestro caso tuvimos que comentar la siguiente línea:

#old_passwords=1

2) Lo siguiente fue revisar el usuario que estábamos usando para conectar si tenía un formato de contraseñas correcto. Para ello tuvimos que acceder a nuestra consola de MySQL y ejecutar la siguiente sentencia:

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user;

Esto nos daba un listado de los usuarios que tienen contraseñas débiles y que deberíamos cambiar para mayor seguridad. Para ser exactos las contraseñas con tamaño 16 son las de contraseñas débiles.

Evidentemente entre ellas estaba el usuario que estábamos usando y tuvimos que ejecutar el siguiente comando para volver a reajustar la contraseña:

SET PASSWORD FOR 'usuariocambiar'@'host'=PASSWORD('mismacontraseña');

Con esto hemos vuelto a ejecutar de nuevo el comando y esta vez nos salía con un tamaño de 41 caracteres.

Con esto dejamos resuelto el problema del cliente.