Information
There are a number of accounts provided with most distributions that are used to manage applications. Additionally, an administrator may add special accounts that are not intended for interactive use.
An account without a valid login shell can still be used for authentication unless it is locked. Locking such accounts closes that residual authentication path.
Solution
Run the following command to lock any non-root accounts without a valid login shell returned by the audit:
# usermod -L <user>
Example script:
#!/usr/bin/env bash
{
l_valid_shells="^($(awk -F\/ '($NF != "nologin" && $NF != "false") {print}' /etc/shells | sed -rn '/^\//{s,/,\\\\/,g;p}' | paste -s -d '|' - ))$"
while IFS= read -r l_user; do
passwd -S "$l_user" | awk '$2 !~ /^L/ {system ("usermod -L " $1)}'
done < <(awk -v pat="$l_valid_shells" -F: '($1 != "root" && $(NF) !~ pat) {print $1}' /etc/passwd)
}