Request for added functionality - tracking and blocking attacks
Doug Poulin
dougp at medinet.ca
Fri Jun 13 09:37:26 EST 2008
If you're using PAM, there is already a very nice utility called pamabl that
you can use
It does automatic blacklisting based on user configurable parameters.
ie. If one host gets more than # (10, 20, 100, your choice) failed
passwords you can blacklist them for
any number of days. If a user exceeds a set number of login attempts they
can be blacklisted for a set period of time
as well. Might be a good open source project for someone not using PAM.
Doug
----- Original Message -----
From: "David Mathog" <mathog at caltech.edu>
To: <openssh-unix-dev at mindrot.org>
Sent: Thursday, June 12, 2008 2:45 PM
Subject: Request for added functionality - tracking and blocking attacks
> Somebody please forward this, if this is not an appropiate place
> to ask the OpenSSH developers for a new feature.
>
> As many of us have seen, any sshd left open on the internet eventually
> becomes the target of password guessing attacks. I am aware of
> tools for scanning the security logs, and manipulating iptables to
> block ongoing attacks, but I am not aware of a way to configure
> sshd itself to detect and deter attacks.
>
> On my systems the logs generally show a series of login attempts from
> a single IP address, usually starting with common account names like
> "root" or "mysql", then progressing to "diane" and other common names.
> This can go on for hours.
>
> It would be very nice if sshd provided the following functions to help
> deter these attacks. Here is my proposal.
>
> 1. sshd at reload or start loads a list of black listed account names.
> In the sshd_config file one or more lines like this would be placed:
>
> BLACKLIST_USER mysql
> BLACKLIST_ISER root
> BLACKLIST_USER cups
> etc.
>
> 2. sshd also loads a small number of whitelisted IP addresses, which
> are allowed to use the BLACKLIST user names:
>
> WHITELIST_IP abc.def.ghi.jkl
> WHITELIST_IP bca.fed.hig.klj/24
> etc.
>
> 3. If a login attempt is made on a blacklisted account, but not from
> a whitelisted IP address, it would result in a
>
> sshd BLACKLISTED abc.def.ghi.jkl for account_name
>
> message to syslog.
>
> 4. Additionally, an entry would be placed in an sshd data structure to
> retain the IP address and the time of the last attempt from this IP
> address. Normal logins would of course not be placed on this list.
>
> 5. The number of blacklisted IP addresses maintained by sshd would also
> be configurable.
>
> BLACKLIST_MAX_IP 10000
>
> Allowing 4 bytes for the IP address plus 4 bytes for the time stamp, a
> list of 10000 forbidden machines could be stored in only 80000 bytes.
> An attacker might be able to fill the list, but only if they had
> access to a network of 10000 machines.
>
> 6. After a configurable time
>
> BLACKLIST_EXPIRE seconds
>
> IP addresses which had not tried to login in more than the specified
> time would be purged from this blacklist data structure. The purpose
> of this is to prevent the list from filling up when sshd has been up
> for months at a time.
>
> 7. sshd would continue to "service" login attempts from
> blacklisted IP addresses, but would simply fail them all, even if
> a valid username/password pair was sent. This would serve to tie
> up the attacker without offering any chance of a break in by a lucky
> password guess.
>
> 8. Lastly, in order to bog down the attacker even further,
>
> MIN_LOGIN_TIME seconds
>
> would set the minimum time for a response to a login attempt.
> The default would be 0 seconds. For remote servers, which only
> need to be accessed via ssh for administration on rare occasions, this
> might be set to 10, 20, or even 60 seconds.
>
> An argument could be made that most of this blacklist mechanism
> should reside in a common location, so that other network daemons
> could share this sort of information. One could imagine a blacklist
> daemon which maintains the IP addresses, last access times, and some
> measure of how "busy" each IP address is, and provides that information
> through some sort of interprocess communication to any network daemons
> which request it. This would also provide, I think,
> an easier way than log file scraping for adding firewall rules
> to block an address which was overly problematic.
>
> Regards,
>
> David Mathog
> mathog at caltech.edu
> Manager, Sequence Analysis Facility, Biology Division, Caltech
> _______________________________________________
> openssh-unix-dev mailing list
> openssh-unix-dev at mindrot.org
> https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
>
More information about the openssh-unix-dev
mailing list