PfBlockerNG 2.1.1_5 / Pfsense 2.4



  • Well I am running the Dev version  ::)

    I would disable pfBlockerNG AND DNSBL, then reinstall pfBlockerNG and check the installation log to see if something breaks.



  • Thx for your help.  I'll start from scratch and report back.



  • One last thing ? Are you using Unbound (and not DNS Forwarder)?



  • Yes, I am using Unbound

    Unchecked retain settings, Saved and uninstalled/reinstalled.  Not getting any errors at all but still cant get the DNSBL service to start.  Maybe someone else can chime in who's on 2.4 who is possibly getting the same issue to confirm.



  • Check Diagnostics / Sockets to see if some other process would have the same ports open

    root 	lighttpd_p 	4228 	5 	tcp4 	*:8081 	*:*
    root 	lighttpd_p 	4228 	6 	tcp4 	*:8443 	*:*
    

    You can also try this in a shell to see if it report error.

    /usr/local/etc/rc.d/dnsbl.sh restart
    


  • No other services using those ports

    Using the restart command gives me:

    2016-12-20 21:00:48: (network.c.603) SSL: couldn't read X509 certificate from '/var/unbound/dnsbl_cert.pem'



  • Does /var/unbound/dnsbl_cert.pem exist?



  • Yup, its there.



  • and it looks like a certificate with

    -----BEGIN PRIVATE KEY-----
    
    ...
    
    -----END PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----
    
    ...
    
    -----END CERTIFICATE-----
    
    


  • Looks like this:

    –---BEGIN PRIVATE KEY-----

    .....

    -----END PRIVATE KEY-----



  • Delete the file and do a Force Update to see if this fixes it.



  • I've confirmed that it was deleted, Force Updated and confirmed that it get recreated.

    Recreates the same type of format of key with just Begin and End Private Key.

    Comes up with the same couldnt read x509 certificate error as before when trying to restart



  • Can you try to use the pem from another 2.3.2 system an test with it.



  • Progress!!

    Yup, that let me start the service and its showing up green now, but I'm not seeing any packets being blocked though.

    ****Disregard that, I see some packet drops, its working.  Sweet, thank you.





  • Blank page and the browser title bar says 10.10.10.1 (1x1)

    That correct?



  • Yes



  • Thanks again, Ron.  Is this easily resolved for a permanent fix?

    2.1.1_6?



  • Can't tell,
    maybe we will get a patch, or another release, or back to 2.1.1_4, only BBcan177 can tell.

    But now we know where the problem is.


  • Moderator

    @RonpfS:

    Can't tell,
    maybe we will get a patch, or another release, or back to 2.1.1_4, only BBcan177 can tell.

    But now we know where the problem is.

    Testing a patch now… Will update in a day or so...



  • PM sent, code changes seem to fix the problem perfectly.



  • Just wanted to chime in for the people trying to get this to work before the patch and wanted a code solution.

    I at least solved this by modifying pfblockerng.inc to use a created config file. Modification were around ln 937 of pfblockerng.inc in /usr/local/pkg/pfblockerng:

    before
    –--------------------

    exec("/usr/bin/openssl req -new -x509 -keyout {$pfb['dnsbl_cert']} -out {$pfb['dnsbl_cert']} -days 3650 -nodes");
    

    after
    –--------------------

    		        exec("echo '[req]' > request.cfg");
    			exec("echo 'default_bits=3072' >> request.cfg");
    			exec("echo 'default_md=sha256' >> request.cfg");
    			exec("echo 'prompt=no' >> request.cfg");
    			exec("echo 'distinguished_name=req_distinguished_name' >> request.cfg");
    			exec("echo '' >> request.cfg");
    			exec("echo '[req_distinguished_name]' >> request.cfg");
    			exec("echo 'commonName=unbound' >> request.cfg");
    			exec("/usr/bin/openssl req -new -x509 -config request.cfg -keyout {$pfb['dnsbl_cert']} -out {$pfb['dnsbl_cert']} -days 3650 -nodes");
    			exec("rm -f request.cfg");
    

    I'm sure your patch does this far more gracefully however



  • I failed to post the manual fix by BBcan177 because I thought the patch would have been out relatively quickly but just realized it has been over 2 weeks since the last correspondence involving this.  The following is the instructions BBcan177 gave me to test that worked perfectly.

    1. Backup file:

    cp /usr/local/pkg/pfblockerng/pfblockerng.inc /tmp/pfblockerng.inc.bk

    1. Edit:

    /usr/local/pkg/pfblockerng/pfblockerng.inc  and remove line 937

    exec("/usr/bin/openssl req -new -x509 -keyout {$pfb['dnsbl_cert']} -out {$pfb['dnsbl_cert']} -days 3650 -nodes");

    Here is what Line 937 looks like:
    https://github.com/pfsense/FreeBSD-ports/blob/devel/net/pfSense-pkg-pfBlockerNG/files/usr/local/pkg/pfblockerng/pfblockerng.inc#L937

    1. Then at line 937 add the following code:

    $dn = array (  'countryName'          => 'CA',
                                            'stateOrProvinceName'  => 'ST_DNSBL',
                                            'localityName'          => 'LN_DNSBL',
                                            'organizationName'      => 'ON_DNSBL',
                                            'organizationalUnitName'=> 'OU_DNSBL',
                                            'commonName'            => 'CN_DNSBL',
                                            'emailAddress'          => 'dnsbl@dnsbl.com'
                                            );

    $pkey  = openssl_pkey_new();
                            $csr    = openssl_csr_new($dn, $pkey);
                            $cert  = openssl_csr_sign($csr, NULL, $pkey, 3650);

    openssl_pkey_export($pkey, $privatekey);
                            openssl_x509_export($cert, $publickey);
                            @file_put_contents("{$pfb['dnsbl_cert']}", "{$privatekey}{$publickey}", LOCK_EX);

    The final changes should look like this:

    // Create DNSBL SSL certificate
                    if (!file_exists ("{$pfb['dnsbl_cert']}")) {
                            $log = "\nNew DNSBL cert created";
                            pfb_logger("{$log}", 1);

    //exec("/usr/bin/openssl req -new -x509 -keyout {$pfb['dnsbl_cert']} -out {$pfb['dnsbl_cert']} -days 3650 -nodes");

    $dn = array (  'countryName'          => 'CA',
                                            'stateOrProvinceName'  => 'ST_DNSBL',
                                            'localityName'          => 'LN_DNSBL',
                                            'organizationName'      => 'ON_DNSBL',
                                            'organizationalUnitName'=> 'OU_DNSBL',
                                            'commonName'            => 'CN_DNSBL',
                                            'emailAddress'          => 'dnsbl@dnsbl.com'
                                            );

    $pkey  = openssl_pkey_new();
                            $csr    = openssl_csr_new($dn, $pkey);
                            $cert  = openssl_csr_sign($csr, NULL, $pkey, 3650);

    openssl_pkey_export($pkey, $privatekey);
                            openssl_x509_export($cert, $publickey);
                            @file_put_contents("{$pfb['dnsbl_cert']}", "{$privatekey}{$publickey}", LOCK_EX);
                    }

    1. Delete the old PEM file

    rm /var/unbound/dnsbl_cert.pem

    1. Goto Update Tab and run a "Force Update" which should rebuild the PEM file

    2. Check to see if the service is running and that the DNBSL Logs are still working (Alerts Tab)

    3. Manually try to restart the DNSBL Service to see if its working as expected

    /usr/local/etc/rc.d/dnsbl.sh restart



  • Thank you this has now worked for me
    Which I have also added to the page https://www.facebook.com/groups/pfsense.official/ to help others…


Log in to reply