-
Notifications
You must be signed in to change notification settings - Fork 0
ITVal with reconstructed from CVS commit history
License
GPL-2.0, GPL-2.0 licenses found
Licenses found
GPL-2.0
LICENSE
GPL-2.0
COPYING
KOLANICH-mirrors/ITVal
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ITVal is a tool for iptables configuration analysis. It can be used to: 1. Detect unprotected ports/hosts. 2. Determine whether certain services are incorrectly blocked by the firewall. 3. Validate changes to the firewall policy. 4. Generate an equivalence class abstraction of the firewall policy that can be used to easily detect many different types of errors. ITVal-1.2 replaces the antiquated build system based on autoconf with a CMake-based system. A recent (cmake-2.6 or greater) version of cmake is now required to build ITVal. ITVal implements a query engine based on a simple query language that a system administrator can use to investigate firewall behaviors. COMMAND LINE OPTIONS: ITVal understands the following flags: -q <query file> Full Path to a query file. -t <topology file> Full Path to a topology mapping The topology mapping is optional. It should be formatted as a list of network interface, IP address pairs. For example: eth0 192.168.1.1 eth1 70.5.123.110 -f <filter file> Full Path to a filtering rule set file. This file is the output of `iptables -L -n'. -n <NAT file> Full Path to a NAT rule set file. This file is the output of `iptables -t nat -L -n'. -F <verbose filter file > Full Path to a filtering rule set file. This file is the output of `iptables -v -L -n'. -N <verbose NAT file> Full Path to a NAT rule set file. This file is the output of `iptables -t nat -v -L -n'. The output of the query engine can be modified and used as a query file. CONSTRUCTING QUERIES AND ASSERTIONS: An ITVal query file consists of a number of group and service definitions, followed by any number of query and/or assertion statements. Group and service definitions can be mixed with queries and assertions in any order as long as the definition of a group or service precedes every use. *GROUP DEFINITIONS* A group definition allows the user to name a list of IP addresses for easier future reference. The syntax is as follows: GROUP <name> <list>; The name must be unique and must be alphanumeric. The list is a space-separated sequence of IP addresses in dot notation. It is permissible to use the '*' character as a wildcard. Example: GROUP mail_clients 192.168.1.1 192.168.1.3 192.168.2.*; *SERVICE DEFINITIONS* A service definition is analogous to a group definition, but for various network services, specified by port number. The syntax is: SERVICE <name> <list>; Where name is unique and list is a space separated list of <protocol> <port> pairs. The '*' character may be used as a wildcard for the port number and the protocol "BOTH" can be used to specify both TCP -AND- UDP connections. Example: SERVICE mail TCP 25 TCP 110 TCP 993; *QUERY STATEMENTS* Queries have the syntax: QUERY <subject> <condition>; The "subject" parameter specifies what information ITVal should display for packets that match the query condition. The valid subjects are: SADDY Source Address DADDY Destination Address SPORT Source Port DPORT Destination Port STATE Connection State The "condition" parameter specifies criteria against which all packets will be considered. All packets that match the conditions are displayed. The query condition is built from eleven primitives: FROM <source> Matches source address TO <destination> Matches destination address ON <source> Matches source port FOR <destination> Matches destination port IN <state> Matches connection state WITH <flag> Matches active TCP flag INFACE <iface> Matches incoming network interface OUTFACE <iface> Matches outgoing network interface LOGGED Matches if there is a rule that MAY log the packet. ACCEPTED <chain> Matches all packets accepted by built-in chain <chain>. DROPPED <chain> Matches all packets discarded by built-in chain <chain>. These primitives can be combined with the logical operators "AND", "OR", and "NOT". Parentheses can be used to disambiguate expressions. Otherwise, precedence is from left to right. Examples: QUERY SADDY FROM 192.168.1.1 AND FOR mail; QUERY DPORT (NOT FROM mail_clients OR TO 192.168.1.4) AND NOT LOGGED; QUERY DPORT NOT FROM 192.168.1.* AND INFACE eth0; *ASSERTIONS* The user can also provide ITVal with a set of assertions to verify. ITVal will check each assertion and determine whether it is true or false. The syntax for assertion statements is as follows: ASSERT <condition> <assertion_operator> <condition>; Both conditions are defined as for QUERY statements (see above). The assertion operator can be either "IS" or "SUBSET OF". The "IS" operator tests whether the set of packets described by the left condition is precisely equivalent to the set of packets described by the right condition. The "SUBSET OF" operator tests whether the set of packets described by the left condition is (not strictly) contained in the set described by the right condition. Examples: //SSH packets, and only SSH packets, are accepted from subnet 192.168.1.0/24 ASSERT (ACCEPTED INPUT AND FROM 192.168.1.*) IS (FROM TCP 22); //All hosts on 192.168.2.* can be reached by some packet ASSERT TO 192.168.2.* SUBSET OF ACCEPTED FORWARD; *CLASSES* Network hosts can be grouped into classes based on which services the firewall allows them to access and provide. ITVal provides a special query (QUERY CLASSES) that generates a list of which hosts belong to which group. This list can be used to easily detect certain kinds of anomalies in the firewall policy. For instance, if your mail server shows up in the same group as an untrusted host from outside your network, you probably have a typo or other error. (For more, see the proceedings of LISA '06). Similarly, the set of all services can be partioned into classes (based on which hosts can use those services), with the "SCLASSES" query. Examples: QUERY CLASSES; QUERY SCLASSES;
About
ITVal with reconstructed from CVS commit history
Topics
Resources
License
GPL-2.0, GPL-2.0 licenses found
Licenses found
GPL-2.0
LICENSE
GPL-2.0
COPYING
Code of conduct
Stars
Watchers
Forks
Packages 0
No packages published