Hello,

I'm experiencing a strange behavior of relayd.

relayd is used for
reverse-proxy an Apache[localhost] web server instance and ssl acceleration.
relayd engine crashes with the following errors:

$ cat /var/log/daemon 
....
Aug 21 04:41:47 www-apps-int relayd[1592]: pfe exiting, pid 1592
Aug 21
04:41:47 www-apps-int relayd[24962]: hce exiting, pid 24962
Aug 21 04:41:47
www-apps-int relayd[19232]: lost child: relay terminated; signal 11
Aug 21
04:41:47 www-apps-int relayd[19232]: parent terminating, pid 19232
Aug 21
04:41:47 www-apps-int relayd[17554]: relay exiting, pid 17554
...

It seems
that the crash is associated with a scan from ip address ranges of Qualys.

$
cat /var/www/logs/access_log 
.......
[LAST ENTRY]: 64.39.111.34 - -
[21/Aug/2013:04:41:47 +0300] "GET /post-nuke/html/ HTTP/1.1" 404 221 "-" "-"
....

The crash happened in the same time with last entry access from Qualys.
It is the last because relayd crashed.


There is a total of 1010 connections
from that ip, with a number of connections/second between 3 and 10.


The
machine is OpenBSD 5.3/amd64 GENERIC.MP


$ sudo cat /etc/relayd.conf
ext_addr="10.10.13.93"


table <webhosts> { 127.0.0.1 }

#
# Relay and
protocol for HTTP layer 7 loadbalancing and SSL acceleration
#
http protocol
www_ssl_prot {    
        header append "$REMOTE_ADDR" to "X-Forwarded-For"
        header append "$SERVER_ADDR:$SERVER_PORT" to "X-Forwarded-By"
       
header change "Connection" to "close"

        # Various TCP performance
options
        tcp { nodelay, sack, socket buffer 65536, backlog 128 }
        #ssl { ciphers
"RC4:HIGH:!AES256-SHA:!AES128-SHA:!DES-CBC3-SHA:!MD5:!aNULL:!EDH" }
       
ssl { ciphers "HIGH" }
        #ssl { no sslv2, sslv3, tlsv1, ciphers "HIGH" }
        ssl session cache disable

}

relay www_ssl {
        # Run as a SSL
accelerator
        listen on $ext_addr port 443 ssl
        protocol
www_ssl_prot

        # Forward to hosts in the webhosts table using a src/dst
hash
        forward to <webhosts> port 8080
}


In /etc/pf.conf I have the
following rules (for www):

ext_if="trunk0"

www_ports_ext = "{80, 443}"
altq on $ext_if cbq bandwidth 20Mb queue {std, interne, externe}
queue std
bandwidth 1000Kb cbq(default)                             
queue externe
bandwidth 5Mb {web, app, penalty}              
        queue web bandwidth
94% priority 5 cbq(borrow red)
        queue app bandwidth 5% priority 7
cbq(borrow red)
        queue penalty bandwidth 6Kb priority 0 cbq
queue
interne bandwidth 14Mb {ssh, servicii}
        queue ssh bandwidth 8Mb
cbq(borrow) {ssh_prio, ssh_bulk}              
                queue ssh_prio
bandwidth 20% priority 7 cbq(borrow)
                queue ssh_bulk bandwidth
80% priority 0 cbq(borrow)
        queue servicii bandwidth 6Mb priority 5
cbq(borrow red)



pass in quick log on $ext_if inet proto tcp from
<www_bad_hosts> to any port $www_ports_ext queue penalty


#

# WWW extern
#
table <web_allowed> contains some ip ranges for testing purposes; it will be
replaced by keyword 'any' in production
#
pass in inet proto tcp from
<web_allowed> to ($ext_if) port $www_ports_ext flags S/SA keep state\
       
(max-src-conn-rate 100/10, \
        max-src-nodes 500, max-src-states 250,
source-track rule, \
        overload <www_bad_hosts> flush global) queue web
$ sudo pfctl -t www_bad_hosts -T show
$

Table <www_bad_hosts> is empty, so
the thresholds in the rule above are not met.


What could cause this
behavior? 


>From the logs seems that pfe child process triggers the crash,
that is why I send the relevant www pf rules.

Please if somebody could guide
me in the right direction of fixing this.

Thank you in advanced,


Bogdan

Reply via email to