
2018-07-02
Zabezpieczenie wordpressa nie jest tak trudne jak może się wydawać, warto jest pamiętać o paru najważniejszych etapach działań. Im bardziej nasza strona internetowa jest bezpieczna, tym bardziej jest ona efektywna.
1. Sprawdzone oraz okresowe aktualizacje
- Jako iż sam CMS czasami wychodzi z pewnymi "dziurami" jak to było w wersji 4.7.0 warto jest aktualizować jedynie wersje, które posiadają poprawki po poprzednikach. Dokładne opisy aktualizacji możemy sprawdzić na oficjalnej stronie Wordpress'a - ODNOŚNIK
2. Zmiana prefiksu wp_ dla tabeli w bazie danych
- Domyślny prefiks jest jak wiadomo taki sam dla każdej instalacji, stąd warto go już początku instalacji zmienić. Oczywiście można w późniejszych fazach rozwoju strony zmienić go, lecz wiadomo podczas instalacji jest to znacznie wygodniejsze i prostsze. Przykładowo, wchodzimy do naszej bazy danych phpmyadmin, następnie wklejamy przykładowy kod, który zmieni nam prefix tabeli dla kolumn _options, _usermeta na sk45s_ (tutaj możemy wpisać najwygodniejszy dla nas)
SELECT * FROM `sk45s_options` WHERE `option_name` LIKE '%wp_%';
SELECT * FROM `sk45s_usermeta` WHERE `meta_key` LIKE '%wp_%';
Warto dodatkowo pamiętać iż trzeba wprowadzić zmiany w pliku wp_config.php, w głównym katalogu naszego wordpress'a./** * 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_';
Na wybrany nasz prefix w tym przypadku:/** * 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 = 'sk45s_';
3. Generujemy własnoręcznie klucze szyfrujące odpowiedzialne za przechowywanie ciasteczek
- W pliku wp_config.php zawarte są wygenerowane klucze przykładowo:
define('AUTH_KEY', 'l1SqAENca$;BTPZwiu7W,G61Tk$U%a:Et4dms6M}u-JU<*+6]e8-={=-KQ]>8kp+'); define('SECURE_AUTH_KEY', '^DWW1AZk)%{s5}7B>b(OY!g@-WC>e.I&|WqcAfh^/ d+mhcF9?5$8L(@D3t[iFz<'); define('LOGGED_IN_KEY', 'ft#<-E$Z<EN-[Gk(*A)Mq-.8%*o: W3*-/)zNx,V6NhZM~gbU!4l-Lj4VqXtQ{!q'); define('NONCE_KEY', 'ZvOK/)By-JtF=*zZ^0C{h+WHYlM;7!)SKg>L]q+9AvTH]+DH8+)OS<~h;kdD3%,{'); define('AUTH_SALT', 'h4<=|Se$4t+|W!d6AcdA)(Itzs3d/PTZ3qr@/US|(Y$VPd~l,;-/>W,l%9t:q{PE'); define('SECURE_AUTH_SALT', '1py&Mw~}C#,_-~H-M8L$<c YfZ@%|`QpYv3f1$-YiQ||Ov-n7sM]ni[`d}|PZ}VL'); define('LOGGED_IN_SALT', '@qeiIM?%Il#IkXi(T9}<15[=.|H:yw`ScWo65BK`fptbL|V.CBYqr~%YM1O+>9+u'); define('NONCE_SALT', '! fagoqhd)>7d1U7iCC ub)hO=-s5pSn]:Cgy/Wxzl$~uKk|x[P:t=x3UL42ZY}h');
Aby je zmienić wchodzimy na stronę ODNOŚNIK , uzyskane klucze kopiujemy i wklejamy zamiast naszych.4. Chowamy domyślne dane do bazy danych
- Wchodzimy do naszego głównego katalogu wordpress'a i tworzymy w nim nowy plik o przykładowej nazwie: wp-db-data.php
- Kolejno otwieramy plik wp_config.php i wycinamy z niego tą zawartość, odpowiedzialną za dane dostępowe do bazy danych. Następnie wklejamy ją do pliku wp-db-data.php, warto jest pamiętać iż na początku kodu musimy dodać "<?php", natomiast na końcu kodu "?>"
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'nazwa_bazy_danych');
/** MySQL database username */
define('DB_USER', 'nazwa_uzytkownika_bazy_danych');
/** MySQL database password */
define('DB_PASSWORD', 'haslo_do_bazy_danych');
/** MySQL hostname */
define('DB_HOST', 'host_bazy_danych');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8mb4');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
- Kolejno zapisujemy plik i ponownie wracamy do wp_config.php i na samej górze pliku po "<?php" dodajemy:
require_once „wp-config-data.php”;
5. Ukrywamy błędy
- Ponownie wchodzimy do pliku wp_config.php i szukamy:
define(‚WP_DEBUG’, false);
- Dodajemy pod:
if ( ! WP_DEBUG ) {
ini_set(‚display_errors’, 0);
}
6. Usuwamy dostęp do niektórych plików
- Poprawne zabezpieczenie wordpress to ukrycie, niektórych ważnych dla nas plików. Aby to zrobić wchodzimy do głównego katalogu ponownie i otwieramy plik .htaccess i na jego początku dodajemy:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{HTTP_REFERER} !^http://(.*)?.TWOJA-NAZWA-DOMENY.pl [NC] RewriteCond %{REQUEST_URI} ^/wp-login\.php(.*)$ RewriteRule ^(.*)$ – [R=403,L] </IfModule>
<FilesMatch „wp-config.*\.php|\.htaccess|readme\.html”> Order allow,deny Deny from all </FilesMatch>
<files xmlrpc.php> order deny,allow deny from all </files>
<FilesMatch „\.(?i:php)$”> Order allow,deny Deny from all </FilesMatch> <Files wp-tinymce.php> Allow from all </Files> <Files ms-files.php> Allow from all </Files>
- Dodatkowo, niektórzy jeszcze zabezpieczają katalog wp_content, lecz my tego nie polecamy ze względu na częste błedy i problemy z działaniem wtyczek czy motywów.
7. Usuwamy plik wp_install.php
- Aby to zrobić wchodzimy do głównego katalogu z wordpressem, nastepnie do folderu /wp_admin/ i nim własnie jest owy plik, który należy wczesniej zgrać na dysk - jako kopia zapasowa. A ten na serwerze (hostingu) po prostu usunąć.
8. Blokujemy możiwość edytowanie wtyczek oraz motywów przez panel administratora
- Wchodzimy do pliku, wp_config.php i dodajemy do niego:
define(‚DISALLOW_FILE_EDIT’, true);
9. Pobieramy wtyczkę odpowiedzialną za dodatkowe zabezpieczenia
- Jak wiadomo na naszej stronie zawsze warto jest mieć najbardziej potrzebne wtyczki, nie ściągamy takich, których nie używamy. Znacznie to spowolni stronę i dodatkwo narazi ją na ewentualne niebezpieczeństwa. Najbardziej polecamy pobranie JEDNEJ ze wtyczek: Wordfence Security – Firewall & Malware Scan, Cerber Security, Antispam & Malware Scan, iThemes Security (formerly Better WP Security)
10. Instalujemy na serwerze certyfikat SSL
- Certyfikat SSL daje nam gwarancję bezpieczeństwa na naszej stronie, aby taki nabyć najlepiej jest zakupić go u dostawcy naszego hostingu. Który pomoże nam w konfiguracji oraz instalacji na danej domenie. Dodatkowo dla naszego serwisu warto zainstalować plugin odpowiedzialny za certyfikat SSL - Really Simple SSL
11. Używamy bezpiecznych haseł
- Zabezieczenie wordpressa nie musi być bardzo wymagające, lecz warto zapamiętać o podstawach. W tym wypadku będzie to bezpieczne i wystarczająco skomplikowane hasło. Najlepszą opcją jest używanie wbudowanych generatorów haseł w wordpress'ie bądź używać zewnętrznych - ODNOŚNIK
12. Usuwamy informację o wersji naszego Wordpressa
- Aby to zrobić musimy wejść do głównego folderu naszego portalu, następnie do katalogu functions.php i dodać na samym końcu fragment kodu:
function remove_bootstrap_version() {
return "";
}
add_filter(‚the_generator’, ‚remove_bootstrap_version’);
remove_action(‚wp_head’, ‚wp_generator’);
13. Zmieniamy domyślny adres logowania
- To obecnie jest jedna z ważniejszych rzeczy ale też jedna z prostszych. Wystarczy zmienić adres logowania do naszego panelu administratora, który domyślnie ukrywa się pod /wp-admin/, na jakikolwiek inny. Do tego warto użyć wtyczki WP Hide Login
14. Logowanie dwustopniowe
- Kolejnym przydatnym zabezpieczeniem jest na pewno logowanie dwustopniowe, które minimaluzuje możliwości dla potencjalnego chętnego na włamanie do naszej strony. W tym wypadku warto pobrać wtyczkę odpowiedzialną za tą czynność. Jedną z lepszych polecanych przez nas jest Google Authenticator - jest to na pewno bardzo duże zabezpieczenie od strony logowania do samego panelu. Daje nam to możliwość logowania się przez generowane klucze w naszej aplikacji mobilnej w smartphone.
15. Zmieniamy nasz login na adres e-mail
- Kolejna ważna kwestia to prosty login do panelu administratora - gdzie dużo osób używa po prostu - "admin"/"Admin". Aby utrudnić ewentualne rozszyfrowanie warto używać po prostu adresu email do logowania. W tym celu pobieramy wtyczkę Email Login i podmieniamy nasz login, na adres email. Oczywiście można to wykonać bez wtyczki, jednakże pokazujemy sposoby takie aby każdy mógł je wykonać bez względu na doświadczenie