Difference between revisions of "Talk:OpenSSH"

From Fail2ban
Jump to: navigation, search
(removed stuff that has been implemented for ages)
 
(6 intermediate revisions by 6 users not shown)
Line 1: Line 1:
please make it detect this earlyer:
 
  
Jan 17 06:32:37 myhost sshd[17731]: Did not receive identification string from 59.125.118.241
+
=== ssh and pam ===
Jan 17 06:32:37 myhost sshd[17732]: User root from 59.125.118.241 not allowed because not listed in AllowUsers
+
Jan 17 06:32:37 myhost sshd[17734]: Invalid user fluffy from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17736]: Invalid user admin from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17738]: Invalid user test from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17740]: Invalid user guest from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17742]: Invalid user webmaster from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17744]: User mysql not allowed because shell /usr/sbin/nologin does not exist
+
Jan 17 06:32:37 myhost sshd[17746]: Invalid user oracle from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17748]: Invalid user library from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17750]: Invalid user info from 59.125.118.241
+
Jan 17 06:32:37 myhost sshd[17752]: Invalid user shell from 59.125.118.241
+
 
+
== Log injection ==
+
 
+
Daniel B. Cid's article on OSSEC reccommends using these failregex rules for SSH to prevent log injection:
+
  
 +
OpenSSH on recent linux distributions uses pam to authenticate user. If the user doesn't exist this line is printed on auth.log
 
<pre>
 
<pre>
failregex = Authentication failure for .* from <HOST>$
+
Jul 20 01:35:44 foo sshd[7140]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=194.187.212.29
            Failed [-/\w]+ for .* from <HOST>$
+
            ROOT LOGIN REFUSED .* FROM <HOST>$
+
            [iI](?:llegal|nvalid) user .* from <HOST>$
+
 
</pre>
 
</pre>
  
However, these never match anything for me, since all of my SSH failed login lines end with <tt>port 12345 ssh2</tt>. So, shouldn't the rules be something like this?
+
Adding this regex rule is really helpful:
 
+
<pre>
+
failregex = Authentication failure for .* from <HOST> port \d+ ssh2$
+
            Failed [-/\w]+ for .* from <HOST> port \d+ ssh2$
+
            ROOT LOGIN REFUSED .* FROM <HOST> port \d+ ssh2$
+
            [iI](?:llegal|nvalid) user .* from <HOST> port \d+ ssh2$
+
</pre>
+
 
+
-- 19:04, 29 June 2007 (CEST)
+
 
+
----
+
 
+
Please could you discuss this on the mailing-list? Could you provide a log line with these "ssh2" at the end? Thank you. --[[User:Lostcontrol|Lostcontrol]] 14:01, 5 July 2007 (CEST)
+
 
+
 
+
== ssh2 at end of log ==
+
 
+
From my system (Fedora Core 6):
+
  
 
<pre>
 
<pre>
Jul 12 06:07:59 foo sshd[8858]: Failed password for invalid user test from 192.168.0.178 port 49420 ssh2
+
sshd\[\d+\]:\s+\(pam_unix\)\s+authentication failure.* rhost=<HOST>
Jul 12 06:07:59 foo sshd[8859]: Failed password for invalid user test from 192.168.0.178 port 60782 ssh2
+
 
</pre>
 
</pre>

Latest revision as of 02:24, 15 March 2014

ssh and pam

OpenSSH on recent linux distributions uses pam to authenticate user. If the user doesn't exist this line is printed on auth.log

Jul 20 01:35:44 foo sshd[7140]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=194.187.212.29

Adding this regex rule is really helpful:

sshd\[\d+\]:\s+\(pam_unix\)\s+authentication failure.* rhost=<HOST>