WordPress turvamine: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Metamm (talk | contribs)
Metamm (talk | contribs)
Line 149: Line 149:


Kõigepealt on viisakas luua koht, kuhu antud moodul oma logi saaks salvestada
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
NB! Logimine praegu ei tööta
Line 154: Line 156:
Mod_evasive moodulil ei lubata antud kausta kirjutada
Mod_evasive moodulil ei lubata antud kausta kirjutada
  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
mkdir /var/log/apache2/mod_evasive
chown www-data:www-data /var/log/apache2/mod_evasive


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)

Revision as of 11:19, 9 November 2011

!NB Kõik õpetused on tehtud kasutades Ubuntu Server 11.04

WordPressi paigaldamine

Varnishi lisamine wordpressile

SuperCache kasutamine

DoS rünnaku tõrjumine mod_evasive mooduliga

Wordpressi paigaldus ja konfigureerimine

Antud toimingud tuleks teha root õigustes.

Mine root-iks:

sudo -i


Tee update kohalike pakettide cache

aptitude update


Tee upgrade pakettidele:

aptitude full-upgrade

Paigalda acpid daemon

aptitude install acpid


Installi apache2 veebi server,mysql andmebaasi server, openssh server, php5 skriptimis keel ning apache2-utils(Apache benchmark tool)

aptitude install apache2 mysql-server ssh php5 php5-mysql apache2-utils


Tõmba alla kõige hilisem .tar fail wordpress.org-ist:

wget http://wordpress.org/latest.tar.gz


Paki lahti wordpressi failid /var/www kausta:

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


Logi mysql-i sisse:

mysql -u root -p

Loo andmebaas student_wordpress:

 create database student_wordpress;

Loo kasutaja student:

 create user student;

Anna kõik õigused student kasutajale:

 GRANT ALL PRIVILEGES ON student_wordpress.* TO student@localhost IDENTIFIED BY ‘student’;

Välju mysql-ist:

 quit;

Loo uus default veebi saidil põhinev veebi sait:

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/wp


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

nano /etc/apache2/sites-avalible/wp

Lisa DocumentRoot /var/www rea lõppu DocumentRoot /var/www/wordpress

DocumentRoot /var/www/wordpress



Keela ära tavaline default veebi sait(seda ei ole vaja antud paigalduses):

a2dissite default


Luba wordpress-i veebisait

a2ensite wp

Tee apache-ile restart

service apache2 restart

Muuda wordpress konfiguratsiooni faili:

nano /var/www/wordpress/wp-config-sample.php

Muuda DB_NAME, DB_USER, DB_PASSWORD vastavalt näitele:

define('DB_NAME', 'student_wordpress');

/** MySQL database username */
define('DB_USER', 'student');

/** MySQL database password */
define('DB_PASSWORD', 'student');

Kopeeri uus konfiguratsiooni fail wordpressi konfiguratsiooni failiks:

cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php


Tee apache2 service-ile reload

service  apache2 reload

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

http://192.168.56.102


Vali saidi nimi, kasutajanimi, salasõna ning meili aadress.

Vali install

Installi lõppedes tee kindlaks,et kõik toimib(log sisse, vaata wp verisooni ilmselt midagi sellist: You are using WordPress 3.2.1.)

mod_evasive paigaldus ja konfigureerimine

Sissejuhatus

Mod_evasive on lisamoodul Apache'i veebiserveri jaoks, mille abil on võimalik vähendada või täielikult tõrjuda HTTP DoS, DDos või brute force rünnakute mõju. Ühtlasi saab seda kasutada ka monitooringu teostamiseks, kuna moodulit on lihtne panna suhtlema erinevate tulemüüride ja ruuteritega.

Monitooring baseerub dünaamilisel IP aadressitest ja URI-dest koosneval räsitabelil, kust siis keelatakse IP aadressid, mis:

  • küsivad ühte lehte rohkem kui paar korda sekundis
  • teevad rohkem kui 50 üheaegset requesti sama laps-protsessi vastu
  • üritavad teha ükskõik millist requesti samal ajal kui nad on mustas nimekirjas

Paigaldus

Paigaldamine Ubuntu 11.04 serverile on küllaltki lihtne

apt-get install libapache2-mod-evasive

Konfigureerimine

Kõigepealt on viisakas luua koht, kuhu antud moodul oma logi saaks salvestada

mkdir /var/log/apache2/mod_evasive
chown www-data:www-data /var/log/apache2/mod_evasive

NB! Logimine praegu ei tööta

Mod_evasive moodulil ei lubata antud kausta kirjutada

Couldn't open logfile /var/log/apache2/mod_evasive/dos-192.168.6.13: Permission denied

Nüüd jääb üle lisada vastavad read oma virtuaalsesse hosti (N:~/apache2/sites-enabled/wordpress lõppu)

<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir /var/log/apache2/mod_evasive
DOSEmailNotify root@localhost
DOSWhitelist 127.0.0.1
</ifmodule>

Antud väärtusi tuleks kohandada vastavalt vajadustele

Parameetrite kirjeldused:

  • DOSHashTableSize: Räsitabeli suurus, kus IP aadresseid hoitakse.
  • DOSPageCount: Lehekülgede arv DOSPageInterval sekundis.
  • DOSPageInterval: Aeg sekundites, mida kasutab DOSPageCount.
  • DOSSiteCount: Objektide arv DOSSiteInterval sekundites.
  • DOSSiteInterval: Aeg sekundites, mida kasutab DOSSiteCount.
  • DOSBlockingPeriod: Aeg sekundites, kui kaua IP on bannitud. Kui IP üritab serverile selle aja see ligi pääseda, siis algab loendus ueusti nullist.
  • DOSLogDir: Valikuline. Kataloogitee, kuhu logi salvestatakse. Kui pole määratud kasutatakse /tmp.
  • DOSEmailNotify: Valikuline. Mail kuhu teated saadetakse.
  • DOSSystemCommand: Valikuline. Käsk mis käivitatakse, kui IP bannitakse. Näiteks:
    • DOSSystemCommand "/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP"
  • DOSWhitelist: Valikuline. Nimekiri IP aadressitest, mida ei blokita.


Kui konfigureerimine valmis, tuleb Apache serverlie teha restart

/etc/init.d/apache2 restart
VÕI
service apache2 restart

Varnish Cache-i paigaldamine ja konfigureerimine

Sissejuhatus

Varnish Cache - see on HTTP kiirendaja, ta on vaja, et maksimaalselt suurendada veebilehekülje kiirendust. Varnish Cache salvestab mälus veebilehekülg nii, et veebiserverid ei pea koguda sama lehekülg uuesti ja veel kord uuesti.

Paigaldamine

Kui te soovite installida Varnishit, siis on vaja teha uuendusi. Selle käsu abil uuendame opsüsteemi:

sudo apt-get update

Paigaldamise käsk:

sudo apt-get install varnish

Konfiguratsiooni muutmine

Esimene, mis me teeme, default pordi muutmine. Tuleb muuta faili /etc/default/varnish:

nano /etc/default/varnish

Konfigureerimine Varnichi jaoks kirjutatakse VCL keeles.

Fail konfiguratsioonidega vaikselt asub siin /etc/varnish/default.vcl Fail oleneb mitmest osadest, aga mis on vaja töötamise alguseks - see on backendi viitamine:

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

Kopeerige fail /etc/varnish/default.vcl ja andke teine nimetus

cp /etc/varnish/default.vcl /etc/varnish/itkool.vcl

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

nano /etc/varnish/itkool.vcl
## Redirect requests to Apache, running on port 8000 on localhost
backend apache {
        .host = "127.0.0.1";
        .port = "8000";
}
## Fetch
sub vcl_fetch {
		## Remove the X-Forwarded-For header if it exists.
        remove req.http.X-Forwarded-For;
		
		## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user.
        set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;
		## Added security, the "w00tw00t" attacks are pretty annoying so lets block it before it reaches our webserver
        if (req.url ~ "^/w00tw00t") {
                error 403 "Not permitted";
        }
		## Deliver the content
        return(deliver);
}

## Deliver
sub vcl_deliver {
		## We'll be hiding some headers added by Varnish. We want to make sure people are not seeing we're using Varnish.
              ## Since we're not caching (yet), why bother telling people we use it?
        remove resp.http.X-Varnish;
        remove resp.http.Via;
        remove resp.http.Age;
		
		## We'd like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it.
        remove resp.http.X-Powered-By;
}

Salvesta fail CTRL + O käsuga

Apache konfiguratsiooni muutmine

Ava fail etc/apache2/ports.conf ja leia

nano /etc/apache2/ports.conf
NameVirtualHost *:80
Listen 192.168.6.101:80

Muuda

NameVirtualHost *:8000
Listen 192.168.6.101:8000

...VHOSTS...


Praegu paigaldame lisa Apache moodul selle jaoks, et veenduda kas kasutaja IP aadress lõpeb korrektselt. Praegu Varnish on põhimõtteliselt seotud apache2. Kuna Lakk on põhimõtteliselt rääkides apache2, sa võib näidata aadressil 127.0.0.1 nagu külastaja IP.

nano apt-get install libapache2-mod-rpaf

RPAF (Reverse Proxy Add Forward) moodul ...


Deemonide restart

Restart Apache server:

/etc/init.d/apache2 restart

Super Cache

Selle osa koostamine on veel töös.

Super Cache-i paigaldamiseks tuleb sisse logida admin-paneeli. Siis vasakult nimekirjast valida Plugins-i alt Add new.

Siis kirjutada otsingusse "WP Super Cache".

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

Pärast seda "Activate the Plugin".

Super Cache -i toimimiseks on vajalik valida Custom structure Permalink-i seadete alt ning sisestada sinna "p=?/%post_id%/".

Edasi vali vasakult Settings-u alt WP Super Cache.

Iptables

protsessis...


*filter
:INPUT DROP [1066:176948]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [58875:56066315]
-A INPUT -s 192.168.6.101/32 -p tcp -m tcp --dport 8000 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -s 192.168.6.1/32 -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7
-A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -s 192.168.6.101/32 -j ACCEPT 
-A INPUT -m state --state ESTABLISHED -j ACCEPT 
-A INPUT -s 192.168.6.200/32 -p tcp -m tcp --dport 53 -j ACCEPT 
-A INPUT -s 192.168.6.200/32 -p udp -m udp --dport 53 -j ACCEPT 
-A INPUT -s 192.168.6.200/32 -p tcp -m tcp --dport 443 -j ACCEPT 
-A OUTPUT -o lo -j ACCEPT 
COMMIT