Last active
August 9, 2016 12:48
-
-
Save thomasjsn/8ff65a0b4e6c290ac94bf7e8456895de to your computer and use it in GitHub Desktop.
SSH jail with some additional conditions for fail2ban.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Fail2Ban filter for openssh | |
# | |
[INCLUDES] | |
# Read common prefixes. If any customizations available -- read them from | |
# common.local | |
before = common.conf | |
[Definition] | |
_daemon = sshd | |
failregex = ^%(__prefix_line)s(?:error: PAM: )?[aA]uthentication (?:failure|error) for .* from <HOST>( via \S+)?\s*$ | |
^%(__prefix_line)s(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>\s*$ | |
^%(__prefix_line)sFailed \S+ for .*? from <HOST>(?: port \d*)?(?: ssh\d*)?(: (ruser .*|(\S+ ID \S+ \(serial \d+\) CA )?\S+ %(__md5hex)s(, client user ".*", client host ".*")?))?\s*$ | |
^%(__prefix_line)sROOT LOGIN REFUSED.* FROM <HOST>\s*$ | |
^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$ | |
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$ | |
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$ | |
^%(__prefix_line)sUser .+ from <HOST> not allowed because not in any group\s*$ | |
^%(__prefix_line)srefused connect from \S+ \(<HOST>\)\s*$ | |
^%(__prefix_line)sReceived disconnect from <HOST>: 3: \S+: Auth fail$ | |
^%(__prefix_line)sUser .+ from <HOST> not allowed because a group is listed in DenyGroups\s*$ | |
^%(__prefix_line)sUser .+ from <HOST> not allowed because none of user's groups are listed in AllowGroups\s*$ | |
^%(__prefix_line)sConnection closed by <HOST> port .* \[preauth\]\s*$ | |
^%(__prefix_line)s(error: )?Received disconnect from <HOST> port .* \[preauth\]\s*$ | |
^%(__prefix_line)sDid not receive identification string from <HOST>\s*$ | |
ignoreregex = | |
# DEV Notes: | |
# | |
# "Failed \S+ for .*? from <HOST>..." failregex uses non-greedy catch-all because | |
# it is coming before use of <HOST> which is not hard-anchored at the end as well, | |
# and later catch-all's could contain user-provided input, which need to be greedily | |
# matched away first. | |
# | |
# Author: Cyril Jaquier, Yaroslav Halchenko, Petr Voralek, Daniel Black |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment