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

sichere sshd_config

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

Moderator: Moderatoren

newbie1976
Member
Member
Beiträge: 95
Registriert: 23. Aug 2006, 13:05

sichere sshd_config

Beitrag von newbie1976 » 15. Jun 2007, 10:43

Hallo!
Ich bin ein Neuling, was Server angeht. Ich versuche gerade meinen ssh-login abzusichern. Man soll sich nur noch per keyfile mit passphrase einloggen können. Die keyfiles sind erstellt (ssh-keygen -t dsa) und überspielt (cat ~./ssh/id_dsa.pub | ssh root@domain.de "cat >> .ssh/authorized_keys2").
Wie sieht nun eine korrekte sshd_config aus?

Bisher sieht sie so aus:
# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker 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 change a
# default value.

#Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and 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 no
#PermitEmptyPasswords no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes

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

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

# Set this to 'yes' to enable support for the deprecated 'gssapi' authentication
# mechanism to OpenSSH 3.8p1. The newer 'gssapi-with-mic' mechanism is included
# in this release. The use of 'gssapi' is deprecated due to the presence of
# potential man-in-the-middle attacks, which 'gssapi-with-mic' is not susceptible to.
#GSSAPIEnableMITMAttack 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 mechanism.
# Depending on your PAM configuration, this may bypass the setting of
# PasswordAuthentication, PermitEmptyPasswords, and
# "PermitRootLogin without-password". If you just want the PAM account and
# session checks to run without PAM authentication, then enable this but set
# ChallengeResponseAuthentication=no
UsePAM yes

#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10

# no default banner path
#Banner /some/path

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

# This enables accepting locale enviroment variables LC_* LANG, see sshd_config(5).
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
Reichen folgende Änderungen:
UsePAM no
ChallengeResponseAuthentication no
Zusätzlich will ich dann noch den ssh-Port verlegen mit Port xx. und den Port natürlich in der Firewall freischalten.
Reicht das, oder fehlt was?

Werbung:
Benutzeravatar
Burner
Member
Member
Beiträge: 189
Registriert: 4. Feb 2004, 16:58
Wohnort: RucksackBerliner
Kontaktdaten:

Beitrag von Burner » 15. Jun 2007, 11:48

Bin zwar nicht der grosse Guru in der hinsicht aber du musst schon die Sachen die du nutzen willst auskommentieren also die # entfernen. Z.B. von so

Code: Alles auswählen

#Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress :: 
nach

Code: Alles auswählen

Port 22
Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress :: 
so.

Ansonsten solltest du dir dieses Howtonoch mal durchlesen ( bzw. dieses ).

Gruss Burner
Achte auf deine Gedanken - sie sind der Anfang deiner Taten.

v.-vega
Member
Member
Beiträge: 116
Registriert: 5. Jul 2005, 11:39
Wohnort: Bottrop
Kontaktdaten:

Beitrag von v.-vega » 15. Jun 2007, 12:23

Wenn die Sachen auskommentiert sind wird der Standard verwendet. Kannste also ruhig auskommentiert lassen (ausser du willt nen anderen Port dann # weg und Nummer ändern).
Empfehlen kann ich dir auch nur das Howto von framp (erster Link von Burner). Einfach und verständlich geschrieben und du hast ne sichere Verbindung.
Bild

Benutzeravatar
Burner
Member
Member
Beiträge: 189
Registriert: 4. Feb 2004, 16:58
Wohnort: RucksackBerliner
Kontaktdaten:

Beitrag von Burner » 15. Jun 2007, 12:33

@vega
Gerade wenn er die # entfernt wird die Zeile ausgelesen und genutzt. Ist die # davor wird Standard genutzt.

Gruss Burner
Achte auf deine Gedanken - sie sind der Anfang deiner Taten.

v.-vega
Member
Member
Beiträge: 116
Registriert: 5. Jul 2005, 11:39
Wohnort: Bottrop
Kontaktdaten:

Beitrag von v.-vega » 15. Jun 2007, 12:58

Huch, ähm ich meinte auch Kommentiert und nicht auskommentiert. Macht ja auch Sinn. :oops:
Bild

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

Beitrag von framp » 15. Jun 2007, 19:02

Im LC WiKi - Sektion Security gibt es noch weitere Infos zu ssh Server und absichern :wink:

newbie1976
Member
Member
Beiträge: 95
Registriert: 23. Aug 2006, 13:05

Beitrag von newbie1976 » 15. Jun 2007, 20:16

Danke für den Link! Wenn ich die die richtigen suchbegriffe genommen hätte, dann wär ich vielleicht auch drauf gestoßen ... So ist das halt.

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

Beitrag von framp » 15. Jun 2007, 20:31

So wie ich das sehe ist die Sache für Dich also [gelöst] ? ;-)

newbie1976
Member
Member
Beiträge: 95
Registriert: 23. Aug 2006, 13:05

Beitrag von newbie1976 » 15. Jun 2007, 20:42

Wenn allesw wie gewünscht funzt ja :wink: Werde ich gleich mal ausproibieren. Und dan den Tread auf gelöst setzen.

newbie1976
Member
Member
Beiträge: 95
Registriert: 23. Aug 2006, 13:05

[gelöst:] sichere sshd_config

Beitrag von newbie1976 » 15. Jun 2007, 21:25

Auf der Konsole funzt es jetzt. Ich kann mich nur noch mit key einloggen. Nur putty meckert: unable to use ... Login ist damit nicht möglich. Keine Ahnung wieso er den key nicht benutzen kann. Auch egal, hauptsache auf der konsole funzt!

Benutzeravatar
Becksta
Hacker
Hacker
Beiträge: 425
Registriert: 6. Jun 2006, 01:25
Wohnort: Westerwald
Kontaktdaten:

Beitrag von Becksta » 15. Jun 2007, 22:53

Damit es mit putty klappt musst du einen key importieren. Putty konvertiert den dann in "sein" Format....
Ich bin lange drüber gestolpert, das ich die Datei "id_dsa.pub" versucht habe mit Putty zu öffnen. Du musst aber die Datei "id_dsa", also ohne Dateiendung verwenden. Dann sollte Putty dir nen Dialog zum importieren anbieten. Den importieren Key noch sicher ablegen und zukünftig für den Zugriff auf deinen Rechner mittels Putty verwenden.... ;)

Greetz
Becksta
Mein System:
Intel Core 2 Duo E6400 2,13 Ghz
Asus P5b
MSI GeForce 7600 Gs
2048MB Arbeitsspeicher

Betriebssysteme:
OpenSuse 11.2 Linux 2.6.31
Gnome
Windows 7 Professional

LinuxStrike
Newbie
Newbie
Beiträge: 8
Registriert: 20. Mai 2009, 19:51

Re: sichere sshd_config

Beitrag von LinuxStrike » 26. Mai 2009, 02:13

Welche Option ist in sshd zuständig dafür, dass man auch über das internet reinkommen kann? Über mein netzwerk erreiche ich den server mit puti, aber nicht über internet. Linux kommt ins internet und auch port 22 ist im router offen.

Benutzeravatar
Burner
Member
Member
Beiträge: 189
Registriert: 4. Feb 2004, 16:58
Wohnort: RucksackBerliner
Kontaktdaten:

Re: sichere sshd_config

Beitrag von Burner » 26. Mai 2009, 05:49

Davuer ist nicht die sshd verantwortlich sondern deine Firewall. Dort sollte der entsprechende Port freigeschaltet sein. Falls du den Server hinter einem Router betreibst sollte dort auch eine Portweiterleitung geschaltet sein.

Gruss Burner
Achte auf deine Gedanken - sie sind der Anfang deiner Taten.

marce
Advanced Hacker
Advanced Hacker
Beiträge: 1072
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: sichere sshd_config

Beitrag von marce » 26. Mai 2009, 08:03

... und zum Testen dann auch von einem System außerhalb Deines Netzes den Zugriff versuchen. Viele Home-Router können mit ssh $externeIP nicht aus dem internen Netzi zugreifen...

LinuxStrike
Newbie
Newbie
Beiträge: 8
Registriert: 20. Mai 2009, 19:51

Re: sichere sshd_config

Beitrag von LinuxStrike » 26. Mai 2009, 22:30

Also das script hat Port 22 offen im Server und weitergeleitet in dem Router:

Code: Alles auswählen

#!/bin/sh
# iptables suchen
iptables=`which iptables`
 
# wenn iptables nicht installiert abbrechen
test -f $iptables || exit 0
 
case "$1" in
   start)
      echo "Firewall gestartet..."
      # alle Regeln loeschen
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
 
      # neue Regeln erzeugen
      $iptables -N garbage
      $iptables -I garbage -p TCP -j LOG --log-prefix="DROP TCP-Packet: " --log-level err
      $iptables -I garbage -p UDP -j LOG --log-prefix="DROP UDP-Packet: " --log-level err
      $iptables -I garbage -p ICMP -j LOG --log-prefix="DROP ICMP-Packet: " --log-level err
 
      # default Policy
      $iptables -P INPUT DROP
      $iptables -P OUTPUT DROP
      $iptables -P FORWARD DROP
 
      # ueber Loopback alles erlauben
      $iptables -I INPUT -i lo -j ACCEPT
      $iptables -I OUTPUT -o lo -j ACCEPT
 
      #####################################################
      # ausgehende Verbindungen
      # Port 21
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 21 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 49152:65535 --dport 20 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 20 --dport 49152:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 22
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      # Port 80
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 80 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 443
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 443 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # ICMP
      $iptables -I OUTPUT -o eth0 -p ICMP --icmp-type echo-reply -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p ICMP --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 137
      $iptables -I OUTPUT -o eth0 -p UDP --sport 1024:65535 --dport 137 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p UDP --sport 137:65535 --dport 1024 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 138
      $iptables -I OUTPUT -o eth0 -p UDP --sport 1024:65535 --dport 138 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p UDP --sport 138:65535 --dport 1024 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 139
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 139:65535 --dport 1024 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # eingehende Verbindungen
      # Port 21
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 21 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 20 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 49152:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 20 --dport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      # Port 22
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      # Port 80
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 80 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 123
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 123 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 123 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p UDP --sport 1024:65535 --dport 123 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p UDP --sport 123 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 443
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 443 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 137
      $iptables -I INPUT -i eth0 -p UDP --sport 1024:65535 --dport 137 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p UDP --sport 137:65535 --dport 1024 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 138
      $iptables -I INPUT -i eth0 -p UDP --sport 1024:65535 --dport 138 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p UDP --sport 138:65535 --dport 1024 -m state --state ESTABLISHED,RELATED -j ACCEPT
      # Port 139
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 139:65535 --dport 1024 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # erweiterte Sicherheitsfunktionen
      # SynFlood
      $iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
      # PortScan
      $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
      # Ping-of-Death
      $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 
      #####################################################
      # bestehende Verbindungen akzeptieren
      $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # garbage uebergeben wenn nicht erlaubt
      $iptables -A INPUT -m state --state NEW,INVALID -j garbage
 
      #####################################################
      # alles verbieten was bisher erlaubt war
      $iptables -A INPUT -j garbage
      $iptables -A OUTPUT -j garbage
      $iptables -A FORWARD -j garbage
      ;;
   stop)
      echo "Firewall abgeschaltet..."
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
      $iptables -P INPUT ACCEPT
      $iptables -P OUTPUT ACCEPT
      $iptables -P FORWARD ACCEPT
      ;;
   restart|reload|force-reload)
   $0 stop
   $0 start
      ;;
   *)
      echo "Aufruf: /etc/init.d/firewall (start|stop)"
      exit 1
      ;;
esac
exit 0
Der Router ist ein Netgear WNDR3300 WLAN Router.

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

Re: sichere sshd_config

Beitrag von framp » 26. Mai 2009, 22:44

Die iptable rules sehen OK aus. Wie ist es mit Deinem Router? Routet der auch den einkommenden Port 22 an Deinen Server weiter?

LinuxStrike
Newbie
Newbie
Beiträge: 8
Registriert: 20. Mai 2009, 19:51

Re: sichere sshd_config

Beitrag von LinuxStrike » 26. Mai 2009, 23:07

Ja. Tut er. Ich kann das jetzt aber nicht posten denn der Router steht leider nicht bei mir.

LinuxStrike
Newbie
Newbie
Beiträge: 8
Registriert: 20. Mai 2009, 19:51

Re: sichere sshd_config

Beitrag von LinuxStrike » 28. Mai 2009, 23:43

Ok das Problem ist gelöst. War was anderes. Ein paralleles firewallscript war - obwohl ich es abschaltete - wieder an. Ich schätze es lag an der Reparatur die wir durchgeführt hatten.

Jetzt habe ich ein anderes Problem. Das Script soll alle SSH Verbindungen blockieren wenn es gestartet ist, aber bereits bestehende Verbindungen nicht abbrechen. Aber ich kann über das Internet den Server erreichen und komme per SSH rein!?

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

Re: sichere sshd_config

Beitrag von framp » 29. Mai 2009, 18:59

So ganz verstehe ich nicht warum Du das machen willst. Aber anyhow: Warum so umständlich? Einfach den sshd stoppen. Dann kann keiner mehr rein - und die, die eine Session haben, können weiterarbeiten :roll:

LinuxStrike
Newbie
Newbie
Beiträge: 8
Registriert: 20. Mai 2009, 19:51

Re: sichere sshd_config

Beitrag von LinuxStrike » 2. Jun 2009, 15:42

Ja, ist schon klar. Aber ich möchte das nur halt ausprobieren. Es geht mir darum zu lernen und Erfahrungen zu sammeln und nicht einfach wie ein windows Anwender alles so hinzunehmen wie es ist. Anbei - wo schalte ich den Start von sshd ab? Ich meine - ohne yast zu benutzen. In welcher Datei.

Antworten