<div dir="ltr"><div dir="ltr"><div>The good news is I believe I got Weakforce running<br></div><div>1) curl -X GET <a href="http://127.0.0.1:8084/?command=ping">http://127.0.0.1:8084/?command=ping</a> -u wforce:ourpassword</div><div>{"status":"ok"}[</div><div><br></div><div>2) after running the sample for loop:</div><div>for a in {1..101};   do     curl -X POST -H "Content-Type: application/json" --data '{"login":"ahu", "remote": "127.0.0.1", "pwhash":"1234'$a'", "success":"false"}'     <a href="http://127.0.0.1:8084/?command=report">http://127.0.0.1:8084/?command=report</a> -u wforce:ourpassword;   done</div><div><br></div><div>The result is:</div><div><br></div><div>{"status":"ok"}{"status":"ok"}{"status":"ok"}{</div><div><br></div><div>3) So checking the stats:</div><div><br></div><div>curl -X POST -H "Content-Type: application/json" --data '{"ip":"127.0.0.1"}' <a href="http://127.0.0.1:8084/?command=getDBStats">http://127.0.0.1:8084/?command=getDBStats</a> -u wforce:ourpassword</div><div><br></div><div>{"bl_expire": "", "bl_reason": "", "blacklisted": false, "ip": "127.0.0.1", "stats": {"OneHourDB": {"diffFailedPasswords": 93}}}</div><div><br></div><div>Notice the 93.</div><div><br></div><div>4) the reset works but I believe there's a bug in Getdbstats v2.0.0 where "blacklisted" is always shown:</div><div>curl -X POST -H "Content-Type: application/json" --data '{"ip":"127.0.0.1"}' <a href="http://127.0.0.1:8084/?command=getDBStats">http://127.0.0.1:8084/?command=getDBStats</a> -u wforce:ourpassword</div><div><br></div><div>{"bl_expire": "", "bl_reason": "", "blacklisted": false, "ip": "127.0.0.1", "stats": {"OneHourDB": {"diffFailedPasswords": 0}}}[</div><div><br></div><div>5)</div><div>wforce -c</div><div>Read configuration from '/usr/local/etc/wforce.conf'</div><div>Connecting to <a href="http://127.0.0.1:4004">127.0.0.1:4004</a></div><div>> stats()</div><div>101 reports, 0 allow-queries (0 denies)</div><div><br></div><div>The 3 big questions I have:</div><div>a: how do I know IP's are being banned/rejected? Is there an alert creation or a way to see in the logs that the rules are in affect?<br></div><div>b: since I installed via Git and ran "make" how to I get wforce --daemon to start on reboot? Is there a systemd file available?</div><div>c: How do I create a lua policy that would catch these web dovecot login attempts?</div><div><br></div><div>Feb 27 08:19:53 ourserver auth[15085]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 08:19:53 ourserver auth[15085]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=<a href="mailto:user@ourserver.ourdomain.edu">user@ourserver.ourdomain.edu</a> rhost=177.72.0.158</div><div>Feb 27 08:20:35 ourserver auth[15085]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 08:20:35 ourserver auth[15085]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=user rhost=213.156.111.236</div><div>Feb 27 08:27:07 ourserver auth[16831]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 08:27:07 ourserver auth[16831]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=<a href="mailto:nobody@ourserver.ourdomain.edu">nobody@ourserver.ourdomain.edu</a> rhost=79.106.35.59</div><div>Feb 27 08:27:27 ourserver auth[16831]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=nobody rhost=95.38.212.65  user=nobody</div><div>Feb 27 08:27:27 ourserver auth[16831]: pam_succeed_if(dovecot:auth): requirement "uid >= 1000" not met by user "nobody"</div><div>Feb 27 08:31:12 ourserver auth[17875]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 08:31:12 ourserver auth[17875]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=<a href="mailto:ouruser@ourserver.ourdomain.edu">ouruser@ourserver.ourdomain.edu</a> rhost=80.78.70.1</div><div>Feb 27 08:31:33 ourserver auth[17875]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=ouruser rhost=45.225.236.198  user=ouruser</div><div>Feb 27 09:32:22 ourserver auth[32689]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 09:32:22 ourserver auth[32689]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=<a href="mailto:nobody@ourserver.ourdomain.edu">nobody@ourserver.ourdomain.edu</a> rhost=37.205.81.41</div><div>Feb 27 09:32:42 ourserver auth[32689]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=nobody rhost=201.148.100.198  user=nobody</div><div>Feb 27 09:32:42 ourserver auth[32689]: pam_succeed_if(dovecot:auth): requirement "uid >= 1000" not met by user "nobody"</div><div>Feb 27 09:44:09 ourserver auth[3271]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 09:44:09 ourserver auth[3271]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=<a href="mailto:otheruser@ourserver.ourdomain.edu">otheruser@ourserver.ourdomain.edu</a> rhost=177.69.145.193</div><div>Feb 27 09:44:35 ourserver auth[3271]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 09:44:35 ourserver auth[3271]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=otheruser rhost=175.143.51.221</div><div>Feb 27 09:47:32 ourserver auth[4048]: pam_unix(dovecot:auth): check pass; user unknown</div><div>Feb 27 09:47:32 ourserver auth[4048]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=<a href="mailto:yetanotheruser@ourserver.ourdomain.edu">yetanotheruser@ourserver.ourdomain.edu</a> rhost=162.245.81.231</div><div>Feb 27 09:47:56 ourserver auth[4048]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=yetanotheruser rhost=83.243.88.236  user=yetanotheruser</div><div>Feb 27 20:44:41 ourserver auth[5828]: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=ouruser rhost=166.171.184.200  user=ouruser</div></div></div>