[server] iptables 'comment' match check
[fwknop.git] / server / fwknopd.conf
1 #
2 ##############################################################################
3 #
4 #         [+] fwknopd - Firewall Knock Operator Daemon [+]
5 #
6 # This is the configuration file for fwknopd, the Firewall Knock Operator
7 # daemon.  The primary authentication and authorization mechanism offered
8 # by fwknop is known as Single Packet Authorization (SPA).  More information
9 # about SPA can be found at: http://www.cipherdyne.org/fwknop/docs/SPA.html
10 #
11 # There are no access control directives in this file.  All access
12 # control directives are located in the file "/etc/fwknop/access.conf".
13 # You will need to edit the access.conf file in order for fwknop to function
14 # correctly.
15 #
16 # Most of these can remain commented out unless you need to overide the
17 # default setting.
18 #
19 # It is also important to note that there are some subtle (and some not
20 # so subtle) differences between this configuration file, its parameters
21 # and valid values and the configuration file used by the legacy Perl
22 # version  of fwknopd.  Please pay careful attention to the format and
23 # values used in this file if you are migrating from the legacy Perl
24 # version.
25 #
26 ##############################################################################
27 #
28
29 # Define the ethernet interface on which we will sniff packets.
30 # Default if not set is eth0.
31 #
32 #PCAP_INTF                   eth0;
33
34 # By default fwknopd does not put the pcap interface into promiscuous mode.
35 # Set this to 'Y' to enable promiscuous sniffing.
36 #
37 #ENABLE_PCAP_PROMISC         N;
38
39 # Define the filter used for PCAP modes; we default to udp port 62201.
40 # However, if an fwknop client uses the --rand-port option to send the
41 # SPA packet over a random port, then this variable should be updated to
42 # something like "udp dst portrange 10000-65535;".
43 # Default is "udp port 62201".
44 #
45 #PCAP_FILTER                 udp port 62201;
46
47 # This instructs fwknopd to not honor SPA packets that have an old time
48 # stamp.  The value for "old" is defined by the MAX_SPA_PACKET_AGE variable.
49 # If ENABLE_SPA_PACKET_AGING is set to "N", fwknopd will not use the client
50 # time stamp at all.
51 #
52 #ENABLE_SPA_PACKET_AGING     Y;
53
54 # Defines the maximum age (in seconds) that an SPA packet will be accepted.
55 # This requires that the client system is in relatively close time
56 # synchronization with the fwknopd server system (NTP is good).  The default
57 # age is two minutes.
58 #
59 #MAX_SPA_PACKET_AGE          120;
60
61 # Track digest sums associated with previous fwknop process.  This allows
62 # digest sums to remain persistent across executions of fwknop.
63 #
64 #ENABLE_DIGEST_PERSISTENCE   Y;
65
66 # Sets the number of packets that are processed when the *pcap_dispatch()*
67 # call is made.  The default is zero, since this allows *fwknopd* to process
68 # as many packets as possible in the corresponding callback where the SPA
69 # handling routine is called for packets that pass a set of prerequisite
70 # checks.  However, if *fwknopd* is running on a platform with an old
71 # version of libpcap, it may be necessary to change this value to a positive
72 # non-zero integer.  More information can be found in the *pcap_dispatch(3)*
73 # man page.
74 #PCAP_DISPATCH_COUNT            0;
75
76 # Sets the number of microseconds to passed as an argument to usleep() in
77 # the pcap loop.  The default is 100000 microseconds, or 1/10th of a second.
78 #PCAP_LOOP_SLEEP                100000;
79
80 # Specify the the maximum number of bytes to sniff per frame - 1500
81 # is a good default
82 #
83 #MAX_SNIFF_BYTES             1500;
84
85 # If GPG keys are used instead of a Rijndael symmetric key, this is
86 # the default GPG keys directory.  Note that each access block in
87 # fwknop access.conf can specify its own GPG directory to override
88 # this default.
89 #
90 #GPG_HOME_DIR        /root/.gnupg;
91
92 # Allow fwknopd to acquire SPA data from HTTP requests (generated with the
93 # fwknop client in --HTTP mode).  Note that the PCAP_FILTER variable would
94 # need to be updated when this is enabled to sniff traffic over TCP/80
95 # connections
96 #
97 #ENABLE_SPA_OVER_HTTP        N;
98
99 # Enable the fwknopd TCP server.  This is a "dummy" TCP server that will
100 # accept TCP connection requests on the specified TCPSERV_PORT.
101 # If set to "Y", fwknopd will fork off a child process to listen for, and
102 # accept incoming TCP request.  This server only accepts the
103 # request.  It does not otherwise communicate. This is only to allow the
104 # incoming SPA over TCP packet which is detected via PCAP. The connection
105 # is closed after 1 second regardless.
106 # Note that fwknopd still only gets its data via pcap, so the filter
107 # defined by PCAP_FILTER needs to be updated to include this TCP port.
108 #
109 #ENABLE_TCP_SERVER           N;
110 #TCPSERV_PORT                62201;
111
112 # Set/override the locale (via the LC_ALL locale category).  Leave this
113 # entry commented out to  have fwknopd honor the default system locale.
114 #
115 #LOCALE                      C;
116
117 # Override syslog identity and facility (the defaults are usually ok).
118 # The SYSLOG_FACILITY variable can be set to one of LOG_LOCAL{0-7}
119 # or LOG_DAEMON (the default).
120 #
121 #SYSLOG_IDENTITY             fwknopd;
122 #SYSLOG_FACILITY             LOG_DAEMON;
123
124 ##############################################################################
125 # NOTE: The following EXTERNAL_CMD functionality is not yet implemented.
126 #       This is a possible future feature of fwknopd.
127 #
128 # The following four variables control whether a global set of "open" and
129 # "close" commands are executed after receving a valid SPA packet.  These
130 # variables are used only if FIREWALL_TYPE is set to "external_cmd", but
131 # the same variables can also exist within the access.conf file so that
132 # mixed deployments are possible - that is, some SPA packets will operate
133 # as usual and result in firewall commands being executed, but others will
134 # result in the commands defined by these variables (in access.conf) being
135 # executed.
136 #     The "open" and "close" commands might be manually supplied firewall
137 # commands, and both support variable substitution of any of the variables
138 # in the access.conf file with "$VAR".  Also, three special variables are
139 # supported: $SRC, $PORT, and $PROTO, which are derived from actual values
140 # from within valid SPA packets (as opposed to $SOURCE from access.conf
141 # which may contain a list of networks instead of a single IP address).
142 # Here are some examples:
143 #     - Execute a specific iptables command on behalf of the source IP
144 #     in a valid SPA packet to add a new ACCEPT rule, and execute
145 #     another command (to delete the same rule after a timeout):
146 #         EXTERNAL_CMD_OPEN       iptables -A INPUT -s $SRC -j ACCEPT
147 #         EXTERNAL_CMD_CLOSE      iptables -D INPUT -s $SRC -j ACCEPT
148 #     - Execute a custom binary with the SOURCE and OPEN_PORTS variables
149 #     from the access.conf file as input on the command line, and after
150 #     a timeout execute a different program but use the real SPA source
151 #     IP:
152 #         EXTERNAL_CMD_OPEN       /path/someprog $SOURCE $OPEN_PORTS
153 #         EXTERNAL_CMD_OPEN       /path/otherprog $SRC
154 #
155 #ENABLE_EXTERNAL_CMDS        N;
156 #EXTERNAL_CMD_OPEN           __NONE__;
157 #EXTERNAL_CMD_CLOSE          __NONE__;
158 #EXTERNAL_CMD_ALARM          30;
159
160 # if EXTERNAL_CMD_OPEN is used above, then the following two variables can
161 # be used to enforce a prefix on variable substitutions - useful if there
162 # are any naming conflicts with the external script and command line
163 # arguments that are named the same as the variables to be substituted.
164 #
165 #ENABLE_EXT_CMD_PREFIX       N;
166 #EXT_CMD_PREFIX              FWKNOP_;
167
168 ##############################################################################
169 # Parameters specific to iptables:
170
171 # Flush all existing rules in the fwknop chains at fwknop start time and/or
172 # exit time. They default to Y and it is a recommended setting for both.
173 #
174 #FLUSH_IPT_AT_INIT           Y;
175 #FLUSH_IPT_AT_EXIT           Y;
176 #
177
178 # Allow SPA clients to request access to services through an iptables
179 # firewall instead of just to it (i.e. access through the FWKNOP_FORWARD
180 # chain instead of the INPUT chain).
181 #
182 #ENABLE_IPT_FORWARDING       N;
183
184 # Allow SPA clients to request access to a local socket via NAT.  This still
185 # puts an ACCEPT rule into the FWKNOP_INPUT chain, but a different port is
186 # translated via DNAT rules to the real one.  So, the user would do
187 # "ssh -p <port>" to access the local service (see the --NAT-local and
188 # --NAT-rand-port on the fwknop client command line).
189 #
190 #ENABLE_IPT_LOCAL_NAT        Y;
191
192 # By default, if forwarding access is enabled (see the ENABLE_IPT_FORWARDING
193 # variable above), then fwknop creates DNAT rules for incoming connections,
194 # but does not also complement these rules with SNAT rules at the same time.
195 # In some situations, internal systems may not have a route back out for the
196 # source address of the incoming connection, so it is necessary to also
197 # apply SNAT rules so that the internal systems see the IP of the internal
198 # interface where fwknopd is running.  This functionality is only enabled
199 # when ENABLE_IPT_SNAT is set to "Y", and by default SNAT rules are built
200 # with the MASQUERADE target (since then the internal IP does not have to be
201 # defined here in the fwknop.conf file), but if you want fwknopd to use the
202 # SNAT target then also defined an IP address with the SNAT_TRANSLATE_IP
203 # variable.
204 #
205 #ENABLE_IPT_SNAT             N;
206 #SNAT_TRANSLATE_IP           __CHANGEME__;
207
208 # Add ACCEPT rules to the FWKNOP_OUTPUT chain. This is usually only useful
209 # if there are no state tracking rules to allow connection responses out and
210 # the OUTPUT chain has a default-drop stance.
211 #
212 #ENABLE_IPT_OUTPUT           N;
213
214 # fwknopd adds allow rules to a custom iptables chain "FWKNOP_INPUT".
215 # This chain is called from the INPUT chain, and by default no other
216 # iptables chains are used.  However, additional chains can be added
217 # (say, if access needs to be allowed through the local system via the
218 # FORWARD chain) by altering the IPT_FORWARD_ACCESS variable below.
219 # For a discussion of the format followed by these keywords, read on:
220 #
221 # Specify chain names to which iptables blocking rules will be
222 # added with the IPT_INPUT_ACCESS and IPT_FORWARD_ACCESS keyword.
223 # The format for these variables is:
224 #
225 #   <Target>,<Direction>,<Table>,<From_chain>,<Jump_rule_position>,\
226 #       <To_chain>,<Rule_position>.
227 #
228 # "Target":
229 #   Can be any legitimate iptables target, but should usually just be "DROP".
230 #
231 # "Table":
232 #   Can be any iptables table, but the default is "filter".
233 #
234 # "From_chain":
235 #   Is the chain from which packets will be jumped.
236 #
237 # "Jump_rule_position":
238 #   Defines the position within the From_chain where the jump rule is added.
239 #
240 # "To_chain":
241 #   Is the chain to which packets will be jumped. This is the main chain
242 #   where fwknop rules are added.
243 #
244 # "Rule_position":
245 #   Defines the position where rule are added within the To_chain.
246 #
247 #IPT_INPUT_ACCESS        ACCEPT, filter, INPUT, 1, FWKNOP_INPUT, 1;
248
249 # The IPT_OUTPUT_ACCESS variable is only used if ENABLE_IPT_OUTPUT is enabled
250 #
251 #IPT_OUTPUT_ACCESS       ACCEPT, filter, OUTPUT, 1, FWKNOP_OUTPUT, 1;
252
253 # The IPT_FORWARD_ACCESS variable is only used if ENABLE_IPT_FORWARDING is
254 # enabled.
255 #
256 #IPT_FORWARD_ACCESS      ACCEPT, filter, FORWARD, 1, FWKNOP_FORWARD, 1;
257 #IPT_DNAT_ACCESS         DNAT, nat, PREROUTING, 1, FWKNOP_PREROUTING, 1;
258
259 # The IPT_SNAT_ACCESS variable is not used unless both ENABLE_IPT_SNAT and
260 # ENABLE_IPT_FORWARDING are enabled.  Also, the external static IP must be
261 # set with the SNAT_TRANSLATE_IP variable.  The default is to use the
262 # IPT_MASQUERADE_ACCESS variable.
263 #
264 #IPT_SNAT_ACCESS         SNAT, nat, POSTROUTING, 1, FWKNOP_POSTROUTING, 1;
265 #IPT_MASQUERADE_ACCESS   MASQUERADE, nat, POSTROUTING, 1, FWKNOP_POSTROUTING, 1;
266
267 # The ENABLE_COMMENT_MATCH_CHECK variable instructs fwknopd to check for the
268 # iptables 'comment' match at start up.  If it's not found, then fwknopd will
269 # exit and throw an error.  This variable is enabled by default, but can be
270 # disabled if you want fwknopd to run without being sure that the comment match
271 # if available (not recommended, since the comment match enables new SPA rules
272 # to be timed out).
273 #
274 #ENABLE_IPT_COMMENT_CHECK        Y;
275
276 ##############################################################################
277 # Parameters specific to ipfw:
278 #
279 #
280 # This variable defines the rule number that fwknopd uses to insert an ipfw
281 # pass rule.  You would most likely want to change this parameter to a
282 # number that makes sense in your current ipfw firewall configuration.
283 #
284 #IPFW_START_RULE_NUM         10000;
285
286 # This variable defines the maximum number of rules fwknopd will create at
287 # a time. This also tells fwknopd where to stop when flushing all rules.
288 #
289 #IPFW_MAX_RULES              1000;
290
291 # Flush all existing rules in the fwknop ipfw sets at fwknop start time and/or
292 # exit time. They default to Y and it is a recommended setting for both.
293 #
294 #FLUSH_IPFW_AT_INIT           Y;
295 #FLUSH_IPFW_AT_EXIT           Y;
296
297 # This variable defines the rule set fwknopd uses for active rules. By
298 # default, it is set 1 and fwknopd assumes that it has full control over this
299 # set.  That is, fwknopd routinely creates and deletes rules in this set, and
300 # the entire set itself is also created/deleted during routine operations.
301 # You have some measure of control over whether the entire set is deleted at
302 # init/exit with the FLUSH_IPFW_AT_INIT and FLUSH_IPFW_AT_EXIT, but in general
303 # it is recommended to leave these variables set to the default "Y" setting.
304 #
305 #IPFW_ACTIVE_SET_NUM         1;
306
307 # This variable defines the rule set that will be used to store expired rules
308 # that still have a dynamic rule associated to them. That set will be disabled
309 # by fwknop and should not be enabled while fwknop is running. Not used when
310 # ipfw isn't using dynamic rules.  By default, it is set 2, but can be anything
311 # in the range 1-31 except that it shouldn't be the same as
312 # IPFW_ACTIVE_SET_NUM.  Note that fwknopd disables this set through routine
313 # operations according to the FLUSH_IPFW_AT_INIT and FLUSH_IPFW_AT_EXIT
314 # variables.
315 #
316 #IPFW_EXPIRE_SET_NUM         2;
317
318 # Set the interval (in seconds) over which rules that are expired and
319 # have no remaining dynamic rules associated with them will be removed.
320 #
321 #IPFW_EXPIRE_PURGE_INTERVAL  30;
322
323 # Set this variable to "Y" if you want fwknopd to create its own "check-state"
324 # rule as the first rule in the set.  This would only be needed if there
325 # was not already a check-state rule in the current firewall configuration.
326 #
327 # IPFW_ADD_CHECK_STATE       N;
328
329 ##############################################################################
330 # Parameters specific to the pf firewall:
331 #
332 #
333 # This variable defines the pf anchor name to which fwknopd will add and
334 # delete rules.  This anchor must be linked into the pf policy (typically
335 # done by adding it into the /etc/pf.conf file), and fwknopd runs a check at
336 # init time to ensure that the anchor exists.
337 #
338 #PF_ANCHOR_NAME             fwknop;
339
340 # Set the interval (in seconds) over which rules that are expired
341 #
342 #PF_EXPIRE_INTERVAL         30;
343
344
345 # Directories - These can override compile-time defaults.
346 #
347 #FWKNOP_RUN_DIR              /var/run/fwknop;
348 #FWKNOP_CONF_DIR             /etc/fwknop;
349
350 # Files
351 #
352 #ACCESS_FILE                 access.conf;
353 #FWKNOP_PID_FILE             $FWKNOP_RUN_DIR/fwknopd.pid;
354 #DIGEST_FILE                 $FWKNOP_RUN_DIR/digest.cache;
355 ### The DB version is only used if fwknopd was built with gdbm/ndbm
356 ### support (not needed by default).
357 #DIGEST_DB_FILE              $FWKNOP_RUN_DIR/digest_db.cache;
358
359 # System binaries
360 #
361 #FIREWALL_EXE                /sbin/iptables;
362
363 ###EOF###