Forum Discussion
pmaubo2_55685
Nimbostratus
Jan 04, 2013irule to drop all non-allowed network from going to url
Hi,
I want to drop any connection outside of a data class I created from getting to a certain URL.
So far I can drop the URL with the below irule. I just need a little help adding in the network part.
I am using 10.2.3 and think I should be able to use a "and not" in it?
when HTTP_REQUEST {
check the Class to determine if it's not allowed
if {[HTTP::uri] contains "errors.axd"} {
drop
log local0. "dropped connection"
return }
}
Thanks for any help.
5 Replies
- What_Lies_Bene1
Cirrostratus
In a rush but this should help you along;Create a Data Group (called source-ips below) with just the IP addresses of the hosts you’d like to accept when CLIENT_ACCEPTED { if { not [class match [IP::client_addr] equals source-ips] } { reject } } - pmaubo2_55685
Nimbostratus
Hey, thanks Steve
when HTTP_REQUEST {
check the Class to determine if it's not allowed
if {[HTTP::uri] contains "HostInfo.aspx"} {
if { not [class match [IP::client_addr] equals allowed_networks] } {
log local0. "dropped connection"
reject }
}
}
This seems to work just fine. I put in a bogus network into my data class and it did indeed drop it when I went to the url and there does not seem to be any loops. - What_Lies_Bene1
Cirrostratus
Good stuff, glad you've worked it out. Cheers - hoolio
Cirrostratus
There are fairly easy ways to bypass this type of validation though. Make sure to URI decode before checking the URI. You can try something like this:when HTTP_REQUEST { decode original URI. set tmpUri [HTTP::uri] set uri [URI::decode $tmpUri] repeat decoding until the decoded version equals the previous value. while { $uri ne $tmpUri } { set tmpUri $uri set uri [URI::decode $tmpUri] } HTTP::uri $uri if {[string tolower $uri] contains "hostinfo.aspx"} { check the Class to determine if it's not allowed if { not [class match [IP::client_addr] equals allowed_networks] } { log local0. "dropped connection" reject } } }
https://devcentral.f5.com/internal-forums/aft/3090031324
Aaron - Chris_Miller
Altostratus
In addition to hoolio's recommendation, decide whether you want to use "drop" (silently drop packet) or "reject" (send a RST.) I typically use drop so as not to let a scanner know there's something I'm actively protecting but others have different opinions.
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects