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

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

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. Cómo blindar su
    página WordPress
    Por Rodrigo Donini
    @donini

    View Slide

  2. ¡HOLA!
    Soy Donini
    Pueden encontrarme en Twitter,
    GitHub y LinkedIn @donini Página
    web / Blog: www.donini.me

    View Slide

  3. Contrata el 3% de los mejores
    freelancers del mundo.
    ¿QUÉ ES?
    >>> http://bit.ly/donini-toptal <<<
    @donini

    View Slide


  4. Configuraciones adecuadas

    Desarrollo adecuado

    Ambiente actualizado
    Seguridad en WordPress
    https://codex.wordpress.org/Hardening_WordPress
    @donini

    View Slide

  5. 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

    View Slide


  6. Remover o alterar nombres de usuarios con
    la palabra Admin y con ID 1.
    Usuarios y Passwords
    @donini

    View Slide


  7. 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

    View Slide


  8. 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

    View Slide


  9. Aumenta tu seguridad con estos hashs
    Secret Keys
    https://api.wordpress.org/secret-key/1.1/salt/
    @donini

    View Slide


  10. Utilice más capas de seguridad con SMS, QRCode o un PIN
    Two Step Authentication
    https://codex.wordpress.org/Two_Step_Authentication
    @donini

    View Slide


  11. Las constantes utilizadas:

    WP_DEBUG

    WP_DEBUG_LOG

    WP_DEBUG_DISPLAY
    Debug y sus Implicaciones
    https://codex.wordpress.org/Debugging_in_WordPress
    @donini

    View Slide

  12. Localización y Protección del
    Archivo Debug.log

    Local del archivo: wp-content/debug.log

    Permiso: chmod 600

    Order allow,deny
    Deny from all

    @donini

    View Slide

  13. 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

    View Slide

  14. 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’);

    Order allow,deny
    Deny from all


    Removiendo la versión:
    @donini

    View Slide


  15. FDP expone la ruta de aplicación en el disco del servidor
    Full Path Disclosure
    @donini

    View Slide


  16. Bloqueando el acceso a los archivos del directorio wp-includes
    Previniendo Full Path Disclosure

    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]


    Probando si una función existe

    @donini

    View Slide


  17. 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

    View Slide


  18. 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

    View Slide


  19. Protege urls incluyendo llamadas AJAX

    Protege formularios
    Nonces
    https://codex.wordpress.org/WordPress_Nonces
    @donini

    View Slide


  20. 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

    View Slide


  21. Archivo de configuración de Apache
    Protección de directorios

    Options -Indexes


    Archivo .htaccess
    # Deshabilitar la lista de directorios
    Options -Indexes

    Archivos index.html o index.php
    // Silence is Golden
    1
    2
    3
    @donini

    View Slide


  22. 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

    View Slide

  23. 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

    View Slide


  24. 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

    View Slide


  25. Wordfence - www.wordfence.com

    Sitelock - www.sitelock.com

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

    View Slide

  26. @donini
    https://github.com/donini/don-security
    https://wordpress.org/plugins/don-security/

    View Slide

  27. ¡GRACIAS!
    Pueden encontrarme en Twitter,
    GitHub y LinkedIn @donini Página
    web / Blog: www.donini.me
    ¿TIENEN DUDAS?

    View Slide