I found that experimental Intrusion Detection module as explained in my previous blog doesn't work as expected if an external plugin's AuthTrans SAF is added in obj.conf request processing and if that SAF returns REQ_PROCEED. This may be a rare case.
My id.conf :
SecRuleEngine on SecRequestBodyAccess on SecRule REQUEST_BODY "junk"
case 1: I created a dummy plugin having AuthTrans function myauth1; which just returns REQ_NOACTION it works fine. (look at
<ws7-install-dir>/samples/nsapi/ for examples of how to create a plugin)
#ifdef XP_WIN32
#define NSAPI_PUBLIC __declspec(dllexport)
#else /* !XP_WIN32 */
#define NSAPI_PUBLIC
#endif /* !XP_WIN32 */
#include "nsapi.h"
extern "C"
NSAPI_PUBLIC int myauth1(pblock *pb, Session *sn, Request *rq)
{
return REQ_NOACTION;
}
Added in Magnus.conf
Init fn="load-modules" shlib="myauth.so" funcs="myauth1"
Error logs in that case show :
...
... func_exec reports: executing fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true" Directive="AuthTrans" magnus-internal="1"
... func_exec reports: fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true" Directive="AuthTrans" magnus-internal="1" returned -2 (REQ_NOACTION)
... func_exec reports: executing fn="myauth1" Directive="AuthTrans"
... func_exec reports: fn="myauth1" Directive="AuthTrans" returned -2 (REQ_NOACTION)
... func_exec reports: executing fn="magnus-internal/secrule-filters-insert"
... func_exec reports: fn="magnus-internal/secrule-filters-insert" returned -2 (REQ_NOACTION)
... func_exec reports: executing fn="ntrans-j2ee" name="j2ee" Directive="NameTrans"
...
case 2: When I change this AuthTrans SAF to return REQ_PROCEED, it doesn't work as expected:
#ifdef XP_WIN32
#define NSAPI_PUBLIC __declspec(dllexport)
#else /* !XP_WIN32 */
#define NSAPI_PUBLIC
#endif /* !XP_WIN32 */
#include "nsapi.h"
extern "C"
NSAPI_PUBLIC int myauth2(pblock *pb, Session *sn, Request *rq)
{
return REQ_PROCEED;
}
Added in Magnus.conf
Init fn="load-modules" shlib="myauth.so" funcs="myauth2"
Error logs in that case shows :
... func_exec reports: executing fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true" Directive="AuthTrans" magnus-internal="1" ... func_exec reports: fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true" Directive="AuthTrans" magnus-internal="1" returned -2 (REQ_NOACTION) ... func_exec reports: executing fn="myauth2" Directive="AuthTrans" ... func_exec reports: fn="myauth2" Directive="AuthTrans" returned 0 (REQ_PROCEED) ... func_exec reports: executing fn="ntrans-j2ee" name="j2ee" Directive="NameTrans ...Note fn="magnus-internal/secrule-filters-insert" is not getting executed here.
You can add a workaround add this secrule-filters-insert SAF above your ExternalPluginAuthTransSAF function:
<Object name="default">This will work fine when ExternalPluginAuthTransSAF function returns REQ_PROCEED but when it returns REQ_NOATCION, these filters will be added twice. If thats ok you can add this.
AuthTrans fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true"
AuthTrans fn="magnus-internal/secrule-filters-insert"
AuthTrans fn="ExternalPluginAuthTransSAF"
NameTrans fn="ntrans-j2ee" name="j2ee"
...
</Object>
If you are not sure, you can make a dynamic library of myauth2 plugin as shown above and put it below "ExternalPluginAuthTransSAF"
<Object name="default">
AuthTrans fn="match-browser" browser="*MSIE*" ssl-unclean-shutdown="true"
AuthTrans fn="magnus-internal/secrule-filters-insert"
AuthTrans fn="ExternalPluginAuthTransSAF"
AuthTrans fn="myauth"
NameTrans fn="ntrans-j2ee" name="j2ee"
...
</Object>

First, A World Record in Web Workloads - SPECweb
Oracle Corporation announced









Also, our colleagues in ISV Engineering demonstrated SugarCRM Performance on Sun Fire X4270 (with SSD Drives and Intel X5570 Processors) - using OpenSolaris Web Stack