vishalmishra434 / rpms / openssh

Forked from rpms/openssh a month ago
Clone
Dusty Mabe 08d842
#!/usr/bin/bash 
Dusty Mabe 08d842
set -eu -o pipefail
Dusty Mabe 08d842
# Detect existing non-conforming host keys and perform the permissions migration
Dusty Mabe 08d842
# https://fedoraproject.org/wiki/Changes/SSHKeySignSuidBit
Dusty Mabe 08d842
# 
Dusty Mabe 08d842
# Example output looks like:
Dusty Mabe 08d842
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dusty Mabe 08d842
# @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
Dusty Mabe 08d842
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dusty Mabe 08d842
# Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
Dusty Mabe 08d842
# It is required that your private key files are NOT accessible by others.
Dusty Mabe 08d842
# This private key will be ignored.
Dusty Mabe 08d842
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dusty Mabe 08d842
# @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
Dusty Mabe 08d842
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dusty Mabe 08d842
# Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
Dusty Mabe 08d842
# It is required that your private key files are NOT accessible by others.
Dusty Mabe 08d842
# This private key will be ignored.
Dusty Mabe 08d842
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dusty Mabe 08d842
# @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
Dusty Mabe 08d842
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dusty Mabe 08d842
# Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
Dusty Mabe 08d842
# It is required that your private key files are NOT accessible by others.
Dusty Mabe 08d842
# This private key will be ignored.
Dusty Mabe 08d842
# sshd: no hostkeys available -- exiting.
Dusty Mabe 08d842
#
Dusty Mabe 08d842
output="$(sshd -T 2>&1 || true)" # expected to fail
Dusty Mabe 21fd6b
while read line; do
Dusty Mabe 21fd6b
    if [[ $line =~ ^Permissions\ [0-9]+\ for\ \'(.*)\'\ are\ too\ open. ]]; then
Dusty Mabe 21fd6b
        keyfile=${BASH_REMATCH[1]}
Dusty Mabe 21fd6b
        echo $line
Dusty Mabe 21fd6b
        echo -e "\t-> changing permissions on $keyfile"
Dusty Mabe 21fd6b
        chmod --verbose g-r $keyfile
Dusty Mabe 21fd6b
        chown --verbose root:root $keyfile
Dusty Mabe 21fd6b
    fi
Dusty Mabe 21fd6b
done <<< "$output"