Instalar WkhtmltoPDF en Centos 7

Instalar WkhtmltoPDF en Centos 7 de manera fácil

Un cliente nos solicitó instalar esta librería para poder generar PDF a partir de una web HTML o lo que devuelva una web.

Para ello probamos con instalar el librería que nos viene por defecto en el sistema, pero parece ser que requiere la instalación de un sistema de LastX.

Indagando un poco nos hemos dado cuenta de que no hace falta y que hay gente que compila sin esta necesidad.

Pasos a seguir

Instalamos las siguientes fuentes en el sistema:

yum install xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi

Instalamos el paquete necesario en el sistema:

wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm && rpm -Uvh wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm

Ahora solo nos queda realizar una prueba:

wkhtmltopdf http://www.google.com google.pdf

Si no funciona el enlace

Hemos seguido este procedimiento: https://www.tecmint.com/wkhtmltopdf-convert-website-html-page-to-pdf-linux/

Descargamos de 32 bits: wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-i386.tar.xz

Descargamos de 64 bits: wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

Descomprimimos la versión de tar.gz, en nuestro caso hemos usado la de 64 bits.

tar -xvf wkhtmltox-0.12.4_linux-generic-i386.tar.xz

Copiamos el ejecutable en /usr/local/bin/wkhtmltopdf y /usr/bin/

Con esto dejaremos funcionando la generación de PDF sin tener que instalar una “X”.

Notas a tener en cuenta

La última versión hoy en día es la 0.12 y dentro de dicha rama hay versiones más actuales, lo que pasa que hemos usado la 0.12.2.1 porque tenía un RPM hecho. Si queremos ver otras versiones podemos acceder a:

http://download.gna.org/wkhtmltopdf/0.12/

Esta info se ha obtenido de:

How To Install wkhtmltopdf In CentOS 7.0

Cambiar varios registros DNS en Cpanel a la vez

Buenas,

Nos hemos encontrado con un cliente que por problemas de SPAM ha tenido que usar otra IP para sacar el correo por ahí.

El problema de la nueva IP es que era “virgen”, es decir:

  • No tenía entrada PTR correctamente configurada.
  • No estaba configurada para que el SPF sea válido en los servidores de correo.

El primer punto lo hicimos y el segundo lo tuvimos que realizar en la SHELL ya que hasta lo que hemos visto no se puede hacer directamente con CPANEL.

Los pasos que hemos seguido son los siguientes:

#Realizar una copia del directorio donde guarda Cpanel los ficheros de DNS.

cp -a /var/named /var/named-backup

# Modificar el registro deseado.

sed -i 's/ip4:xx.xx.xx.xx/+ip4:xx.xx.xx.xx +ip4:yy.yy.yy.yy/g' /var/named/*.db

# Modificar el serial de cada fichero.

find /var/named/*.db -mtime -1 -exec perl -pi -e 'if (/^\s+(\d{10})\s+;\s+serial/i) { my $i = $1+1; s/$1/$i/;}' '{}' \;

# Reiniciar el servicio de nombres.

service named restart

Después de realizar todos estos pasos lo que hicimos fue comprobar la entrada con los dns de Google. Por ejemplo

dig txt dominio.tld @8.8.8.8

Al darnos las entradas deseadas dimos el problema por solventado.

Un saludo

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.