Merge remote-tracking branch 'origin/topic/jsiwek/gridftp'

* origin/topic/jsiwek/gridftp:
  Change how "gridftp" gets added to service field of connection records.

Closes #891.
This commit is contained in:
Robin Sommer 2012-10-19 14:48:42 -07:00
commit c7b39efe85
3 changed files with 29 additions and 3 deletions

14
CHANGES
View file

@ -1,4 +1,18 @@
2.1-80 | 2012-10-19 14:48:42 -0700
* Change how "gridftp" gets added to service field of connection
records. In addition to checking for a finished SSL handshake over
an FTP connection, it now also requires that the SSL handshake
occurs after the FTP client requested AUTH GSSAPI, more
specifically identifying the characteristics of GridFTP control
channels. Addresses #891. (Jon Siwek)
* Allow faster rebuilds in certain cases. Previously, when
rebuilding with a different "--prefix" or "--scriptdir", all Bro
source files were recompiled. With this change, only util.cc is
recompiled. (Daniel Thayer)
2.1-76 | 2012-10-12 10:32:39 -0700 2.1-76 | 2012-10-12 10:32:39 -0700
* Add support for recognizing GridFTP connections as an extension to * Add support for recognizing GridFTP connections as an extension to

View file

@ -1 +1 @@
2.1-76 2.1-80

View file

@ -68,6 +68,16 @@ export {
const data_channel_initial_criteria: function(c: connection): bool &redef; const data_channel_initial_criteria: function(c: connection): bool &redef;
} }
redef record FTP::Info += {
last_auth_requested: string &optional;
};
event ftp_request(c: connection, command: string, arg: string) &priority=4
{
if ( command == "AUTH" && c?$ftp )
c$ftp$last_auth_requested = arg;
}
function size_callback(c: connection, cnt: count): interval function size_callback(c: connection, cnt: count): interval
{ {
if ( c$orig$size > size_threshold || c$resp$size > size_threshold ) if ( c$orig$size > size_threshold || c$resp$size > size_threshold )
@ -89,8 +99,10 @@ function size_callback(c: connection, cnt: count): interval
event ssl_established(c: connection) &priority=5 event ssl_established(c: connection) &priority=5
{ {
# Add service label to control channels. # If an FTP client requests AUTH GSSAPI and later an SSL handshake
if ( "FTP" in c$service ) # finishes, it's likely a GridFTP control channel, so add service label.
if ( c?$ftp && c$ftp?$last_auth_requested &&
/GSSAPI/ in c$ftp$last_auth_requested )
add c$service["gridftp"]; add c$service["gridftp"];
} }