Provided by: firehol_1.297-1_all bug

NAME

       firehol.conf - Configuration file for firehol(1)

DESCRIPTION

       firehol.conf is the configuration file for firehol(1), which creates an iptables firewall from the simple
       rules in this file.

       This file is parsed as a bash(1) script, so it's no problem to use variables or complex bashisms.

Commands

       interface <real interface> <name> [optional rule parameters]

         The  interface  command  creates  a  firewall for protecting the host the firewall is running, from the
         given interface.  The default interface policy is drop, so  that  if  no  subcommands  are  given,  the
         firewall will just drop all incoming and outgoing traffic using this interface.

         Parameters

         • real interface
           This  is  the interface name as shown by ip link show. Generally anything iptables accepts, including
           the pattern character + (the plus sign), is valid. The plus sign  after  some  text  will  match  all
           interfaces  that  start  with  this  text. It is allowed to use more than one interfaces separated by
           spaces, but all of them should be given within one quoted argument. Example:

             interface "eth0 eth1 ppp0" myname

         • name
           This is a name for this interface. Generally you should use short names (10 characters  max)  without
           spaces or other symbols. You should not use the same name more than once in FireHOL primary commands.

         • optional rule parameters
           This  is  a  set  of  rules  that allow further restriction of the traffic that gets matched for this
           interface. See section Optional Rules Parameters for more information. Examples:

             interface eth0 intranet src 10.0.0.0/16

             interface eth0 internet src not "$UNROUTABLE_IPS" (note: UNROUTABLE_IPS is a  variable  defined  by
             FireHOL that includes all IPs that should not be routable by the Internet).

       router <name> [optional rule parameters]

         The  router  command  creates a firewall for the traffic passing through the host running the firewall.
         The only acceptable policy on all router commands is return and therefore the policy subcommand  cannot
         be  used  on  routers.  This  means that no packets are dropped in a router. Packets not matched by any
         router command will be dropped at the end of the firewall.

         Parameters

         • name
           This is a name for this router. The same restrictions of interface names apply here too.

         • optional rule parameters
           This is a set of rules that allow further restriction of the  traffic  that  gets  matched  for  this
           router. See section Optional Rules Parameters for more information.

         Description

           Router statements produce similar iptables commands the interface statements produce. For each router
           statement  an  in_name  and an out_name chain are produced to match the traffic in both directions of
           the router.

           To match some client or server traffic the administrator has to specify the input/output interface or
           the source/destination of the request. All inface/outface, src/dst optional rule  parameters  can  be
           given  either  on  the  router  statement  in  which case will be applied to all subcommands for this
           router, or on each subcommand within a router. Both are valid.

           For example:

             router mylan inface ppp+ outface eth0
               server http accept
               client smtp accept

           The above says: Define a router that matches all requests that originate from some PPP interface  and
           go  out  to  eth0. There is an HTTP server in eth0 that client from the PPP interfaces are allowed to
           reach.  Clients on eth0 are allowed to get SMTP traffic from the PPP interfaces.

           While:

             router mylan
               server http accept inface ppp+ outface eth0
               server smtp accept inface eth0 outface ppp+

           The above says: Define a router that matches any kind of forwarded traffic.   For  HTTP  traffic  the
           clients  are  on a PPP interface and the servers on eth0.  For SMTP traffic the clients are on a eth0
           interface and the servers o a PPP interface.

           Please note that in the second example the SMTP traffic is matched again with  a  server  subcommand,
           not a client (as in the first example).

           The  client  subcommand  reverses  all the optional rules that are applied indirectly to it. Indirect
           rule parameters are those that are inherited from the parent command (router in this case).  To  make
           it  simple,  for  FireHOL  a  client  is:  "a  server  with all the implicit optional rule parameters
           reversed".

           So, in the first example, the client simply flipped the inface  and  outface  rules  defined  at  the
           router  and  became  an SMTP server.  In the second example there is nothing to be flipped, so server
           and client are exactly the same.

           I suggest to use client subcommands in routers only if you have  inface/outface  or  src/dst  in  the
           router  statements.  If  you  are  building  routers like the second example, don't use client, it is
           confusing.

           Older versions of FireHOL did not allow server and client subcommands  in  routers.  Only  the  route
           subcommand was allowed. Today, route is just an alias for server and can be used only in routers, not
           interfaces.

           Any number of router statements can exist. Since the policy is RETURN on all of them, any traffic not
           matched by a router will continue to be checked against the second.

Subcommands

       Subcommands must be given within Primary commands.

       policy <action>

         The policy subcommand defines the default policy for an interface.

         This directive accepts all the actions specified in the section Actions.

         The policy of routers cannot be changed and is always RETURN.

       protection [reverse] <type>

         The protection subcommand sets a number of protection rules on an interface.

         In router configurations, protections are setup on inface.

         Parameters

         reverse
           The reverse keyword will make the protections setup on outface.

         type
           One of the following values:

           strong, full or all
             Turns on all known protections

           fragments
             Drops  all  packet  fragments.  Please  note that most probably this rule will never match anything
             since iptables reconstructs all packets automatically,  before  the  iptables  firewall  rules  are
             processed, when its connection tracker is running.

           new-tcp-w/o-syn
             Drops all TCP packets that initiate a socket but have no the SYN bit set.

           syn-floods [requests/sec [burst]]
             Allows  only  a  certain  amount  of  new  TCP  connections  per second. The optional two arguments
             [requests/sec] and [burst] are used by this rule in order to  provide  control  on  the  number  of
             connections to be allowed. The default is 100 connections per second that can match 50 (it was 4 in
             v1.38  and  before)  packets initially (this is implemented using the limit module of iptables: see
             man iptables for more).  Note that this rule applies to all  connections  attempted  regardless  of
             their  final result (rejected, dropped, established, etc). Therefore it might not be a good idea to
             set it too low.

           icmp-floods [requests/sec [burst]]
             Allows only a certain amount  of  ICMP  echo  requests  per  second.  The  optional  two  arguments
             [requests/sec]  and  [burst]  are  used  by  this rule in order to provide control on the number of
             connections to be allowed. The default is 100 connections per second that can match 50 (it was 4 in
             v1.38 and before) packets initially (this is implemented using the limit module  of  iptables:  see
             man iptables for more).

           malformed-xmas
             Drops all TCP packets that have all TCP flags set.

           malformed-null
             Drops all TCP packets that have all TCP flags unset.

           malformed-bad
             Drops all TCP packets that have illegal combinations of TCP flags set.

       server <service> <action> [optional rule parameters]

         The  server  subcommand  defines  a  server  of a service. For FireHOL a server is the destination of a
         request, and even if this is more complex for  multi-socket  services,  for  FireHOL  a  server  always
         accepts requests.

         The optional rule parameters given to the parent primary command (interface or router) are inherited by
         the server as they have been given.

         This subcommand can be used on both interfaces and routers.

         Parameters

         service
           This  is  one  of the supported service names. The command accepts more than one services in the same
           argument if they are separated by space and quoted as a single argument. Example:

             server smtp accept

             server "smtp pop3 imap" accept

         action
           This tells FireHOL what to do with the traffic matching this rule.

           FireHOL supports the actions defined in the section Actions.

         optional rule parameters
           This is a set of rules that allow further restriction of the traffic that gets matched by this  rule.
           See section Optional Rules Parameters for more information. Examples:

             server smtp accept src 1.2.3.4

             server smtp accept log "its mail" src 1.2.3.4

       client <service> <action> [optional rule parameters]

         The  client  subcommand defines a client of a service. For FireHOL a client is the source of a request.
         FireHOL follows this simple rule even on multi-socket complex protocols, so that for FireHOL  a  client
         always sends requests.  The parameters are exactly the same with the server subcommand.

         The optional rule parameters given to the parent primary command (interface or router) are inherited by
         the  client, but they are reversed. For an explanation of this please refer to the documentation of the
         router primary command.

         This subcommand can be used on both interfaces and routers.

       route <service> <action> [optional rule parameters]

         The route subcommand is an alias for the  server  command  that  can  be  used  only  on  routers,  not
         interfaces.

Helper commands

       version <number>

         The  version  command  states  the  FireHOL release the configuration file was created for. In case the
         configuration file is newer than FireHOL, FireHOL will deny to run it.

         This command is here to allow you or anyone else design and  distribute  FireHOL  configuration  files,
         while ensuring that the correct FireHOL version is going to run them.

         The  FireHOL  release is increased every time the format of the configuration file and the internals of
         FireHOL are changed.

         Since FireHOL v1.67 version is not required to be present in every configuration file.

       iptables <arguments>

         The iptables command passes all its arguments to the real iptables command, during run-time.

         You should not use /sbin/iptables directly to alter a FireHOL firewall in its  configurations.  If  you
         do,  your commands will be run before FireHOL activates its firewall and while the previous firewall is
         still running. Also, since FireHOL will delete all previous firewall rules in order to activate the new
         firewall, any changes you will make, will be deleted too.

         Always use the iptables directive to hook iptables commands in a FireHOL firewall. Nothing else.

       masquerade [reverse  interface] [optional rule parameters]

         Masquerading is a special from of SNAT (Source NAT) that changes the source of requests  when  they  go
         out  and  replaces  their  original  source  when  replies  come in. This way a Linux box can become an
         internet router for a LAN of clients having unroutable IP addresses.  Masquerading takes care to re-map
         IP addresses and ports as required.

         Masquerading is "expensive" compared to SNAT because it checks the IP address of the ougoing  interface
         every  time  for every packet, and therefore it is suggested that if you connect to the internet with a
         static IP address, to prefer SNAT.

         The masquerade helper sets up masquerading on the output of a  network  interface  (not  the  interface
         command, but a real network interface).

         If the masquerade command is placed within an interface command, its network interface[s] will be used.

         If  the  masquerade  command  is  placed  within a router command that has an outface defined, then the
         outface network interface[s] will be used.

         If placed within a router command but the keyword reverse is specified and the router  command  has  an
         inface defined, then the inface network interface[s] will be used.

         If placed outside and before all primary commands, an interface (or list of space separated interfaces,
         within double quotes) can be specified on the masquerade command.

         In all cases, masquerade will setup itself on the output of the given interface[s].

         Please  note  that  if  masquerade  is  used  within  some interface or router, it does not respect the
         optional rule parameters given to this interface or  router  command.  Masquerade  uses  only  its  own
         optional rule parameters.

         inface  and  outface  should not be given as parameters to masquerade (inface because iptables does not
         support this in the POSTROUTING chain, and outface because it will be overwritten by  the  interface(s)
         mentioned above).

         Finally, the masquerade helper will turn on FIREHOL_NAT and instruct the kernel to do packet forwarding
         (like the router commands do).

         Examples:

           Before the first interface or router:
             masquerade eth0 src 10.0.0.0/8 dst not 10.0.0.0/8

           Within an interface rule to masquerade on the output of this interface:
             masquerade

           Within a router rule to masquerade on the output of the router's inface:
             masquerade reverse

       transparent_squid <port> <user> [optional rule parameters]

         The  transparent_squid  helper sets up trasparent caching for HTTP traffic.  The squid proxy is assumed
         to be running on the firewall host at port port (port defaults to squid), with the credentials  of  the
         local user user (user defaults to squid).

         The transparent_squid helper can be used for two kinds of traffic:

         • Incoming HTTP traffic
           Incoming  HTTP traffic, which is either targeted to the firewall host or passing through the firewall
           host.

           The optional rule parameters can be used to specify which kind of incoming traffic to be catched  (by
           using  inface,  src,  dst,  etc  --  outface should not be used here, because the rules generated are
           placed before the routing decision and therefore the outgoing interface is not yet known).

           If no optional rule parameters are given, then the transparent cache will be  setup  on  all  network
           interfaces  for all HTTP traffic (use this with care since you are risking to serve requests from the
           internet using your squid).

         • Locally HTTP traffic
           Locally generated HTTP traffic except traffic generated  by  processes  running  as  user  user.  The
           optional rule parameters inface, outface and src are ignored for this type of traffic.

           This  kind  of  matching makes it possible to support transparent caching for WEB browsers running on
           the firewall host, as far as they do not run as the  user  excluded.  More  than  one  users  can  be
           specified by space-separating and enclosing them in double quotes.

           This rule can be disabled by specifying as user the empty string: ""

         Examples:

           transparent_squid 3128 squid inface eth0 src 10.0.0.0/8

           transparent_squid   8080   "squid   privoxy   root   bin"   inface   not   "ppp+   ipsec+"   dst  not
           "a.not.proxied.server"

       nat <type> <target> [optional rule parameters]

         The nat helper sets up a NAT rule for routed traffic.

         The type parameter can be:

         to-source
           Defines a Source NAT (created in NAT/POSTROUTING).

           The target in this case is the source address to  be  set  in  packets  matching  the  optional  rule
           parameters  (if  no  optional rule parameters, all forwarded traffic will be matched). target accepts
           all --to-source values iptables accepts (see iptables -j SNAT --help).  Multiple  --to-source  values
           can be given, if separated by space and quoted as a single argument.

           inface should not be used in SNAT, because iptables does provide this information at this point.

         to-destination
           Defines a Destination NAT (created in NAT/PREROUTING).

           The  target  in  this case is the destination address to be set in packets matching the optional rule
           parameters (if no optional rule parameters, all forwarded traffic will be  matched).  target  accepts
           all --to-destination values iptables accepts (see iptables -j DNAT --help). Multiple --to-destination
           values can be given, if separated by space and quoted as a single argument.

           outface should not be used in DNAT, because iptables does provide this information at this point.

         redirect-to
           Catches traffic comming in and send it to the local machine (created in NAT/PREROUTING).

           The  target  in this case is a port or a range of ports (XXX-YYY) that packets matching the rule will
           be redirected to (if no optional rule parameters are given, all incoming traffic  will  be  matched).
           target accepts all --to-ports values iptables accepts (see iptables -j REDIRECT --help).

           outface should not be used in REDIRECT, because iptables does provide this information at this point.

         Please  understand  that the optional rule parameters are used only to limit the traffic to be matched.
         Consider these examples:

         Sends to 1.1.1.1 all traffic comming in or passing trhough the firewall host:
           nat to-destination 1.1.1.1

         Redirects to 1.1.1.1 all traffic comming in or passing through, and going to 2.2.2.2:
             nat to-destination 1.1.1.1 dst 2.2.2.2

         Redirects to 1.1.1.1 all TCP traffic comming in or passing through and going to 2.2.2.2:
             nat to-destination 1.1.1.1 proto tcp dst 2.2.2.2

         Redirects to 1.1.1.1 all traffic comming in or passing through and going to 2.2.2.2 to port tcp/25:
             nat to-destination 1.1.1.1 proto tcp dport 25 dst 2.2.2.2

         More examples:

           nat to-source 1.1.1.1 outface eth0 src 2.2.2.2 dst 3.3.3.3

           nat to-destination 4.4.4.4 inface eth0 src 5.5.5.5 dst 6.6.6.6

           nat redirect-to 8080 inface eth0 src 2.2.2.0/24 proto tcp dport 80

       snat [to] <target> [optional rule parameters]

         The snat helper sets up a Source NAT rule for routed traffic, by calling nat to-source target [optional
         rule parameters]

         See the nat helper.

         Example:

           snat to 1.1.1.1 outface eth0 src 2.2.2.2 dst 3.3.3.3

       dnat [to] <target> [optional rule parameters]

         The dnat helper sets up a Destination NAT rule for routed traffic, by calling nat to-destination target
         [optional rule parameters]

         See the nat helper.

         Example:

           dnat to 1.1.1.1 inface eth0 src 2.2.2.2 dst 3.3.3.3

       redirect [to] <target> [optional rule parameters]

         The redirect helper catches all incoming traffic  matching  the  optional  rule  parameters  given  and
         redirects it to ports on the local host, by calling nat redirect-to target [optional rule parameters]

         See the nat helper.

         Example:

           nat redirect-to 8080 inface eth0 src 2.2.2.0/24 proto tcp dport 80

Actions

       Actions  are  the  actions to be taken on services and traffic described by other commands and functions.
       Please note that normally, FireHOL will  pass-through  to  the  generated  iptables  statements  all  the
       possible actions iptables accepts, but only the ones defined here can be used with lower case letters and
       currently  it  will  be  impossible to pass arguments to some unknown action. Also, keep in mind that the
       iptables action LOG is a FireHOL optional rule parameter (see log  and  loglimit)  that  can  be  defined
       together with one of the following actions and FireHOL will actually produce multiple iptables statements
       to achieve both the logging and the action.

       accept

         accept allows the traffic matching the rules to reach its destination.

         Example:

           server smtp accept, to allow SMTP requests and their replies to flow.

       reject [with message]

         reject discards the matching traffic but sends a rejecting message back to the sender.

         with  is  used  to  offer  control  on  the  message to be returned to the sender. with accepts all the
         arguments the --reject-with iptables expression accepts. For an updated list  of  these  messages  type
         iptables -j REJECT --help.

         Examples:

           policy reject with host-unreach

           server ident reject with tcp-reset

           UNMATCHED_INPUT_POLICY="reject with host-prohib"

       drop

         drop  silently discards the matching traffic. The fact that the traffic is silently discarded makes the
         sender timeout in order to conclude that it is not possible to use the wanted service.

         Example:

           server smtp drop, to silently discard SMTP requests and their replies.

       deny

         deny is just an alias for drop, made for those who are used to ipchains terminology.

         Example:

           server smtp deny, to silently discard SMTP requests and their replies.

       return

         return will return the flow of processing to the parent of the  current  command.   Currently,  it  has
         meaning to specify the action return only as a policy to some interface.

         Example:

         policy return
           Traffic  not  matched by any rule within an interface continues traveling through the firewall and is
           possibly matched by other interfaces bellow.

       mirror

         mirror will return the traffic to the wanted port, back to the sending host. Use this  with  care,  and
         only  if  you understand what you doing.  Keep also in mind that FireHOL will apply this action to both
         requests and replies comming in or passing through,  and  will  replace  it  with  REJECT  for  traffic
         generated by the local host.

       redirect [to-port port]

         redirect  is used internally by FireHOL Helper Commands to redirect traffic to ports on the local host.
         Unless you are a developer, you will never need to use this directly.

Optional Rule Parameters

       Optional rule parameters are accepted by many commands to narrow  the  match  they  do  by  default.  The
       parameters  described  bellow  are  all that FireHOL supports. You should check the documentation of each
       command to find which parameters should not be used with it.  Normally, all FireHOL commands are designed
       so that if you specify a parameters that is also used internally, the internal one will overwrite the one
       given in the configuration file. In such a case, FireHOL will present you a warning with the old and  the
       new value.

       Not  all parameters should be used in all cases. For example sport and dport should not be used in normal
       server and client commands since such ports are internally defined by the services  themselves.   In  any
       case, FireHOL will complain about optional rule parameters that should not be used in certain commands.

       src [not] <host>

         src  defines  the  source IP address of the REQUEST. If src is defined on a server statement it matches
         the source of the request which is the remote host, while if it is defined on  a  client  statement  it
         matches  again  the  source of the request, but this time it is the local host. Focus on the REQUEST!!!
         Forget the reply.

         Parameters

         not
           Optional argument that reverses the match. When defined, the rule will match  all  hosts  except  the
           ones defined. Example:
             server smtp accept src not 1.2.3.4

         host
           An  IP address, a hostname, or a subnet. Multiple hosts/networks can be defined if separated by space
           and quoted as a single argument. Examples:
             server smtp accept src 1.2.3.4
             server smtp accept src not "1.2.3.0/24 5.6.7.8 badhost.example.com"

       dst [not] <host>

         dst defines the destination of the REQUEST. If dst is defined on a  server  statement  it  matches  the
         destination  of  the  request  which is the local host, while if it is defined on a client statement it
         matches again the destination of the request, but this time it  is  the  remote  host.   Focus  on  the
         REQUEST!!! Forget the reply.

         dst accepts the same parameters as src.

       inface [not] <interface>

         inface defines the interface the REQUEST is received via. inface cannot be used in interface commands.

         Parameters

         not
           An optional argument that reverses the match. When defined, the rule will match all interfaces except
           the ones defined. Example:
             server smtp accept inface not eth0

         interface
           if  an  interface  name in the same format the interface command accepts.  Multiple interfaces can be
           defined if separated by space and quoted as a single argument. Examples:
             server smtp accept inface not eth0
             server smtp accept inface not "eth0 eth1"

       outface [not] <interface>

         outface defines the interface the REQUEST is send via. outface cannot be used in interface commands.

         outface accepts the same parameters as inface.

       custom <parameters>

         custom passes its arguments to the generated iptables commands.

         It is required to quote all the parameters given to custom. If the parameters include a space character
         between some text that is required to be given to iptables as one argument, it is  required  to  escape
         another  set  of  quotes  in  order.  Another  way is to use double quotes externally and single quotes
         internally.

         Examples:

           server smtp accept custom "--some-iptables-option and_its_value"

           server smtp accept custom "--some-iptables-option 'one_value another_value'

       log "<some text>" [level a_level]

         log will log the matching packets to syslog. Note that this is not  an  action  (in  iptables  it  is).
         FireHOL will actually produce multiple iptables commands to accomplish both the action for the rule and
         the  logging.  You  can  control  how  logging works, by altering the variables FIREHOL_LOG_OPTIONS and
         FIREHOL_LOG_LEVEL. You can also change the level of just one rule by using the level  argument  of  the
         log parameter.

         FireHOL  logs traffic, exactly the same way iptables does. Many users have complained about packet logs
         appearing at their console. To avoid this you will have to:

         • setup klogd to log only more important traffic
         • change FIREHOL_LOG_LEVEL to log at a not so important log-level

         Actually klogd's -c option and iptables' --log-level option are the same thing (iptables  accepts  also
         the  numeric  values  klogd accepts). If iptables logs at a higher priority than klogd is configured to
         use, then your packets will appear in the console too.

       loglimit "<some text>"

         loglimit is the same with log but  limits  the  frequency  of  logging  according  to  the  setting  of
         FIREHOL_LOG_FREQUENCY and FIREHOL_LOG_BURST.

       proto [not] <protocol>

         proto  sets  the  required  protocol for the traffic. This command accepts anything iptables accepts as
         protocols.

       limit <frequency> <burst>

         limit will limit the match in both directions  of  the  traffic  (request  and  reply).  This  is  used
         internally  by  FireHOL  and  its  effects  has  not  been  tested in the high level configuration file
         directives.

       sport <port>

         sport defines the source port of a request. It accepts port names, port numbers, port ranges  (FROM:TO)
         and  multiple  ports  (or  ranges) separated by spaces and quoted as a single argument.  This parameter
         should not be used in normal services definitions (client and server commands) or interface and  router
         definitions, unless you really understand what you are doing.

       dport <port>

         dport  defines  the  destination  port  of  a request. It accepts port names, port numbers, port ranges
         (FROM:TO) and multiple ports (or ranges) separated by spaces and quoted  as  a  single  argument.  This
         parameter  should  not be used in normal services definitions (client and server commands) or interface
         and router definitions, unless you really understand what you are doing.

       uid [not] <user> =head2 user [not] <user>

         uid or user define the operating system user sending this traffic. The parameter can be a  username,  a
         user number or a list of these two, separated by spaces and quoted as a single argument.

         This parameter can be used only in services (client and server commands) defined within interfaces, not
         routers.  FireHOL is "smart" enough to apply this parameter only to traffic send by the localhost, i.e.
         the replies of servers and requests of clients. It is not possible, and FireHOL will simply ignore this
         parameter, on traffic coming in or passign through the firewall host.

         Example 1:

           client "pop3 imap" accept user not "user1 user2 user3" dst mymailer.example.com

         The above will allow local users except user1, user2 and  user3  to  use  POP3  and  IMAP  services  on
         mymailer.example.com.  You  can  use  this, for example, to allow only a few of the local users use the
         fetchmail program to fetch their mail from the mail server.

         Example 2:

           server http accept user apache

         The above will allow all HTTP to reach the local http server, but only if the web server is running  as
         user apache the replies will be send back to the HTTP client.

       gid <group> =head2 group <group>

         gid  or group define the operating system user group sending this traffic. The parameter can be a group
         name, a group number or a list of these two, separated by spaces and quoted as a single argument.

         This parameter can be used only in services (client and server commands) defined within interfaces, not
         routers. FireHOL is "smart" enough to apply this parameter only to traffic send by the localhost,  i.e.
         the replies of servers and requests of clients. It is not possible, and FireHOL will simply ignore this
         parameter, on traffic coming in or passing through the firewall host.

       pid <process> =head2 process <process>

         pid  or process define the operating system process ID (or PID) sending this traffic. The parameter can
         be a PID or a list of PIDs, separated by spaces and quoted as a single argument.

         This parameter can be used only in services (client and server commands) defined within interfaces, not
         routers. FireHOL is "smart" enough to apply this parameter only to traffic send by the localhost,  i.e.
         the replies of servers and requests of clients. It is not possible, and FireHOL will simply ignore this
         parameter, on traffic coming in or passign through the firewall host.

       sid <session> =head2 session <session>

         sid  or session define the operating system session ID of the process sending this traffic (The session
         ID of a process is the process group ID of the session leader). The parameter can be  a  list  of  such
         IDs, separated by spaces and quoted as a single argument.

         This parameter can be used only in services (client and server commands) defined within interfaces, not
         routers.  FireHOL is "smart" enough to apply this parameter only to traffic send by the localhost, i.e.
         the replies of servers and requests of clients. It is not possible, and FireHOL will simply ignore this
         parameter, on traffic coming in or passign through the firewall host.

Variables that control FireHOL

       DEFAULT_INTERFACE_POLICY

         DEFAULT_INTERFACE_POLICY controls the default action to be taken on traffic not  matched  by  any  rule
         within an interface. Actually, this is a global setting for what policy does for an interface.

         All  packets  that reach the end of an interface are logged only if the action is not return or accept.
         You can control the frequency of this logging by altering the frequency loglimit uses.

          Default: DEFAULT_INTERFACE_POLICY="DROP"

          Example: DEFAULT_INTERFACE_POLICY="REJECT"

       UNMATCHED_INPUT_POLICY

       UNMATCHED_OUTPUT_POLICY

       UNMATCHED_FORWARD_POLICY

         UNMATCHED_INPUT_POLICY controls the default action to be taken for incoming traffic not matched by  any
         interface command.

         UNMATCHED_OUTPUT_POLICY controls the default action to be taken for outgoing traffic not matched by any
         interface command.

         UNMATCHED_FORWARD_POLICY  controls  the default action to be taken for forwarded traffic not matched by
         any router command.

         All variables accept all the Actions FireHOL supports.

         All packets that reach the end of firewall in all three chains are logged (always, regardless of  these
         settings). You can control the frequency of this logging by altering the frequency loglimit uses.

          Default: UNMATCHED_INPUT_POLICY="DROP"

          Default: UNMATCHED_OUTPUT_POLICY="DROP"

          Default: UNMATCHED_FORWARD_POLICY="DROP"

          Example: UNMATCHED_INPUT_POLICY="REJECT"

          Example: UNMATCHED_OUTPUT_POLICY="REJECT"

          Example: UNMATCHED_FORWARD_POLICY="REJECT"

       FIREHOL_LOG_LEVEL =head2 FIREHOL_LOG_OPTIONS =head2 FIREHOL_LOG_FREQUENCY =head2 FIREHOL_LOG_BURST

         FIREHOL_LOG_LEVEL controls the level at which iptables will log things to the syslog. For a description
         of  the  possible  values  supported  and  for per-rule control of log level, see the log optional rule
         parameter.

         FIREHOL_LOG_OPTIONS controls the way iptables will log things to the syslog. The value of this variable
         is passed as is to iptables, so use exact iptables parameters.

         FIREHOL_LOG_FREQUENCY and FIREHOL_LOG_BURST (added in v1.39 of FireHOL) control the frequency  at  each
         each logging rule will write packets to the syslog. FIREHOL_LOG_FREQUENCY is set to the maximum average
         frequency and FIREHOL_LOG_BURST specifies the maximum initial number of packets to match.

          Default: FIREHOL_LOG_OPTIONS="--log-level warning"

          Default: FIREHOL_LOG_FREQUENCY="1/second"

          Default: FIREHOL_LOG_BURST="5"

          Example: FIREHOL_LOG_OPTIONS="--log-level info --log-tcp-options --log-ip-options"

          Example: FIREHOL_LOG_FREQUENCY="30/minute"

          Example: FIREHOL_LOG_BURST="2"

         To  see  the  available  iptables  log options, run "/sbin/iptables -j LOG --help" To see what iptables
         accepts as frequencies and bursts, run "/sbin/iptables -m limit --help"

         You can also check man iptables.

       DEFAULT_CLIENT_PORTS

         DEFAULT_CLIENT_PORTS controls the port range to  be  used  when  a  remote  client  is  specified.  For
         localhost clients, FireHOL finds the exact client ports by querying the kernel options.

          Default: 1000:65535

          Example: DEFAULT_CLIENT_PORTS="0:65535"

       FIREHOL_NAT

         If  FIREHOL_NAT  is  set  to  1,  FireHOL will load NAT kernel modules for those services that they are
         require such. FireHOL sets this to 1 automatically if you use the Helper Commands that do NAT.

          Default: FIREHOL_NAT="0"

          Example: FIREHOL_NAT="1"

       FIREHOL_AUTOSAVE

         FIREHOL_AUTOSAVE controls the file that will be created when FireHOL is called with  the  save  command
         line  argument.  If  this variable is empty (the default), FireHOL will try to detect where to save the
         file.    Currently,    the    RedHat    way    (/etc/sysconfig/iptables)    and    the    Debian    way
         (/var/lib/iptables/autosave)  are  automatically  detected  (in  the  order  given  here)  based on the
         existance of the directory this file should be created in.

         Default: FIREHOL_AUTOSAVE="" Example: FIREHOL_AUTOSAVE="/tmp/firehol-saved.txt"

Variables that FireHOL offers

       RESERVED_IPS

         This variable includes all the IP addresses defined as IANA - Reserved by IANA.

          Example: interface eth0 internet src not "${RESERVED_IPS}"

       PRIVATE_IPS

         This variable includes all the IP addresses defined as Private or Test by RFC 3330.

          Example: interface eth0 internet src not "${PRIVATE_IPS}"

       UNROUTABLE_IPS

         This variable is both RESERVED_IPS and  PRIVATE_IPS  together.  I  suggest  to  use  this  variable  on
         interfaces and routers accepting Internet traffic.

          Example: interface eth0 internet src not "${UNROUTABLE_IPS}"

FILES

       /etc/firehol/firehol.conf

AUTHOR

       firehol written by Costa Tsaousis <costa@tsaousis.gr>.

       Man page written by Marc Brockschmidt <<marc@marcbrockschmidt.de>.

SEE ALSO

       firehol(1), iptables(8), bash(1)

                                                   2003-06-09                                    FIREHOL.CONF(5)