Tips en Trucs 2013

SSH toepassingen

SSH heeft meer te bieden dan een beveiligde, op afstand te gebruiken terminal omgeving. Je kunt SSH gebruiken om uw netwerkverkeer te tunnelen, bestanden over te zetten, mappen te delen, enzovoort.

SSH zorgt niet alleen voor een authentificatie via een beveiligde verbinding, maar ook voor het versleutelen van al het netwerkverkeer. Of je nu een bestand verzendt (of ontvangt), surft op het internet of een opdracht uitvoert. Al uw acties zijn met SSH privaat.

Lokaal netwerk (LAN)

Een SSH server is een computer waarop het pakket openssh geïnstalleerd is (bij sommige distributies moet je de client en server apart installeren) en waarop in de firewall de SSHD poorten geopend zijn.

Software openssh
Firewall

Daarenboven is het handig dat de SSH server bij het opstarten van het systeem automatisch opgestart wordt, dit kan door de volgende opdracht uit te voeren:

dany@linux-e1kr:~> sudo systemctl enable sshd.service
root's password:
ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'

Veiliger, maar omslachtiger is de SSH server enkel op te starten als je hem nodig hebt, dat kan met de opdracht:

dany@linux-e1kr:~> sudo systemctl start sshd.service
dany@linux-e1kr:~> sudo systemctl status sshd.service
sshd.service - OpenSSH Daemon
          Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
          Active: active (running) since Sat, 2013-11-02 14:13:06 CET; 13s ago
         Process: 5196 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS)
        Main PID: 5200 (sshd)
          CGroup: name=systemd:/system/sshd.service
                  └ 5200 /usr/sbin/sshd -D

Nov 02 14:13:06 linux-e1kr.site systemd[1]: Started OpenSSH Daemon.
Nov 02 14:13:06 linux-e1kr.site sshd[5200]: Server listening on 0.0.0.0 port 22.
Nov 02 14:13:06 linux-e1kr.site sshd[5200]: Server listening on :: port 22.

De voorbeelden in deze tips zijn allemaal voorbeelden die werken in een LAN omgeving. M.a.w. in een thuisnetwerk (binnen het bereik van uw router).

De voorbeelden gebruiken eveneens IP adressen om verschillende computers te identificeren. De meeste routers verdelen de beschikbare IP adressen willekeurig over de actieve computers. Dit is voor SSH verbindingen niet zo handig, je kunt uw router beter instellen zodat elke computer steeds hetzelfde IP adres krijgt.

Om de SSH server ook buiten uw LAN bereikbaar te maken, moet je de router instellen zodat SSH aanvragen van het boosaardige internet doorgestuurd worden naar de computer met de SSH server. Wees voorzichtig met het openen van een systeem naar het internet.

SSH Tunnels

SSH tunnels maken van een SSH server op afstand een proxy server. Netwerkverkeer van uw lokale systeem wordt via een beveiligde verbinding naar de SSH server verzonden. Zo kan je de browser alle netwerkverkeer door de SSH tunnel sturen waardoor deze wordt versleuteld. Dit maakt luistervinken op publieke WiFi netwerken onmogelijk door het versleutelen van al het internetverkeer voor de browser.

Het internetverkeer wordt ontcijfert bij het verlaten van de SSH server waar de verbinding met het internet tot stand komt. Voor de webserver die je via de SSH tunnel bezoekt, lijkt de verbinding te komen van de SSH server, niet van uw lokaal systeem.

Gebruik de volgende opdracht om een SOCKS proxy op poort 9999 op uw lokale systeem aan te maken:

dany@linux-e1kr:~> ssh -D 9999 -C dany@192.168.1.2
Password: 
Last login: Fri Nov  1 14:33:46 2013 from console
Have a lot of fun...

De tunnel blijft open tot de SSH verbinding wordt afgesloten.

Start uw browser (of een andere applicatie) en stel de SOCKS proxy in op localhost en poort 9999. Gebruik localhost omdat de ingang van de SSH tunnel zich op het lokale systeem bevindt.

Firefox voorkeuren geavanceerd netwerk instellingen

Om de SSH verbinding te verbreken, gebruik je de volgende opdracht:

dany@linux-s7xo:~> exit
uitgelogd
^CKilled by signal 2.

Zoals je merkt, krijg je de melding uitgelogd, maar komt de prompt niet terug. Zolang de poort (SSH tunnel) in gebruik is, wordt deze niet afgesloten. Forceer het opheffen van de SSH tunnel door Ctrl + C te drukken.

Vergeet ook niet de proxy instellingen van uw browser niet te herstellen.

SCP bestandsoverdracht

SCP (SecureCoPy) wordt gebruikt om bestanden tussen twee computers uit te wisselen.

Om een bestand van uw lokaal systeem naar de SSH server te kopiëren, gebruik je de opdracht:

dany@linux-e1kr:~> scp snow.sh dany@192.168.1.2:bin
Password: 
snow.sh                                       100%  597     0.6KB/s   00:00

Om een bestand van de SSH server naar uw systeem te kopiëren, gebruik je:

dany@linux-e1kr:~> scp dany@192.168.1.2:Impressive\\\ Manual.pdf Documents
Password: 
Impressive Manual.pdf                         100%   95KB  95.4KB/s   00:00

Let op de schrijfwijze van bestanden waar de bestandsnaam spaties bevatten.

Gedeelde mappen

Je kunt een map op de SSH server koppelen en gebruiken alsof het een map op uw eigen systeem is.

Elke grafische omgeving (hier KDE) bevat een bestandsbeheerder (hier Dolphin) met SSH functies om netwerkmappen te beheren.

Netwerkmap toevoegen
Informatie netwerkmap

Nu kan je kiezen om je wachtwoord in de KWallet wachtwoordenkluis van KDE op te slaan (dan moet je alleen het wachtwoord van de wachtwoordkluis onthouden om gelijk welk wachtwoord automatisch in te voeren) of om het wachtwoord telkens opnieuw in te geven.

Fish

Permanente terminal sessies

Telkens je met SSH inlogt, krijg je een nieuwe terminal sessie. Bij het uitloggen wordt uw terminal sessie automatisch afgesloten. Om dit te voorkomen gebruiken we screen.

Na het inloggen op de SSH server, voer je de opdracht screen uit. Deze opdracht start een screen terminal sessie. Voer alle opdrachten uit in de pas gestarten screen terminal sessie. Druk Ctrl + a gevolgd door d om de screen terminal sessie los te koppelen van de SSH verbinding.

dany@linux-e1kr:~> ssh dany@192.168.1.3
Password: 
Last login: Sat Nov  2 14:03:06 2013 from console
Have a lot of fun...
dany@linux-s7xo:~> screen
Screen version 4.00.04devel (GNU) 8-Jun-12

Copyright (c) 2010 Juergen Weigert, Sadrul Habib Chowdhury
Copyright (c) 2008, 2009 Juergen Weigert, Michael Schroeder, Micah Cowan,
Sadrul Habib Chowdhury
Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 Juergen Weigert, Michael
Schroeder
Copyright (c) 1987 Oliver Laumann

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program (see the file COPYING); if not, see http://www.gnu.org/licenses/,
or contact Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA  02111-1301  USA.

Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to
screen-devel@gnu.org

                  [Press Space for next page; Return to end.]
Capabilities:
+copy +remote-detach +power-detach +multi-attach +multi-user +font +color-256
+utf8 -rxvt +builtin-telnet
.
.
.
                        [Press Space or Return to end.]
dany@linux-s7xo:~> tail -f /var/log/Xorg.0.log
[     8.688] (II) intel(0): Using vrefresh ranges from config file
[     8.688] (II) intel(0): Printing DDC gathered Modelines:
[     8.688] (II) intel(0): Modeline "1366x768"x0.0   71.22  1366 1396 1458 1518  768 770 774 782 -hsync -vsync (46.9 kHz eP)
[     8.688] (II) intel(0): Modeline "1024x768"x0.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
[    11.227] (II) intel(0): EDID vendor "LCD", prod id 2314
[    11.227] (II) intel(0): Using hsync ranges from config file
[    11.227] (II) intel(0): Using vrefresh ranges from config file
[    11.227] (II) intel(0): Printing DDC gathered Modelines:
[    11.227] (II) intel(0): Modeline "1366x768"x0.0   71.22  1366 1396 1458 1518  768 770 774 782 -hsync -vsync (46.9 kHz eP)
[    11.227] (II) intel(0): Modeline "1024x768"x0.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)

[detached from 2143.pts-2.linux-s7xo]
dany@linux-s7xo:~> exit
uitgelogd
Connection to 192.168.1.3 closed.

De screen terminal sessie en de bijhorende opdrachten blijven in de achtergrond verder werken. Om de screen terminal sessie terug aan een SSH verbinding (of gewone terminal) te koppelen, voer je de opdracht screen -r uit.

Daarenboven kan SSH met één opdracht zowel de SSH verbinding opbouwen en daarna de screen terminal sessie koppelen:

dany@linux-e1kr:~> ssh -t dany@192.168.1.3 screen -r
Password: 
.
.
.
dany@linux-s7xo:~> tail -f /var/log/Xorg.0.log
[     8.688] (II) intel(0): Using vrefresh ranges from config file
[     8.688] (II) intel(0): Printing DDC gathered Modelines:
[     8.688] (II) intel(0): Modeline "1366x768"x0.0   71.22  1366 1396 1458 1518  768 770 774 782 -hsync -vsync (46.9 kHz eP)
[     8.688] (II) intel(0): Modeline "1024x768"x0.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
[    11.227] (II) intel(0): EDID vendor "LCD", prod id 2314
[    11.227] (II) intel(0): Using hsync ranges from config file
[    11.227] (II) intel(0): Using vrefresh ranges from config file
[    11.227] (II) intel(0): Printing DDC gathered Modelines:
[    11.227] (II) intel(0): Modeline "1366x768"x0.0   71.22  1366 1396 1458 1518  768 770 774 782 -hsync -vsync (46.9 kHz eP)
[    11.227] (II) intel(0): Modeline "1024x768"x0.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
^C
dany@linux-s7xo:~> exit
exit

[screen is terminating]
Connection to 192.168.1.3 closed.

Sleutels weergeven

Bij een verbinding naar een SSH server, wordt een Warning bericht weergeven als het systeem de sleutel (vingerafdruk) van de SSH server nog niet in zijn bezit heeft. Dit voorkomt dat een aanvaller zich zonder waarschuwing kan vermommen als uw SSH server.

Dit komt ook voor als je de SSH server herinstalleert of je router dynamische IP adressen verdeeld. Om een sleutel van een herinstalleerde SSH server of dynamisch IP adres (dus veilige SSH server) te wissen, gebruik je de opdracht:

dany@linux-e1kr:~> ssh-keygen -R 192.168.1.3
/home/dany/.ssh/known_hosts updated.
Original contents retained as /home/dany/.ssh/known_hosts.old
dany@linux-e1kr:~> ssh dany@192.168.1.3
The authenticity of host '192.168.1.3 (192.168.1.3)' can't be established.
ECDSA key fingerprint is 18:94:d2:9f:9a:f9:45:a8:88:2e:9b:c2:0e:1a:ec:ca.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.3' (ECDSA) to the list of known hosts.
Password: 
Last login: Sat Nov  2 14:32:30 2013 from 192.168.1.65
Have a lot of fun...
dany@linux-s7xo:~> exit
uitgelogd
Connection to 192.168.1.3 closed.

De sleutel kan ook met behulp van een tekstfiguur worden weergegeven. Je kunt de weergave van de tekstfiguur instellen in het configuratiebestand van SSH of als optie meegeven met de opdracht:

dany@linux-e1kr:~> ssh-keygen -R 192.168.1.3
/home/dany/.ssh/known_hosts updated.
Original contents retained as /home/dany/.ssh/known_hosts.old
dany@linux-e1kr:~> ssh -o VisualHostKey=yes dany@192.168.1.3
The authenticity of host '192.168.1.3 (192.168.1.3)' can't be established.
ECDSA key fingerprint is 18:94:d2:9f:9a:f9:45:a8:88:2e:9b:c2:0e:1a:ec:ca.
+--[ECDSA  256]---+
|     ...         |
|    ..o          |
|     ... o       |
|       o+ .      |
|   . ..=S.       |
|. . . =   .      |
|+o     . .       |
|B+.     .        |
|OE               |
+-----------------+
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.3' (ECDSA) to the list of known hosts.
Password: 
Last login: Sat Nov  2 14:52:18 2013 from 192.168.1.65
Have a lot of fun...
dany@linux-s7xo:~> exit
uitgelogd
Connection to 192.168.1.3 closed.