2015-08-30 15:54:21 +02:00
|
|
|
# OpenSSH /etc/ssh/sshd_config. I am removing commented lines for this to
|
|
|
|
# be more clear and if they are missed some day, just download
|
|
|
|
# upstream config file or take it from any distribution.
|
2015-08-28 13:00:25 +02:00
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Partially based on https://wiki.mozilla.org/Security/Guidelines/OpenSSH
|
|
|
|
# where some comments are took. Some options look like I don't want to
|
|
|
|
# change them to get updates when defaults change.
|
|
|
|
|
2015-09-12 10:42:44 +02:00
|
|
|
# Allow the client to send needed environment variables. I don't like
|
|
|
|
# setting wildcards and LC_ALL is disabled on purpouse.
|
2015-09-12 10:45:42 +02:00
|
|
|
AcceptEnv EDITOR LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION TERM TZ
|
2015-08-30 15:54:21 +02:00
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# IPv4 & IPv6
|
2015-08-28 13:00:25 +02:00
|
|
|
AddressFamily any
|
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Password based logins are disabled - only public key based logins are
|
|
|
|
# allowed.
|
|
|
|
AuthenticationMethods publickey
|
|
|
|
|
|
|
|
# The default is to check both .ssh/authorized_keys and
|
|
|
|
# .ssh/authorized_keys2 but this is overridden so installations will only
|
|
|
|
# check .ssh/authorized_keys.
|
|
|
|
AuthorizedKeysFile .ssh/authorized_keys
|
|
|
|
|
|
|
|
# File to send to client before authentication.
|
|
|
|
Banner /etc/issue.net
|
2015-08-28 13:00:25 +02:00
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Disable s/key passwords.
|
|
|
|
ChallengeResponseAuthentication no
|
|
|
|
|
|
|
|
# If the client doesn't reply in three "pings", connection is dead.
|
|
|
|
# Defaults to 3 anyway, but I add it here for clearity and
|
|
|
|
# in case it decides to change in the future.
|
|
|
|
ClientAliveCountMax 3
|
|
|
|
|
|
|
|
# "ping" the client every minute.
|
|
|
|
ClientAliveInterval 60
|
|
|
|
|
|
|
|
# HostKeys for protocol version 2.
|
2014-12-27 10:09:00 +01:00
|
|
|
HostKey /etc/ssh/ssh_host_ed25519_key
|
2015-08-30 15:54:21 +02:00
|
|
|
HostKey /etc/ssh/ssh_host_rsa_key
|
2014-12-27 10:09:00 +01:00
|
|
|
|
|
|
|
## IF THE HOST KEYS ARE MISSING, RUN THE FOLLOWING AS ROOT:
|
|
|
|
# ssh-keygen -t ed25519 -N "" -f /etc/ssh/ssh_host_ed25519_key
|
2015-08-30 15:54:21 +02:00
|
|
|
# ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
|
2014-12-27 10:09:00 +01:00
|
|
|
|
2015-09-06 07:42:29 +02:00
|
|
|
# Listen on the following TCP ports, default 22.
|
|
|
|
# /etc/ssh/sshd_config ...: ports must be specified before ListenAddress.
|
|
|
|
Port 22
|
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Listen on all IPv4 & IPv6 addresses.
|
|
|
|
ListenAddress 0.0.0.0
|
|
|
|
ListenAddress ::
|
2015-09-06 06:33:32 +02:00
|
|
|
|
2015-09-06 16:37:34 +02:00
|
|
|
# Use the internal SFTP to avoid having to find the external one. VERBOSE
|
|
|
|
# logs transactions that sftp-server performs on behalf of the client.
|
2015-09-06 17:27:50 +02:00
|
|
|
# See also http://serverfault.com/a/660325
|
2015-09-06 16:37:34 +02:00
|
|
|
Subsystem sftp internal-sftp -l VERBOSE
|
2015-09-06 16:20:12 +02:00
|
|
|
# If you wish to use the external one, uncomment the appropiate one
|
|
|
|
# for your OS or find it somewhere.
|
2015-09-06 16:04:17 +02:00
|
|
|
## Arch
|
2015-09-06 16:37:34 +02:00
|
|
|
#Subsystem sftp /usr/lib/ssh/sftp-server -l VERBOSE
|
2015-09-06 16:04:17 +02:00
|
|
|
## Debian
|
2015-09-06 16:37:34 +02:00
|
|
|
#Subsystem sftp /usr/lib/openssh/sftp-server -l VERBOSE
|
2015-09-06 16:04:17 +02:00
|
|
|
## Fedora (21)
|
2015-09-06 16:37:34 +02:00
|
|
|
#Subsystem sftp /usr/libexec/openssh/sftp-server -l VERBOSE
|
2015-09-06 16:13:21 +02:00
|
|
|
## Gentoo (/usr/lib is a symlink)
|
2015-09-06 16:37:34 +02:00
|
|
|
#Subsystem sftp /usr/lib/misc/sftp-server -l VERBOSE
|
2015-09-06 16:04:17 +02:00
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# VERBOSE logging, logs user's key fingerprint on login. Needed to have a
|
|
|
|
# clear audit track of which key was using to log in.
|
2014-12-27 10:09:00 +01:00
|
|
|
LogLevel VERBOSE
|
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Disable tunneled clear text passwords!
|
|
|
|
PasswordAuthentication no
|
|
|
|
|
|
|
|
# Auditing reasons, difficult to track which process belongs to which root
|
|
|
|
# user.
|
2016-01-06 09:17:33 +01:00
|
|
|
PermitRootLogin no
|
2014-12-27 10:09:00 +01:00
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Print /etc/motd (or /etc/profile or equivalent) on login. It's already
|
|
|
|
# done by PAM, so no need for duplicate MOTDs.
|
|
|
|
PrintMotd no
|
2014-12-27 10:09:00 +01:00
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Avoid enabling insecure protocol 1.
|
|
|
|
Protocol 2
|
2015-08-28 13:00:25 +02:00
|
|
|
|
2014-12-27 10:09:00 +01:00
|
|
|
# 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
|
2015-08-28 13:00:25 +02:00
|
|
|
|
2015-09-06 07:12:41 +02:00
|
|
|
# Use kernel sandbox mechanisms where possible in unprivilegied processes.
|
|
|
|
# Systrace on OpenBSD, Seccomp on Linux, seatbelt on MacOSX/Darwin,
|
|
|
|
# rlimit elsewhere.
|
|
|
|
UsePrivilegeSeparation sandbox
|