# OpenSSH client configuration file for IPFire
#
# The full documentation is available at: https://man.openbsd.org/ssh_config
#

# Set some basic hardening options for all connections
Host *
	# Disable undocumented roaming feature as it is known to be vulnerable
	UseRoaming no

	# Only use secure crypto algorithms
	KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
	Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
	MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

	# Always visualise server host keys (helps to identify key based MITM attacks)
	VisualHostKey yes

	# Use SSHFP (might work on some up-to-date networks) to look up host keys
	VerifyHostKeyDNS yes

	# Send SSH-based keep alive messages to connected server to avoid broken connections
	ServerAliveInterval 10
	ServerAliveCountMax 30

	# Disable TCP keep alive messages since they can be spoofed and we have SSH-based
	# keep alive messages enabled; there is no need to do things twice here
	TCPKeepAlive no

	# Ensure only allowed authentication methods are used
	PreferredAuthentications publickey,keyboard-interactive,password

	# Prevent information leak by hashing ~/.ssh/known_hosts
	HashKnownHosts yes

# EOF
