No hay nada mejor que despertarse un sábado tranquilamente y encontrarse con que tu proveedor de hosting te ha bloqueado la salida del puerto 25 porque tu servidor está enviando spam. Nada, al teclado. Accedemos como root y listamos la cola de correos con el comando mailq, ya que utilizamos Postfix. Me encuentro con que la cola está llena de emails enviados desde una cuenta que no existe de un dominio que sí está alojado en el servidor. Borro los mensajes con el siguiente comando, el cual solo borra los mensajes que tienen como from o to a jordi@dominioinfectado.com. Cuenta ficticia, evidentemente ;-) postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } / jordi@dominioinfectado\.com/ { print $1 }' | tr -d '*!' | postsuper -d - Vuelvo a listar a la cola con mailq a los dos segundos y veo que vuelven a aparecer mensajes de spam de esa dirección. Como era de esperar, el script que los genera está activo. Paro el servicio de Apache con service apache stop, vuelvo a lanzar el … [Read more...] about Eliminar spam de la cola de Postfix en Ubuntu
Desarrollo
Solución al problema del HTTPS y WordPress / Woocomerce en Google Chrome
Puede que te hayas encontrado con este error si has visitado alguna tienda virtual con Woocommerce o peor aún, puede que gestiones la tienda virtual en sí. La conexión no es privada Es posible que los piratas informáticos estén intentando robar tu información de www.—-.com (por ejemplo, contraseñas, mensajes o tarjetas de crédito). NET:ERR_CERT_COMMON_NAME_INVALID En ambos casos la cosa no es buena señal. Chrome ha incorporado una modificación en la gestión de las cabeceras HTTPS lo que está provocando que en el caso de los Woocommerce aparezca ese error. En el caso de mi cliente esto se producía sólo cuando se aplicaba la redirección del domini sin www al dominio con www por lo que lo primero que he pensado ha sido en aplicar una redirección en el .htaccess para que el Wordpress no llegara a actuar y por tanto no se diera el error. No ha funcionado. Lo siguiente ha sido añadir el siguiente código al principio del fichero wp-config.php pero tampoco esto ha … [Read more...] about Solución al problema del HTTPS y WordPress / Woocomerce en Google Chrome
Como proteger el WordPress de un ataque DDOS mediante xmlrpc.php
Siempre empieza igual. O bien alguno de los monitores de sistema que tienes montado te avisa o lo hace el más rápido de ellos: Tus clientes. Y en este caso han sido ambos. Estoy acabando de desayunar cuando aprovecho para quitar el modo avión del móvil. Empiezan a entrar whatsapps y emails. En los emails, notificaciones de que la web del cliente no está accesible. Al rato vuelve a estarlo y al rato a no estarlo. No pinta bien. En el Whatsapp, el cliente comentando que algo anda mal. Primera prueba, navegar el site. Efectivamente el tiempo de carga es lento. Te logueas en el servidor y te encuentras con un montón de procesos Apache2 lanzados y bastante sobrecarga en el demonio Mysql. A priori parece un ataque. Se necesita más visibilidad para saber que está pasando así que si no lo tienes ya mejor instalar el Módulo mod_status de Apache, el cual nos va a permitir ver, entre otras cosas, que URLs se están pidiendo. Pasos: Activar el módulo con sudo a2enmod … [Read more...] about Como proteger el WordPress de un ataque DDOS mediante xmlrpc.php
Testear código PHP online
En ocasiones necesitas crear una pequeña parte de código para testear un concepto o simplemente para realizar un cálculo. Cuando estoy con mi ordenador no suelo tener dudas, bajo a la consola del Linux y me pongo a teclear y no he encontrado nada más ágil ni rápido. No obstante, no siempre estoy delante de mi ordenador y en esos casos suelo buscar alguna herramienta online que me permita editar ese código y ejecutarlo para obtener el resultado. Eso hace eso exactamente http://writecodeonline.com/php/ Ni más ni menos. Justo lo que a veces necesito. … [Read more...] about Testear código PHP online
Imprimir una imagen como un enlace con la función l de Drupal
Pego aquí un pequeño snippet para imprimir una imagen dentro de nuestro theme, que apunte a la home de nuestra web. La función l de Drupal nos permite crear un enlace al <front> de nuestra portal. Por otro lado la función drupal_get_path nos devuelve la ruta a nuestro theme. <?php $path = drupal_get_path('theme', 'el_nombre_de_nuestro_theme'); $image_path = $path . '/logo.png'; print l('<img class="logo" src="' . $image_path . '" />', '<front>', array('html' => TRUE)); ?> Este código lo podemos utilizar en un block para volcar una imagen que tenemos localizada físicamente en el theme. … [Read more...] about Imprimir una imagen como un enlace con la función l de Drupal
Aproximación a CodeIgniter
Uno de los desarrollos que me han encargado últimamente es la ampliación de un portal desarrollado en CodeIgniter. Como buen programador freelance una de las cosas que me define es que disfruto cada vez que debo de acercarme a una nueva tecnología. En este caso conocía el framework pero aún no había tenido la oportunidad de utilizarlo. Lo primero que diré es que es un framework con una cierta antigüedad, lo cual tiene ventajas y desventajas. Implementa MVC (Model-View-Controller) lo cual es una buena noticia. La documentación es buena y de hecho recomiendo la lectura del tutorial de introducción donde podemos ver, mediante ejemplos prácticos, como funciona el framework, implementando páginas estáticas y una gestión de noticias contra base de datos. Otra de las ventajas es que Internet está llena de información. Una búsqueda del nombre del framework en Stackoverflow nos devuelve 27.000 resultados, lo cual no está nada mal. También se puede interpretar como que CodeIgniter … [Read more...] about Aproximación a CodeIgniter
Resetear la contraseña de Drupal con Drush
La receta de hoy es breve pero muy útil. Seguro que más de una vez has necesitado resetear/reiniciar la contraseña de algún usuario Drupal. Puedes atacar a la base de datos directamente pero con Drush es mucho más sencillo: drush user-password USERNAME --password="PASSWORD" Además, seguro que haciendo pruebas, alguna vez has bloqueado tu cuenta por número máximo de intentos de acceso. Drush es tu amigo y vuelve a ayudarte, esta vez atacando a la base de datos. Este comando desbloquea al usuario: drush php-eval 'db_query("DELETE FROM `flood`");' … [Read more...] about Resetear la contraseña de Drupal con Drush
Crear módulos en Drupal con Module Builder
Dejo aquí un módulo de Drupal que me ha parecido interesante. Como programador Drupal, en ocasiones necesito programar módulos a medida para cubrir alguna funcionalidad que no puedo cubrir con el Core o con los módulos existentes. En esos casos, Module Builder nos permite crear el skeleton o scaffolding del módulo que deseamos desarrollar permitiendo además incluir el código base para los hooks que queremos manipular, entre otras ventajas. Puede ejecutarse como un módulo más dentro del propio Drupal y crear el módulo deseado con un formulario visual pero según comentan en la documentación, la versatilidad más potente se encuentra al ejecutarlo desde Drush. Una vez instalado, y con esta simple línea de código, crearemos el skeleton de nuestro módulo Drupal contestando a las preguntas que nos hará el builder. drush mb my_module menu cron form_alter --write En este caso creamos un módulo my_module con los hooks de menu, cron y form_alter. Si son raras las … [Read more...] about Crear módulos en Drupal con Module Builder
Login en Drupal mediante redes sociales con HybridAuth
Existen varios formas de integrar el login mediante redes sociales en Drupal 7 pero después de analizar unas cuantas me quedo con la que integra HybridAuth. HybridAuth es una librería PHP que hace de wrapper o envoltorio de las APIs de la gran mayoría de redes sociales, entre ellas las más famosas, como Twitter, Facebook, Linkedin,... Nos permite acceder a los perfiles de usuario, listado de amigos, activity, publicación de contenidos,... y por ente la posibilidad de que el usuario haga login mediante la red social. Esto nos abstrae y agiliza el desarrollo, sobretodo si vamos a atacar varias plataformas. En el caso que me ocupaba esta vez, necesitaba integrar el login con redes de Facebook, Twitter i Linkedin. El módulo es bastante sencillo de configurar, siendo más costoso definir las apps en las respectivas redes que la propia configuración en Drupal. Una vez logado, el módulo de Drupal utilizaba parte de la información del perfil facilitado por … [Read more...] about Login en Drupal mediante redes sociales con HybridAuth
Cambiar la contraseña de WordPress desde MySQL
Esto es un snippet que no tiene mayor complejidad pero que puede venir muy bien para modificar el password de algún usuario de Wordpress desde la consola de MySQL o un PHPMyAdmin. UPDATE `wp_users` SET `user_pass` = MD5('contraseña') WHERE `user_login` = 'usuario' LIMIT 1; … [Read more...] about Cambiar la contraseña de WordPress desde MySQL