Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Como blindar su página WordPress - versión en e...

Como blindar su página WordPress - versión en español

Esta charla fue presentada en el WordCamp Buenos Aires 2017 en 08/07/2017. (This talk was presented in the WordCamp Buenos Aires 2017 in 7/8/2017.)
https://2017.buenosaires.wordcamp.org

Rodrigo Donini

July 08, 2017
Tweet

More Decks by Rodrigo Donini

Other Decks in Programming

Transcript

  1. Contrata el 3% de los mejores freelancers del mundo. ¿QUÉ

    ES? >>> http://bit.ly/donini-toptal <<< @donini
  2. • Configuraciones adecuadas • Desarrollo adecuado • Ambiente actualizado Seguridad

    en WordPress https://codex.wordpress.org/Hardening_WordPress @donini
  3. WPScan • Detectar la versión de WordPress • Enumerar vulnerabilidades

    • Enumerar usuarios y romper passwords débiles • Enumerar plugins y temas instalados • Otros http://wpscan.org https://wpvulndb.com @donini
  4. • Remover o alterar nombres de usuarios con la palabra

    Admin y con ID 1. Usuarios y Passwords @donini
  5. • Bloquear accesso al listado de usuarios Usuarios y Passwords

    http://www.meu-site.com.br/?author=1 http://www.meu-site.com.br/authors/admin RewriteCond %{REQUEST_URI} ^/$ RewriteCond %{QUERY_STRING} ^/?author=([0-9]*) RewriteRule ^(.*)$ http://www.meu-site.com.br.com/ [L,R=301] Forma de url: Agregar reglas a su archivo .htaceess es una de las maneras: @donini
  6. • Cambie las claves con frecuencia, especialmente si usas ordenadores

    públicos. Uso de Passwords Fuertes https://en.support.wordpress.com/selecting-a-strong-password/ @donini
  7. • Utilice más capas de seguridad con SMS, QRCode o

    un PIN Two Step Authentication https://codex.wordpress.org/Two_Step_Authentication @donini
  8. • Las constantes utilizadas: • WP_DEBUG • WP_DEBUG_LOG • WP_DEBUG_DISPLAY

    Debug y sus Implicaciones https://codex.wordpress.org/Debugging_in_WordPress @donini
  9. Localización y Protección del Archivo Debug.log • Local del archivo:

    wp-content/debug.log • Permiso: chmod 600 <Files debug.log> Order allow,deny Deny from all </Files> @donini
  10. Exposición de la Versión • Meta tag generator en marcación

    HTML y XHTML: • Tag generator en feed ATOM, RSS 2 (posts y comentarios) y RDF • En comentario HTML • En comentario en el archivo de exportación • En parámetros de URL • En archivos del core: • /readme.html • /wp-admin/install.php • /wp-admin/upgrade.php • /wp-links-opml.php` @donini
  11. Bloqueando la Exposición de la Versión • Archivos que no

    son necesarios: • /readme.html • /license.txt • /wp-config-sample.php • Archivos Temporarios: • /wp-admin/install.php • /wp-admin/upgrade.php public function remove_versio() { global $wp_version; $wp_version = 'version_hidden'; } add_action(‘init’,’remove_version’); <Files nome-do-arquivo.extensao> Order allow,deny Deny from all </Files> • Removiendo la versión: @donini
  12. • FDP expone la ruta de aplicación en el disco

    del servidor Full Path Disclosure @donini
  13. • Bloqueando el acceso a los archivos del directorio wp-includes

    Previniendo Full Path Disclosure <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule> • Probando si una función existe <?php if ( !function_exists( 'mi_function' ) ) exit; ?> @donini
  14. • Permisiones adecuadas • Prefijo de las tablas Cómo Proteger

    el Banco de Datos $table_prefix = ‘wpd_meu_site_’; https://codex.wordpress.org/Database_Description @donini
  15. • Antes de elegir un plugin o tema siempre verificar

    el WPScan Vulnerability Database • Evitando SQL Injection en sus temas y plugins: SQL Injection $sql = $wpdb->prepare( ‘[MINHA-QUERY-SQL]’, $variavel ); $sql = $wpdb->prepare( ‘MI-QUERY-SQL-CON-STRING-%s-INT-%d- FLOAT- %f’, $integer, $string, $float); http://codex.wordpress.org/Class_Reference/wpdb @donini
  16. • Protege urls incluyendo llamadas AJAX • Protege formularios Nonces

    https://codex.wordpress.org/WordPress_Nonces @donini
  17. • Definiendo el uso de SSL SSL En WordPress define(

    'FORCE_SSL_LOGIN', true ); // Forza el uso solamente de login en ambiente seguro define( 'FORCE_SSL_ADMIN', true ); // Forza el uso para todo el area administrativa, incluyendo login RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 1 2 3 @donini
  18. • Archivo de configuración de Apache Protección de directorios <Directory

    /var/www/html> Options -Indexes </Directory> • Archivo .htaccess # Deshabilitar la lista de directorios Options -Indexes • Archivos index.html o index.php <?php // Silence is Golden 1 2 3 @donini
  19. • Donde normalmente se suele poner: Protegiendo el Archivo wp-config.php

    /public_html/wp-config.php • Donde se sugiere colocar /wp-config.php https://codex.wordpress.org/Editing_wp-config.php @donini
  20. Disallow_File_Edit Versus Disallow_file_Mods • DISALLOW_FILE_EDIT: inhabilita los cambios en archivos

    de temas y plugins • DISALLOW_FILE_MODS: inhabilita la edición de los archivos y actualizaciones automáticas. @donini
  21. • Casi un 60% de las instalaciones WordPress están desactualizadas

    en el mundo todo. • Como ya se habló un montón de veces, mantener un ambiente debidamente actualizado minimiza al máximo los fallos de vulnerabilidad y, luego, los intentos de invasión. • La actualización está definida para core y debe ser extendida para los plugins, temas, el sistema operacional y todos los demás programas. Una versión desactualizada puede dejar puertas abiertas y con la llave en la cerradura. Y eso no es responsabilidad de la aplicación. Actualización del WordPress https://codex.wordpress.org/Updating_WordPress @donini
  22. • Wordfence - www.wordfence.com • Sitelock - www.sitelock.com • iThemes

    Security - ithemes.com/security Otros Plugins de Seguridad @donini