• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar
  • Skip to footer

WordPress desde Zero

Tutoriales, Herramientas, Comunidad y Podcast sobre WordPress

  • Podcast de WordPress
  • Cursos WordPress GRATIS
  • La Comunidad de WordPress
  • Contacto

WordPress sin plugins por Dani Serrano

Hola muy buenos días muy buenas tardes o muy buenas noches 😉 Te doy la bienvenida a Meetup Majadahonda WordPress sin plugins.

Este fue mi primer meetup como ponente en Meetup Majadahonda WordPress sin plugins, el primero en Majadahonda y el primero de todos también. Me gustó muchísimo esta experiencia y estoy deseando repetirla.

Aquí abajo encontrarás tanto el vídeo que Antonio Postigo de HoyStreaming.com nos grabó, como la presentación que utilicé para dar la charla en este evento.

Antes de nada dar también las gracias a Julian de CowUp y a Pedro Santos de Host-Fusion.com y a toda la comunidad de Meetup WordPress Majadahonda.

Lo que te vas a encontrar aquí

  • 1 Meetup Majadahonda WordPress sin plugins – Presentación
  • 2 Meetup Majadahonda WordPress sin plugins – Esquema de la charla
    • 2.1 Cambios en el archivo wp-config
    • 2.2 Cambios en el archivo .htaccess
    • 2.3 Cambios en el function.php
  • 3 Meetup Majadahonda WordPress sin plugins – Conclusión
  • 4 Meetup Majadahonda WordPress sin plugins – El NetWorking

Meetup Majadahonda WordPress sin plugins – Presentación

WordPress sin Plugins por Dani Serrano en WordPress desde Zero
WordPress sin Plugins por Dani Serrano en WordPress desde Zero

En esta presentación vemos cómo llevar a la práctica, de forma manual, algunos de los puntos mas importantes de la seguridad de WordPress.

El objetivo de esta charla fue doble:

  1. Acercarnos un poquito a la parte de ficheros de configuración y cambios manuales en WordPress.
  2. Cubrir, con estos cambios manuales, algunos de los puntos más importantes de la seguridad en WordPress.
  • Y como punto extra, hacer una comparación de os puntos que habíamos cubierto de forma manual con los punto que ns permite cubrir Sucuri Security con un solo clic.

Aquí te dejo la presentación que utilicé para esta charla :


Aquí está el vídeo que Antonio grabó y difundió en streaming :

Meetup Majadahonda WordPress sin plugins – Esquema de la charla

Cambios en el archivo wp-config

(Descargar)

  • Salts
  • db_name
  • db_user_admin
  • db_user_admin_password
  • prefijo
  • Modo debug
  • Rutas del contenido
  • Forzar SSL en el Login y panel de administrador
  • URLs de wordpress
  • Limitar la edición de código desde el panel de administrador
  • Limitar revisiones
<?php
/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the
 * installation. You don't have to use the web site, you can
 * copy this file to "wp-config.php" and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * MySQL settings
 * * Secret keys
 * * Database table prefix
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/Editing_wp-config.php
 *
 * @package WordPress
 */

// ** MySQL settings ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'local' );

/** MySQL database username */
define( 'DB_USER', 'root' );

/** MySQL database password */
define( 'DB_PASSWORD', 'root' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

/**
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY', 'UuS6dgxBxGWTOFB30Xcm+6tltgRvm3p8j5TgUOn+zXIlkJe4f6dv0S8yjQJ0eh9H9M3lskKLrQXYn5eG3ucDIg==');
define('SECURE_AUTH_KEY', 'UBjdjCVMfyG2qf0sdV2euNpZXYbIOyWINNccjjoL6aXHYIyPjUW48c6iuIckVc4Qns9LWuXEVwhLFfaR8mYZ0g==');
define('LOGGED_IN_KEY', 'jymKGpHNfZONBkws2lLbh1BMDKqqe6E5dl4Cq/+yoFEnfPnxMmMi32ifCRFjmVNszrKplhVaftEt7FBO8NKKmA==');
define('NONCE_KEY', 'VN92uyY/YQRBWzist178SH1HHN3grmq9Y3icbAKjglHG9MYjPRkMN2l32QT3niZQ3zlWu8BxhdPlI08NtB3mag==');
define('AUTH_SALT', '3szYezAj4UUkdebpGQObqPbZC30OjGJL4Q760X+kFoWPChYdTODSY4xVMzYCyStk5Qo7zTS3Qp0a6YcABBIV5w==');
define('SECURE_AUTH_SALT', 'zI6gjXG7wQyMdn7hFSPGx1kNBLnvouc1B3r9lSH3n5AubJbWJ4/Gj/Heaf8laPYB5lCSdzyuPmk+qwsaiAYXiA==');
define('LOGGED_IN_SALT', '4jI391jFjXBukaJ4i0h4riK9ARH7I4NL19LcgJW4bTLdxwCS7UZmDaX8o/QEz7OK6QyPNZC+WwH2xNKWnaPGGw==');
define('NONCE_SALT', 'i8cOSLze1VM0c5y2PoAwXuq8Z+c765DnwbT8cz8tE7V9JmT00NdKjZsODw+zopUEJpaZ8yQgeKJqgRP/dBsV5w==');

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = 'wp_';

/*No permitir la edicion de Themes y Plugins*/
define( 'DISALLOW_FILE_EDIT', true );

/*Modificar rutas de contenidos*/
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/blog/wp-content' );
define( 'WP_CONTENT_URL', 'http://wordpress.dev/blog/wp-content' );
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/blog/wp-content/plugins' );
define( 'WP_PLUGIN_URL', 'http://wordpress.dev/blog/wp-content/plugins' );
$theme_root = WP_CONTENT_DIR . '/themes'; 
define( 'UPLOADS', 'wp-content/media' );

/* Inserted by Local by Flywheel. See: http://codex.wordpress.org/Administration_Over_SSL#Using_a_Reverse_Proxy */
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
 $_SERVER['HTTPS'] = 'on';
}
/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) )
 define( 'ABSPATH', dirname( __FILE__ ) . '/' );

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

Cambios en el archivo .htaccess

(Descargar)

  • Bloquear acceso al directorio wp-includes.
  • Bloquear acceso a WP-CONFIG.
  • Sólo permitir nuestra IP en el login.
  • Proteger acceso al archivo HTACCESS.
  • Cerramos acceso a directorios de themes y plugins.
  • Forzar redirección a HTTPS.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

#SSL
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Bloqueamos acceso al directorio includes
<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>

# Bloqueamos acceso a WP-CONFIG
<Files wp-config.php>
 Order Allow,Deny
 Deny from all
</Files>

# Sólo nuestra IP en el login
<Files wp-login.php>
 Order Allow,Deny
 Deny from all
 Allow from 127.0.0.1
</Files>

# Protegemos nuestros HTACCESS
<Files ~ “^.*\.([Hh][Tt][Aa])”>
 Order allow,deny
 Deny from all
 Satisfy all
</Files>


# Cerramos acceso a directorios de themes y plugins

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

# No permitir ver los directorios
Options -Indexes

Cambios en el function.php

(Descargar)

  • Eliminar la meta etiqueta generator
  • Eliminar acceso por XMLRPC
  • Eliminar acceso por API REST
//Eliminar la meta etiqueta Generator
remove_action('wp_head','wp_generator');

//Deshabilitar la REST-API
add_filter('rest_enabled','__return_false');
add_filter('rest_jsonp_enabled','__return_false');

//Deshabilitar XML-RPC
add_filter('xmlrpc_enabled', '__return_false');

Meetup Majadahonda WordPress sin plugins – Conclusión

Como te contaba este fue mi primer meetup como ponente y me encantó la experiencia. Me sentí muy bien recibido y muy cómodo. Recibí preguntas tanto de la gente que allí estaba como de la gente que estaba viéndolo online y tanto yo como los compañeros contestamos y resolvimos las dudas.

Alguna duda también quedó para después porque no lo teníamos del todo claro. Pero después de echar un vistazo en Google quedó todo resuelto 🙂

Meetup Majadahonda WordPress sin plugins – El NetWorking

Como no podía ser de otro modo al terminar la charla nos fuimos la gran mayoría a tomar unas cervezas y a seguir compartiendo 🙂

Desde aquí quiero dar un especial saludo a los compañeros de Collado Villalba, que hasta allí se acercaron y también a Jesús, organizador de la meetup de Rivas que también hizo el esfuerzo de acercarse.

Y por supuesto no puedo olvidarme de Elena (Fundadora de Cotton Sweet), que desde el primer que nos conocimos me está apoyando.

Gracias a todos.

@DaniSerrano_

¡Hola!
Mi nombre es Dani, y me encanta aprender y enseñar.
Soy Programador y formador especializado en WordPress.
Disfruto muchísimo asistiendo y organizando eventos de la Comunidad de WordPress y conociendo gente :)

Reader Interactions

Comments

  1. Pablo Romero says

    11/03/2018 at 00:04

    Muy bueno gracias Dani

    Responder
    • Dani says

      11/03/2018 at 11:31

      De nada Pablo 🙂
      Celebro que te haya gustado.
      Cualquier duda o sugerencia será bienvenida.

      Responder

Deja un comentario Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Primary Sidebar

Para estar al día con WordPress

¿De qué quieres que hablemos?

Últimos Episodios del Podcast WordPress desde Zero

  • Episodio 121 - WordCamp Las Palmas de Gran Canaria desde dentro Ⓦ #121 WordCamp Las Palmas de Gran Canaria desde dentro y seguridad con Javier Casares
  • Episodio 120 - Diferencias entre WordPress.com y WordPress.org Ⓦ #120 Diferencias en WordPress.com y WordPress.org
  • Episodio 119 - WordCamp Zaragoza desde dentro Charlas networking y vivencias Ⓦ #119 WordCamp Zaragoza 2019 desde dentro – La tribu de WordPress #8 y Seguridad en WordPress #10
  • Episodio 118 - WORDCAMP LAS PALMAS DE GRAN CANARIA Y SORTEO DE ENTRADA Ⓦ #118 WordCamp Las Palmas de Gran Canaria y sorteo de entrada gratuita

¿Necesitas crear una web con WordPress?

Haz click en la siguiente imagen y gana 20% de descuento en Raiola Networks por ser oyente de WordPress desde Zero. Raiola Networks es el proveedor de alojamiento Web con las mejores prestaciones del mercado, pimer año de dominio gratis y un soporte excelente.

Hosting SSD

Footer

Contacto

  • Contacto WordPress desde Zero
  • SoyDani.com
  • Términos y Condiciones

Podcast


Redes Sociales

Para estar al día con WordPress

Curso de WordPress para profesionales en Madrid.
También edición ONLINE.
Infórmate sin compromiso.

Acceder a Cursos de WordPress

WordPress desde Zero


Tutoriales Comunidad Herramientas Podcast