Finish my Denyhosts package [$20]
-
I have started a denyhosts package and do not have the time or knowledge right now to finish it right now.
Here are the files that I have completed, a good portion of the work is already done. One downside is that I am really off on some code and the xml GUI code is a little lazy. Hopefully this will start it.
Files: http://www.tomschaefer.org/temp/pfsense/denyhosts/
EDIT 23 Apr: Updated, and fix a typo.
-
To install denyhosts on 1.2.3 RC1 follow the below directions. Unfortunately this method does not work for 1.2.2.
Step 1: #```
pkg_add -r denyhostswhich will download ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.1-realease/Latest/denyhosts.tbz which will also download dependency ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.1-realease/All/python25-2.5.2_3.tbz Then python reports Note that some of the standard modules are provided as separate ports since they require extra dependencies: bsddb databases/py-bsddb gdbm databases/py-gdbm sqlite3 databases/py-sqlite3 tkinter x11-toolkits/py-tkinter Install them as needed. Then denyhosts prints –----------------------------------------------------------------------------- To run denyhosts from startup, add denyhosts_enable="YES" in your /etc/rc.conf. onfigiration options can be found in /usr/local/etc/denyhosts.conf ------------------------------------------------------------------------------- In order to proper working of denyhosts 1\. edit your /etc/hosts.allow file and add: sshd : /etc/hosts.deniedssh : deny sshd : ALL : allow 2\. issue the following command if /etc/hosts.deniedssh does not exist yet touch /etc/hosts.deniedssh ------------------------------------------------------------------------------- Warning: syslogd should ideally be run with the -c option; this will ensure that denyhosts notices multiple repeated login attempts. To do this, add syslogd_flags="-c" to /etc/rc.conf ------------------------------------------------------------------------------- Step 2:``` mv /usr/local/etc/rc.d/denyhosts /usr/local/etc/rc.d/denyhosts.sh
you also need to edit denyhosts.sh in /usr/local/etc/rc.d and change denyhosts_enable="NO" to denyhosts_enable="YES"
you also need to edit denyhosts.sh in /usr/local/etc/rc.d and change 'command_interpreter="/usr/local/bin/python"' to 'command_interpreter="/usr/local/bin/python2.5"'chmod 755 denyhosts.sh
Step 3: in /usr/local/etc/denyhosts.conf and /usr/local/etc/denyhosts.conf-dist
you also need to change "SECURE_LOG = /var/log/auth.log" to "SECURE_LOG = /var/log/system.log"
you also need to uncomment BLOCK_SERVICE = ALL (or you can just block ssh)
you also need to uncomment SYNC_SERVER = http://xmlrpc.denyhosts.net:9911Step 4: add "sshd : /etc/hosts.deniedssh : deny" to /etc/hosts.allow (above ALL : ALL : allow)
Notes:
log is in /var/log/denyhosts
execute```
/usr/local/etc/rc.d/denyhosts.sh startthis has been tested on 1.2.3 RC1 but I cannot get it to install on 1.2.2, I always get an error.
-
I believe 1.2.2 is freebsd 7.0 while 1.2.3 is freebsd 7.1. If the denyhosts.tbz is compile for 7.1 then that may be why it fails on 7.0.
I was short on time on saturday but I will take a deeper look at the package on monday.
-
Yep. When I tried to get denyhosts working on 1.2.2 I used the packages-7-stable location. For some odd reason I kept getting an error that was asking for some lib file.
Anyway if you want you can check out my 1.2.2 install script and my 1.2.3 script to see what I was doing. So far I can only get it working on 1.2.3.
http://www.tomschaefer.org/temp/pfsense/denyhosts/ -
Just out of curiosity…Does this modify a rule on the firewall..like an aliase and update it with a list of IP's or does it query a list out on the net?
Are you able to create a white list?
-
Hello, it does not modify rules on the firewall. All hosts are checked against the /etc/hosts.deniedssh for access. By default everyone is allowed.
When the system log shows that someone attempted to access ssh or web access many times with a wrong password they are blocked.The list of IP can be updated from a net list located on http://xmlrpc.denyhosts.net:9911 but this is optional. You can configure this in the config file.
To create a white list just add a host to the hosts.allow file in the format of "ALL : ALL : allow". For example: "sshd : 192.168.1.100 : allow" will whitelist host 100 for ssh access.
-
tommyboy180: I sent a private message to you. I haven't seen a response yet.
-
Bounty Still in progress.
-
Did you respond to mcrane's private message? It sounded like he was interested in taking up the bounty.
-
Yes I did. I even had the privilege to speak with him on the phone one morning about a month ago. Mcrane has agreed to help me build this package after he has finished some other projects.
We may see this package soon, hopfully.
-
Sorry for the delay I will try to get this done soon.
-
Another alternative is denyssh. It's designed for use on FreeBSD with PF. I don't think it's as well maintained or as popular as DenyHosts though.
Keep in mind that pfSense already has sshlockout_pf as well (at least in v1.2). It looks like syslog runs all of its entries through sshlockout_pf. If an entry indicates some kind of ssh login failure, the originating IP is added to the sshlockout table. There is a rule that drops everything from any addresses in the sshlockout table. Every 60 minutes, the sshlockout table is emptied by a cron rule.
Perhaps the DenyHosts package should disable the sshlockout_pf mechanism when it's installed (?).
-
Denyhosts is still the way to go. Its the better choice and its already ported for FreeBSD.
I took a look at sshlockout_pf. Tested a default install of pfsense 1.2.3 July build and I was able to bruteforce ssh. Nothing locked me out, the only thing that did happen was after 5 failed attempts pfsense closed the connection but a new one could be established everytime. There is defintly a need for a denyhosts package. I am hoping the package will be created soon.
I also found this link for the people that are installing denyhosts with pkg_add -
Newer builds of pfSense 1.2.3+ should be ok with functional sshlockout_pf.
-
Yes sir. I took a look at the other day. However, it is nowhere near the functionality of Denyhosts. [EDIT I still can bruteforce my way into the latest build of 1.2.3]
The one thing that I really love about denyhosts is the option to get and send bad IPs from a central Database. If an IP is attacking you, you can opt in to send that IP to the denyhosts database so millions of other denyhosts users will block that IP with a list update. The same thing the other way around, denyhosts will download a list with IPs that attacked other people and prevent them from attacking you.Denyhosts doesn't just protect SSH, it also monitors http and more. All auth that occurs on the box is actively monitored.
-
tommyboy i said newer snapshots and there hasn't been one after my post.
-
My apologies
-
I started working on the package yesterday. I should have a basic version out soon. May have some questions to ask you to speed the development along.
Mark
-
The DenyHosts package is now available for pfSense 1.2.3 and higher. Please test it and let me know the results.
Best Regards,
Mark J Crane
-
Ok, I am testing now.
When you uninstall the package it does not restore the original hosts.allow entires
The package doesn't seems to want to start and I cannot figure out why, the service reports down in the service tab in the GUI.