WordPress turvamine: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Vvinogra (talk | contribs)
Vvinogra (talk | contribs)
 
(96 intermediate revisions by 6 users not shown)
Line 1: Line 1:
'''!NB Kõik õpetused on tehtud kasutades Ubuntu Server 11.04'''
'''!NB Kõik õpetused on tehtud kasutades Ubuntu Server 11.04'''


WordPressi paigaldamine
Viimati muudetud {{REVISIONDAY2}}/{{REVISIONMONTH}}/{{REVISIONYEAR}} {{REVISIONUSER}} poolt.


Varnishi lisamine wordpressile
Timestamp ({{REVISIONTIMESTAMP}})


SuperCache kasutamine
== 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.


DoS rünnaku tõrjumine mod_evasive mooduliga
See juhend eeldab kasutajalt ubuntu linuxi käsurea, tulemüüri tundmist, ning mysql põhi käskude tundmist.


== Wordpressi paigaldus ja konfigureerimine ==
== Wordpressi paigaldus ja konfigureerimine ==


Antud toimingud tuleks teha root õigustes.
Antud toimingud tuleks teha root õigustes:


Mine root-iks:
  sudo -i
  sudo -i


 
Tee kohalikele pakettidele update
Tee update kohalike pakettide cache
  aptitude update
  aptitude update


 
Tee pakettidele upgrade:
Tee upgrade pakettidele:
  aptitude full-upgrade
  aptitude full-upgrade


Line 27: 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)


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:


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:
sudo tar zxvf latest.tar.gz --directory=/var/www/


tar zxvf latest.tar.gz --directory=/var/www/


Logi mysql-i sisse:
Logi mysql-i sisse:
Line 55: 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 ‘student’;
  GRANT ALL PRIVILEGES ON student_wordpress.* TO student@localhost IDENTIFIED BY 'student';
</source>
</source>
Välju mysql-ist:
Välju mysql-ist:
Line 66: 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:


Muuda ära DocumentRoot /etc/apache2/sites-avalible/wp failis:
  nano /etc/apache2/sites-available/wp
 
  nano /etc/apache2/sites-avalible/wp


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 107: 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 113: Line 104:
  service  apache2 reload
  service  apache2 reload


Mine wordpressi saidile kasutades host-i IP aadressi(antud näites:192.168.56.102);
Mine wordpressi saidile kasutades host-i IP aadressi(antud näites:192.168.6.103 );
 
http://192.168.56.102


http://192.168.6.103


Vali saidi nimi, kasutajanimi, salasõna ning meili aadress.
Vali saidi nimi, kasutajanimi, salasõna ning meili aadress.
Line 122: Line 112:
Vali install
Vali install


Installi lõppedes tee kindlaks,et kõik toimib(logi sisse, vaata wp verisooni ilmselt midagi sellist: You are using WordPress 3.2.1.)
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 ==
== mod_evasive paigaldus ja konfigureerimine ==
Line 156: Line 146:
  Couldn't open logfile /var/log/apache2/mod_evasive/dos-192.168.6.13: Permission denied
  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)
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>
  <ifmodule mod_evasive20.c>
Line 195: Line 185:
==Varnish Cache-i paigaldamine ja konfigureerimine==
==Varnish Cache-i paigaldamine ja konfigureerimine==
===Sissejuhatus===
===Sissejuhatus===
'''Varnish Cache''' – see on HTTP kiirendaja, seda on vaja selleks, et suurendada veebilehekülje kiirust.  
'''Varnish Cache''' – on HTTP kiirendaja, seda on vaja selleks, et suurendada veebilehekülje kiirust.  


Varnish Cache salvestab mälus veebilehekülgi nii, et veebiserverid ei pea koguma samu lehekülgi uuesti. Seda on vaja selleks, et vähendada koormust I/O süsteemile.
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.
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===
===Paigaldamine===
Kui te soovite installida Varnishit, siis on vaja teha uuendusi. Selle käsu abil uuendame opsüsteemi:
Enne Varnishi instaleerimist tuleks pakkette uuendada:
  sudo apt-get update
  sudo apt-get update
Paigaldamise käsk:
Paigaldamise käsk:
  sudo apt-get install varnish
  sudo apt-get install varnish
===Konfiguratsiooni muutmine===
===Konfiguratsiooni muutmine===
Esimene, mis me teeme, default pordi muutmine. Tuleb muuta faili '''/etc/default/varnish''':
 
192.168.6.103 - veebiserveri IP-aadress
 
Esimese asjana tuleks muuta default port. Sellesk tuleb muuta faili '''/etc/default/varnish''':
 
  nano /etc/default/varnish
  nano /etc/default/varnish


Konfigureerimine Varnichi jaoks kirjutatakse VCL keeles.  
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.  


Fail konfiguratsioonidega vaikselt asub siin '''/etc/varnish/default.vcl'''
Konfiguratsioonide fail asub vaikimisi siin '''/etc/varnish/default.vcl'''
Fail oleneb mitmest osadest, aga mis on vaja töötamise alguseks - see on backendi viitamine:
Fail koosneb mitmest osasest, aga töötamiseseks on vajalik backendile viitamine:


'''Backend''' - see on server, kuhu varnish saadab päringut, kui tal ei ole vastavad andmeid cache-is.
'''Backend''' - on server, kuhu varnish saadab päringuid, juhul kui tal ei ole vastavaid andmeid cache-is.


Kopeerige fail '''/etc/varnish/default.vcl''' ja andke teine nimetus
Kopeerige fail '''/etc/varnish/default.vcl''' ja nimetage ümber(Antud näites itkool.vcl):
  cp /etc/varnish/default.vcl /etc/varnish/itkool.vcl
  cp /etc/varnish/default.vcl /etc/varnish/itkool.vcl


Ava fail '''/etc/varnish/itkool.vcl''' ja sisesta
Ava fail '''/etc/varnish/itkool.vcl'''  
 
  nano /etc/varnish/itkool.vcl
  nano /etc/varnish/itkool.vcl


<pre>
ja muuda sisu selliseks(.host=<Teie veebiserveri ip aadress>):
## Redirect requests to Apache, running on port 8000 on localhost
 
backend apache {
<pre>
        .host = "127.0.0.1";
## Redirect requests to Apache, running on port 8000 on localhost
        .port = "8000";
## 192.168.6.103 - IP-address of the server
}
backend apache {
## Fetch
        .host = "192.168.6.103";
sub vcl_fetch {
        .port = "8000";
## Remove the X-Forwarded-For header if it exists.
}
        remove req.http.X-Forwarded-For;
## Fetch
sub vcl_fetch {
## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user.
## Remove the X-Forwarded-For header if it exists.
        set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;
        remove req.http.X-Forwarded-For;
## Added security, the "w00tw00t" attacks are pretty annoying so lets block it before it reaches our webserver
        if (req.url ~ "^/w00tw00t") {
## 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";
                 error 403 "Not permitted";
        }
        }
## Deliver the content
## Deliver the content
        return(deliver);
        return(deliver);
}
}


## Deliver
## Deliver
sub vcl_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.
## 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?
               ## Since we're not caching (yet), why bother telling people we use it?
         remove resp.http.X-Varnish;
         remove resp.http.X-Varnish;
Line 254: Line 265:
## We'd like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it.
## 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;
         remove resp.http.X-Powered-By;
}
}
</pre>
</pre>
Salvesta fail CTRL + O käsuga
Salvesta fail CTRL + O käsuga


===Apache konfiguratsiooni muutmine===
===Apache konfiguratsiooni muutmine===
Ava fail '''/etc/apache2/ports.conf''' ja leia
Ava fail '''/etc/apache2/ports.conf'''
  nano /etc/apache2/ports.conf
  nano /etc/apache2/ports.conf
otsi ülesse:


<pre>
<pre>
NameVirtualHost *:80
NameVirtualHost *:80
Listen 192.168.6.101:80
Listen 192.168.6.103:80
</pre>
</pre>
'''192.168.6.101''' - veebiserveri IP aadress.
'''192.168.6.103''' - veebiserveri IP aadress.


Muuda  
Muuda need read sellisteks:


<pre>
<pre>
NameVirtualHost *:8000
NameVirtualHost *:8000
Listen 192.168.6.101:8000
Listen 192.168.6.103:8000
</pre>
</pre>
Ava fail '''/etc/apache2/sites-available/wp''' ja leia


Ava fail '''/etc/apache2/sites-available/wp'''
nano /etc/apache2/sites-available/wp
otsi ülesse:
<pre>
<pre>
  <VirtualHost *:80>
  <VirtualHost *:80>
         ServerAdmin webmaster@localhost
         ServerAdmin webmaster@localhost
</pre>
</pre>


Muuda
Muuda need read sellisteks:
<pre>
<pre>
VirtualHost *:8000>
VirtualHost *:8000>
Line 288: Line 305:
</pre>
</pre>


Praegu paigaldame lisa Apache moodul selle jaoks, et veenduda kas kasutaja IP aadress lõpeb korrektselt. Praegu Varnish on põhimõtteliselt seotud apache2.
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
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
  nano apt-get install libapache2-mod-rpaf


'''RPAF''' (Reverse Proxy Add Forward) moodul holitseb selle eest, et localhosti IP vahetatakse ära IP-ga, mis on seadistatud X-Forwarded-For failis.
'''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===
===Deemonide restart===
Line 298: Line 315:
  /etc/init.d/apache2 restart
  /etc/init.d/apache2 restart


Kontrolli kas on olemas IP portid:  
Kontrollige IP portide olemasolu:  
  netstat -lp | grep apache2
  netstat -lp | grep apache2


Kui te näete, siis kõik on korras
Kui te näete midagi sellist, siis on kõik korras
  tcp        0      0 *:https                *:*                    LISTEN      843/apache2     
  tcp        0      0 *:https                *:*                    LISTEN      843/apache2     
  tcp        0      0 192.168.6.101:8000      *:*                    LISTEN      843/apache2     
  tcp        0      0 192.168.6.101:8000      *:*                    LISTEN      843/apache2     


Kui ei näita niimodi, siis on viga. Praegu teeme Varnishile restardi, et kuulata teema pordis 80
Nüüd teeme Varnishile restardi, et kuulata teema porti 80
 
  /etc/init.d/varnish restart  
  /etc/init.d/varnish restart  


Line 314: Line 332:
  tcp6      0      0 [::]:www                [::]:*                  LISTEN      781/varnishd
  tcp6      0      0 [::]:www                [::]:*                  LISTEN      781/varnishd


Praegu Varnish on sättinud Apache-is. Külasta saiti ja vaata, kas toimib. Kui sa tõmbad Apache maha, siis näed lehel Varnishi errorit.
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 ==
== Super Cache ==
Line 349: Line 369:


[[File:Activate_wordpress.png|400px|thumb|right|]]
[[File:Activate_wordpress.png|400px|thumb|right|]]
[[File:Advanced_wpsc.png|400px|thumb|right|]]




Line 377: Line 399:


Pärast seda valida nimekirjast ''Super Cache'' ning vajutada "'''Install now'''".
Pärast seda valida nimekirjast ''Super Cache'' ning vajutada "'''Install now'''".




Line 393: Line 416:


Pärast seda "'''Activate the Plugin'''".
Pärast seda "'''Activate the Plugin'''".
Nüüd tuleks aktiveerida Advanced tabi alt '''cache''' ning '''mod_rewrite'''.




Line 425: Line 461:
  nano /var/www/wordpress/wp-config.php
  nano /var/www/wordpress/wp-config.php


ning sinna lisada rida:  
Rida, mis tuleb sinna lisada peab olema enne viimast "require_once..."-rida, soovitavalt lisada see teiste define-ridade järgi:  


  define('WP_CACHE', true);
  define('WP_CACHE', true);
Line 431: Line 467:
Pärast seda salvestada wp-config.php ning brauseris tuleks refresh teha.
Pärast seda salvestada wp-config.php ning brauseris tuleks refresh teha.


Lisaks tuleb muuta .htaccess faili sisu mis peaks välja nägema selline:
Lisaks tuleb muuta .htaccess faili sisu:
 
nano /var/www/wordpress/.htaccess
 
Sinna peaks lisama need read:


  # BEGIN WordPress
  # BEGIN WordPress
Line 455: Line 495:
  Completed 200 requests
  Completed 200 requests
  Finished 200 requests
  Finished 200 requests
  Server Software:        Apache/2.2.17
  Server Software:        Apache/2.2.17
  Server Hostname:        www.itkool.ee
  Server Hostname:        www.itkool.ee
  Server Port:            80
  Server Port:            80
  Document Path:          /
  Document Path:          /
  Document Length:        9554 bytes
  Document Length:        9554 bytes
  Concurrency Level:      200
  Concurrency Level:      200
  Time taken for tests:  1.457 seconds
  Time taken for tests:  1.457 seconds
Line 494: Line 530:
ilma:
ilma:


Benchmarking www.itkool.ee (be patient)
Benchmarking www.itkool.ee (be patient)
Completed 100 requests
Completed 100 requests
Completed 200 requests
Completed 200 requests
Finished 200 requests
Finished 200 requests
 
Server Software:        Apache/2.2.17
 
Server Hostname:        www.itkool.ee
Server Software:        Apache/2.2.17
Server Port:            80
Server Hostname:        www.itkool.ee
Document Path:          /
Server Port:            80
Document Length:        9413 bytes
 
Concurrency Level:      20
Document Path:          /
Time taken for tests:  25.600 seconds
Document Length:        9413 bytes
Complete requests:      200
 
Failed requests:        172
Concurrency Level:      20
(Connect: 0, Receive: 0, Length: 172, Exceptions: 0)
Time taken for tests:  25.600 seconds
Write errors:          0
Complete requests:      200
Total transferred:      1932771 bytes
Failed requests:        172
HTML transferred:      1882571 bytes
  (Connect: 0, Receive: 0, Length: 172, Exceptions: 0)
Requests per second:    7.81 [#/sec] (mean)
Write errors:          0
Time per request:      2560.029 [ms] (mean)
Total transferred:      1932771 bytes
Time per request:      128.001 [ms] (mean, across all concurrent requests)
HTML transferred:      1882571 bytes
Transfer rate:          73.73 [Kbytes/sec] received
Requests per second:    7.81 [#/sec] (mean)
Connection Times (ms)
Time per request:      2560.029 [ms] (mean)
min  mean[+/-sd] median  max
Time per request:      128.001 [ms] (mean, across all concurrent requests)
Connect:        0    1  1.4      0      5
Transfer rate:          73.73 [Kbytes/sec] received
Processing:  803 2522 572.9  2485    4346
 
Waiting:      648 2126 526.2  2053    4000
Connection Times (ms)
Total:        807 2523 572.5  2485    4346
              min  mean[+/-sd] median  max
Percentage of the requests served within a certain time (ms)
Connect:        0    1  1.4      0      5
  50%  2485
Processing:  803 2522 572.9  2485    4346
  66%  2557
Waiting:      648 2126 526.2  2053    4000
  75%  2690
Total:        807 2523 572.5  2485    4346
  80%  2740
 
  90%  3120
Percentage of the requests served within a certain time (ms)
  95%  3624
  50%  2485
  98%  4261
  66%  2557
  99%  4272
  75%  2690
  100%  4346 (longest request)
  80%  2740
'''Ühenduse probleemid'''  
  90%  3120
  95%  3624
  98%  4261
  99%  4272
100%  4346 (longest request)
 
 
'''Ühenduse probleemid'''


Juhul kui esineb 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:
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
  nano /var/www/wordpress/wp-config.php
Line 567: Line 595:
== Iptables ==
== Iptables ==


'''protsessis...'''
'''Laboris tuleb kasutada enda arvuti IP'd!'''


Teie '''iptables.conf''' fail peab välja nägema nii nagu näidatud allpool:
Teie '''iptables.conf''' fail peab välja nägema nii nagu näidatud allpool:
Line 579: Line 607:
-A INPUT -s 192.168.6.101/32 -j ACCEPT  
-A INPUT -s 192.168.6.101/32 -j ACCEPT  
-A INPUT -m state --state ESTABLISHED -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  
-A OUTPUT -o lo -j ACCEPT  
COMMIT
COMMIT
Line 587: Line 612:


'''Räägime täpsemalt milleks need reeglid vaja on.'''
'''Räägime täpsemalt milleks need reeglid vaja on.'''
'''1. Endaoma IP'd'''


Kui tahame varnish'it kasutada, tuleb lubada porti 8000:
Kui tahame varnish'it kasutada, tuleb lubada porti 8000:
Line 605: Line 628:
</pre>
</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.
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.
See rida annab võimalust katkestada ühendusi mille arv on üle 10 pordis 80:
Allolev rida annab võimalust katkestada ühendusi mille arv on üle 10 pordis 80:
<pre>
<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
iptables -A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
Line 625: Line 648:
</pre>
</pre>


Nimeserveri lubamiseks peame avama nii '''tcp''' kui ka '''udp''' pordid:
On alati tervislik lubada localhost õue:  
<pre>
iptables -A INPUT -s 192.168.6.200/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.6.200/32 -p udp -m udp --dport 53 -j ACCEPT
</pre>
 
SSL'i jaoks:
<pre>
iptables -A INPUT -s 192.168.6.200/32 -p tcp -m tcp --dport 443 -j ACCEPT
</pre>
 
<pre>
<pre>
iptables -A OUTPUT -o lo -j ACCEPT  
iptables -A OUTPUT -o lo -j ACCEPT  
Line 646: Line 659:
== Späm filter ==
== 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 need spämmi reegleid, et blokeerida tuleviku 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 kommentaare ja pinge.
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 audentimist. Blogi administratoor peab ise antud teenust aktiveerima.  
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:
Selleks, et aktiveerida Akismeti, on vaja:


1) Administraatoori paneelis on vaja valida '''Plugins - Installed'''  
1) Administraatoori paneelis on vaja valida '''Plugins - Installed'''  


2) Linnuke Akismeti juurde ja valida '''"Activate"'''
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.
3) Nüüd peab sisestama Akismeti API võtme. Võtme saab tasuta tellida Akismeti ametlikult veebilehelt.
Line 667: Line 680:
== Anti-bot lahendus ==
== 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 probleemid kasutajatele, eriti nendele, kes ei suuda korralikult näha märke.
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:
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
1) Mine oma wordpress plugin kataloogisse


<pre>cd /var/www/wp-content/plugins/</pre>
<pre>cd /var/www/wordpress/wp-content/plugins/ </pre>


2) Käsuga wget allalaadime plugini
2) Käsuga wget laeme alla plugini


<pre>wget http://downloads.wordpress.org/plugin/growmap-anti-spambot-plugin.1.1.zip</pre>
<pre>wget http://downloads.wordpress.org/plugin/growmap-anti-spambot-plugin.1.1.zip</pre>


3) Pakime lahti antud arhiivi
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>
<pre>unzip growmap-anti-spambot-plugin.1.1.zip</pre>
Line 687: Line 706:
== IP kontroll ==
== IP kontroll ==


Tihti on vaja turvata väga vajalikke faile. Selle jaoks on vaja:
Tihti on vaja turvata väga vajalikke faile. Selle jaoks on vaja käsurealt:


1) Mine oma wordpress kataloogi
1) Mine oma wordpress kataloogi
Line 693: Line 712:
<pre>cd /var/www/wordpress</pre>
<pre>cd /var/www/wordpress</pre>


2) Teeme .htaccess faile. Antud teksti-fail wordpress kasutab oma reeglite jaoks.  
2) Teeme .htaccess fail. Antud teksti-faili kasutab wordpress oma reeglite jaoks.  


<pre>touch .htaccess</pre>
<pre>touch .htaccess</pre>


3) Kirjuta järgmised reegleid:
3) Ava .htaccess ja kirjuta sinna järgmised reegleid:
 
nano .htaccess


Esiteks, kaitseme meie .htaccess faile, et keegi ei saaks selle vaadata.
Esiteks, kaitseme meie .htaccess faili, et keegi ei saaks seda vaadata.


<pre>
<pre>
Line 709: Line 730:
</pre>
</pre>


Kaitseme meie admin logini, selleks et adminina saab logida ainult määratud IP aadressilt.
Kaitseme meie admin logini, selleks et adminina saaks logida ainult määratud IP aadressilt.


<pre>
<pre>
Line 719: Line 740:
</pre>
</pre>


WPconfig on teine väga oluline fail. Seda tuleb ka kaitsta:
WPconfig on teine väga oluline fail. Seda tuleks ka kaitsta:


<pre>
<pre>
Line 730: Line 751:
</pre>
</pre>


Nüüd tuleb '''wp-admin''' kataloogis teha veel uue '''.htaccess''' faili ja kirjutada järgmised reegleid:
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>
<pre>
Line 747: Line 774:


http://wptidbits.com/tutorials/21-most-popular-htaccess-hacks-for-wordpress/
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=
=Autorid=

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