Linux Server Installatie SSH/VSFTPD Debian 5 “Lenny”
Copyright 2010 Schrijvers Luc
SSH Omdat we niet altijd fysieke toegang hebben tot een server willen toch met deze verbinding kunnen maken zonder op locatie te moeten gaan. Een van de tools die we hierbij ter beschikking hebben is ssh (secure shell). ssh is een netwerkprotocol dat werkt op de toepassingslaag van de TPC/IP stack, standaard poort voor ssh is 22. Met ssh kunnen we een beveiligde en ge-encrypteerde verbinding opzetten tussen bv. client en server zodat we onze server veilig op afstand kunnen beheren (vervangt het minder veilige telnet). Hierdoor wordt het voor sniffers veel moeilijker om data tussen deze verbinding uit te lezen. ssh maakt hiervoor gebruik van publieke en private sleutels (public/private keys) om de computer op afstand te authenticeren. Via ssh kunnen we zelfs X toepassingen draaien op de andere computer, we kunnen bijvoorbeeld zo evolution starten via ssh. Bij het installeren van ssh installeren we niet alleen de client (die is meestal standaard aanwezig), we instaleren bv. ook de server (sshd), scp (secure copy) en sftp (secure file tranfer program) welke ook veiliger werken dan bv. telnet, rcp (remote copy) en ftp (file tranfer program). Voor SSH zijn er ook nog tal van externe toepassingen die gebruik maken van dit protocol waaronder bv. Putty, WinSCP, OpenSSH, Fsecure etc. Handboek: 591
Copyright 2010 Schrijvers Luc
Eerste installeren we ssh: apt-get install ssh
Hierbij zien we ook al dat er meerdere pakketten geïnstalleerd worden met ssh, waaronder opensshserver welke voor het openstellen van het server gedeelte gaat zorgen. We kunnen nu vanuit een andere client verbinding maken met de server lpc-22-
. Noteer hiervoor eerst het IP van je server. ifconfig
Copyright 2010 Schrijvers Luc
ssh Open Putty en geef het IP in van de server (deze kan je ook opslaan om later nog te kunnen gebruiken), klik dan op Open:
Hier krijgen we de vraag of we de sleutel (key) van de server willen aanvaarden en in het register plaatsen, hierdoor gaan we de verbinding tussen client en server bevestigen, klik hier op Ja om te bevestigen:
Copyright 2010 Schrijvers Luc
Daarna krijgen we de vraag voor een gebruikersnaam en wachtwoord in te geven waarna we ingelogd zijn en verder kunnen werken alsof we op de server bezig waren.
Als we nu naar super user gaan via su kunnen we beheerders handelingen uitvoeren. We kunnen dit controlleren door op de server het commando who uit te voeren waarbij we de ingelogd gebruikers zien en in het geval van remote access het IP van de remote client.
Copyright 2010 Schrijvers Luc
Willen we nu gebruikers enkel toegang geven tot hun eigen homefolder zijn er enkele mogelijkheden voor. De makkelijkste is het gebruiken van rbash ipv. bash als shell. Maak een gebruiker “syntra” aan met het wachtwoord “syntra” en geef deze de shell “/bin/rbash” mee. Maak dan verbinding met de server en probeer dit uit. Dit is geen waterdicht systeem maar verhinderd wel dat de gebruiker van locatie kan wisselen via “cd” (change directory). Het chroot'en of het verbinden van een gebruiker met zijn homefolder met ssh kan je doen via deze pagina http://undeadly.org/cgi?action=article&sid=20080220110039 , maar meestal wordt dit niet aangeraden en laten we de instellingen voor ssh staan zoals ze zijn.
scp We kunnen ook gebruik maken van “scp” om snel een bestand op de server op te slaan of om van de server naar de client op te slaan. (de optie “-p” kan gebruikt worden als er problemen zijn met de rechten van het bestand na het kopieëren) “scp test.txt syntra@IP:/home/syntra” (slaat het bestand “test.txt” op naar de server) “scp syntra@IP:test.txt test” (slaat het bestand van op de server op in een lokale map “test”)
Download het bestand “winscp429setup.exe” van de server van de docent, verbind hierbij met de gebruiker “syntra” (vraag het IP op tijdens de les).
Copyright 2010 Schrijvers Luc
sftp Ga nu naar je host systeem en start WinSCP, geef daarbij het IP in van de server en je gebruikersnaam en wachtwoord, sla deze desnoods ook even op zodat je niet bij iedere nieuwe verbinding de gegevens opnieuw moet ingeven:
In het volgende venster krijg je de boodschap dat er geen sleutel gecached is in je register (is normaal daar dit de eerste keer is). Druk op Sleutel kopiëren om deze op te slaan in de cache en druk daarna op Ja.
Copyright 2010 Schrijvers Luc
Afhankelijk als je wachtwoord is opgeslagen of niet krijg je in het volgende scherm eerst nog de vraag om je wachtwoord in te geven, klik daarna op OK:
Nu kom je in het scherm van WinSCP waarbij je bestanden van en naar je host kan kopiëren:
Copyright 2010 Schrijvers Luc
Copyright 2010 Schrijvers Luc
Om je gebruikers ook hier te binden 'jailen of chroot' aan hun homefolder kunnen we wel het configuratie bestand van ssh bewerken: Open het bestand /etc/ssh/sshd_config Maak de volgende aanpassingen op het einde van het bestand: Subsystem sftp internal-sftp UsePAM yes Match Group sftp ChrootDirectory /home/sftp AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp Herstart ssh via “/etc/init.d/ssh restart” na elke aanpassing in het configuratie bestand. Maak een groep aan met de naam “sftp” Voeg de gebruiker “syntra” toe aan de groep sftp via “usermod” Maak dat voor de folder “/home/sftp” eigenaar en groep op “root” staan Zorg ervoor dat bovenstaande map voor eigenaar alle rechten krijgt, de groep en anderen enkel lezen en uitvoeren. Verbind met WinSCP met de gebruiker “syntra”, kan ik hier nu een map aanmaken? Wat kan ik doen om dit toch te kunnen gaan doen? Let bij het chroot'en van een groep of gebruiker dat je geen bestaande accounts gaat gebruiken maar liever speciale accounts hiervoor aanmaakt die enkel hiervoor moeten dienen, door het “jailen” van je gebruiker krijgt hij ook geen toegang meer tot ssh zelf.
Copyright 2010 Schrijvers Luc
VSFTPD Een client/server model, het ftp-protocol draait op de toepassingslaag van de TCP/IP stack. De server vsftpd (deamon) luistert op poort 21 (control connection) voor binnenkomende aanvragen van de client ftp en na autorisatie wordt de verbinding vanop de server opengezet van poort 20 (data connection) naar een poort op de client die bij het opzetten van de verbinding afgesproken wordt door server/client). FTP is een methode die gebruikt wordt voor het uploaden en downloaden van bestanden.
In bovenstaande afbeelding zie je de bron en doelbestemming IP's staan van de server en client, welk IP heeft de server hier? En welke poort wordt gebruikt als doel voor de client? Standaard heeft elk besturingssysteem een ftp client aan boord welke meestal kan uitgevoerd worden via de prompt of cli met het commando “ftp”. Voor publieke ftp servers (zoals bv. ftp.debian.org) kan je inloggen met een annonieme account, voor private server moet je inloggen met een gebruikersnaam en wachtwoord. (je kan ook op een private server annonieme toegang toestaan) Data verstuurd over FTP is standaard niet ge-encrypteerd en is daarom niet veilig in gebruik (voor publieke servers maakt dit niet uit daar er niet gewerkt wordt met wachtwoorden), we hebben in de suite van ssh ook sftp zitten welke veiliger is dan een open ftp-server maar deze zijn niet echt bedoeld om over grote netwerken te gaan gebruiken, daarom gaan we gebruik maken van vsftpd. vsftpd is niet zoveel veiliger dan andere servers maar maakt het moeilijker om mallifide gebruikers root toegang tot het systeem te verlenen. Handboek pag. 613
Copyright 2010 Schrijvers Luc
Installeer vsftpd via “apt-get install vsftpd” Hoe controlleer je of de deamon (server) draait? Verbinden met een ftp server doe je met het commando “ftp hostname”, waarbij hostname ook kan vervangen worden door het IP adres. Controlleer de installatie: lpc-22-luc:/home/luc# ftp localhost Connected to localhost. 220 (vsFTPd 2.0.7) Name (localhost:syntra): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye. lpc-22-luc:/home/luc# Standaard is enkel de annonieme toegang geactiveerd, dit kan je controlleren door bv. als syntra in te loggen: lpc-22-luc:/home/luc# ftp localhost Connected to localhost. 220 (vsFTPd 2.0.7) Name (localhost:syntra): syntra 530 This FTP server is anonymous only. Login failed. ftp> quit 221 Goodbye. lpc-22-luc:/home/luc# FTP-commando's (Handboek pag. 621): ?: opvragen van beschikbare commando’s !: hiermee kan je de beschikbare commando’s op je lokaal systeem uitvoeren (zie !mkdir) ls en cd werken net zoals een lokaal bestandssysteem get: ophalen van een bestand op de server en lokaal opslaan put: lokaal bestand opslaan op de server mkdir: aanmaken van een map op de server lcd: wisselen van lokale map mget: ophalen van meerdere bestanden gelijk, hierbij wordt voor elk bestand gevraagd of je deze wil downloaden, dit kan je uitschakelen met het commando prompt prompt: uit of inschakelen van de prompt aktie bv. bij het commando mget !mkdir: lokaal aanmaken van een map op de client !pwd: opvragen van de lokale map op de client (ook gelijk aan lcd) quit: afsluiten van de ftp sessie Copyright 2010 Schrijvers Luc
vsftpd.conf, het configuratiebestand van vsftpd. Dit vind je terug in de folder /etc en is het bestand dat gebruikt wordt door vsftpd voor zijn configuratie. In dit bestand wordt er gewerkt met name-pairs, Boolean en nummerieke waarden, waarbij de name-pairs aan elkaar geschreven worden zonder spaties, Boolean altijd Yes/No en nummerieke waarden octaal worden geschreven (in geval deze toch het grondtal 10 nodig hebben wordt er altijd een 0 geplaats aan het begin vb. local_umask=022).
Stand-alone modus: listen Als deze ingeschakeld (enable) is dan draait vsftpd in stand-alone modus. Dit betekend dat vsftpd niet moet draaien van inetd of een andere deamon. In de plaats daarvan zal vsftpd zelf binnenkomende aanvragen voor FTP afhandelen door te luisteren op poort 20. listen=YES
Copyright 2010 Schrijvers Luc