fix smth
Some checks failed
C/C++ CI self-hosted / win10 cygwin-release (push) Waiting to run
C/C++ CI self-hosted / ARM default (push) Waiting to run
C/C++ CI self-hosted / ARM64 default (push) Waiting to run
C/C++ CI self-hosted / alpine default (push) Waiting to run
C/C++ CI self-hosted / centos7 default (push) Waiting to run
C/C++ CI self-hosted / debian-i386 default (push) Waiting to run
C/C++ CI self-hosted / dfly30 default (push) Waiting to run
C/C++ CI self-hosted / dfly48 default (push) Waiting to run
C/C++ CI self-hosted / dfly60 default (push) Waiting to run
C/C++ CI self-hosted / dfly62 default (push) Waiting to run
C/C++ CI self-hosted / dfly64 default (push) Waiting to run
C/C++ CI self-hosted / fbsd10 default (push) Waiting to run
C/C++ CI self-hosted / fbsd12 default (push) Waiting to run
C/C++ CI self-hosted / fbsd13 default (push) Waiting to run
C/C++ CI self-hosted / fbsd14 default (push) Waiting to run
C/C++ CI self-hosted / nbsd10 default (push) Waiting to run
C/C++ CI self-hosted / nbsd3 default (push) Waiting to run
C/C++ CI self-hosted / nbsd4 default (push) Waiting to run
C/C++ CI self-hosted / nbsd8 default (push) Waiting to run
C/C++ CI self-hosted / nbsd9 default (push) Waiting to run
C/C++ CI self-hosted / obsd51 default (push) Waiting to run
C/C++ CI self-hosted / obsd67 default (push) Waiting to run
C/C++ CI self-hosted / obsd72 default (push) Waiting to run
C/C++ CI self-hosted / obsd73 default (push) Waiting to run
C/C++ CI self-hosted / obsd74 default (push) Waiting to run
C/C++ CI self-hosted / obsdsnap default (push) Waiting to run
C/C++ CI self-hosted / obsdsnap-i386 default (push) Waiting to run
C/C++ CI self-hosted / omnios default (push) Waiting to run
C/C++ CI self-hosted / openindiana default (push) Waiting to run
C/C++ CI self-hosted / ubuntu-2204 default (push) Waiting to run
C/C++ CI self-hosted / obsd-arm64 default (push) Waiting to run
C/C++ CI self-hosted / aix51 default (push) Waiting to run
C/C++ CI self-hosted / fbsd14-ppc64 default (push) Waiting to run
C/C++ CI self-hosted / sol10 default (push) Waiting to run
C/C++ CI self-hosted / sol11 default (push) Waiting to run
C/C++ CI self-hosted / win10 default (push) Waiting to run
C/C++ CI self-hosted / debian-riscv64 default (push) Waiting to run
C/C++ CI self-hosted / openwrt-mips default (push) Waiting to run
C/C++ CI self-hosted / openwrt-mipsel default (push) Waiting to run
C/C++ CI self-hosted / ARM64 pam (push) Waiting to run
C/C++ CI self-hosted / centos7 pam (push) Waiting to run
C/C++ CI self-hosted / debian-i386 pam (push) Waiting to run
C/C++ CI self-hosted / dfly48 pam (push) Waiting to run
C/C++ CI self-hosted / dfly58 pam (push) Waiting to run
C/C++ CI self-hosted / dfly60 pam (push) Waiting to run
C/C++ CI self-hosted / dfly62 pam (push) Waiting to run
C/C++ CI self-hosted / dfly64 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd10 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd12 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd13 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd14 pam (push) Waiting to run
C/C++ CI self-hosted / nbsd10 pam (push) Waiting to run
C/C++ CI self-hosted / nbsd8 pam (push) Waiting to run
C/C++ CI self-hosted / nbsd9 pam (push) Waiting to run
C/C++ CI self-hosted / omnios pam (push) Waiting to run
C/C++ CI self-hosted / openindiana pam (push) Waiting to run
C/C++ CI self-hosted / sol10 pam (push) Waiting to run
C/C++ CI self-hosted / sol11 pam-krb5 (push) Waiting to run
C/C++ CI self-hosted / sol11 sol64 (push) Waiting to run
C/C++ CI self-hosted / dfly30 without-openssl (push) Waiting to run
C/C++ CI / ubuntu-latest aws-lc (push) Failing after 5s
C/C++ CI / ubuntu-latest boringssl (push) Failing after 4s
C/C++ CI / ubuntu-latest clang-15 (push) Failing after 3s
C/C++ CI / ubuntu-latest clang-19 (push) Failing after 3s
C/C++ CI / ubuntu-latest default (push) Failing after 4s
C/C++ CI / ubuntu-latest gcc-14 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.2.6 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.3.6 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-3.4.3 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.5.3 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.6.1 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.7.2 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.8.4 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-3.9.2 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-4.0.0 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-master (push) Failing after 3s
C/C++ CI / ubuntu-latest musl (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-1.1.1 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-1.1.1_stable (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-1.1.1t (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-1.1.1w (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.0 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.0.0 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.0.15 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.1 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.1.0 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.1.7 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.2 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.2.3 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.3 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.3.2 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.4.0 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-master (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-noec (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.71 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.72 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.73 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.74 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.75 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.76 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.77 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.78 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.79 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.80 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.81 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.82 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.83 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-snapshot (push) Failing after 3s
C/C++ CI / ubuntu-latest tcmalloc (push) Failing after 3s
C/C++ CI / ubuntu-latest zlib-develop (push) Failing after 3s
CIFuzz / Fuzzing (push) Failing after 1m23s
C/C++ CI / ubuntu-22.04 c89 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-11 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-12-Werror (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-14 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-sanitize-address (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-sanitize-undefined (push) Has been cancelled
C/C++ CI / windows-2019 cygwin-release (push) Has been cancelled
C/C++ CI / windows-2022 cygwin-release (push) Has been cancelled
C/C++ CI / macos-13 default (push) Has been cancelled
C/C++ CI / macos-14 default (push) Has been cancelled
C/C++ CI / macos-15 default (push) Has been cancelled
C/C++ CI / ubuntu-22.04 default (push) Has been cancelled
C/C++ CI / ubuntu-22.04-arm default (push) Has been cancelled
C/C++ CI / ubuntu-24.04-arm default (push) Has been cancelled
C/C++ CI / windows-2019 default (push) Has been cancelled
C/C++ CI / windows-2022 default (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-11-Werror (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-12-Werror (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-9 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-sanitize-address (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-sanitize-undefined (push) Has been cancelled
C/C++ CI / ubuntu-22.04 hardenedmalloc (push) Has been cancelled
C/C++ CI / ubuntu-22.04 heimdal (push) Has been cancelled
C/C++ CI / ubuntu-22.04 kitchensink (push) Has been cancelled
C/C++ CI / ubuntu-22.04-arm kitchensink (push) Has been cancelled
C/C++ CI / ubuntu-24.04-arm kitchensink (push) Has been cancelled
C/C++ CI / ubuntu-22.04 krb5 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 libedit (push) Has been cancelled
C/C++ CI / macos-13 pam (push) Has been cancelled
C/C++ CI / macos-14 pam (push) Has been cancelled
C/C++ CI / macos-15 pam (push) Has been cancelled
C/C++ CI / ubuntu-22.04 pam (push) Has been cancelled
C/C++ CI / ubuntu-22.04 selinux (push) Has been cancelled
C/C++ CI / ubuntu-22.04 sk (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-1 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-2 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-3 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-4 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-unit (push) Has been cancelled
C/C++ CI / ubuntu-22.04 without-openssl (push) Has been cancelled

This commit is contained in:
Lain Iwakura 2025-07-30 22:06:18 +03:00
parent ca108139a7
commit d3f2e18320
No known key found for this signature in database
GPG Key ID: C7C18257F2ADC6F8
6 changed files with 94 additions and 18 deletions

View File

@ -982,8 +982,8 @@ struct winsize {
* so only enable if the compiler supports them. * so only enable if the compiler supports them.
*/ */
#if defined(VARIABLE_LENGTH_ARRAYS) && defined(VARIABLE_DECLARATION_AFTER_CODE) #if defined(VARIABLE_LENGTH_ARRAYS) && defined(VARIABLE_DECLARATION_AFTER_CODE)
# define USE_SNTRUP761X25519 1 /* Disabled for security - sntrup761 and mlkem768 are not considered secure */
/* The ML-KEM768 implementation also uses C89 features */ /* # define USE_SNTRUP761X25519 1 */
# define USE_MLKEM768X25519 1 /* # define USE_MLKEM768X25519 1 */
#endif #endif
#endif /* _DEFINES_H */ #endif /* _DEFINES_H */

18
generate_secure_hostkeys.sh Normal file → Executable file
View File

@ -12,7 +12,7 @@ rm -f $SSH_DIR/ssh_host_*
echo "[*] Generating new secure host keys..." echo "[*] Generating new secure host keys..."
# Generate Ed25519 key (preferred) # Generate Ed25519 key (256 bits)
ssh-keygen -t ed25519 -f $SSH_DIR/ssh_host_ed25519_key -N "" -C "" ssh-keygen -t ed25519 -f $SSH_DIR/ssh_host_ed25519_key -N "" -C ""
# Generate RSA key with 4096 bits # Generate RSA key with 4096 bits
@ -29,5 +29,17 @@ if [ -f $SSH_DIR/moduli ]; then
chmod 644 $SSH_DIR/moduli chmod 644 $SSH_DIR/moduli
fi fi
echo "[+] Secure host keys generated successfully" echo "[*] Verifying key sizes..."
echo "[+] Keys are configured with hardened algorithms by default" RSA_SIZE=$(ssh-keygen -l -f $SSH_DIR/ssh_host_rsa_key | awk '{print $1}')
ED25519_SIZE=$(ssh-keygen -l -f $SSH_DIR/ssh_host_ed25519_key | awk '{print $1}')
echo "[+] RSA key size: $RSA_SIZE bits"
echo "[+] Ed25519 key size: $ED25519_SIZE bits"
if [ "$RSA_SIZE" -ge 4096 ] && [ "$ED25519_SIZE" -ge 256 ]; then
echo "[+] Secure host keys generated successfully"
echo "[+] Keys meet security requirements"
else
echo "[!] Warning: Key sizes may not meet security requirements"
exit 1
fi

View File

@ -25,18 +25,12 @@
*/ */
#define KEX_SERVER_KEX \ #define KEX_SERVER_KEX \
"sntrup761x25519-sha512@openssh.com," \
"curve25519-sha256," \ "curve25519-sha256," \
"curve25519-sha256@libssh.org," \ "curve25519-sha256@libssh.org," \
"diffie-hellman-group18-sha512," \ "diffie-hellman-group18-sha512," \
"diffie-hellman-group-exchange-sha256," \
"diffie-hellman-group16-sha512" \ "diffie-hellman-group16-sha512" \
#define KEX_CLIENT_KEX KEX_SERVER_KEX "," \ #define KEX_CLIENT_KEX KEX_SERVER_KEX
"ecdh-sha2-nistp256," \
"ecdh-sha2-nistp384," \
"ecdh-sha2-nistp521," \
"diffie-hellman-group14-sha256"
#define KEX_DEFAULT_PK_ALG \ #define KEX_DEFAULT_PK_ALG \
"sk-ssh-ed25519-cert-v01@openssh.com," \ "sk-ssh-ed25519-cert-v01@openssh.com," \
@ -51,16 +45,13 @@
#define KEX_SERVER_ENCRYPT \ #define KEX_SERVER_ENCRYPT \
"chacha20-poly1305@openssh.com," \ "chacha20-poly1305@openssh.com," \
"aes256-gcm@openssh.com," \ "aes256-gcm@openssh.com," \
"aes256-ctr," \ "aes128-gcm@openssh.com"
"aes192-ctr," \
"aes128-gcm@openssh.com," \
"aes128-ctr"
#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT #define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT
#define KEX_SERVER_MAC \ #define KEX_SERVER_MAC \
"hmac-sha2-512-etm@openssh.com," \
"hmac-sha2-256-etm@openssh.com," \ "hmac-sha2-256-etm@openssh.com," \
"hmac-sha2-512-etm@openssh.com," \
"umac-128-etm@openssh.com" "umac-128-etm@openssh.com"
#define KEX_CLIENT_MAC KEX_SERVER_MAC #define KEX_CLIENT_MAC KEX_SERVER_MAC

59
security_check.sh Executable file
View File

@ -0,0 +1,59 @@
#!/bin/sh
# Security check script for OpenSSH configuration
set -e
echo "[*] Checking SSH security configuration..."
# Check if sshd_config has secure settings
if grep -q "KexAlgorithms.*curve25519-sha256" /etc/ssh/sshd_config; then
echo "[+] KexAlgorithms: OK"
else
echo "[!] KexAlgorithms: WARNING - insecure algorithms may be enabled"
fi
if grep -q "Ciphers.*chacha20-poly1305" /etc/ssh/sshd_config; then
echo "[+] Ciphers: OK"
else
echo "[!] Ciphers: WARNING - weak ciphers may be enabled"
fi
if grep -q "MACs.*hmac-sha2-256-etm" /etc/ssh/sshd_config; then
echo "[+] MACs: OK"
else
echo "[!] MACs: WARNING - weak MACs may be enabled"
fi
# Check host key sizes
if [ -f /etc/ssh/ssh_host_rsa_key ]; then
RSA_SIZE=$(ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key | awk '{print $1}')
if [ "$RSA_SIZE" -ge 4096 ]; then
echo "[+] RSA host key: $RSA_SIZE bits (OK)"
else
echo "[!] RSA host key: $RSA_SIZE bits (WEAK - should be >= 4096)"
fi
fi
if [ -f /etc/ssh/ssh_host_ed25519_key ]; then
ED25519_SIZE=$(ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key | awk '{print $1}')
if [ "$ED25519_SIZE" -ge 256 ]; then
echo "[+] Ed25519 host key: $ED25519_SIZE bits (OK)"
else
echo "[!] Ed25519 host key: $ED25519_SIZE bits (WEAK - should be >= 256)"
fi
fi
# Check for disabled weak algorithms
if grep -q "USE_SNTRUP761X25519.*1" /etc/ssh/sshd_config 2>/dev/null; then
echo "[!] sntrup761: WARNING - weak algorithm enabled"
else
echo "[+] sntrup761: Disabled (OK)"
fi
if grep -q "USE_MLKEM768X25519.*1" /etc/ssh/sshd_config 2>/dev/null; then
echo "[!] mlkem768: WARNING - weak algorithm enabled"
else
echo "[+] mlkem768: Disabled (OK)"
fi
echo "[*] Security check completed"

View File

@ -44,3 +44,10 @@
# ProxyCommand ssh -q -W %h:%p gateway.example.com # ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h # RekeyLimit 1G 1h
# UserKnownHostsFile ~/.ssh/known_hosts.d/%k # UserKnownHostsFile ~/.ssh/known_hosts.d/%k
# Security hardening - restrict algorithms to secure ones only
HostKeyAlgorithms ssh-ed25519,rsa-sha2-256,rsa-sha2-512
PubkeyAcceptedKeyTypes ssh-ed25519,rsa-sha2-256,rsa-sha2-512
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group18-sha512,diffie-hellman-group16-sha512
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com

View File

@ -116,3 +116,10 @@ Subsystem sftp /usr/libexec/sftp-server
# AllowTcpForwarding no # AllowTcpForwarding no
# PermitTTY no # PermitTTY no
# ForceCommand cvs server # ForceCommand cvs server
# Security hardening - restrict algorithms to secure ones only
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group18-sha512,diffie-hellman-group16-sha512
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com
HostKeyAlgorithms ssh-ed25519,rsa-sha2-256,rsa-sha2-512
PubkeyAcceptedKeyTypes ssh-ed25519,rsa-sha2-256,rsa-sha2-512