{"action":"created","issue":{"url":"https://api.github.com/repos/obiba/opal/issues/3279","repository_url":"https://api.github.com/repos/obiba/opal","labels_url":"https://api.github.com/repos/obiba/opal/issues/3279/labels{/name}","comments_url":"https://api.github.com/repos/obiba/opal/issues/3279/comments","events_url":"https://api.github.com/repos/obiba/opal/issues/3279/events","html_url":"https://github.com/obiba/opal/issues/3279","id":349038850,"node_id":"MDU6SXNzdWUzNDkwMzg4NTA=","number":3279,"title":"4.10 UoB Report","user":{"login":"sam-story","id":34068523,"node_id":"MDQ6VXNlcjM0MDY4NTIz","avatar_url":"https://avatars1.githubusercontent.com/u/34068523?v=4","gravatar_id":"","url":"https://api.github.com/users/sam-story","html_url":"https://github.com/sam-story","followers_url":"https://api.github.com/users/sam-story/followers","following_url":"https://api.github.com/users/sam-story/following{/other_user}","gists_url":"https://api.github.com/users/sam-story/gists{/gist_id}","starred_url":"https://api.github.com/users/sam-story/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sam-story/subscriptions","organizations_url":"https://api.github.com/users/sam-story/orgs","repos_url":"https://api.github.com/users/sam-story/repos","events_url":"https://api.github.com/users/sam-story/events{/privacy}","received_events_url":"https://api.github.com/users/sam-story/received_events","type":"User","site_admin":false},"labels":[{"id":943891431,"node_id":"MDU6TGFiZWw5NDM4OTE0MzE=","url":"https://api.github.com/repos/obiba/opal/labels/new%20feature","name":"new feature","color":"ededed","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/obiba/opal/milestones/170","html_url":"https://github.com/obiba/opal/milestone/170","labels_url":"https://api.github.com/repos/obiba/opal/milestones/170/labels","id":3463564,"node_id":"MDk6TWlsZXN0b25lMzQ2MzU2NA==","number":170,"title":"2.12.0","description":"","creator":{"login":"ymarcon","id":2581149,"node_id":"MDQ6VXNlcjI1ODExNDk=","avatar_url":"https://avatars3.githubusercontent.com/u/2581149?v=4","gravatar_id":"","url":"https://api.github.com/users/ymarcon","html_url":"https://github.com/ymarcon","followers_url":"https://api.github.com/users/ymarcon/followers","following_url":"https://api.github.com/users/ymarcon/following{/other_user}","gists_url":"https://api.github.com/users/ymarcon/gists{/gist_id}","starred_url":"https://api.github.com/users/ymarcon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ymarcon/subscriptions","organizations_url":"https://api.github.com/users/ymarcon/orgs","repos_url":"https://api.github.com/users/ymarcon/repos","events_url":"https://api.github.com/users/ymarcon/events{/privacy}","received_events_url":"https://api.github.com/users/ymarcon/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":0,"state":"open","created_at":"2018-06-29T20:50:21Z","updated_at":"2018-08-09T14:35:12Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2018-08-09T09:01:12Z","updated_at":"2018-08-09T15:05:48Z","closed_at":null,"author_association":"NONE","body":"Login Policy"},"comment":{"url":"https://api.github.com/repos/obiba/opal/issues/comments/411790439","html_url":"https://github.com/obiba/opal/issues/3279#issuecomment-411790439","issue_url":"https://api.github.com/repos/obiba/opal/issues/3279","id":411790439,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMTc5MDQzOQ==","user":{"login":"ymarcon","id":2581149,"node_id":"MDQ6VXNlcjI1ODExNDk=","avatar_url":"https://avatars3.githubusercontent.com/u/2581149?v=4","gravatar_id":"","url":"https://api.github.com/users/ymarcon","html_url":"https://github.com/ymarcon","followers_url":"https://api.github.com/users/ymarcon/followers","following_url":"https://api.github.com/users/ymarcon/following{/other_user}","gists_url":"https://api.github.com/users/ymarcon/gists{/gist_id}","starred_url":"https://api.github.com/users/ymarcon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ymarcon/subscriptions","organizations_url":"https://api.github.com/users/ymarcon/orgs","repos_url":"https://api.github.com/users/ymarcon/repos","events_url":"https://api.github.com/users/ymarcon/events{/privacy}","received_events_url":"https://api.github.com/users/ymarcon/received_events","type":"User","site_admin":false},"created_at":"2018-08-09T15:05:48Z","updated_at":"2018-08-09T15:05:48Z","author_association":"MEMBER","body":"As reported by a user, [fail2ban](https://www.fail2ban.org) can be used to implement a similar policy aside of opal server:\r\n\r\n> If any of your users are interested in this, please feel free to share. To protect against brute force password attacks on Opal using Fail2ban, add the following to /etc/fail2ban/jail.conf:\r\n> \r\n> ```\r\n> [opal]\r\n> enabled = true\r\n> port = 8443 #Change the port as required\r\n> filter = opal\r\n> logpath = /var/log/opal/opal.log\r\n> maxretry = 4 #Maximum password attempts before an IP is blocked\r\n> ```\r\n>\r\n> And then create /etc/fail2ban/filters.d/opal.conf and populate with:\r\n> \r\n> ```\r\n> [Definition]\r\n> failregex = Authentication failure of user '[^']*' at ip: '<HOST>'\r\n> ignoreregex =\r\n> ```\r\n>\r\n> Patrick came up with the regex and I have tested it:\r\n> \r\n> Failed login attempts from opal.log:\r\n> \r\n> ```\r\n> 2013-10-02 10:55:58,741 - INFO  - ity.AuthenticationResource - Authentication failure of user 'sdasd' at ip: '130.113.152.9': Authentication token of type [class org.apache.shiro.authc.UsernamePasswordToken] could not be authenticated by any configured realms.  Please ensure that at least one realm can authenticate these tokens.\r\n> 2013-10-02 10:56:01,938 - INFO  - ity.AuthenticationResource - Authentication failure of user 'sdasd' at ip: '130.113.152.9': Authentication token of type [class org.apache.shiro.authc.UsernamePasswordToken] could not be authenticated by any configured realms.  Please ensure that at least one realm can authenticate these tokens.\r\n> 2013-10-02 10:56:04,088 - INFO  - ity.AuthenticationResource - Authentication failure of user 'sdasd' at ip: '130.113.152.9': Authentication token of type [class org.apache.shiro.authc.UsernamePasswordToken] could not be authenticated by any configured realms.  Please ensure that at least one realm can authenticate these tokens.\r\n> 2013-10-02 10:56:06,385 - INFO  - ity.AuthenticationResource - Authentication failure of user 'sdasd' at ip: '130.113.152.9': Authentication token of type [class org.apache.shiro.authc.UsernamePasswordToken] could not be authenticated by any configured realms.  Please ensure that at least one realm can authenticate these tokens. \r\n> ```\r\n>\r\n> Fail2ban log:\r\n> \r\n> ```\r\n> 2013-10-02 10:56:07,777 fail2ban.actions: WARNING [opal] Ban 130.113.152.9\r\n> ```\r\n>\r\n> It is worth it to read the rest of the configuration files to ensure users with forgotten passwords are not locked out forever while repeated attacks are.\r\n> "}}
{"actor":{"display_login":"ymarcon"}}