KB19 hatte noch einen guten Tip!
Das habe ich gesehen, aber das bringt in diesem Falle leider nicht sehr viel.
Das soll ein Script werden, was andere problemlos benutzen können. Und zwar ohne vorher nochmal PuTTY o.Ä. auf den Kopf stellen zu müssen. 
Ums genau zu sagen, ich versuche gerade mal ein Script zu bauen, dass in der Lage ist, ein Debian System grundlegend abzuleuchten und zu sagen, inwiefern es sicherheitstechnisch Mängel oder mögliche Probleme gibt.
Natürlich nicht für den superprofessionellen Betrieb oder so, sondern eher für die ganzen Anfänger die hier regelmäßig reingestolpert kommen. Ich habe mittlerweile eingesehen, dass man den Leuten nicht einfach "lass es" sagen kann. Das bringt nichts und rückt, obwohl es gut gemeint ist, die Community in schlechtes Licht.
Wenn man die Leute schon nicht so zur Vernunft bringen kann, dann muss man halt versuchen, ihnen ihre Fehler aufzuzeigen.
Ich will da jetzt um die Sache an sich auch nicht wieder eine Diskussion auslösen, mir ist bewusst, dass das so eine Art offene Wunde ist... schwierig.
Also, das dachte ich mir, ist ein möglicher Ansatz halt Schadensbegrenzung. Das will ich einfach mal versuchen... schaden wird es sicher nicht.
Ich hoffe natürlich, dass wir da vielleicht an einem Strang ziehen. Ich werde noch ein bisschen dran schreiben und das ganze dann mal auf Codeberg stellen, sodass wir quasi zusammen dran arbeiten können und da auch der ein oder andere dann ab und an mal drüber schaut.
Hier ist mal ein kleiner Prototyp mit vier beispielhaften Checks + Ausgabebeispiel.
#!/bin/bash
# clear the display
clear
function checkp() {
printf "\033[1;34mCheck: \033[1;35m$1\n"
}
function okay() {
printf "\033[1;34mResult: \033[1;37m[\033[0;32m\u2713\033[1;37m] \033[0;32m$1\n\n\e[0m"
}
function warning() {
printf "\033[1;34mResult: \033[1;37m[\033[0;33m!\033[1;37m] \033[0;33m$1\n\n\e[0m"
}
function error() {
printf "\033[1;34mResult: \033[1;37m[\033[0;31mx\033[1;37m] \033[0;31m$1\n\n\e[0m"
}
function abort() {
printf "\033[1;34mAbort: \033[1;37m[\033[0;31mx\033[1;37m] \033[0;31m$1\n\n\e[0m"
exit 1
}
# welcome header
printf "\033[0;33m#######################################################################\n"
printf "\033[0;33m# \033[1;36mBasic Debian Security scanner by \033[1;32mwhoami0501 \033[0;33m#\n"
printf "\033[0;33m# #\n"
printf "\033[0;33m# \033[1;36mThis script scans a debian system for simple hardening issues. \033[0;33m#\n"
printf "\033[0;33m# #\n"
printf "\033[0;33m# \033[1;36mLicense: \033[1;32mPublic Domain\033[1;36m | This script comes with \033[1;31mABSOLUTELY NO \033[0;33m#\n"
printf "\033[0;33m# \033[1;31mWARRANTY\033[1;36m, to the extent permitted by applicable law. \033[0;33m#\n"
printf "\033[0;33m# #\n"
printf "\033[0;33m# \033[1;36mThis script just show issues, it will \033[1;31mNOT \033[1;36mfix them! \033[0;33m#\n"
printf "\033[0;33m#######################################################################\n\e[0m"
echo
# check the OS - it should be debian, otherwise this script wont work
[[ ! -f /etc/os-release ]] && abort "Cannot determine the running OS (missing /etc/os-release file)!"
source /etc/os-release
[[ $NAME != "Debian GNU/Linux" ]] && abort "This script is only for Debian GNU/Linux!"
# check whether the user is root
[[ "$EUID" -ne 0 ]] && abort "This script must be executed as root. Use: su -"
### System checks ###
# check the debian version
checkp "Release version of the OS"
if [[ $VERSION_CODENAME == "buster" ]]
then
okay "You are running the current stable OS release ($VERSION_CODENAME)!"
elif [[ $VERSION_CODENAME == "stretch" ]]
then
warning "You are running the current oldstable OS release ($VERSION_CODENAME)! Please consider an upgrade to the stable release!"
else
error "You are running an old OS release ($VERSION_CODENAME)! Please consider an upgrade to the stable release!"
fi
# check for apt updates
checkp "System updates"
apt update >/dev/null |& grep -vE "^$|^.*CLI Interface.*$"
updates=$(($(apt list --upgradable 2>/dev/null | wc -l) - 1))
if [[ $updates -eq 0 ]]
then
okay "The system seems to be up to date!"
else
error "There are $updates updates to do, so run: apt upgrade"
fi
# check whether a reboot is required
checkp "Does the system need a reboot"
if [[ -f /var/run/reboot-required ]]
then
warning "This system should be rebootet, to apply changes from updates!"
else
okay "This system does not require a reboot!"
fi
# check whether /var/log is on the rootfs
checkp "Filesystem of /var/log"
if [[ $(df /var/log | tail -n 1 | awk '{print $6}') == '/' ]]
then
warning "The directory /var/log should not be on the same filesystem as the OS!"
else
okay "The directory /var/log is on a separated filesystem!"
fi
echo
echo "Regular Script end!"
printf "\e[0m"
exit 0
Alles anzeigen
Ausgabebeispiel:
pasted-from-clipboard.png