wordpress hosting - vpn - cloud - statistiekservice - email

Soms wel, soms geen connectie met een server

Praktijkgevalletje: een gebruiker klaagt er over dat de ene keer hij zonder problemen met SSH een sessie kan opzetten naar een server, een andere keer volgt er een time-out en kan hij dus geen verbinding krijgen. De keer erop kan het soms weer probleemloos gaan. De server heeft zelf geen problemen, die draait, heeft het niet heel druk, er is geen volgelopen partitie of disk kortom op de server is de oorzaak van het probleem niet te vinden. Wel blijkt dat als de gebruiker wil inloggen en een time-out krijgt er in de logfiles op de server van die inlogpoging niets te vinden is. 

Later blijft dat hij met SSH een connectie naar de servernaam opzet: ssh user@server en dan blijkt dat de server met twee ipadressen in de DNS beheertool staat maar de server maar één actieve netwerkinterface heeft. Na het verwijderen uit de DNS van het niet in gebruikzijnde ipadres was het probleem verholpen. 

 

Two way authorisatie voor SSH

google authenicator

Google heeft de google-authenticator beschikbaar gesteld. Hiermee kan niet alleen voor Google’s eigen diensten maar ook voor je eigen server twee weg authenticatie ofwel two-way authentication geactiveerd worden. Dit gaat erg eenvoudig maar de toegevoegde security is aanzienlijk. Op je smartfone dien je gratis google-authenticator app te installeren. Die is er voor oa. IOS en Android.

Download of installeer het google-authenticator package (beschikbaar in de epel repository voor RedHat/CentOS ed). Draai als gebruiker waarvoor de two way authenticatie geactiveerd moet worden google-authenticator.

Na een paar vragen wordt een QR code getoond en deze scan je m.b.v. de Google Authenticator APP in.

Configuratie PAM

In /etc/pam.d voeg aan sshd de volgende regel toe aan het einde toe:

    auth required pam_google_authenticator.so

Configuratie SSH daemon

In /etc/ssh/sshd_config moet de volgende regel komen te staan:

    ChallengeResponseAuthentication yes

Hierna moet de ssh daemon worden herstart: systemctl restart sshd

Hierna zal de gebruiker die in wil loggen middels SSH en waar Google Authenticator voor is geconfigureerd eerst de vraag voor zijn password en daarna voor zijn Verification Code. Dit is het getal wat getoond wordt voor de betreffende host in de APP.

   ssh marcw@hyena.linuxpro.nl
   Password: 
   Verification code: 
   
   Last login: .... from xx.xx.xx.xxx
   [marcw@hyena ~]$

X forwarding na een su of sudo

X forwarding

Om op een remote server een X programma te kunnen draaien heb je uiteraard lokaal een X-server nodig. Met ssh -X {username}@server.example.com kan een X forwarding sessie worden gestart. Er kan dan op een remote server een grafisch programma worden gestart wat lokaal getoond wordt. Dat kan allerlei voordelen hebben oa. netwerktechnisch. De X-sessie wordt immers getunneld over de SSH poort.

Echter, sommige programma’s moeten als root worden gestart en als niet als root kan worden ingelogd moet dat na een reguliere inlog met su of sudo worden bereikt. Als dan het grafische programma wordt gestart verschijnt de foutmelding:

X11 connection rejected because of wrong authentication.

xauth

De oplossing ligt er in om het MIT cookie (sessie cookie voor X) te achterhalen en dat vervolgens na de su of sudo aan xauth toe te voegen. Dat kan na de inlog als reguliere user het cookie te achterhalen met:

xauth list

En er komt een antwoord wat lijkt op:

hostname:10 mit-magic-cookie-1 4d22408a71a55b41ccd1657d377923ae

Copyeer deze regel en ga via su of sudo naar root en geef vervolgens:

xauth add hostname:10 MIT-MAGIC-COOKIE-1 4d22408a71a55b41ccd1657d377923ae

Vervolgens kunnen programa’s die een grafische omgeving (X server) nodig hebben worden gestart.

Gebruik van putty en openssh

Gebruik van Putty en OpenSSH

Putty algemeen

Om beveiligde verbinding te maken vanaf een pc met Windows naar een linux/unix server kan Putty worden gebruikt. Dit gratis programma kan via http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html gedownload worden. Na het invullen van de hostname kan een via beveiligde verbinding worden gemaakt. Het is handig om voor elke server een aparte sessie aan te maken. Er wordt standaard gebruik gemaakt van een username en password combinatie. Een extra zekerheid kan worden ingebouwd als wordt ingelogd met een SSH key. Hoe dat gaat wordt in dit document besproken.

Inloggen met SSH key

In plaats van in te loggen met een username/password combinatie kan gekozen worden voor een veiligere manier met behulp van SSH keys. De gebruiker maakt een keypair aan. Dit keypair bestaat uit twee delen. Een privat en public key. Het publieke gedeelte wordt door de gebruiker te beschikking gesteld aan de beheerder. De gebruiker bewaart de privat key zo veilig mogelijk. Het is aan te raden dat de privat key met een zgn. passphrase beveiligd wordt. Dit voorkomt misbruik mocht deze onverhoopt toch in handen vallen van een derde.

Aanmaken SSH keypair

  • Start puttygen op en kies voor SSH2 DSA, laat Number of bits op 1024 staan
  • Klik op Generate
  • Beweeg de muis in het Key vlak op een zo onregelmatig mogelijke manier.
  • Beveilig de key met een passphrase. Hiermee wordt de private key beveiligd mocht deze onverhoopt in handen van derden vallen.
  • Sla de gegenereerde keys op door ‘Save public key’, kies als naam <gebruikersnaam.pub>, en klik vervolgens op ‘Save private key’ en sla deze op als <gebruikersnaam.ppk>

Configuratie putty

Nu moet in Putty de aangemaakte privat key als worden geladen.

SSH → Auth Browse naar de aangemaakte privat key en vink

ssh tunnel

SSH tunnel als socks proxy

Het wil soms handig (of nodig) zijn om vanuit een al dan niet beveiligd netwerk naar internet te kunnen zonder restricties of monitoring van de data. Dat kan door een zgn. SSH tunnel te gebruiken. Zolang een SSH verbinding opgezet kan worden naar een server kan bijv. port 80 maar ook direct messaging worden getunneld over de SSH tunnel.

Een voordeel is dat bij monitoring er alleen versleuteld SSH verkeer te zien is, een veilig idee.

In onderstaand voorbeeld wordt via SSH een tunnel opgebouwd naar port 7070. Vervolgens kunnen web-applicaties zoals Safari, Firefox, Adium en andere programma’s geconfigureerd worden om via een zgn socks proxy op localhost op port 7070 naar internet te gaan.

ssh -D 7070 root@server.mydomain1.com

Er wordt om het wachtwoord van de betreffende user gevraagd, in dit voorbeeld dus ‘root’ en vervolgens kan de tunnel gebruikt worden om data over te sturen.

Indien OS-X gebruikt wordt kan dat worden geconfigureerd door via System Preferences → Network de in gebruik zijnde interface te kiezen en voor Advanced te kiezen. Kies vervolgens voor Proxy en kies de gewenste protocollen waarvoor je de tunnel wilt gebruiken. Bijvoorbeeld Web Proxy (HTTP) en vul bij Web Proxy Server 127.0.0.1 : 7070 in