tavis nörttimaailmassa

EksisONE - artikkeleita ja ohjeita nörttimaailmasta

Nopean WordPressin asennus virtuaaliserverille

Palomuuri UFW

Palomuuri suojelee ulkomaailmalta ja sallii webbisivujen ja muiden palveluiden turvallisen käytön. Se on asennettava ennen kuin mitään päästetään linjoille. Tarkkaan ottan palomuuri on ohjelma nimeltään itables ja ufw on sen käyttöliittymä, mutta usein sanotaan yksinkertaisuuden nimissä, että ufw on palomuuri.

Se on todennäköisesti jo asennettuna, mutta varmistetaan asia:

ufw status

Jos sait vastaukseksi Status inactive niin ufw on paikoillaan, mutta ei käynnissä. Tällä hetkellä kukaan muu kuin sinä ei pääse serverille. Jos sait vastaukseksi, että ufw:tä ei löydy, niin asenna se:

apt install ufw

Nyt on aika avata ovet maailmalle, vaikka ensimmäistäkään sivusto ei ole vielä asetettu. Mutta webserveri ja SSH on kuitenkin käytössä.

Perustasollaan UFW (lyhennys englanninkielisestä nimestä Uncomplicated FireWall, mutkaton palomuuri) on todella helppo säätää. Katsotaan mitä on valmiina odottamassa:

ufw app list

Se näyttää tältä:


root@demo:~# ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

UFW sallii aukaisemisia, sulkemisia ja muuta kulunvalvotaa per portti tai porttialue, saapuvien IP-osoitteiden mukaan tai minkälaista yhteyttä ollaan tekemässä, mutta nyt päästään helpommalla. Käytetään valmiita ratkaisuja asennettujen ohjelmistojen mukaan. Meitä kiinnostaa Nginx FULL, että saadaan nettiliikenne auki tavalliselle http:lle eli porttiin 80 sekä https portista 443. Kun jossain vaiheessa otat SSH:n käyttöön, niin sekin on hyvä mahdollistaa.

Aukaisuun tarvitaan pari yksinkertaista komentoa:

ufw allow 'Nginx Full'
ufw allow OpenSSH

Käynnistetään palomuuri:

ufw enable

Sinulle ilmoitetaan, että käynnistys saattaa katkaista nykyisen SSH-yhteyden. Se ei haittaa, sillä jos et ole jossain välissä itse tehnyt SSH:ta, niin se ei ole edes käytössä. Vastaa y.

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y 

Saat ilmoituksen, että palomuuri on käytössä ja se käynnistetään serverin mukana.

Firewall is active and enabled on system startup

Tarkistetaan vielä mikä on nykyinen tilanne:

ufw status

Sinulle kerrotaan mitkä ovat käynnissä:


root@demo:~# ufw status
Status: active

To                  Action       From
--                  ------       ----
Nginx Full          ALLOW        Anywhere
OpenSSH             ALLOW        Anywhere
Nginx Full (v6)     ALLOW        Anywhere (v6)
OpenSSH (v6)        ALLOW        Anywhere (v6)

Fail2ban

Fail2ban on ohjelma, joka seuraa epäonnistuneita kirjautumisia, yrityksiä väärään paikkaan ja kaikkea muuta, joka ei ole sallittua. Kun yrityksiä tulee liikaa, niin Fail2ban estää IP-osoitteen määrätyksi ajaksi kirjoittamalla iptablesiin (siihen aitoon palomuuriin) säännön, joka keiltää pääsyn kokonaan. Hyödyllinen apuväline, koska murtoyrityksiä tulee koko ajan. Joten muista pitää niin serverisi kuin WordPressin päivitykset ajan tasalla.

Asennetaan Fail2ban:

apt install fail2ban

Se ei ole tällaisenaan kovinkaan hyödyllinen, mutta suojaa ainakin SSH:n. Säädetään se myöhemmin avuliaammaksi, kun ollaan saatu sivusto paikoilleen.

Annetaan sen käynnistyä automaattisesti, kun serverikin käynnistyy:

systemctl enable fail2ban

Käynnistetään se:

systemctl start fail2ban

Vilkaistaan saman tien onko se jo pyydystänyt IP-osoitteita, jotka ovat yrittäneet kirjautua serverille:

fail2ban-client status sshd

Minulla tulos oli tällainen, kun droplet oli noin kolmen tunnin ikäinen:


root@demo:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 9
| |- Total failed: 45
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 140.143.238.46

Tuo tarkoittaa, että sillä hetkellä oli yksi IP-osoite bannattu ja logissa oli kaikkiaan 45 yritystä, joista 9 oli tutkittavan aikajanan sisällä, mutta yrityksiä ei ollut riittävästi – nuo kaikki määritellään asetuksissa, myöhemmin.

Kokeillaan yhtä komentoa lisää. Katsotaan mistä tuo IP-osoite oli:

whois 140.143.238.46

inetnum: 140.143.0.0 - 140.143.255.255
netname: TencentCloud
descr: Tencent cloud computing (Beijing) Co., Ltd.
descr: Floor 6, Yinke Building,38 Haidian St,
descr: Haidian District Beijing
country: CN

Kiinalainen botti. Noita riittää. Jopa niin paljon, että pystyvät saamaan serverisi jopa kyykistymään. Kiina ja Iran ovat niin pahoja ongelmia, että sinun kannattaa tulevaisuudessa miettiä niiden bannaamista kokonaan. Toki Fail2ban siivoaa niitä minkä ehtii, mutta sinulla on hyvin äkkiä kymmeniä tuhansia IP-osoitteita Fail2bannin sulkulistalla.