Archiv der Kategorie: WordPress Tutorials

WordPress Usability and Addons Integration unblog Technical Workarounds and Tutorials for Professionals

WordPress URL ändern

Website URL und Links in der WordPress Datenbank ändern

WordPress Umstellungen und die Migration erfordern mehrere Schritte zur Anpassung der URL. Das festlegen der WordPress-Adresse ist bei einer Neuinstallation, unter Einstellungen Allgemein bei WordPress-Adresse (URL) und Webseite-Adresse (URL). Für Migration und URL Änderungen sind weitere Anpassungen vorzunehmen.

wordpress-adresse-url

Bei der Migration kann es vorkommen, dass der Zugang zum WP-Admin versperrt ist, das nachdem der A Record oder CNAME im DNS, und die Virtualhost Konfiguration beim Webserver bereits geändert wurde. Auch bei der Umstellung der Seite von Dev auf Live muss die URL geändert werden. An dieser stelle kann die Webseite-Adresse und die Links im Content mit phpMyAdmin geändert werden.

WordPress-Adresse (URL) und Webseite-Adresse (URL) in phpMyAdmin ändern

Um die WordPress-Adresse und Webseite-Adresse in phpMyAdmin zu ändern, öffnet man die Datenbank und geht auf Anzeigen, im nun geöffneten Tree wählt man die Tabelle wp_options, links sucht man in der Spalte option_name nach siteurl und home, hier mit Bearbeiten den Wert im Feld option_value mit der neuen URL ändern und mit OK bestätigen.

WordPress in phpMyAdmin Feld home und siteurl ändern
Abbildung: phpMyAdmin Anzeigen siteurl / home

Hinweis: Der WordPress Standard Datenbank Präfix ist wp_, hier wurde der Präfix zuvor auf wp_futbg5 geändert.

Möchte man die Datenbank nach Text durchsuchen, geht man nach dem öffnen der Datenbank auf Suchen und trägt das Suchargument eingebunden zwischen %-Zeichen ein. In diesem Fall soll die Entwickler Umgebung zur Live Seite gemacht werden, wobei dev.artemis.org die Entwickler URL ist, und www.artemis.org die Live URL der Seite.

WordPress mit phpMyAdmin nach Wörter und Pharse durchsuchen
phpMyAdmin Durchsuchen der Datenbank

Bei In der/den Tabelle(n) klickt man auf Alle auswählen, anschlissend auf OK. In der Regel sind die treffer in den Tabellen wp_posts und wp_postmeta, jeweils im Feld post_content zu finden.

In phpMyAdmin bei SQL kann die URL mit folgendem SQL-Befehl durch Suchen Ersetzen in den Tabellen geändert werden.

UPDATE wp_posts
SET guid =REPLACE(
    guid,
    "dev.artemis.org",
    "www.artemis.org"
);

UPDATE wp_posts
SET post_content = REPLACE(
    post_content,
    "dev.artemis.org",
    "www.artemis.org"
);

UPDATE wp_postmeta
SET meta_value = REPLACE(
    meta_value,
    "dev.artemis.org",
    "www.artemis.org"
);

UPDATE wp_links
SET link_url = REPLACE(
    link_url,
    "dev.artemis.org",
    "www.artemis.org"
);

Werden Plugins verwendet, die Tabellen mit URLs beinhalten, muss der Inhat hier ebefalls geändert werden.

UPDATE tabellenname
SET feld_mit_urls = REPLACE(
    feld_mit_urls,
    "dev.artemis.org",
    "www.artemis.org"
);

Anstelle des Platzhalter tabellenname und feld_mit_urls den tatsächlichen Tabellenname eintragen, die betreffenden Plugins mit den Tabellen können wie oben beschrieben, mit Textsuche in phpMyAdmin gefunden werden.

WordPress vor Brute-Force Attacken schützen

WordPress Server vor Brute-Force Login versuche durch fail2ban schützen

WordPress Schutz bietet sich durch mehrere Methoden an, neben Lock-Down Plugins, die IP-Adressen und Zeitstempel jedes fehlgeschlagenen Anmeldeversuchs aufzeichnen und blockieren, wird mit fail2ban die Kernel Firewall gesteuert, und damit der host für eine vorgegebene Zeit gesperrt.

  Zur Installation von fail2ban auf CentOS 7 muss das EPEL Repository hinzugefügt werden. Für Debian ist fail2ban im Standard Repository.

$ yum install epel-release

Die Installation hier wie folgt als root, es wird eine Standard Konfiguration bereitgestellt, und erfordert keine weiteren Anpassungen:

$ yum install fail2ban -y

Nachdem fail2ban auf dem Server installiert ist, können die Apache access_log nach Anmeldeversuchen untersucht werden.

10.241.83.170 - - [02/Jul/2017:21:23:17 +0200] "POST /xmlrpc.php HTTP/1.1" 200 406
10.241.83.170 - - [02/Jul/2017:21:23:19 +0200] "GET /wp-login.php HTTP/1.1" 200 6387
10.241.83.170 - - [02/Jul/2017:21:23:19 +0200] "POST /wp-login.php HTTP/1.1" 200 6561
10.120.13.157 - - [02/Jul/2017:21:27:55 +0200] "POST /xmlrpc.php HTTP/1.1" 200 406
10.120.13.157 - - [02/Jul/2017:21:27:56 +0200] "GET /wp-login.php HTTP/1.1" 200 6440
10.120.13.157 - - [02/Jul/2017:21:27:56 +0200] "POST /wp-login.php HTTP/1.1" 200 6614

Damit fail2ban weiss nach welchen parser in der Logdatei gesucht werden soll, wird ein Filter erzeugt, durch editieren mit vim oder anderen bevorzugten Editoren, erstellen wir die Filter Datei mit vi /etc/fail2ban/filter.d/wp-auth.conf:

# WordPress brute force auth filter: /etc/fail2ban/filter.d/wp-auth.conf:
#
# Block IPs trying to auth wp wordpress
#
[Definition]
failregex = ^<HOST> .*"POST \/wp-login\.php HTTP\/.*$
            ^<HOST> .*"POST \/xmlrpc\.php HTTP\/.*$
ignoreregex =

Die Hauptkonfiguration von fail2ban befindet sich in der Datei /etc/fail2ban/jail.conf, diese kopiert man zu jail.local, oder es genügt auch nur die zusätzliche Filter Einstellung einzutragen, die Konfiguration hinzufügen mit vi /etc/fail2ban/jail.local

[wp-auth]
enabled = true
filter = wp-auth
action = iptables-multiport[name=AuthFailures, port="http,https"]
logpath = %(apache_access_log)s
bantime = 1800
maxretry = 5

Nach 6 Anmeldeversuche (maxretry) wird für 30 min. blockiert.

Bevor fail2ban eingesetzt wird, ist ein blick in /etc/fail2ban/jail.conf gegeben, unter der Sektion [INCLUDES] sind die Pfade der gerade verwendeten Linux Distribution definiert, bei der Zeile before = paths-distro.conf, hier verwenden wir CentOS 7 dabei ist die passende Datei /etc/fail2ban/paths-fedora.conf :

[INCLUDES]
before = paths-centos.conf

Die Datei paths-fedora.conf  kopieren wir zu paths-centos.conf. Es sollen alle Logs unter /var/www/*/logs ausgelesen werden, dabei die Pfade zu den Apache Logs ggf. anpassen:

# apache server log
apache_error_log = /var/log/httpd/*error_log
apache_access_log = /var/log/httpd/*access_log

# apache virtual hosts
apache_error_log = /var/www/*/logs/*error_log
apache_access_log = /var/www/*/logs/*access_log

Nun fail2ban neu starten um den Filter zu aktivieren.

 $ systemctl restart fail2ban

fail2ban Status überprüfen wie folgt.

$ fail2ban-client status wp-auth

Der iptables Status des Filters in der Kette ausgeben.

$ iptables -vnL | grep AuthFailures

Die iptables Ausgabe des Filter AuthFailures in etwa viel folgt.

Chain f2b-AuthFailures (1 references)
 pkts bytes target     prot opt in     out     source               destination
 252K   32M RETURN     all  --  *      *       10.241.83.170/0            0.0.0.0/0
 232K   29M RETURN     all  --  *      *       10.120.13.157/0            0.0.0.0/0

Hat man sich selber durch zu viel Fehlversuche und Tests ausgesperrt, kann man sich mit folgendem Command wieder entsperren.

$ fail2ban-client set wp-auth unbanip 10.110.51.25

  Der vorteil dieser Methode ist es, durch fail2ban wird der host und alle Dienste blockiert, der Bot wird in der regel zur nächsten Webseite gehen, um die Attacken fortzusetzen, auch ssh und ftp anfragen gehen ins leere, und ICMP anfragen bleiben für die IP-Adresse unbeantwortet.

WordPress Server vor Brute-Force Login versuche durch fail2ban schützen