6. Viikkotehtävä (Palvelinten hallinta)

Viimeisiä viedään ja tällä kertaa käsittelen lopputyöksi tehtävää moduuliani. Tavoitteenani on luoda salt-tila joka asentaa koneelle sopivat ohjelmat irkkailuun ja etätyöskentelyyn (graafisesti sekä ssh).

Tehtävät ovat osana Tero Karvisen palvelinten hallinta -kurssia. Tehtävänannot löytyvät Teron kotisivuilta.

Käytän tehtävissä pöytäkonettani jossa on asennettuna Windows 10 (1709) sekä VirtualBox jossa Xubuntu 16.04.4 (64-bit)

Tehtävä A

Kultainen polku. Tee ensimmäinen versio modulistasi, joka toimii ainakin optimiolosuhteissa. Jos jokin säätö on poikkeuksellisen hankala, voit tehdä sen tässä versiossa käsin, ja dokumentoida ajamasi käskyt. (Valmis moduli tarvitaan vasta esitykseen ensi viikolla).

Tulen käyttämään ainakin seuraavia paketteja:

  • Irssi
  • x11vnc
  • OpenSSH

Lähdin ensin testaamaan asennuksia suoraan käsin, ja aloitan sepustuksen Irssin asetuksista.

Irssi

Asensin paketin komennolla

sudo apt-get install -y irssi

Yritin selvittää missä irssin asetustiedostot sijaitsevat ja tarpeisiini sopivaa neuvoa löysin AskUbuntu -foorumeilta. (Config-tiedosto löytyy hakemistosta ~/.irssi/config)

Lisäsin itselleni myös ketjussa mainitun Freenode IRC-palvelimen. Seuraavat komennot annoin irssissä.

/server add -auto -network Freenode irc.freenode.net 6667

Tässä määritin automaattisen yhdistämisen kyseiseen verkkoon aina kun Irssi avataan. Luonnollisesti porttiin 6667 jota IRC protokolla käyttää.

Seuraavaan asetukseen toivoisin löytäväni ratkaisun vielä, sillä haluaisin saada orjakoneiden käyttäjille suoraan omat nimimerkit käyttöön. Mutta tässä tapauksessa lisäsin vain jonkun jotta pääsin etenemään.

/network add -nick Suolamies88 Freenode

Huomiona tästä että tämä nimimerkki pätee siis ainoastaan kyseiselle Freenode palvelimelle. En myöskään rekisteröi nimimerkkiä tässä vaiheessa, eikä se ole välttämätöntä.

Lisäsin vielä testikanavan johon liitytään automaattisesti.

/channel add -auto #Suolakaivos2018 Freenode

Ja jälleen siis pätee vain Freenoden palvelimeen.

Tässä vaiheessa irssiasetuksia on tehty tarpeeksi testejä varten. Tallennan vielä asetukset config-tiedostoon komennolla

/save

Irssi suljetaan komennolla

/quit

Salt-tilaa ajatellen tarvitsen sls-tiedostoon siis ainakin pakettiasennukseksi irssin ja config tiedoston ylläpidon. Pelkästään tämän vaiheen voisi siis suorittaa seuraavalla tilatiedostolla:

pkg.installed:
  - pkgs:
    -  irssi

~/.irssi/config:
  file.managed:
    - source: salt://moduuli/config
    - makedirs: True

Etätyöpöytä – x11vnc

Halusin lisätä moduuliini graafisen etätyöpöytäyhteyden, ja sain kaivettua siihen tarkoitukseen x11vnc serverin.

Käyttöönotto käsin oli todella helppoa. Ainakin jos testiympäristönä on turvallinen lähiverkko. Asensin paketin komennolla:

sudo apt-get install x11vnc

Tätä pystyikin testaamaan suoraan pelkästään syöttämällä x11vnc terminaaliin.

Huomioitavaa tässä on se, että yhteyttä ei ole suojattu salasanalla tässä vaiheessa. Ohjelma tästä näkyvästi varoittaakin kun sen käynnistät. Lisään vielä salasanan yhteyden sallimiseksi myöhemmin.

1

Yhdistämiseen tarvitsen vielä VNC clientin. Testasin yhteyttä VNC Viewer ohjelmalla Windows 10 koneella. Tarkistin virtuaalikoneen ip-osoitteen komennolla ifconfig ja lisäsin sen VNC Vieweriin.

2

Huomioitavaa tässä on myös se, että VNC käyttää porttia 5900. Avataan siis portti muurista.

sudo ufw allow 5900/tcp

ja käynnistetään muuri samalla..

sudo ufw enable

Tämän jälkeen siirryin takaisin VNC Vieweriin ja yhdistin koneen IP-osoitteeseen.

3

Mitään suojausasetuksia en ole katsonut tässä vaiheessa. Tämän vuoksi myös VNC Viewer tästä muistuttaa. Jatketaan joka tapauksessa.

4

Työpöytä ilmestyi välittömästi ja pystyin käyttämään konetta täysin VNC Viewerin kautta. Ohjelma muistuttaa vieläkin punaisella herjalla että yhteys tosiaan ei ole salattu. Pyrin saamaan tämän suojatuksi lopputuloksessa.

Lisäsin kuitenkin salasanan yhteyden muodostamiseen. Pikaohjeet tästä näkyi aikaisemmin näkyneestä varoitusviestistä kun käynnistin x11vnc.

Suljin virtualikoneelta x11vnc painamalla CTRL + C. Lisäsin testisalasanan seuraavalla komennolla:

x11vnc -storepasswd testi123 ~/Documents/passwd

Salasanan säilytys kyseisessä hakemistossa ei ole järkevää, mutta haluan välttyä ylimääräiseltä kikkailulta vielä testivaiheessa.

Testasin yhteyttä uudelleen, mutta tällä kertaa komennolla

x11vnc -rfbauth ~/Documents/passwd

Siirryin VNC Vieweriin yhdistämään:

5

 

Tällä kertaa vaadittiin salasanaa, ja sisään pääsi määritetyllä salasanalla. Tämä riittänee vielä tässä vaiheessa.

Tilatiedostossa tämä operaatio näyttäisi tältä:

pkg.installed:
  - x11vnc

ufw.service:
  service.running:
    - watch:
      - file: /etc/ufw/user.rules

ufw.service:
  service.running:
    watch:
      - file: /etc/ufw/user.rules

pass.sh:
  cmd.script:
    - source: salt://moduuli/pass.sh

x11_start.sh:
  cmd.script:
    - source: salt://moduuli/x11_start.sh

Lisäsin pari bash-scriptiä jotka ajavat salasanan luonnin ja x11vnc käynnistyksen parametreineen. Myös palomuurin porttimuutokset tuli lisätä user.rules tiedoston avulla.

pass.sh:

#!/bin/bash
x11vnc -storepasswd testi123 ~/Documents/passwd

x11_start.sh

#!/bin/bash
x11vnc -rfbauth ~/Documents/passwd

Näillä eväillä etätyöpöytä toimii ainakin alkeellisesti. Suojatut yhteydet on vielä tavoitteena.


OpenSSH

OpenSSH ei vaadi erikoisempia toimenpiteitä. Asennetaan paketti komennolla:

sudo apt-get install -y openssh-server

Saattaa olla että muutan default portin (22) jossain vaiheessa, mutta en vielä näe sitä tarpeellisena. Portin vaihtamiseen pitäisi ylläpitää tiedostoa /etc/ssh/sshd_config.

Tilatiedostossa OpenSSH asennus on seuraavasti:

pkg.installed:
  - openssh-server

Lopputulos

Lopullinen tilatiedosto näyttää tältä:

paketit:
  pkg.installed:
    - pkgs:
      - x11vnc
      - irssi
      - openssh-server

/etc/ufw/user.rules:
  file.managed:
    - source: salt://testi/user.rules

ufw.service:
  service.running:
    - watch:
    - file: /etc/ufw/user.rules
 
~/.irssi/config:
  file.managed:
    - source: salt://testi/config
    - makedirs: True

pass.sh:
  cmd.script:
    - source: salt://testi/pass.sh

x11_start.sh:
  cmd.script:
    - source: salt://testi/x11_start.sh

Seuraavaksi lähdin testaamaan tilaa tyhjältä koneelta.


Tehtävä B

Kokeile moduliasi tyhjässä koneessa. Voit käyttää virtualboxia, vagranttia tai livetikkua.

Asensin VirtualBoxiin tuoreen Xubuntu 16.04.4 (64-bit) asennuksen. Pistin käyttöjärjestelmän ajan tasalle komennoilla:

sudo apt-get update && sudo apt-get upgrade

Tarvitsin moduuliin tarvittavat tiedostot git-varastostani, joten asennin gitin.

sudo apt-get install -y git

Kloonasin varastoni komennolla:

git clone https://github.com/mikokala/bash.git

Tarvitsen vielä salt-minion asennuksen, sillä ajan tilan high.state komennolla paikallisesti.

sudo apt-get install -y salt-minion

Siirryin kloonatun git-varaston juureen komennolla:

cd bash/

Ajoin skriptin komennolla:

sudo sh high.sh

(Skripti käynnistää terminaaliin x11vnc-istunnon, jonka vuoksi skripti ei suoriudu loppuun ennen kuin etäyhteys on otettu ja suljettu)

Ensimmäiseksi testasin Irssiä:

6

Irssi yhdisti suoraan Freenode-verkkoon ja liittyi kanavalle #Suolakaivos2018, nimimerkillä Suolamies88. Tämä osa onnistui juuri kuten pitikin!

Seuraavaksi tarkistin etätyöpöytää. Tarkistin virtuaalikoneen IP-osoitteen komennolla ifconfig

7

IP-osoitteeksi annettiin kummallinen 10.0.2.15, joka ei ollut lähiverkkoni osoiteavaruudessa. Jotta sain virtuaalikoneelle lähiverkon osoitteen, vaihdoin VirtualBoxissa asetuksista network adapterin NAT -> Bridged Adapter.

8

192.168.10.110 kuulostaa paremmalta. Siirryin Windows 10 koneelleni VNC Viewer sovellukseen.

9

Lupaavalta näyttää. VNC Viewer pyytää salasanaa yhdistäessä.

10

Yhdistäminen onnistui hyvin ja toimii moitteettomasti. Kuvassa VNC yhteys ja virtuaalikone rinnakkain.

Tarkistettavaksi jääkin OpenSSH ja palomuuriasetukset. Ne voidaan vilkaista pikaisesti seuraavasti:

ssh db1@localhost

11

SSH-yhteys toimii – ainakin paikallisesti.

Katsoin vielä miltä palomuurin säännöt näyttävät:

sudo ufw status

12

Palomuuri ei jostain syystä ollut käynnistynyt, mutta säännöt olivat kuitenkin menneet läpi. Yritän saada palomuurin käynnistymään lopputuloksessa.

Tilatiedostolla sain kuitenkin tyhjän koneen nopeasti haluamaani tilaan. Vielä on viilattavaa lopputyötä varten.


Tehtävä C

Käyttäjätarina (user story): ketkä ovat modulisi käyttäjät? Mitä he haluavat saada aikaan modulillasi? Missä tilanteessa he sitä käyttävät? Mitkä ovat tärkeimmät parannukset käyttäjän kannalta, joita moduliin pitäisi vielä tehdä?

Moduulia voi hyödyntää useassa tilanteessa, mutta päällimmäisenä ajattelin tätä ylläpitotehtävissä toimiville henkilöille, jotka tarvitsevat viestintä- sekä etätyöskentelytyökalut. Irssi mahdollistaa välittömän viestinnän yhden tai useamman henkilön kanssa jolloin tietoa voidaan jakaa viiveettä.

Etätyöpöytä x11vnc tarjoaa komentoriviä selkeämmän tavan työskennellä työasemalla, ja joissain tapauksissa voidaan tarvita graafista käyttöliittymää vianselvitykseen. OpenSSH tarjoaa kuitenkin tarvittaessa komentorivin, mikäli graafista käyttöliittymää ei tarvita.

Tärkeimpiä parannuksia olisi esimerkiksi Irssiä varten shell-tunnukset käyttäjille, joka sallisi pysyvän yhteyden irc-palvelimelle, ja miksi ei jopa yksityistä irc-palvelinta voisi luoda. Etätyöpöytää varten yhteyden suojaus ja salaus on suuri prioriteetti, ja toivonkin saavani tähän parannusta lopputulosta ajatellen.

Parannuksia tähän ideaan löytyy vielä paljon, mutta haluaisin pitää tämän mahdollisimman nopeana ja yksinkertaisena laittaa käyttövalmiiksi.


Lähteet

terokarvinen.com

karlunge.com/x11vnc

saltstack.com

stackoverflow.com

askubuntu.com


Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

 

Mainokset

2 thoughts on “6. Viikkotehtävä (Palvelinten hallinta)

Add yours

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s

Luo ilmainen kotisivu tai blogi osoitteessa WordPress.com.

Ylös ↑

%d bloggers like this: