Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Anleitung fürs Wiki: 2. SSH-Server

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
ojkastl
Hacker
Hacker
Beiträge: 547
Registriert: 15. Dez 2004, 04:51
Wohnort: Erlangen
Kontaktdaten:

Anleitung fürs Wiki: 2. SSH-Server

Beitrag von ojkastl » 13. Mai 2007, 21:58

Mahlzeit,

ich hab mich in den letzten Wochen ein bisschen mit dem Aufsetzen eines 2. SSH-Servers beschäftigt. Das ganze würde ich gerne der Allgemeinheit als Wiki-Artikel zur Verfügung stellen. Vorher bitte ich euch ums Korrekturlesen, und ausgiebiges Ausprobieren dieser Rohfassung. Also nur die Befehle, der Text kann dann ja ergänzt werden. Also vor allem prinzipielle Dinge. Gehen die Befehle, geht das einloggen, Fehlermeldungen,...
Danke.

======================================

VERSION 0.0.2 :D

Aufsetzen eines 2. SSH-Servers mit anderem Port:

Motivation:

Zusätzlicher SSH-Server, der nach außen freigegeben werden kann, abgesichert werden kann etc. ohne den bestehenden SSHD zu beeinflussen.

Alle Arbeiten natürlich als root. [Hinweis auf den Artikel zu sudo, permant-root-sein ...]

Ich habe im weiteren Verlauf immer die Ausgaben des diff-Kommandos zwischen den Original-Dateien und den modifizierten Dateien. Das ist erstmal nur zur Übersicht, da man dort recht schön sitzt was geändert wurde. Am einfachsten ist es aber, wenn man die angepassten Dateien direkt herunterlädt:

Sämtliche angepasste Dateien gibt es als Archiv unter
http://www.ojkastl.de/pub/LinuxClub/2ter_SSHD_HOWTO

-----------------------------------------------------
So jetzt geht es los:

/etc/ssh/sshd_config nach /etc/ssh/ojs_sshd kopieren, dann den Eintrag zu "Port" anpassen:

Code: Alles auswählen

cp /etc/ssh/sshd_config /etc/ssh/ojs_sshd
diff /etc/ssh/ojs_sshd_config /etc/ssh/sshd_config

Code: Alles auswählen

13c13
< Port 50000
---
> #Port 22
Später kann man den zweiten SSHD ja beliebig anpassen und absichern (allowusers, pubkey,...)

/etc/sysconfig/ssh nach /etc/sysconfig/ojs_ssh kopieren und anpassen:

Code: Alles auswählen

cp /etc/sysconfig/ssh /etc/sysconfig/ojs_ssh
Hier ein "diff /etc/sysconfig/ssh /etc/sysconfig/ojs_ssh"

Code: Alles auswählen

2c2
< ## Description:       SSH server settings
---
> ## Description:       OJs SSH server settings
5c5
< ## ServiceRestart: sshd
---
> ## ServiceRestart: ojs_sshd
7c7
< # Options for sshd
---
> # Options for ojs_sshd
9c9
< SSHD_OPTS=""
---
> SSHD_OPTS="-f /etc/ssh/ojs_sshd_config"

/etc/init.d/sshd nach /etc/init.d/ojs_sshd kopieren, und anpassen:

Code: Alles auswählen

cp /etc/init.d/sshd /etc/init.d/ojs_sshd
"diff /etc/init.d/sshd /etc/init.d/ojs_sshd"

Code: Alles auswählen

6c6
< # /etc/init.d/sshd
---
> # /etc/init.d/ojs_sshd
10c10
< # /usr/sbin/rcsshd
---
> # /usr/sbin/rcojs_sshd
13c13
< # Provides: sshd
---
> # Provides: ojs_sshd
18c18
< # Description: Start the sshd daemon
---
> # Description: Start the ojs_sshd daemon
21c21
< SSHD_BIN=/usr/sbin/sshd
---
> SSHD_BIN=/usr/sbin/ojs_sshd
24c24
< SSHD_SYSCONFIG=/etc/sysconfig/ssh
---
> SSHD_SYSCONFIG=/etc/sysconfig/ojs_ssh
28c28
< SSHD_PIDFILE=/var/run/sshd.init.pid
---
> SSHD_PIDFILE=/var/run/ojs_sshd.init.pid
60c60
<       echo -n "Starting SSH daemon"
---
>       echo -n "Starting OJs_SSH daemon"
70c70
<       echo -n "Shutting down SSH daemon"
---
>       echo -n "Shutting down OJs_SSH daemon"
100c100
<       echo -n "Reload service sshd"
---
>       echo -n "Reload service ojs_sshd"
108c108
<       echo -n "Checking for service sshd "
---
>       echo -n "Checking for service ojs_sshd "
126c126
<         test /etc/ssh/sshd_config -nt $SSHD_PIDFILE && echo reload
---
>         test /etc/ssh/ojs_sshd_config -nt $SSHD_PIDFILE && echo reload
Anschließend linkt man /usr/sbin/sshd nach /usr/sbin/ojs_sshd per

Code: Alles auswählen

ln /usr/sbin/sshd /usr/sbin/ojs_sshd
Dann sollte man das Skript mal testen, einfach indem man

Code: Alles auswählen

/etc/init.d/ojs_sshd status
und

Code: Alles auswählen

/etc/init.d/ojs_sshd start
aufruft. Danach sollte ein

Code: Alles auswählen

ps aux|grep sshd
zwei Einträge liefern:

Code: Alles auswählen

root      3780  0.0  0.1   5712   952 ?        Ss   19:08   0:00 /usr/sbin/ojs_sshd -f /etc/ssh/ojs_sshd_config -o PidFile=/var/run/ojs_sshd.init.pid
root      3964  0.0  0.1   5712  1064 ?        Ss   19:08   0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid

Durch unsere Änderungen läuft der zweite SSHD mit einer anderen Konfiguration, und hat ein eigenes PID-File (wichtig für die Status-Meldungen).

So, wenn alles geklappt hat, kann man absichern, den Port in der Firewall öffnen (<hier den Link zum Wiki-Artikel einfügen>) und das Skript für die jeweiligen Runlevel installieren. Ob man das per insserv, chkconfig oder Yast-Runleveleditor macht ist prinzipiell egal.

ANMERKUNGEN:
  • Das Umbenennen bzw. Linken der Datei in /usr/sbin war bei meinen Tests nötig, da sonst

    Code: Alles auswählen

    rcojs_sshd status
    bzw.

    Code: Alles auswählen

    rcsshd status
    Probleme machen. (Es gibt einen Bugreport dazu).
  • Auf Suse 9.3 muss man noch /etc/pam.d/sshd nach /etc/pam.d/ojs_sshd linken, geht per

    Code: Alles auswählen

    ln /etc/pam.d/sshd /etc/pam.d/ojs_sshd
    sonst gibt es einen Fehler bei der Anmeldung am 2. SSH-Server.
  • Ich habe bei mir in beiden sshd_configs die Zeile

    Code: Alles auswählen

    #ListenAddress 0.0.0.0
    in

    Code: Alles auswählen

    ListenAddress 0.0.0.0
    um die lästigen bind-Fehler in /var/log/messages loszuwerden. IPv6 nutze ich hier nicht.

    Ein Fehler taucht noch in /var/log/messages auf, nämlich

    Code: Alles auswählen

    May 13 17:26:39 HOSTNAME ojs_sshd[3921]: error: getnameinfo failed
    Keine Ahnung wie man den loswerden könnte, es funktioniert hier aber alles.

    So, noch Fragen?

    Sämtliche angepasste Dateien gibt es als Archiv unter
    http://www.ojkastl.de/pub/LinuxClub/2ter_SSHD_HOWTO

    Viel Spaß beim Testen,
    OJ
EDIT 20070515 07:21

Erklärung zu den diff-Ausgaben eingebaut, und Download früher erwähnt.
Zuletzt geändert von ojkastl am 15. Mai 2007, 07:22, insgesamt 2-mal geändert.

Werbung:
ojkastl
Hacker
Hacker
Beiträge: 547
Registriert: 15. Dez 2004, 04:51
Wohnort: Erlangen
Kontaktdaten:

Beitrag von ojkastl » 13. Mai 2007, 22:01

Ich mach mal die Ingrid:

Unter Kubuntu 7.04 geht es prinzipiell ähnlich. Nur ist da im sshd-executable das PID-File fest eingebaut, was Probleme schafft. Ich bin grad am Schauen wie man das lösen kann.

Und: Kann das jemand auf 10.0 und 10.1 testen, die habe ich hier nicht. Danke.

Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4263
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

Re: Anleitung fürs Wiki: 2. SSH-Server

Beitrag von framp » 13. Mai 2007, 22:28

ojkastl hat geschrieben:Das ganze würde ich gerne der Allgemeinheit als Wiki-Artikel zur Verfügung stellen.
Gute Idee :!: . Nur hätte ich es an Deiner Stelle gleich als draft ins WiKi gestellt. Dann hätten Korrekturen/Änderungen gleich direkt eingegeben werden können und Du mußt nicht die hiesigen Kommentare einpflegen :wink:

Ausprobiert habe ich Deine Anleitung nicht, da ich kein 10.0 und 10.1 habe.

Einen Kommentar habe ich: Die Methode Änderungen mit diff zu zeigen ist sicherlich Linux Kennern bekannt. Nur würde ich das explizit schreiben, was - wo durch was zu ersetzen ist. Das ist für Einsteiger leichter zu verstehen 8)

Benutzeravatar
panamajo
Guru
Guru
Beiträge: 2587
Registriert: 12. Feb 2005, 22:45

Beitrag von panamajo » 13. Mai 2007, 23:02

Anwendungsgebiete (in welchem Fall ist ein 2. sshd sinnvoll)?

Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4263
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

Beitrag von framp » 13. Mai 2007, 23:22

@panamajo
ojkastl hat geschrieben:Zusätzlicher SSH-Server, der nach außen freigegeben werden kann, abgesichert werden kann etc. ohne den bestehenden SSHD zu beeinflussen.
Bei mir gibt es z.B. auch zwei ssh Server:
Der erste is ein 'normaler' vom lokalen Netz erreichbarer ssh auf Port 22 mit Passwordauthentification und ist per iptables nicht vom externen Internet erreichbar.
Der zweite ist ein vom externen Internet erreichbarer sshd auf einem Port <> 22 (wg der vielen Skriptkiddies und deren Zugriffsversuchen) und wo man aus Sicherheitsgründen nur mit Zertifikaten reinkommt.

Ich habe also einen 'normalen' sshd für das interne sichere Netz und einen 'hardened' sshd für das externe unsichere Netz / Internet.

rolle
Guru
Guru
Beiträge: 3724
Registriert: 4. Mai 2004, 21:50
Kontaktdaten:

Beitrag von rolle » 14. Mai 2007, 16:26

Ich betreibe einen zweiten sshd, um meinen NX-Server abzusichern. Der eine lauscht außen und läßt nur Anmeldung per pubkey zu, der andere lauscht intern und läßt auch die für NX notwendige Passwortanmeldung zu. Dann tunnele ich den einen durch den anderen.
Horrido, Roland

Für meine Postings gilt außer bei Zitaten hier im Linux-Club die Creative Commons.

ojkastl
Hacker
Hacker
Beiträge: 547
Registriert: 15. Dez 2004, 04:51
Wohnort: Erlangen
Kontaktdaten:

Re: Anleitung fürs Wiki: 2. SSH-Server

Beitrag von ojkastl » 15. Mai 2007, 07:15

framp hat geschrieben:Gute Idee :!: . Nur hätte ich es an Deiner Stelle gleich als draft ins WiKi gestellt. Dann hätten Korrekturen/Änderungen gleich direkt eingegeben werden können und Du mußt nicht die hiesigen Kommentare einpflegen :wink:
Naja, viel an Text gibt es ja noch nicht, mir ging es erstmal darum dass jemand die Befehle testet. Und da ich mich mit dem Wiki noch nicht wirklich auseinander gesetzt habe, und auf Anhieb keine "Baustelle" für unfertige Artiekl gefunden habe bin ich halt hier gelandet.
framp hat geschrieben: Ausprobiert habe ich Deine Anleitung nicht, da ich kein 10.0 und 10.1 habe.
Und geht es dann auf deiner Suse?
framp hat geschrieben: Einen Kommentar habe ich: Die Methode Änderungen mit diff zu zeigen ist sicherlich Linux Kennern bekannt. Nur würde ich das explizit schreiben, was - wo durch was zu ersetzen ist. Das ist für Einsteiger leichter zu verstehen 8)
Ich habe am Schluss relativ versteckt gesagt dass ich die Dateien ins Netz gestellt habe, das sollte man wohl weiter oben nochmal schreiben.

Der diff ist wohl verwirrend, da sollte ich wohl noch etwas dazu schreiben.

ojkastl
Hacker
Hacker
Beiträge: 547
Registriert: 15. Dez 2004, 04:51
Wohnort: Erlangen
Kontaktdaten:

Beitrag von ojkastl » 15. Mai 2007, 07:21

Ich hab mal Version 0.0.2 erstellt, und versucht das mit den diffs zu erklären.

Wenn man zu jeder Datei ausführlich die Änderungen dokumentieren will, dann wird es relativ unübersichtlich, wobei der diff auch nicht der Hit ist.

Diffs weglassen?

jengelh
Guru
Guru
Beiträge: 4039
Registriert: 20. Nov 2004, 17:42
Kontaktdaten:

Beitrag von jengelh » 15. Mai 2007, 11:16

Code: Alles auswählen

diff -u
;-)

Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4263
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

Beitrag von framp » 15. Mai 2007, 20:37

Die Anleitung bin ich mal in 2 Minuten durchgegangen auf 10.2. Folgende Kommentare:

1) Konsistent sshd durch sshd2 ersetzen - ojs ist nicht sehr sprechend ;-)
2) rcsshd ist der SuSE Standard um daemons zu starten. Also fehlt noch ein Symlink zu /etc/init.d/sshd2 für rcsshd2
3) Warum updates der Kommentare in den Scripts? Sind meiner Meinung nicht notwendig (siehe 4 - da leicht automatisierbar)
4) Die Duplizierung und Anpassung der Dateien ist ein kleines Skript mit ein paar cp, ln und sed Befehlen. Wäre ein nettes goodie :wink:

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste