WordPress turvamine: Difference between revisions
No edit summary |
|||
(244 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
'''!NB Kõik õpetused on tehtud kasutades Ubuntu Server 11.04''' | |||
Viimati muudetud {{REVISIONDAY2}}/{{REVISIONMONTH}}/{{REVISIONYEAR}} {{REVISIONUSER}} poolt. | |||
Antud toimingud tuleks teha root õigustes | Timestamp ({{REVISIONTIMESTAMP}}) | ||
== Eeldused == | |||
Kui inimene tahab kirjutada artikleid veebimaailmas, siis üks viis seda teha on blogimine. Blogi-mootoreid on palju antud juhend käsitleb Wordpressi oma. Selle juhendi põhjal saab installida ja kaitsta wordpressi Ubuntu serveris. | |||
See juhend eeldab kasutajalt ubuntu linuxi käsurea, tulemüüri tundmist, ning mysql põhi käskude tundmist. | |||
== Wordpressi paigaldus ja konfigureerimine == | |||
Antud toimingud tuleks teha root õigustes: | |||
sudo -i | sudo -i | ||
Tee kohalikele pakettidele update | |||
Tee update | |||
aptitude update | aptitude update | ||
Tee pakettidele upgrade: | |||
Tee upgrade | |||
aptitude full-upgrade | aptitude full-upgrade | ||
Line 19: | Line 25: | ||
aptitude install acpid | 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 | 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 | wget http://wordpress.org/latest.tar.gz | ||
Paki lahti wordpressi failid /var/www kausta: | Paki lahti wordpressi failid /var/www kausta: | ||
tar zxvf latest.tar.gz --directory=/var/www/ | |||
Logi mysql-i sisse: | Logi mysql-i sisse: | ||
Line 47: | Line 51: | ||
Anna kõik õigused student kasutajale: | Anna kõik õigused student kasutajale: | ||
<source lang="mysql"> | <source lang="mysql"> | ||
GRANT ALL PRIVILEGES ON student_wordpress.* TO student@localhost IDENTIFIED BY | GRANT ALL PRIVILEGES ON student_wordpress.* TO student@localhost IDENTIFIED BY 'student'; | ||
</source> | </source> | ||
Välju mysql-ist: | Välju mysql-ist: | ||
Line 58: | Line 62: | ||
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/wp | cp /etc/apache2/sites-available/default /etc/apache2/sites-available/wp | ||
Muuda ära DocumentRoot /etc/apache2/sites-available/wp failis: | |||
nano /etc/apache2/sites-available/wp | |||
nano /etc/apache2/sites- | |||
Lisa DocumentRoot /var/www rea lõppu DocumentRoot /var/www/wordpress | Lisa DocumentRoot /var/www rea lõppu DocumentRoot /var/www/wordpress | ||
DocumentRoot /var/www/wordpress | DocumentRoot /var/www/wordpress | ||
Keela ära tavaline default veebi sait(seda ei ole vaja antud paigalduses): | Keela ära tavaline default veebi sait(seda ei ole vaja antud paigalduses): | ||
a2dissite default | a2dissite default | ||
Luba wordpress-i veebisait | Luba wordpress-i veebisait | ||
Line 100: | Line 99: | ||
cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php | cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php | ||
Tee apache2 service-ile reload | Tee apache2 service-ile reload | ||
Line 106: | Line 104: | ||
service apache2 reload | service apache2 reload | ||
Mine wordpressi saidile kasutades host-i IP aadressi(antud näites:192.168. | Mine wordpressi saidile kasutades host-i IP aadressi(antud näites:192.168.6.103 ); | ||
http://192.168.6.103 | |||
Vali saidi nimi, kasutajanimi, salasõna ning meili aadress. | Vali saidi nimi, kasutajanimi, salasõna ning meili aadress. | ||
Line 115: | Line 112: | ||
Vali install | Vali install | ||
Installi lõppedes tee kindlaks,et kõik toimib( | Installi lõppedes tee kindlaks,et kõik toimib(logi sisse, vaata wp verisooni ilmselt midagi sellist: You are using WordPress 3.*.*.) | ||
== 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, enne </VirtualHost> tagi) | |||
<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''' – on HTTP kiirendaja, seda on vaja selleks, et suurendada veebilehekülje kiirust. | |||
Varnish Cache hoiab veebilehekülgi vahemälus tänu millele ei pea veebiserverid samu lehekülgi korduvalt genereerima. See vähendab I/O süsttemi koormust. | |||
Varnish kontrollib cache'ist päringu olemasolu ning juhul kui selline leidub siis võetakse sealt päringu vastus ning saadetakse vastus kasutajale. Juhul kui cache'is ei ole konkreetset päringut saadetakse kasutaja päring ''backend''-i ning lisatakse cache'i koos vastusega. | |||
===Paigaldamine=== | |||
Enne Varnishi instaleerimist tuleks pakkette uuendada: | |||
sudo apt-get update | |||
Paigaldamise käsk: | |||
sudo apt-get install varnish | |||
===Konfiguratsiooni muutmine=== | |||
192.168.6.103 - veebiserveri IP-aadress | |||
Esimese asjana tuleks muuta default port. Sellesk tuleb muuta faili '''/etc/default/varnish''': | |||
nano /etc/default/varnish | |||
Muuda ära START=NO -> START=YES. Seda on vaja varnishi käivitamiseks. | |||
START=YES | |||
Otsi ülesse "DAEMON_OPTS=..." ning muuda see osa samasuguseks: | |||
DAEMON_OPTS="-a :80 \ | |||
-T localhost:6082 \ | |||
-f /etc/varnish/itkool.vcl \ | |||
-S /etc/varnish/secret \ | |||
-s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G" | |||
Varnishi konfiguratsioon kirjutatakse VCL keeles. | |||
Konfiguratsioonide fail asub vaikimisi siin '''/etc/varnish/default.vcl''' | |||
Fail koosneb mitmest osasest, aga töötamiseseks on vajalik backendile viitamine: | |||
'''Backend''' - on server, kuhu varnish saadab päringuid, juhul kui tal ei ole vastavaid andmeid cache-is. | |||
Kopeerige fail '''/etc/varnish/default.vcl''' ja nimetage ümber(Antud näites itkool.vcl): | |||
cp /etc/varnish/default.vcl /etc/varnish/itkool.vcl | |||
Ava fail '''/etc/varnish/itkool.vcl''' | |||
nano /etc/varnish/itkool.vcl | |||
ja muuda sisu selliseks(.host=<Teie veebiserveri ip aadress>): | |||
<pre> | |||
## Redirect requests to Apache, running on port 8000 on localhost | |||
## 192.168.6.103 - IP-address of the server | |||
backend apache { | |||
.host = "192.168.6.103"; | |||
.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; | |||
} | |||
</pre> | |||
Salvesta fail CTRL + O käsuga | |||
===Apache konfiguratsiooni muutmine=== | |||
Ava fail '''/etc/apache2/ports.conf''' | |||
nano /etc/apache2/ports.conf | |||
otsi ülesse: | |||
<pre> | |||
NameVirtualHost *:80 | |||
Listen 192.168.6.103:80 | |||
</pre> | |||
'''192.168.6.103''' - veebiserveri IP aadress. | |||
Muuda need read sellisteks: | |||
<pre> | |||
NameVirtualHost *:8000 | |||
Listen 192.168.6.103:8000 | |||
</pre> | |||
Ava fail '''/etc/apache2/sites-available/wp''' | |||
nano /etc/apache2/sites-available/wp | |||
otsi ülesse: | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerAdmin webmaster@localhost | |||
</pre> | |||
Muuda need read sellisteks: | |||
<pre> | |||
VirtualHost *:8000> | |||
ServerAdmin webmaster@localhost | |||
</pre> | |||
Paigaldame Apache lisa mooduli veendumaks, et kasutaja IP aadress lahendatakse korrektselt. Kuna Varnish on tihedalt seotud apache2-ga, näete külastaja Ip-na 127.0.0.1 | |||
nano apt-get install libapache2-mod-rpaf | |||
'''RPAF''' (Reverse Proxy Add Forward) moodul hoolitseb selle eest, et localhosti IP vahetatakse ära IP-ga, mis on seadistatud X-Forwarded-For failis. | |||
===Deemonide restart=== | |||
Restart Apache server: | |||
/etc/init.d/apache2 restart | |||
Kontrollige IP portide olemasolu: | |||
netstat -lp | grep apache2 | |||
Kui te näete midagi sellist, siis on kõik korras | |||
tcp 0 0 *:https *:* LISTEN 843/apache2 | |||
tcp 0 0 192.168.6.101:8000 *:* LISTEN 843/apache2 | |||
Nüüd teeme Varnishile restardi, et kuulata teema porti 80 | |||
/etc/init.d/varnish restart | |||
Kontrolli | |||
netstat -lp | grep varnish | |||
tcp 0 0 *:www *:* LISTEN 781/varnishd | |||
tcp 0 0 localhost:6082 *:* LISTEN 779/varnishd | |||
tcp6 0 0 [::]:www [::]:* LISTEN 781/varnishd | |||
Nüüdseks on varnish Apache-is seadistatud. Külasta saiti ja vaata, kas toimib, kuid üldjuhul ei saa Te aru, et midagi oleks muutunud. Kui sa tõmbad Apache maha, siis näed lehel Varnishi errorit. Lisaks saab seda ka testida nende meetoditega, mis asuvad artikkli lõpus. | |||
http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian | |||
== Super Cache == | |||
'''Sissejuhatus''' | |||
''Super Cache'' on Wordpressi väga kiire puhvri mootor, mis loob staatilisi html faile. | |||
See pistikprogramm genereerib staatilisi html faile dünaamilisest Wordpressi blogist. Pärast seda kui html fail on loodud, annab veebiserver seda faili kasutajatele, selle asemel,et loob iga kord uue lehe vastavalt Wordpressi php skritpidele. Suure koormuse puhul on ''Super Cache'' väga kasulik, kuna nagu ka hiljem on testi tulemustest näha siis serverilt vastuse saamiseks kuluv aeg on mitu korda väiksem. | |||
Staatilisi html-e saavad enamik kasutajaid: | |||
1.Kasutajad, kes ei ole sisse logitud. | |||
2.Kasutajad, kes ei ole ühtegi kommentaari blogisse jätnud. | |||
3.Kasutajad, kes ei ole vaadanud salasõnaga kaitstud postitusi. | |||
Suuremale osale kasutajatele antakse staatilisi html faile. Need kasutajad kellele ei edastata puhverdatud lehti siiski saavad kasu, kuna nemad näevad väheke teistsuguseid puverdatud faile, mis küll ei ole nii effektiivsed kuid siiski paremad kui täiesti puhverdamata failid. | |||
'''Paigaldamine''' | |||
[[File:Wordpress_Plugins.png|right|]] | |||
[[File:Wordpress_search.png|400px|thumb|right]] | |||
''Super Cache''-i paigaldamiseks tuleb sisse logida admin-paneeli. Siis vasakult nimekirjast valida '''''Plugins'''''-i alt '''Add new'''. | |||
[[File:Install_wordpress.png|400px|thumb|right|]] | |||
[[File:Activate_wordpress.png|400px|thumb|right|]] | |||
[[File:Advanced_wpsc.png|400px|thumb|right|]] | |||
Siis kirjutada otsingusse "'''WP Super Cache'''". | |||
Pärast seda valida nimekirjast ''Super Cache'' ning vajutada "'''Install now'''". | |||
Pärast seda "'''Activate the Plugin'''". | |||
Nüüd tuleks aktiveerida Advanced tabi alt '''cache''' ning '''mod_rewrite'''. | |||
[[File:Permset.png|400px|thumb|right|]] | |||
Pärast seda ilmub "Permlink Structure error", see on see tõttu,et ''Super Cache''-i toimimiseks on vajalik valida '''''Custom structure''''' ''Permalink''-i seadete alt ning sisestada sinna '''/index.php/?p=%post_id%''' | |||
Edasi vali vasakult '''''Settings'''''-u alt '''WP Super Cache'''. | |||
Nüüd ütleb wordpress,et "WP_CACHE constant set to false" selle muutmiseks tuleb käsurealt avada wp-config-php fail: | |||
nano /var/www/wordpress/wp-config.php | |||
Rida, mis tuleb sinna lisada peab olema enne viimast "require_once..."-rida, soovitavalt lisada see teiste define-ridade järgi: | |||
define('WP_CACHE', true); | |||
Pärast seda salvestada wp-config.php ning brauseris tuleks refresh teha. | |||
Lisaks tuleb muuta .htaccess faili sisu: | |||
nano /var/www/wordpress/.htaccess | |||
Sinna peaks lisama need read: | |||
# BEGIN WordPress | |||
<IfModule mod_rewrite.c> | |||
RewriteEngine On | |||
RewriteBase / | |||
RewriteRule ^index\.php$ - [L] | |||
RewriteCond %{REQUEST_FILENAME} !-f | |||
RewriteCond %{REQUEST_FILENAME} !-d | |||
RewriteRule . /index.php [L] | |||
</IfModule> | |||
# END WordPress | |||
kuna wordpress tahab .htaccess faili ka ise muuta aegajalt siis on hea panna htaccessi õigused 777 peale käsuga: | |||
chmod 777 .htaccess | |||
Pärast konfimist tuleks '''kindlasti''' .htaccess õigused vähemaks võtta kuna konstantselt ei pea õigused 777 peal olema, need on tarvilikud vaid konfi ajaks. | |||
'''Jõudluse võrdlus SuperCache-iga ja ilma''' | |||
Supercache-iga | |||
Benchmarking www.itkool.ee (be patient) | |||
Completed 100 requests | |||
Completed 200 requests | |||
Finished 200 requests | |||
Server Software: Apache/2.2.17 | |||
Server Hostname: www.itkool.ee | |||
Server Port: 80 | |||
Document Path: / | |||
Document Length: 9554 bytes | |||
Concurrency Level: 200 | |||
Time taken for tests: 1.457 seconds | |||
Complete requests: 200 | |||
Failed requests: 0 | |||
Write errors: 0 | |||
Total transferred: 1971800 bytes | |||
HTML transferred: 1910800 bytes | |||
Requests per second: 137.30 [#/sec] (mean) | |||
Time per request: 1456.617 [ms] (mean) | |||
Time per request: 7.283 [ms] (mean, across all concurrent requests) | |||
Transfer rate: 1321.96 [Kbytes/sec] received | |||
Connection Times (ms) | |||
min mean[+/-sd] median max | |||
Connect: 7 10 2.1 10 14 | |||
Processing: 55 798 409.6 821 1441 | |||
Waiting: 8 751 410.1 770 1437 | |||
Total: 68 808 407.6 831 1447 | |||
Percentage of the requests served within a certain time (ms) | |||
50% 831 | |||
66% 1036 | |||
75% 1159 | |||
80% 1236 | |||
90% 1366 | |||
95% 1434 | |||
98% 1445 | |||
99% 1446 | |||
100% 1447 (longest request) | |||
ilma: | |||
Benchmarking www.itkool.ee (be patient) | |||
Completed 100 requests | |||
Completed 200 requests | |||
Finished 200 requests | |||
Server Software: Apache/2.2.17 | |||
Server Hostname: www.itkool.ee | |||
Server Port: 80 | |||
Document Path: / | |||
Document Length: 9413 bytes | |||
Concurrency Level: 20 | |||
Time taken for tests: 25.600 seconds | |||
Complete requests: 200 | |||
Failed requests: 172 | |||
(Connect: 0, Receive: 0, Length: 172, Exceptions: 0) | |||
Write errors: 0 | |||
Total transferred: 1932771 bytes | |||
HTML transferred: 1882571 bytes | |||
Requests per second: 7.81 [#/sec] (mean) | |||
Time per request: 2560.029 [ms] (mean) | |||
Time per request: 128.001 [ms] (mean, across all concurrent requests) | |||
Transfer rate: 73.73 [Kbytes/sec] received | |||
Connection Times (ms) | |||
min mean[+/-sd] median max | |||
Connect: 0 1 1.4 0 5 | |||
Processing: 803 2522 572.9 2485 4346 | |||
Waiting: 648 2126 526.2 2053 4000 | |||
Total: 807 2523 572.5 2485 4346 | |||
Percentage of the requests served within a certain time (ms) | |||
50% 2485 | |||
66% 2557 | |||
75% 2690 | |||
80% 2740 | |||
90% 3120 | |||
95% 3624 | |||
98% 4261 | |||
99% 4272 | |||
100% 4346 (longest request) | |||
'''Ühenduse probleemid''' | |||
Juhul kui ilmneb probleem,et serverile on määratud uus ip-aadress ning ip-aadressile minnes näidatakse vanalt ip-aadressilt pärit cache'i sisu siis sellest probleemist mööda saamiseks tuleb käsurealt muuta wp-config.php faili: | |||
nano /var/www/wordpress/wp-config.php | |||
ning sealt seest: | |||
define('WP_CACHE', false); #See tuleb kindlasti tagasi muuta "true"-ks pärast ühenduse saamist. | |||
Nüüd peaks wordpress jälle näitama uut sisu. Juhul kui siiski on probleeme ning juhul kui '''andmebaas on tühi''' siis võib ka sql-is teha järgmist: | |||
'''NB Seda teha ainult siis kui andmebaas on tühi!!!''' | |||
<source lang="mysql"> | |||
drop database student_wordpress; | |||
</source> | |||
ning siis uuesti: | |||
<source lang="mysql"> | |||
create database student_wordpress: | |||
</source> | |||
Pärast andmebaasi loomist teha apache-ile restart: | |||
service apache2 restart | |||
Ja tuleb uuesti seadistada wordpressi lehekülg. | |||
== Iptables == | |||
'''Laboris tuleb kasutada enda arvuti IP'd!''' | |||
Teie '''iptables.conf''' fail peab välja nägema nii nagu näidatud allpool: | |||
<pre> | |||
-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 OUTPUT -o lo -j ACCEPT | |||
COMMIT | |||
</pre> | |||
'''Räägime täpsemalt milleks need reeglid vaja on.''' | |||
Kui tahame varnish'it kasutada, tuleb lubada porti 8000: | |||
<pre> | |||
iptables -A INPUT -s 192.168.6.101/32 -p tcp -m tcp --dport 8000 -j ACCEPT | |||
</pre> | |||
Lubame weebiserveri: | |||
<pre> | |||
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT | |||
</pre> | |||
SSH lubamiseks sellest IP-st: | |||
<pre> | |||
iptables -A INPUT -s 192.168.6.1/32 -p tcp -m tcp --dport 22 -j ACCEPT | |||
</pre> | |||
Näidises on pandud connection limitiks 10, testimiseks seda piisab küll aga seda arvu võib muuta suuremaks. Näiteks suurtes ettevõttetes kliendid kes istuvad NAT'i taga, ei saa liigi leheküljele, sest connection limit ühest IP-st on piiratud 10-ga. Ainult 10 klienti saab korraga vaatada veebilehti. | |||
Allolev rida annab võimalust katkestada ühendusi mille arv on üle 10 pordis 80: | |||
<pre> | |||
iptables -A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable | |||
</pre> | |||
Praegu meil ei salvestatakse logi failid. Kui tahame näha täpsemalt millised paketid vistakse minema, peame lubama logimist: | |||
<pre> | |||
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7 | |||
</pre> | |||
<pre> | |||
iptables -A INPUT -s 192.168.6.101/32 -j ACCEPT | |||
</pre> | |||
Väljaminevate ühenduste jaoks tagasi tulnud pakette lubamiseks: | |||
<pre> | |||
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT | |||
</pre> | |||
On alati tervislik lubada localhost õue: | |||
<pre> | |||
iptables -A OUTPUT -o lo -j ACCEPT | |||
</pre> | |||
= Teised turvameetodid = | |||
On olemas mitmeid erinevaid võimalusi, kuidas veel saab oma wordpressi veebilehe turvata. | |||
== Späm filter == | |||
Akismet (Automattic Kismet) on spämmi filter. Antud teenus püüab filtreerida spämmi mis tuleb blogi kommentaaridest ja TrackPack pingidest. Filter kombineerib informatsiooni mis ta kogus kõikidest blogidest ja kasutab neid spämmi reegleid, et tulevikus blokeerida spämmi. Akismet on loodud Automattic firma poolt, ettevõtte mis keskendub vaba-tarkvara arendamisele WordPressi platformi jaoks. Akismet tuli välja 25. oktroobril aastal 2005 ja seisuga Aprill 2011 juba püüdis üle 25 miljardi spämmi kommentaari ja pingi. | |||
Akisment on WordPressi sisseehitatud aga vaikimisi on ta välja lülitatud, kuna selle sisse lülitamine nõuab võtmegas autentimist. Blogi administraator peab ise antud teenust aktiveerima. | |||
Selleks, et aktiveerida Akismeti, on vaja: | |||
1) Administraatoori paneelis on vaja valida '''Plugins - Installed''' | |||
2) Teha linnuke Akismeti juurde ja valida '''"Activate"''' | |||
3) Nüüd peab sisestama Akismeti API võtme. Võtme saab tasuta tellida Akismeti ametlikult veebilehelt. | |||
4) Vajuta '''"Update options"''' | |||
5) Akismeti spämmi filter on sisselülitatud. | |||
Nüüd on vaja mõned postituse reegleid konfigureerida. Selleks on vaja valida '''Settings - Discussion''' menüü alt ja välja lülitada: '''An administrator must always approve the comment'''. | |||
Nüüd ei pea administraator isiklikult iga kommentaari läbi vaatama ja kinnitama. Antud tööga hakkab tegelema Akismet. | |||
== Anti-bot lahendus == | |||
On olemas mitmeid erinevaid võimalusi kuidas saab kindlaks teha, et kasutaja, kes postitab on inimene. Selle jaoks on igasuguseid captcha meetodeid, näiteks kasutaja peab sisestama juhuslikult kombineeritud teksti või lahendama mingeid lihtsaid matemaatilisi võrrandeid. Antud meetodid ei ole eriti "sõbralikud", sest vahel tekivad kasutajatel probleemid, eriti neil, kes ei näe korralikult märke. | |||
Palju sõbralikum ja lihtsam anti-bot meetod on lahendus, kus kasutaja peab märkima linnukese kommentaari alla. Selle jaoks wordpressil on plugin Growmap Anti Spambot Plugin. Plugini installeerimiseks on vaja terminalist: | |||
1) Mine oma wordpress plugin kataloogisse | |||
<pre>cd /var/www/wordpress/wp-content/plugins/ </pre> | |||
2) Käsuga wget laeme alla plugini | |||
<pre>wget http://downloads.wordpress.org/plugin/growmap-anti-spambot-plugin.1.1.zip</pre> | |||
3) Enne lahti pakkimist on vaja installida unzipi | |||
sudo apt-get install zip | |||
sudo apt-get install unzip | |||
4) Pakime lahti antud arhiivi | |||
<pre>unzip growmap-anti-spambot-plugin.1.1.zip</pre> | |||
Nüüd tuleb minna tagasi oma wordpress administratoori menüüsse ja aktiveerida see plugin. | |||
== IP kontroll == | |||
Tihti on vaja turvata väga vajalikke faile. Selle jaoks on vaja käsurealt: | |||
1) Mine oma wordpress kataloogi | |||
<pre>cd /var/www/wordpress</pre> | |||
2) Teeme .htaccess fail. Antud teksti-faili kasutab wordpress oma reeglite jaoks. | |||
<pre>touch .htaccess</pre> | |||
3) Ava .htaccess ja kirjuta sinna järgmised reegleid: | |||
nano .htaccess | |||
Esiteks, kaitseme meie .htaccess faili, et keegi ei saaks seda vaadata. | |||
<pre> | |||
#protect the htaccess file | |||
<files .htaccess> | |||
order allow,deny | |||
deny from all | |||
</files> | |||
</pre> | |||
Kaitseme meie admin logini, selleks et adminina saaks logida ainult määratud IP aadressilt. | |||
<pre> | |||
<files wp-login.php> | |||
Order Deny,Allow | |||
Deny from All | |||
Allow from 192.168.6.2 | |||
</files> | |||
</pre> | |||
WPconfig on teine väga oluline fail. Seda tuleks ka kaitsta: | |||
<pre> | |||
#protect wpconfig.php | |||
<files wp-config.php> | |||
Order Deny,Allow | |||
Deny from All | |||
allow from 192.168.6.2 | |||
</files> | |||
</pre> | |||
Nüüd tuleb '''wp-admin''' kataloogis teha veel üks '''.htaccess''' fail ja sinna kirjutada järgmised reegleid: | |||
cd /var/www/wordpress/wp-admin/ | |||
touch .htaccess | |||
nano .htaccess | |||
<pre> | |||
AuthUserFile /dev/null | |||
AuthGroupFile /dev/null | |||
AuthName "WordPress Admin Access Control" | |||
AuthType Basic | |||
<LIMIT GET> | |||
order deny,allow | |||
deny from all | |||
#kirjuta oma IP | |||
allow from 192.168.6.2 | |||
</LIMIT> | |||
</pre> | |||
http://wptidbits.com/tutorials/21-most-popular-htaccess-hacks-for-wordpress/ | |||
=Testimine= | |||
Monitoorimiseks on vaja installida [[htop]] programm või midagi analoogset, mis on seotud protsesside ja koormuse jälgimisega | |||
apt-get install htop | |||
Antud turvamoodulite testimiseks sobib näiteks [[ApacheBench]].See oleks vaja installida teises arvutis, mis asub samas võrgus. | |||
apt-get install apache2-utils | |||
Käivitage terminali kaudu oma veebiserveris htop: | |||
htop | |||
Teises arvutis käivitage terminali kaudu: | |||
ab -c 1000 -n 1000 192.168.6.103/ | |||
kus 192.168.6.103 - veebiserveri IP-aadress | |||
Pärast ülaltoodud turvameetmete kasutusele võtmist, ei ole ab tööriista kasutades enam nii lihtne veebiserverit maha võtta. | |||
Kui võrrelda ab kasutamist vaike installatsioonil ja pärast turvamist, siis võib märgata et mälu ja saaleala ei kirjutata kohe täis ning server suudab hoida koormust kasvamast üle määratud piiri. | |||
=Autorid= | |||
'''Wordpressi paigaldus ja konfigureerimine''' - Risto Siitan A32 | |||
'''mod_evasive paigaldus ja konfigureerimine''' - Meelis Tamm, A31. Allikas: [http://acidborg.wordpress.com/2009/06/25/installation-configuration-of-mod_evasive-in-ubuntu-server-9-04/] | |||
'''Varnish Cache-i paigaldamine ja konfigureerimine''' - Jaan Vahtre A31 ja Vadim Vinogradin A31 | |||
'''Super Cache''' - Kristjan Vask A31 Risto Siitan A32 | |||
'''Iptables''' - Sergei Barol A31 | |||
'''Teised turvameetodid''' - Vladimir Kolesnik A32 | |||
[[Category:IT infrastruktuuri teenused]] |
Latest revision as of 13:14, 30 December 2011
!NB Kõik õpetused on tehtud kasutades Ubuntu Server 11.04
Viimati muudetud 30/12/2011 Vvinogra poolt.
Timestamp (20111230131402)
Eeldused
Kui inimene tahab kirjutada artikleid veebimaailmas, siis üks viis seda teha on blogimine. Blogi-mootoreid on palju antud juhend käsitleb Wordpressi oma. Selle juhendi põhjal saab installida ja kaitsta wordpressi Ubuntu serveris.
See juhend eeldab kasutajalt ubuntu linuxi käsurea, tulemüüri tundmist, ning mysql põhi käskude tundmist.
Wordpressi paigaldus ja konfigureerimine
Antud toimingud tuleks teha root õigustes:
sudo -i
Tee kohalikele pakettidele update
aptitude update
Tee pakettidele upgrade:
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:
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-available/wp failis:
nano /etc/apache2/sites-available/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.6.103 );
http://192.168.6.103
Vali saidi nimi, kasutajanimi, salasõna ning meili aadress.
Vali install
Installi lõppedes tee kindlaks,et kõik toimib(logi sisse, vaata wp verisooni ilmselt midagi sellist: You are using WordPress 3.*.*.)
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, enne </VirtualHost> tagi)
<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 – on HTTP kiirendaja, seda on vaja selleks, et suurendada veebilehekülje kiirust.
Varnish Cache hoiab veebilehekülgi vahemälus tänu millele ei pea veebiserverid samu lehekülgi korduvalt genereerima. See vähendab I/O süsttemi koormust.
Varnish kontrollib cache'ist päringu olemasolu ning juhul kui selline leidub siis võetakse sealt päringu vastus ning saadetakse vastus kasutajale. Juhul kui cache'is ei ole konkreetset päringut saadetakse kasutaja päring backend-i ning lisatakse cache'i koos vastusega.
Paigaldamine
Enne Varnishi instaleerimist tuleks pakkette uuendada:
sudo apt-get update
Paigaldamise käsk:
sudo apt-get install varnish
Konfiguratsiooni muutmine
192.168.6.103 - veebiserveri IP-aadress
Esimese asjana tuleks muuta default port. Sellesk tuleb muuta faili /etc/default/varnish:
nano /etc/default/varnish
Muuda ära START=NO -> START=YES. Seda on vaja varnishi käivitamiseks.
START=YES
Otsi ülesse "DAEMON_OPTS=..." ning muuda see osa samasuguseks:
DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/itkool.vcl \ -S /etc/varnish/secret \ -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"
Varnishi konfiguratsioon kirjutatakse VCL keeles.
Konfiguratsioonide fail asub vaikimisi siin /etc/varnish/default.vcl Fail koosneb mitmest osasest, aga töötamiseseks on vajalik backendile viitamine:
Backend - on server, kuhu varnish saadab päringuid, juhul kui tal ei ole vastavaid andmeid cache-is.
Kopeerige fail /etc/varnish/default.vcl ja nimetage ümber(Antud näites itkool.vcl):
cp /etc/varnish/default.vcl /etc/varnish/itkool.vcl
Ava fail /etc/varnish/itkool.vcl
nano /etc/varnish/itkool.vcl
ja muuda sisu selliseks(.host=<Teie veebiserveri ip aadress>):
## Redirect requests to Apache, running on port 8000 on localhost ## 192.168.6.103 - IP-address of the server backend apache { .host = "192.168.6.103"; .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
nano /etc/apache2/ports.conf
otsi ülesse:
NameVirtualHost *:80 Listen 192.168.6.103:80
192.168.6.103 - veebiserveri IP aadress.
Muuda need read sellisteks:
NameVirtualHost *:8000 Listen 192.168.6.103:8000
Ava fail /etc/apache2/sites-available/wp
nano /etc/apache2/sites-available/wp
otsi ülesse:
<VirtualHost *:80> ServerAdmin webmaster@localhost
Muuda need read sellisteks:
VirtualHost *:8000> ServerAdmin webmaster@localhost
Paigaldame Apache lisa mooduli veendumaks, et kasutaja IP aadress lahendatakse korrektselt. Kuna Varnish on tihedalt seotud apache2-ga, näete külastaja Ip-na 127.0.0.1
nano apt-get install libapache2-mod-rpaf
RPAF (Reverse Proxy Add Forward) moodul hoolitseb selle eest, et localhosti IP vahetatakse ära IP-ga, mis on seadistatud X-Forwarded-For failis.
Deemonide restart
Restart Apache server:
/etc/init.d/apache2 restart
Kontrollige IP portide olemasolu:
netstat -lp | grep apache2
Kui te näete midagi sellist, siis on kõik korras
tcp 0 0 *:https *:* LISTEN 843/apache2 tcp 0 0 192.168.6.101:8000 *:* LISTEN 843/apache2
Nüüd teeme Varnishile restardi, et kuulata teema porti 80
/etc/init.d/varnish restart
Kontrolli
netstat -lp | grep varnish tcp 0 0 *:www *:* LISTEN 781/varnishd tcp 0 0 localhost:6082 *:* LISTEN 779/varnishd tcp6 0 0 [::]:www [::]:* LISTEN 781/varnishd
Nüüdseks on varnish Apache-is seadistatud. Külasta saiti ja vaata, kas toimib, kuid üldjuhul ei saa Te aru, et midagi oleks muutunud. Kui sa tõmbad Apache maha, siis näed lehel Varnishi errorit. Lisaks saab seda ka testida nende meetoditega, mis asuvad artikkli lõpus.
http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian
Super Cache
Sissejuhatus
Super Cache on Wordpressi väga kiire puhvri mootor, mis loob staatilisi html faile.
See pistikprogramm genereerib staatilisi html faile dünaamilisest Wordpressi blogist. Pärast seda kui html fail on loodud, annab veebiserver seda faili kasutajatele, selle asemel,et loob iga kord uue lehe vastavalt Wordpressi php skritpidele. Suure koormuse puhul on Super Cache väga kasulik, kuna nagu ka hiljem on testi tulemustest näha siis serverilt vastuse saamiseks kuluv aeg on mitu korda väiksem.
Staatilisi html-e saavad enamik kasutajaid:
1.Kasutajad, kes ei ole sisse logitud.
2.Kasutajad, kes ei ole ühtegi kommentaari blogisse jätnud.
3.Kasutajad, kes ei ole vaadanud salasõnaga kaitstud postitusi.
Suuremale osale kasutajatele antakse staatilisi html faile. Need kasutajad kellele ei edastata puhverdatud lehti siiski saavad kasu, kuna nemad näevad väheke teistsuguseid puverdatud faile, mis küll ei ole nii effektiivsed kuid siiski paremad kui täiesti puhverdamata failid.
Paigaldamine
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".
Nüüd tuleks aktiveerida Advanced tabi alt cache ning mod_rewrite.
Pärast seda ilmub "Permlink Structure error", see on see tõttu,et Super Cache-i toimimiseks on vajalik valida Custom structure Permalink-i seadete alt ning sisestada sinna /index.php/?p=%post_id%
Edasi vali vasakult Settings-u alt WP Super Cache. Nüüd ütleb wordpress,et "WP_CACHE constant set to false" selle muutmiseks tuleb käsurealt avada wp-config-php fail:
nano /var/www/wordpress/wp-config.php
Rida, mis tuleb sinna lisada peab olema enne viimast "require_once..."-rida, soovitavalt lisada see teiste define-ridade järgi:
define('WP_CACHE', true);
Pärast seda salvestada wp-config.php ning brauseris tuleks refresh teha.
Lisaks tuleb muuta .htaccess faili sisu:
nano /var/www/wordpress/.htaccess
Sinna peaks lisama need read:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
kuna wordpress tahab .htaccess faili ka ise muuta aegajalt siis on hea panna htaccessi õigused 777 peale käsuga:
chmod 777 .htaccess
Pärast konfimist tuleks kindlasti .htaccess õigused vähemaks võtta kuna konstantselt ei pea õigused 777 peal olema, need on tarvilikud vaid konfi ajaks.
Jõudluse võrdlus SuperCache-iga ja ilma
Supercache-iga Benchmarking www.itkool.ee (be patient) Completed 100 requests Completed 200 requests Finished 200 requests Server Software: Apache/2.2.17 Server Hostname: www.itkool.ee Server Port: 80 Document Path: / Document Length: 9554 bytes Concurrency Level: 200 Time taken for tests: 1.457 seconds Complete requests: 200 Failed requests: 0 Write errors: 0 Total transferred: 1971800 bytes HTML transferred: 1910800 bytes Requests per second: 137.30 [#/sec] (mean) Time per request: 1456.617 [ms] (mean) Time per request: 7.283 [ms] (mean, across all concurrent requests) Transfer rate: 1321.96 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 7 10 2.1 10 14 Processing: 55 798 409.6 821 1441 Waiting: 8 751 410.1 770 1437 Total: 68 808 407.6 831 1447 Percentage of the requests served within a certain time (ms) 50% 831 66% 1036 75% 1159 80% 1236 90% 1366 95% 1434 98% 1445 99% 1446 100% 1447 (longest request)
ilma:
Benchmarking www.itkool.ee (be patient) Completed 100 requests Completed 200 requests Finished 200 requests Server Software: Apache/2.2.17 Server Hostname: www.itkool.ee Server Port: 80 Document Path: / Document Length: 9413 bytes Concurrency Level: 20 Time taken for tests: 25.600 seconds Complete requests: 200 Failed requests: 172 (Connect: 0, Receive: 0, Length: 172, Exceptions: 0) Write errors: 0 Total transferred: 1932771 bytes HTML transferred: 1882571 bytes Requests per second: 7.81 [#/sec] (mean) Time per request: 2560.029 [ms] (mean) Time per request: 128.001 [ms] (mean, across all concurrent requests) Transfer rate: 73.73 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.4 0 5 Processing: 803 2522 572.9 2485 4346 Waiting: 648 2126 526.2 2053 4000 Total: 807 2523 572.5 2485 4346 Percentage of the requests served within a certain time (ms) 50% 2485 66% 2557 75% 2690 80% 2740 90% 3120 95% 3624 98% 4261 99% 4272 100% 4346 (longest request)
Ühenduse probleemid
Juhul kui ilmneb probleem,et serverile on määratud uus ip-aadress ning ip-aadressile minnes näidatakse vanalt ip-aadressilt pärit cache'i sisu siis sellest probleemist mööda saamiseks tuleb käsurealt muuta wp-config.php faili:
nano /var/www/wordpress/wp-config.php
ning sealt seest:
define('WP_CACHE', false); #See tuleb kindlasti tagasi muuta "true"-ks pärast ühenduse saamist.
Nüüd peaks wordpress jälle näitama uut sisu. Juhul kui siiski on probleeme ning juhul kui andmebaas on tühi siis võib ka sql-is teha järgmist:
NB Seda teha ainult siis kui andmebaas on tühi!!!
drop database student_wordpress;
ning siis uuesti:
create database student_wordpress:
Pärast andmebaasi loomist teha apache-ile restart:
service apache2 restart
Ja tuleb uuesti seadistada wordpressi lehekülg.
Iptables
Laboris tuleb kasutada enda arvuti IP'd!
Teie iptables.conf fail peab välja nägema nii nagu näidatud allpool:
-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 OUTPUT -o lo -j ACCEPT COMMIT
Räägime täpsemalt milleks need reeglid vaja on.
Kui tahame varnish'it kasutada, tuleb lubada porti 8000:
iptables -A INPUT -s 192.168.6.101/32 -p tcp -m tcp --dport 8000 -j ACCEPT
Lubame weebiserveri:
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
SSH lubamiseks sellest IP-st:
iptables -A INPUT -s 192.168.6.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
Näidises on pandud connection limitiks 10, testimiseks seda piisab küll aga seda arvu võib muuta suuremaks. Näiteks suurtes ettevõttetes kliendid kes istuvad NAT'i taga, ei saa liigi leheküljele, sest connection limit ühest IP-st on piiratud 10-ga. Ainult 10 klienti saab korraga vaatada veebilehti. Allolev rida annab võimalust katkestada ühendusi mille arv on üle 10 pordis 80:
iptables -A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
Praegu meil ei salvestatakse logi failid. Kui tahame näha täpsemalt millised paketid vistakse minema, peame lubama logimist:
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7
iptables -A INPUT -s 192.168.6.101/32 -j ACCEPT
Väljaminevate ühenduste jaoks tagasi tulnud pakette lubamiseks:
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
On alati tervislik lubada localhost õue:
iptables -A OUTPUT -o lo -j ACCEPT
Teised turvameetodid
On olemas mitmeid erinevaid võimalusi, kuidas veel saab oma wordpressi veebilehe turvata.
Späm filter
Akismet (Automattic Kismet) on spämmi filter. Antud teenus püüab filtreerida spämmi mis tuleb blogi kommentaaridest ja TrackPack pingidest. Filter kombineerib informatsiooni mis ta kogus kõikidest blogidest ja kasutab neid spämmi reegleid, et tulevikus blokeerida spämmi. Akismet on loodud Automattic firma poolt, ettevõtte mis keskendub vaba-tarkvara arendamisele WordPressi platformi jaoks. Akismet tuli välja 25. oktroobril aastal 2005 ja seisuga Aprill 2011 juba püüdis üle 25 miljardi spämmi kommentaari ja pingi.
Akisment on WordPressi sisseehitatud aga vaikimisi on ta välja lülitatud, kuna selle sisse lülitamine nõuab võtmegas autentimist. Blogi administraator peab ise antud teenust aktiveerima. Selleks, et aktiveerida Akismeti, on vaja:
1) Administraatoori paneelis on vaja valida Plugins - Installed
2) Teha linnuke Akismeti juurde ja valida "Activate"
3) Nüüd peab sisestama Akismeti API võtme. Võtme saab tasuta tellida Akismeti ametlikult veebilehelt.
4) Vajuta "Update options"
5) Akismeti spämmi filter on sisselülitatud.
Nüüd on vaja mõned postituse reegleid konfigureerida. Selleks on vaja valida Settings - Discussion menüü alt ja välja lülitada: An administrator must always approve the comment.
Nüüd ei pea administraator isiklikult iga kommentaari läbi vaatama ja kinnitama. Antud tööga hakkab tegelema Akismet.
Anti-bot lahendus
On olemas mitmeid erinevaid võimalusi kuidas saab kindlaks teha, et kasutaja, kes postitab on inimene. Selle jaoks on igasuguseid captcha meetodeid, näiteks kasutaja peab sisestama juhuslikult kombineeritud teksti või lahendama mingeid lihtsaid matemaatilisi võrrandeid. Antud meetodid ei ole eriti "sõbralikud", sest vahel tekivad kasutajatel probleemid, eriti neil, kes ei näe korralikult märke.
Palju sõbralikum ja lihtsam anti-bot meetod on lahendus, kus kasutaja peab märkima linnukese kommentaari alla. Selle jaoks wordpressil on plugin Growmap Anti Spambot Plugin. Plugini installeerimiseks on vaja terminalist:
1) Mine oma wordpress plugin kataloogisse
cd /var/www/wordpress/wp-content/plugins/
2) Käsuga wget laeme alla plugini
wget http://downloads.wordpress.org/plugin/growmap-anti-spambot-plugin.1.1.zip
3) Enne lahti pakkimist on vaja installida unzipi
sudo apt-get install zip
sudo apt-get install unzip
4) Pakime lahti antud arhiivi
unzip growmap-anti-spambot-plugin.1.1.zip
Nüüd tuleb minna tagasi oma wordpress administratoori menüüsse ja aktiveerida see plugin.
IP kontroll
Tihti on vaja turvata väga vajalikke faile. Selle jaoks on vaja käsurealt:
1) Mine oma wordpress kataloogi
cd /var/www/wordpress
2) Teeme .htaccess fail. Antud teksti-faili kasutab wordpress oma reeglite jaoks.
touch .htaccess
3) Ava .htaccess ja kirjuta sinna järgmised reegleid:
nano .htaccess
Esiteks, kaitseme meie .htaccess faili, et keegi ei saaks seda vaadata.
#protect the htaccess file <files .htaccess> order allow,deny deny from all </files>
Kaitseme meie admin logini, selleks et adminina saaks logida ainult määratud IP aadressilt.
<files wp-login.php> Order Deny,Allow Deny from All Allow from 192.168.6.2 </files>
WPconfig on teine väga oluline fail. Seda tuleks ka kaitsta:
#protect wpconfig.php <files wp-config.php> Order Deny,Allow Deny from All allow from 192.168.6.2 </files>
Nüüd tuleb wp-admin kataloogis teha veel üks .htaccess fail ja sinna kirjutada järgmised reegleid:
cd /var/www/wordpress/wp-admin/
touch .htaccess
nano .htaccess
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "WordPress Admin Access Control" AuthType Basic <LIMIT GET> order deny,allow deny from all #kirjuta oma IP allow from 192.168.6.2 </LIMIT>
http://wptidbits.com/tutorials/21-most-popular-htaccess-hacks-for-wordpress/
Testimine
Monitoorimiseks on vaja installida htop programm või midagi analoogset, mis on seotud protsesside ja koormuse jälgimisega
apt-get install htop
Antud turvamoodulite testimiseks sobib näiteks ApacheBench.See oleks vaja installida teises arvutis, mis asub samas võrgus.
apt-get install apache2-utils
Käivitage terminali kaudu oma veebiserveris htop:
htop
Teises arvutis käivitage terminali kaudu:
ab -c 1000 -n 1000 192.168.6.103/
kus 192.168.6.103 - veebiserveri IP-aadress
Pärast ülaltoodud turvameetmete kasutusele võtmist, ei ole ab tööriista kasutades enam nii lihtne veebiserverit maha võtta.
Kui võrrelda ab kasutamist vaike installatsioonil ja pärast turvamist, siis võib märgata et mälu ja saaleala ei kirjutata kohe täis ning server suudab hoida koormust kasvamast üle määratud piiri.
Autorid
Wordpressi paigaldus ja konfigureerimine - Risto Siitan A32
mod_evasive paigaldus ja konfigureerimine - Meelis Tamm, A31. Allikas: [1]
Varnish Cache-i paigaldamine ja konfigureerimine - Jaan Vahtre A31 ja Vadim Vinogradin A31
Super Cache - Kristjan Vask A31 Risto Siitan A32
Iptables - Sergei Barol A31
Teised turvameetodid - Vladimir Kolesnik A32