mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-08-23 22:16:48 +00:00
149 lines
4.8 KiB
Bash
149 lines
4.8 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
set -u
|
|
|
|
main() {
|
|
cmd_sudo=''
|
|
if command -v sudo > /dev/null; then
|
|
my_id="$(id -u)"
|
|
if test "0" != "${my_id}"; then
|
|
cmd_sudo='sudo'
|
|
fi
|
|
fi
|
|
|
|
cmd_sed="${cmd_sudo} sed -i -E"
|
|
my_bsd_sed=''
|
|
if ! sed -V 2>&1 | grep -q 'GNU'; then
|
|
cmd_sed="${cmd_sudo} sed -i .prohibit-password-bak -E"
|
|
my_bsd_sed='true'
|
|
fi
|
|
|
|
my_changes=''
|
|
|
|
# PasswordAuthentication
|
|
echo ""
|
|
echo "Checking for 'PasswordAuthentication no'..."
|
|
echo " grep '^\s*PasswordAuthentication\s*no' /etc/ssh/sshd_config"
|
|
my_allow_passwords="$(
|
|
grep -q \
|
|
'^\s*PasswordAuthentication\s*no\s*$' \
|
|
/etc/ssh/sshd_config ||
|
|
echo 'true'
|
|
)"
|
|
if test -n "${my_allow_passwords}"; then
|
|
$cmd_sed \
|
|
's/#*[[:space:]]*PasswordAuthentication[[:space:]]*(yes|no)[[:space:]]*$/PasswordAuthentication no/g' \
|
|
/etc/ssh/sshd_config
|
|
|
|
if ! grep -q '^PasswordAuthentication no$' /etc/ssh/sshd_config; then
|
|
echo ""
|
|
echo "ERROR"
|
|
echo " failed to update '/etc/ssh/sshd_config'"
|
|
echo ""
|
|
return 1
|
|
fi
|
|
echo " RESTART REQUIRED: disabled user password login"
|
|
my_changes='true'
|
|
else
|
|
echo " PASS: passwords are NOT allowed"
|
|
fi
|
|
|
|
# PermitRootLogin
|
|
echo ""
|
|
echo "Checking for 'PermitRootLogin prohibit-password'..."
|
|
echo " grep -E '^\s*PermitRootLogin\s*(no|prohibit-password)' /etc/ssh/sshd_config"
|
|
my_allow_root="$(
|
|
grep -q -E \
|
|
'^\s*PermitRootLogin\s*(no|prohibit-password|without-password)\s*$' \
|
|
/etc/ssh/sshd_config ||
|
|
echo 'true'
|
|
)"
|
|
if test -n "${my_allow_root}"; then
|
|
$cmd_sed \
|
|
's/#*[[:space:]]*PermitRootLogin[[:space:]]*(yes|no|prohibit-password|without-password)[[:space:]]*$/PermitRootLogin prohibit-password/g' \
|
|
/etc/ssh/sshd_config
|
|
if ! grep -q -E \
|
|
'^PermitRootLogin prohibit-password$' \
|
|
/etc/ssh/sshd_config; then
|
|
echo ""
|
|
echo "ERROR"
|
|
echo " failed to update '/etc/ssh/sshd_config'"
|
|
echo ""
|
|
return 1
|
|
fi
|
|
echo " RESTART REQUIRED: disabled root password login"
|
|
my_changes='true'
|
|
else
|
|
echo " PASS: 'root' can NOT login via password"
|
|
fi
|
|
|
|
# UsePAM
|
|
echo ""
|
|
echo "Checking for 'UsePAM no' (macOS only)..."
|
|
# shellcheck disable=SC2016
|
|
echo ' test "$(uname -s)" = "Darwin" &&'
|
|
echo " grep '^\s*UsePAM\s*no' /etc/ssh/sshd_config"
|
|
if test "$(uname -s)" = "Darwin"; then
|
|
my_allow_pam="$(
|
|
grep -q \
|
|
'^\s*UsePAM\s*no' \
|
|
/etc/ssh/sshd_config ||
|
|
echo 'true'
|
|
)"
|
|
if test -n "${my_allow_pam}"; then
|
|
$cmd_sed \
|
|
's/#*[[:space:]]*UsePAM[[:space:]]*(yes|no)[[:space:]]*$/UsePAM no/g' \
|
|
/etc/ssh/sshd_config
|
|
if ! grep -q '^UsePAM no$' /etc/ssh/sshd_config; then
|
|
echo ""
|
|
echo "ERROR"
|
|
echo " failed to update '/etc/ssh/sshd_config'"
|
|
echo ""
|
|
return 1
|
|
fi
|
|
echo " RESTART REQUIRED: disabled macOS password login"
|
|
my_changes='true'
|
|
else
|
|
echo " PASS: passwords are NOT allowed"
|
|
fi
|
|
fi
|
|
|
|
if test -z "${my_changes}"; then
|
|
echo ""
|
|
echo ""
|
|
echo "All checks pass. No changes necessary."
|
|
echo ""
|
|
return 0
|
|
fi
|
|
|
|
if test -n "${my_bsd_sed}"; then
|
|
$cmd_sudo rm -f /etc/ssh/sshd_config.prohibit-password-bak
|
|
fi
|
|
|
|
echo ""
|
|
echo "##################################################################"
|
|
echo "# #"
|
|
echo "# IMPORTANT #"
|
|
echo "# #"
|
|
echo "# READ CAREFULLY #"
|
|
echo "# #"
|
|
echo "# (or get locked out) #"
|
|
echo "# #"
|
|
echo "##################################################################"
|
|
echo ""
|
|
|
|
echo ""
|
|
echo "1. TEST SSH KEYS"
|
|
echo ""
|
|
echo " Be sure that you can login as an admin user with ssh keys"
|
|
echo ""
|
|
echo "2. RESTART SSH with one of the following:"
|
|
echo ""
|
|
echo " systemctl restart sshd # Ubuntu / Debian"
|
|
echo " rc-service sshd restart # Alpine / Gentoo"
|
|
echo " killall sshd # all others"
|
|
echo ""
|
|
}
|
|
|
|
main "${1:-app}" "${2:-}"
|