Edelliseen tehtävään Etusivulle Seuraavaan tehtävään

Anna Kröger 2020-02-24

Oma julkinen palvelin

Tämä on Tero Karvisen Linux palvelimet -kurssin neljännen kotitehtävän raportti. Tässä linkki kurssisivulle.

Tehtävänanto (h4):

Tee alusta lähtien oma julkinen palvelin Internetiin.

Vinkkejä: Tee siis uusi virtuaalipalvelin (esim "Droplet") ja sille tarvittavat alkutoimet. Tee uusi DNS-nimi. Alanimiä voi yleensä tehdä maksutta: esim. jos hallitsee TeroKarvinen.com, voi tehdä hattu.TeroKarvinen.com. Tässä tehtävässä on tarkoitus sujuvoittaa koko prosessi, tee siis uusi A-tietue nimipalvelimeen ja uusi virtuaalipalvelin alusta lähtien, vaikka sinulla olisi jo sekä nimi että palvelin. Kun kaikki toimii ja raportti on valmis, voit poistaa turhan palvelimen ja jättää itsellesi esimerkiksi vain yhden käyttöön. Jos jäät jumiin, pyri päättelemään, mitkä osat toimivat ja mitkä eivät; ratkomme viimeiset ongelmat yhdessä tunnilla. Palautusaika on tuttuun tapaan 24h ennen seuraavaa tapaamiskertaa, eli vasta talvivapaan jälkeen.


Virtuaalipalvelin ja DNS-nimi

Ensimmäiseksi loin uuden virtuaalipalvelimen DigitalOceaniin. Kirjauduin jo aikaisemmin tehdyillä tunnuksillani sisään palveluun. Valitsin Create ja siitä Droplet

Dropletin luonti

Dropleteista valitsin halvimman mahdollisen, eli Ubuntu, standard ja 5$/kk.

Dropletin luonti

Sijainniksi valitsin Frankfurtin ja autentikoinniksi "One-time password". Nimeksi valitsin "yeah". Koska minulla on vain yksi projekti valmiina (LinuxPalvelimet), on se automaattisesti valittu oletuksena. Lopuksi "Create Droplet". Hetken päästä droplet oli luotu ja siitä näkyi IP-osoite. Tarkistin, että sain sähköpostiini kertakäyttöisen salasanan, ja näin palvelin oli jo käytettävissä.

Ilmaisen DNS-nimen loin namecheapilla, käyttäen education.githubia, josta klikkasin linkkiä, ja "Claim your free domain"-sivu aukesi. Nimeksi valitsin linuxjuttuja.me (me-pääte oli se, jonka sai ilmaiseksi). Kirjauduin käyttäjälläni sisään, ja klikkasin "confirm order".

Jotta sain palvelimen yhdistettyä linuxjuttuja.me osoitteeseen, menin namecheapin sivuilla oman profiilini dashboard kohtaan. Siellä klikkasin juuri hankkimani nimen kohdasta "MANAGE" ja sieltä "Advanced DNS". Siellä valitsin "Host records" kohdassa add new record.

Type = A Record
Host = @ (Koska kaikissa muissakin A Record -typeissä luki sama)
IP Address = 207.154.219.154 (eli palvelimeni IP-osoite)
TTL = 30 min

Lopuksi: Save all Changes

DNS

SSH-yhteys, palomuuri ja käyttäjät

Seuraavaksi asensin apachen (samalla tavalla, kuin viime viikon tehtävässä). Sen lisäksi asensin kuitenkin myös SSH:n.

$ sudo apt-get install ssh

Sitten otin SSH-yhteyden palvelimelle.

$ ssh root@207.154.219.154

Varmistin, että kyllä, haluan yhdistää. (Are you sure you want to continue connecting (yes/no)? Tämän jälkeen syötin ensin sen aikaisemmin sähköpostiin saamani salasanan, jonka jälkeen vaihdoin sen uuteen.

Seuraavaksi loin palomuurin aukon SSH-yhteydelle, jonka jälkeen laitoin palomuurin päälle.

$ sudo ufw allow 22/tcp

$ sudo ufw enable

Seuraava askel oli luoda uusi käyttäjä, jolla on kaikki oikeudet. Tässä vaiheessa kysyttiin myös mm. uuden käyttäjän salasanaa.

$ sudo adduser anna

$ sudo adduser anna sudo

$ sudo adduser anna adm

$ sudo adduser anna admin

Viimeinen komento ei kuitenkaan onnistunut. Virheenä tuli, ettei admin ole käyttäjäryhmä. Tämän jälkeen yritin kuitenkin ottaa SSH-yhteyden palvelimelle. Syötin salasanan, mutta se ei toiminut. Syötin salasanan uudelleen, mutta se ei vieläkään toiminut. Kolmannella kerralla luki "permission denied". Tulin siihen tulokseen, että en näköjään muistanut salasanaani, joten tein uuden käyttäjän ja yritin koko hommaa uudelleen. Ei vieläkään. Tässä vaiheessa olin suhteellisen varma, ettei ongelmi ollut salasanassa.

Olin äsken tehnyt tämän uudella terminaalisivulla (koska aikaisempi sivuni, jossa olin kirjautuneena roottina, oli jostain syystä jäätynyt, eikä antanut minun kirjoittaa mitään.). Päätin siis tällä kertaa uudella sivulla ottaa uudelleen ssh-yhteyden root-käyttäjällä. Siellä loin taas uuden käyttäjän.

$ sudo adduser luniitti

$ sudo adduser luniitti sudo

$ sudo adduser luniitti adm

$ sudo adduser luniitti admin

Nyt kaikki näytti toimivan oikein. Sain jopa annettua varsinaiset "admin" oikeudet. Seuraavaksi kokeilin, että uudella käyttäjällä saa varmasti otettua etäyhteyden. Kaikki näytti hyvältä joten jatkoin seuraavaan kohtaan, eli root-käyttäjän lukitsemiseen.

$ sudo usermod -lock root

Vastauksena tähän sain "usermod: user root is currently used by process 1". Arvelin tämän johtuvan siitä, että terminaalini oli aikaisemmin jäätynyt, mikä oli johtanut siihen, että vain yksinkertaisesti suljin kyseisen ikkunan. Yritin sen jälkeen sulkea rootin SSH-yhteyden, kirjautumalla uudelleen sisään ja sitten taas ulos, mutta en usko sen auttaneen mitään. Tässä vaiheessa (kun olin yrittänyt samaa komentoa muutaman kerran) aloitin Googlaamisen aiheesta. Löysin joitakin mahdollisia raitkaisuja, joita olisin halunnut kokeilla, mutta ei. Terminaalini (luniitti käyttäjä SSH-yhteydessä) oli taas jäätynyt niin, etten pystynyt kirjoittamaan mitään.

Suljin siis taas terminaalin ja otin uudelleen yhteyden luniitti-käyttäjällä. Siirryin seuraavaan kohtaan, eli poistamaan root-kirjautumisen kokonaan. Sen tein komennolla:

$ sudoedit /etc/ssh/sshd_config

Tiedosto avautui. Sieltä etsin kohdan PermitRootLogin, johon laiton yes sijaan no (jonka jälkeen ctrl + s, ctrl + x).

PermitRootLogin

Sitten käynnistin ssh:n uudestaan

$ sudo systemctl restart ssh

Ja tämän jälkeen kun yritin vielä ottaa etäyhteyden root-käyttäjällä, se ei enää antanut minun niin tehdä. Joten vaikutti ainakin siltä, että olin onnistunut poistamaan vaihtoehdon ottaa etäyhteyden root-käyttäjällä.


Käyttämäni lähteet

Karvinen, Tero: Oppitunnit 2020-02-13, Linux palvelimet -kurssi
http://terokarvinen.com/2020/linux-palvelimet-2020-alkukevat-kurssi-ict4tn021-3010/

Karvinen, Tero: 2017-09-19, First Steps on a New Virtual Private Server
http://terokarvinen.com/2017/first-steps-on-a-new-virtual-private-server-an-example-on-digitalocean