WordPress turvamine
!NB Kõik õpetused on tehtud kasutades Ubuntu Server 11.04
WordPressi paigaldamine
Varnishi lisamine wordpressile
SuperCache kasutamine
DoS rünnaku tõrjumine mod_evasive mooduliga
Wordpressi paigaldus ja konfigureerimine
Antud toimingud tuleks teha root õigustes.
Mine root-iks:
sudo -i
Tee update kohalike pakettide cache
aptitude update
Tee upgrade pakettidele:
aptitude full-upgrade
Paigalda acpid daemon
aptitude install acpid
Installi apache2 veebi server,mysql andmebaasi server, openssh server, php5 skriptimis keel ning apache2-utils(Apache benchmark tool)
aptitude install apache2 mysql-server ssh php5 php5-mysql apache2-utils
Tõmba alla kõige hilisem .tar fail wordpress.org-ist:
wget http://wordpress.org/latest.tar.gz
Paki lahti wordpressi failid /var/www kausta:
sudo tar zxvf latest.tar.gz --directory=/var/www/
Logi mysql-i sisse:
mysql -u root -p
Loo andmebaas student_wordpress:
create database student_wordpress;
Loo kasutaja student:
create user student;
Anna kõik õigused student kasutajale:
GRANT ALL PRIVILEGES ON student_wordpress.* TO student@localhost IDENTIFIED BY ‘student’;
Välju mysql-ist:
quit;
Loo uus default veebi saidil põhinev veebi sait:
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/wp
Muuda ära DocumentRoot /etc/apache2/sites-avalible/wp failis:
nano /etc/apache2/sites-avalible/wp
Lisa DocumentRoot /var/www rea lõppu DocumentRoot /var/www/wordpress
DocumentRoot /var/www/wordpress
Keela ära tavaline default veebi sait(seda ei ole vaja antud paigalduses):
a2dissite default
Luba wordpress-i veebisait
a2ensite wp
Tee apache-ile restart
service apache2 restart
Muuda wordpress konfiguratsiooni faili:
nano /var/www/wordpress/wp-config-sample.php
Muuda DB_NAME, DB_USER, DB_PASSWORD vastavalt näitele:
define('DB_NAME', 'student_wordpress');
/** MySQL database username */
define('DB_USER', 'student');
/** MySQL database password */
define('DB_PASSWORD', 'student');
Kopeeri uus konfiguratsiooni fail wordpressi konfiguratsiooni failiks:
cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php
Tee apache2 service-ile reload
service apache2 reload
Mine wordpressi saidile kasutades host-i IP aadressi(antud näites:192.168.56.102);
http://192.168.56.102
Vali saidi nimi, kasutajanimi, salasõna ning meili aadress.
Vali install
Installi lõppedes tee kindlaks,et kõik toimib(log sisse, vaata wp verisooni ilmselt midagi sellist: You are using WordPress 3.2.1.)
mod_evasive paigaldus ja konfigureerimine
Sissejuhatus
Mod_evasive on lisamoodul Apache'i veebiserveri jaoks, mille abil on võimalik vähendada või täielikult tõrjuda HTTP DoS, DDos või brute force rünnakute mõju. Ühtlasi saab seda kasutada ka monitooringu teostamiseks, kuna moodulit on lihtne panna suhtlema erinevate tulemüüride ja ruuteritega.
Monitooring baseerub dünaamilisel IP aadressitest ja URI-dest koosneval räsitabelil, kust siis keelatakse IP aadressid, mis:
- küsivad ühte lehte rohkem kui paar korda sekundis
- teevad rohkem kui 50 üheaegset requesti sama laps-protsessi vastu
- üritavad teha ükskõik millist requesti samal ajal kui nad on mustas nimekirjas
Paigaldus
Paigaldamine Ubuntu 11.04 serverile on küllaltki lihtne
apt-get install libapache2-mod-evasive
Konfigureerimine
Kõigepealt on viisakas luua koht, kuhu antud moodul oma logi saaks salvestada
mkdir /var/log/apache2/mod_evasive chown www-data:www-data /var/log/apache2/mod_evasive
NB! Logimine praegu ei tööta
Mod_evasive moodulil ei lubata antud kausta kirjutada
Couldn't open logfile /var/log/apache2/mod_evasive/dos-192.168.6.13: Permission denied
Nüüd jääb üle lisada vastavad read oma virtuaalsesse hosti (N:~/apache2/sites-enabled/wordpress lõppu)
<ifmodule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSLogDir /var/log/apache2/mod_evasive DOSEmailNotify root@localhost DOSWhitelist 127.0.0.1 </ifmodule>
Antud väärtusi tuleks kohandada vastavalt vajadustele
Parameetrite kirjeldused:
- DOSHashTableSize: Räsitabeli suurus, kus IP aadresseid hoitakse.
- DOSPageCount: Lehekülgede arv DOSPageInterval sekundis.
- DOSPageInterval: Aeg sekundites, mida kasutab DOSPageCount.
- DOSSiteCount: Objektide arv DOSSiteInterval sekundites.
- DOSSiteInterval: Aeg sekundites, mida kasutab DOSSiteCount.
- DOSBlockingPeriod: Aeg sekundites, kui kaua IP on bannitud. Kui IP üritab serverile selle aja see ligi pääseda, siis algab loendus ueusti nullist.
- DOSLogDir: Valikuline. Kataloogitee, kuhu logi salvestatakse. Kui pole määratud kasutatakse /tmp.
- DOSEmailNotify: Valikuline. Mail kuhu teated saadetakse.
- DOSSystemCommand: Valikuline. Käsk mis käivitatakse, kui IP bannitakse. Näiteks:
- DOSSystemCommand "/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP"
- DOSWhitelist: Valikuline. Nimekiri IP aadressitest, mida ei blokita.
Kui konfigureerimine valmis, tuleb Apache serverlie teha restart
/etc/init.d/apache2 restart VÕI service apache2 restart
Varnish Cache-i paigaldamine ja konfigureerimine
Sissejuhatus
Varnish Cache - see on HTTP kiirendaja, ta on vaja, et maksimaalselt suurendada veebilehekülje kiirendust. Varnish Cache salvestab mälus veebilehekülg nii, et veebiserverid ei pea koguda sama lehekülg uuesti ja veel kord uuesti.
Paigaldamine
Kui te soovite installida Varnishit, siis on vaja teha uuendusi. Selle käsu abil uuendame opsüsteemi:
sudo apt-get update
Paigaldamise käsk:
sudo apt-get install varnish
Konfiguratsiooni muutmine
Esimene, mis me teeme, default pordi muutmine. Tuleb muuta faili /etc/default/varnish:
nano /etc/default/varnish
Konfigureerimine Varnichi jaoks kirjutatakse VCL keeles.
Fail konfiguratsioonidega vaikselt asub siin /etc/varnish/default.vcl Fail oleneb mitmest osadest, aga mis on vaja töötamise alguseks - see on backendi viitamine:
Backend - see on server, kuhu varnish saadab päringut, kui tal ei ole vastavad andmeid cache-is.
Kopeerige fail /etc/varnish/default.vcl ja andke teine nimetus
cp /etc/varnish/default.vcl /etc/varnish/itkool.vcl
Ava fail /etc/varnish/itkool.vcl ja sisesta
nano /etc/varnish/itkool.vcl
## Redirect requests to Apache, running on port 8000 on localhost backend apache { .host = "127.0.0.1"; .port = "8000"; } ## Fetch sub vcl_fetch { ## Remove the X-Forwarded-For header if it exists. remove req.http.X-Forwarded-For; ## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user. set req.http.X-Forwarded-For = req.http.rlnclientipaddr; ## Added security, the "w00tw00t" attacks are pretty annoying so lets block it before it reaches our webserver if (req.url ~ "^/w00tw00t") { error 403 "Not permitted"; } ## Deliver the content return(deliver); } ## Deliver sub vcl_deliver { ## We'll be hiding some headers added by Varnish. We want to make sure people are not seeing we're using Varnish. ## Since we're not caching (yet), why bother telling people we use it? remove resp.http.X-Varnish; remove resp.http.Via; remove resp.http.Age; ## We'd like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it. remove resp.http.X-Powered-By; }
Salvesta fail CTRL + O käsuga
Apache konfiguratsiooni muutmine
Ava fail etc/apache2/ports.conf ja leia
nano /etc/apache2/ports.conf
NameVirtualHost *:80 Listen 192.168.6.101:80
Muuda
NameVirtualHost *:8000 Listen 192.168.6.101:8000
...VHOSTS...
Praegu paigaldame lisa Apache moodul selle jaoks, et veenduda kas kasutaja IP aadress lõpeb korrektselt. Praegu Varnish on põhimõtteliselt seotud apache2.
Kuna Lakk on põhimõtteliselt rääkides apache2, sa võib näidata aadressil 127.0.0.1 nagu külastaja IP.
nano apt-get install libapache2-mod-rpaf
RPAF (Reverse Proxy Add Forward) moodul ...
Deemonide restart
Restart Apache server:
/etc/init.d/apache2 restart
Super Cache
Selle osa koostamine on veel töös.
Super Cache-i paigaldamiseks tuleb sisse logida admin-paneeli. Siis vasakult nimekirjast valida Plugins-i alt Add new.
Siis kirjutada otsingusse "WP Super Cache".
Pärast seda valida nimekirjast Super Cache ning vajutada "Install now".
Pärast seda "Activate the Plugin".
Super Cache -i toimimiseks on vajalik valida Custom structure Permalink-i seadete alt ning sisestada sinna "p=?/%post_id%/".
Edasi vali vasakult Settings-u alt WP Super Cache.
Iptables
protsessis...
*filter :INPUT DROP [1066:176948] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [58875:56066315] -A INPUT -s 192.168.6.101/32 -p tcp -m tcp --dport 8000 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -s 192.168.6.1/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7 -A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable -A INPUT -s 192.168.6.101/32 -j ACCEPT -A INPUT -m state --state ESTABLISHED -j ACCEPT -A INPUT -s 192.168.6.200/32 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -s 192.168.6.200/32 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -s 192.168.6.200/32 -p tcp -m tcp --dport 443 -j ACCEPT -A OUTPUT -o lo -j ACCEPT COMMIT