Fernwartung mit SSH

☰ Menü

SSH-Server in Betrieb nehmen

 

SSH-Server starten

Ein OpenSSH-Server ist üblicherweise bereits in der Minimalinstallation jedes Linux-Systems enthalten. Einmalig starten Sie ihn mit dem Konsolenbefehl sudo service ssh start oder systemctl start ssh. Mit dem Konsolenbefehl systemctl enable ssh tragen Sie den SSH-Serverdienst (alternative Sprechweise: SSH-Dämonen) in den Autostart ein.

Softwareinstallation und Firewall-Freigaben bei openSUSE finden Sie in Yast.

Software unter Debian installieren

Paketdatenbank aktualisieren: sudo apt-get update
Diensteverwaltung installieren: sudo apt-get install chkconfig
Firewallverwaltung installieren: sudo apt-get install ufw

Box 1: Software unter Debian & co installieren

 

Bei Debian & co. wird die Firewall mit dem Konsolenbefehl ufw verwaltet.

ufw enable
ufw disable
ufw status numbered
ufw allow SSH
ufw allow HTTPS
ufw delete {NUMBER}
ufw reset
Firewall aktivieren
Firewall abschalten
Numerierte Ausgabe der freigeschalteten Protokolle
SSH freischalten
HTTPS freischalten
Regel {NUMBER} entfernen
Firewalleinstellungen löschen

Box 2: Einige Beispiele zur Firewallverwaltung mit ufw (Uncomplicated Firewall)

 

SSH-Server konfigurieren

Im Ordner /etc/ssh finden Sie folgende Dateien:

Inhalt des Ordners /etc/ssh

 

Sie finden private und öffentliche Schlüssel für DSA, ECDSA, ED25519, RSA1 und RSA2 sowie mehrere Konfigurationsdateien. Verwechseln Sie nicht die Konfigurationsdatei des SSH-Clients /etc/ssh/ssh_config mit der Konfigurationsdatei des SSH-Servers /etc/ssh/sshd_config!

Wichtige Serverparameter sind fett gedruckt. Mit diesen stellen Sie sicherheitsrelavante Merkmale des Servers ein.

Möchten Sie die SSH-Serverschlüssel (Private-Public-Key) erneuern, brauchen Sie bei openSUSE lediglich die Schlüssel zu löschen und SSH mit service sshd restart zu aktualisieren.
Bei Debian und co. löschen Sie ebenfalls zuerst die Schlüsseldateien und rufen danach die Konsolenbefehle
dpkg-reconfigure openssh-server und service ssh restart auf.
Box 3: SSH-Serverschlüssel erneuern

Vor dem Ändern von Parametern sollten Sie die Konfigurationsdatei sichern:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Jede Änderung dieser Datei wird erst nach einem Reload mit dem Befehl service sshd reload (openSUSE) bzw. service ssh reload (Debian u. co.) wirksam.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#	$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile	.ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem	sftp	/usr/lib/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#	X11Forwarding no
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server

Box 4: Konfigurationsdatei des SSH-Servers /etc/ssh/sshd_config

Aufgaben 2

  1. Erläutern und interpretieren Sie die Dateiberechtigungen der privaten und öffentlichen Schlüssel im Ordner /etc/ssh!
  2. Legen Sie mit den Konsolenbefehlen useradd -m -s /bin/bash sshuser und passwd sshuser ein neues Standardkonto an!
  3. Starten Sie SSH und bauen Sie aus der Linuxkonsole mit ssh sshuser@localhost eine SSH-Verbindung auf!
  4. Machen Sie einen weiteren Test mit dem Windows-Programm Putty, s. Fundus!
  5. Machen Sie sich mit der Handhabung des Konsolenbefehls scp vertraut und erläutern Sie wichtige Parameter!
  6. Laden Sie die portable Version des Programms WinSCP aus dem Fundus und versuchen Sie mit diesem Programm Dateien zwischen dem Windows-Wirtsrechner und der virtuellen Linux-Machine zu übertragen! Beschreiben Sie Ihre Vorgehensweise!
  7. Vergleichen Sie die Ausgaben folgender Linux-Kondolenbefehle: id, users, whoami und who -Ha und geben Sie jeweils den Verwendungszweck an!
  8. Finden Sie die Bedeutung aller fett markierten Parameter der Datei /etc/ssh/sshd_config heraus! Hinweise finden Sie auf der OpenSSH-Manpage.
  9. Suchen Sie aus der OpenSSH-Manpage die Bedeutung und Handhabung der Konfigurationsparameter AllowUsers, DenyUsers, AllowGroups und DenyGroups heraus!
  10. In welchen Situationen erscheint es sinnvoll, die SSH-Serverschlüssel zu erneuern?

 

W. Hermanns, © 2017