Zwiększenie bezpieczeństwa WordPress’a

Zmiana lokalizacji pliku wp-config.php

Zmień nazwę i lokalizację pliku. Swtórz nowy plik wp-config.php w głównym katalogu WorsPress’a o treści:

<?php
include_once ('/sciezka/do/folderu/domeny/moj_folder/pingwiny.php');

Wyłącz edycję plików w wp-config.php

define('DISALLOW_FILE_EDIT', true);

Wyłącz indeksowanie i przeglądanie folderów

Dodaj następujący wpis na początku głównego pliku .htaccess:

Options -Indexes

Wyłącz XML-RPC za pomocą .htaccess

Jeżeli nie korzystasz z mobilnych aplikacji czy zdalnego postowania to dobrze jest wyłączyć tę funkcję. Można to zrobić poprzez dodanie poniższego kodu do głównego pliku .htaccess:

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Wyłączenie możliwości wstrzykiwania skryptów w URL

Dodaj ten kod powyżej linii # BEGIN WordPress w głównym pliku .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteBase / 
RewriteCond %{QUERY_STRING} (\<|%3C).script.(>|%3E) [NC,OR] 
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR] 
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2}) 
RewriteRule ^(.*)$ index.php [F,L] 
</IfModule>

Wyłącz możliwość wykonywania plików PHP w wybranych folderach

Stwórz plik .htaccess np w folderze /wp-content/uploads/ i dodaj poniższy kod:

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

Zmiana uprawnień do plików i folderów

WordPress rekomenduje następujące ustawienia:

755 lub 750 dla folderów
644 lub 640 dla plików
600 dla wp-config.php (także tego przeniesionego)

Hasło na folder wp-admin

Niektóre serwery mają możliwość dodania z poziomu panelu administracyjnego hasła na folder. Warto to wykorzystać i nadać takie na folder wp-admin. Potrójne uwierzytelnienie? Czemu nie 😀

Pluginy warte uwagi

Oprócz powyższych sztuczek warto pomyśleć o: dwuetapowej weryfikacji 2FA, szyfrowaniu łącza SSL, usunięciu wersji WP itp z <head> strony, zmiany adresu logowania do strony czy ustawieniu limitu logowań. Wszystko to potrafią zrobić poniższe wtyczki:

  1. Google Authenticator
  2. Really Simple SSL
  3. Meta Generator and Version Info Remover
  4. WPS Hide Login
  5. WPS Limit Login

Odtwarzanie bazy postgresql z kopii zapasowej

skrypt.sh

 #!/bin/bash
 if ["$(whoami)" != "root"]; then
     echo "Uruchom skrypt jako root!"
     exit 1
 fi
 _DBNAME="$1"
 while [ -z "$_DBNAME" ]; do
     echo "Podaj nazwe bazy!"
     read _DBNAME
 done
 _DBUSER="$2"
 while [ -z "$_DBUSER" ]; do
     echo "Podaj nazwe uzytkownika!"
     read _DBUSER
 done
 _PATH="$3"
 while [ -z "$_PATH" ]; do
     echo "Podaj sciezke do dump\'a bazy!"
     read _PATH
 done
 service postgresql restart
 su - postgres -c "dropdb $_DBNAME"
 su - postgres -c "createdb $_DBNAME -O $_DBUSER"
 su - postgres -c "psql $_DBNAME < $_PATH"

Aktualizacja uprawnień – Laravel

skrypt.sh

#!/bin/bash
if [ "$(whoami)" != "root" ]; then
     echo "Uruchom skrypt jako root!"
     exit 1
fi
_PATH="$1"
while [ -z "$_PATH" ]; do
     echo "Podaj sciezke do projektu w parametrze!"
     read _PATH
done
_USER="$2"
while [ -z "$_USER" ]; do
     echo "Podaj nazwę usera!"
     read _USER
done
chown -R $_USER:www-data $_PATH/./portal
find $_PATH/./ -type f -exec chmod 664 {} \;
find $_PATH/./ -type d -exec chmod 775 {} \;
chgrp -R www-data $_PATH/storage $_PATH/bootstrap/cache
chmod -R ug+rwx $_PATH/storage $_PATH/bootstrap/cache

Node.js – instalacja, aktualizacja, użycie

Instalacja niezbędnych pakietów

# apt-get install debian-keyring debian-archive-keyring apt-transport-https dirmngr

Dodanie źródeł do /etc/apt/sources.list

deb https://deb.nodesource.com/node_10.x stretch main
deb-src https://deb.nodesource.com/node_10.x stretch main

Dodanie kluczy

# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1655A0AB68576280

Instalacja Node.js

# apt-get update
# apt-get install nodejs
$ npm i -g create-react-app
$ npm install -g npm

Użycie

$ create-react-app <nazwa>

Aktualizacja

$ npm -v // pokaż aktualną wersję
$ n lsr // wyświetl dostępne wersje
$ n latest // zainstaluj i użyj najnowszej wersji
$ n 12.0.0 // zainstaluj i użyj wybranej wersji

Instalacja Docker

# apt-get update
# apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
# apt-key fingerprint 0EBFCD88
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
# apt-get update
# apt-get install docker-ce
# apt-get install docker-compose

USB Debian

# cp <file> <device> 
# dd if=<file> of=<device> bs=4M; sync

LDAP – atrybuty

String X.500 AttributeType

CN - commonName
L - localityName
ST - stateOrProvinceName
O - organizationName
OU - organizationalUnitName
C - countryName
STREET - streetAddress
DC - domainComponent
UID - userid

Ustawienie 3 monitorów w LXDE – GTX650Ti

Ustawienie monitorów: pionowy – poziomy – pionowy

$ vim /home/user/.config/autostart/lxrandr-autostart.desktop
[Desktop Entry]
Type=Application
Name=Autostart LXRandR
Comment=Uruchom xrand z ustawieniami LXRandR
Exec=sh -c 'xrandr --output VGA-0 --off --output DVI-D-0 --primary --mode 1920x1200 --pos 1200x0 --rotate normal --output DVI-D-1 --mode 1920x1200 --pos 3120x0 --rotate left --output HDMI-0 --mode 1920x1200 --pos 0x0 --rotate right'
OnlyShowIn=LXDE