Diferència entre revisions de la pàgina «ASIX/M17/UF3/PT1»

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca
Línia 115: Línia 115:
  
 
De manera que ningú pugui accedir i, per tant, wordpress no faci cap consulta a la BBDD, eliminant així la possibilitat de corrompre les dades mentre fem el canvi.
 
De manera que ningú pugui accedir i, per tant, wordpress no faci cap consulta a la BBDD, eliminant així la possibilitat de corrompre les dades mentre fem el canvi.
{{imatge|M17UF3/PT1-11.png}}
+
{{imatge|M17UF3PT1-11.png}}
  
 
===Protegir pàgines ''wp-admin'' i ''wp-login''===
 
===Protegir pàgines ''wp-admin'' i ''wp-login''===

Revisió del 11:08, 23 feb 2019

Enunciat

En aquesta activitat heu de posar en pràctica cadascuna de les solucions explicades per millorar la seguretat al nostre Wordpress. Heu de fer servir el Wordpress instal·lat al mòdul anterior o tornar a instal·lar una nova màquina amb Wordpress.


Solucions a implantar:

  • Comprovar i/o actualitzar a la darrera versió de PHP
  • Comprovar que tenim Wordpress i plugins actualitzats. Sinó actualitza’ls.
  • Passwords forts i permisos d’usuari. Canviar usuari ADMIN.
  • Instal·lar plugin per fer còpies de seguretat o programar el vostre propi sistema. Instal·lar un WAF (Firewall)
  • Desactivar l’edició de fitxers
  • Desactivar execució de PHP a diversos directoris del vostre Wordpress
  • Limitar intents d’inici de sessió
  • Instal·lar un CAPTCHA
  • Canviar prefix de la bases de dades Wordpress
  • Protegir pàgines wp-admin i wp-login
  • Protegir l’arxiu wp-config
  • Deshabilitar el directori de Browsing o Índex
  • Deshabilitar XML-RPC de Wordpress
  • Desconnectar usuaris per inactivitat
  • Ocultar la versió de Wordpress
  • Canviar permisos d’arxiu
  • Prevenir HOTLINKING

Procediment

Comprovar i/o actualitzar a la darrera versió de PHP

Per a comprovar la versió:

php -v
wordpressm09:~ # php -v
PHP 7.3.1 (cli) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.1, Copyright (c) 1998-2018 Zend Technologies

Veiem que està instal·lada la versió 7.3.1

Al moment de fer aquesta pràctica, segons la pàgina web de PHP, la versió més recent és la 7.3.2. Podem considerar que és una versió actualitzada i no farem res.

Comprovar que tenim Wordpress i plugins actualitzats. Sinó actualitza’ls

Des de l'apartat de TaulerActualitzacions podem veure un resum de l'estat del Wordpress, plugins i temes. Tal com veiem a la captura, estan els 3 apartats updated.

M17UF3PT1-1.png


Passwords forts i permisos d’usuari. Canviar usuari ADMIN

Des de l'apartat Usuaris →Tots els usuaris podem veure una llista dels usuaris del Wordpress. En el meu cas, al moment de la instal·lació, ja vaig definir un usuari administrador que no tingués el nom admin i té una contrasenya forta.

M17UF3PT1-2.png


Instal·lar plugin per fer còpies de seguretat o programar el vostre propi sistema. Instal·lar un WAF (Firewall)

He aprofitat la instal·lació i la configuració del plugin BackWPUp de M09.

M17UF3PT1-3.png


Com a Firewall instal·laré el plugin Wordfence Security

M17UF3PT1-4.png


Desactivar l’edició de fitxers

Haurem d'editar l'arxiu de configuració del Wordpress; en el meu cas es troba a /srv/www/htdocs/wp-config.php. Definirem una variable de PHP nova que farà que Wordpress deshabiliti la pestanya d'edició de fitxers des de la web. Afegirem a l'última línia, per conveniència, la següent definició de constant de PHP.

define('DISALLOW_FILE_EDIT', true);

Desactivar execució de PHP a diversos directoris del vostre Wordpress

Com que fem servir el servidor web Apache, podem tirar d'arxius .htaccess en directoris concrets on volguem definir noves condicions: per exemple, permetre accés des de IPs concretes, permetre o denegar l'accés a diversos arxius en funció de l'extensió, etc.

En aquest cas, se'ns demana prohibir l'execució d'arxius *.php. No tindria sentit aplicar aquesta restricció a tots els directoris, ja que llavors Wordpress no funcionaria at all. El que tindria sentit seria aplicar-ho en directoris multimèdia com ara wp-content/uploads ja que allà no tindrien perquè servir-se arxius PHP i podria ser un lloc on algun atacant pogués camuflar-hi codi maliciós.

Per a aplicar aquestes restriccions tenim 2 opcions:

  • Mitjançant arxius .htaccess en els directoris.
Ideal si no tenim accés a la configuració del servidor, com en el cas d'haver contractat un servidor privat virtual compartit (VPS).
  • Mitjançant directives <Directory> en l'arxiu de configuració del servidor web.
Millor si tenim accés al servidor com a administradors i podem editar els arxius de configuració de l'Apache. És més segur que el primer mètode ja que l'arxiu de configuració no es troba en directoris accessibles des de la web, de manera que és immune a vulnerabilitats relacionades amb fallades de seguretat del servidor web.

La directiva necessària en el primer cas serà

<Files *.php>
deny from all
</Files>

i la situarem al directori a partir d'on volem aplicar la norma (és recursiu en els directoris fills a partir del directori que conté l'arxiu).

En l'altre cas, afegirem la mateixa directiva però entre tags <Directory>

<Directory "/srv/www/htdocs/wp-content/uploads"
  <Files *.php>
    deny from all
  </Files>
</Directory>

Limitar intents d’inici de sessió

Podem trobar diversos plugins que afegeixin aquesta funcionalitat; però el mateix Wordfence Security té aquesta opció a l'apartat All options del seu menú:

M17UF3PT1-5.png


Veiem que a l'apartat de Brute force protection podem definir un límit de fallades en l'usuari/contrasenya (per defecte 20 vegades en 4 hores). També hi ha una opció interessant que és bloquejar intents d'inici de sessió des d'adreces IP en funció de noms d'usuari que nosaltres definim; per exemple, si no fem servir admin o similar per a l'administrador, podem definir-lo perquè un atacant quan provi d'iniciar sessió amb usuari admin, es bloquegi automàticament i no tingui possibilitat de llançar cap altre atac o intent.

Instal·lar un CAPTCHA

Buscarem el plugin No CAPTCHA reCAPTCHA de Google. En el meu cas, perquè l'havia utilitzat en pàgines Wordpress abans i recordo que funcionava bé.

M17UF3PT1-6.png


Després d'instal·lar i activar, trobarem per configurar les claus al menú de l'esquerra a ConfiguracióLogin noCAPTCHA

M17UF3PT1-7.png


Necessitem un compte de Google per a tenir unes claus que ens lliguin a aquest widget que afegirem a la nostra pàgina de login. Seguirem el link que se'ns subministra des del plugin mateix. Omplirem les dades d'acord al que correspongui i ens assegurarem de marcar l'opció reCAPTCHA v2 ja que és l'única que suporta aquest plugin.

M17UF3PT1-8.png


Enviarem i se'ns subministraran els parells de claus per a afegir al plugin i acabar-ne la configuració i posar-lo en marxa.

M17UF3PT1-9.png


Una vegada desat, si per exemple obrim una finestra privada nova al navegador i anem a la pàgina de login, veurem que ens apareix la comprovació del CAPTCHA per a iniciar sessió.

S'ha produït un error en crear la miniatura: No es pot desar la miniatura a la destinació


Canviar prefix de les taules de la base de dades Wordpress

Per a fer això, ens ajudarem de l'eina gràfica de gestió de bases de dades MySQL/MariaDB PHPMyAdmin; de manera que des d'una interfície gràfica, poguem fer els canvis a les taules mentre tenim el lloc web en mode de manteniment i llavors editar l'arxiu de configuració de Wordpress per a fer-hi constar el nou prefix de les taules.

Per a posar el Wordpress en mode de manteniment crearem un arxiu amb el nom .maintenance a l'arrel d'instal·lació del Wordpress amb el següent contingut

<?php $upgrading = time(); ?>

De manera que ningú pugui accedir i, per tant, wordpress no faci cap consulta a la BBDD, eliminant així la possibilitat de corrompre les dades mentre fem el canvi.

M17UF3PT1-11.png


Protegir pàgines wp-admin i wp-login

Protegir l’arxiu wp-config

Deshabilitar el directori de Browsing o Índex

Deshabilitar XML-RPC de Wordpress

Desconnectar usuaris per inactivitat

Ocultar la versió de Wordpress

Canviar permisos d’arxiu

Prevenir hotlinking