For now it looks to me that offline attacks aren’t possible.
However, we need to know all vectors for “online” accounts, their timeouts, how much these can be parallelized (run su automated in different thousands of terminal-emulator tabs).
For usability a FED-quality password for root authentication is infeasible indeed. If we can answer this question and/or
exclude offline attacks, and increase difficulty for “online” attacks by increasing timeouts, there could even be secure relatively short linux user account passwords. If we could delay authentication attempts to being only possible once per X seconds, passwords might become short enough to have ok usability.
Configuring timeouts for “online” attempts requires root, which we assume the compromised user account does not yet have.
dir? /etc/shadow (contains passwords) isn’t encrypted but can only be accessed by root due to access rights.
I don’t think so. That only matters if /etc/shadow gets stolen, which requires root compromise. Such as a server which was once secure and later hacked should not let the attacker know the passwords of these users since users tend to re-use passwords. Therefore it’s best if any stored password is salted and hashed rather than in cleartext. As far as I understand this has nothing to do with “online” attacks from a compromised user account.
Much of the same logic behind using shorter passwords for online services and websites applies here because the attacker is limited to just a few guesses before a long time out (that we configure) as opposed to trillion or more guesses per second.
Well, when we allow only 5 wrong password entry attempts before requiring the user to boot into single user / recovery mode to remove the lock, we might not need to require the user to use a strong password. A minimum length of even lower case only 5 characters might be enough (or even overkill already)?
According to an online password cracking calculator, with 5 passwords per second, cracking a 5 character password would require 28 days. “passwords per second” - in our case it would be 5 passwords until unlocking using single user / recovery mode which would take the user probably several minutes figuring out. That’s 5-15 password entry attempts for the malware until the user hopefully got the hint.
A user who goes to single user / recovery mode over and over again until the malware brute forced the password is unlikely and couldn’t be helped.
In that scenario, which is hopefully realistic, pam_faildelay can’t add much too it? Perhaps that is a usability feature to prevent several failed password entry attempts in a row due to accidental wrong button press?
If we allow only 5 attempts before locking further attempts and reboot
to single user / recovery mode required, how would slowing down these 5
attempts help? Rather then exhausting these in 15 seconds it could take
60 or something seconds? Not a significant gain?
This seems to function really well. To further increase resistance against linux user account burteforcing attempts, I am wondering if the current 100 maximum password entry attempts could be reduced to something lower. Perhaps 50 and later even lower if that works well too?
There are bad passwords, ok passwords, good passwords, strong passwords, very strong passwords.
With only 100 attempts for bruteforcing (soon less), we don’t need strong passwords. Not 20 characters alphanumeric with special characters.
example: “JX%q'\S+e1'D>Y,L4<uW” 
We might get away even with almost trivial passwords. This is fantastic for usability. Very, very few users realistically typing a password such a complicated password as .
I wouldn’t be surprised if most users keep the password changeme.
But we could do better on usability as for guiding the user to change the password form changeme to something else, warning if the password is still the default changeme and auto starting a GUI to ask for password change.