mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-25 18:30:06 +00:00
![Patrick McHardy](/assets/img/avatar_default.png)
Add a SYNPROXY for netfilter. The code is split into two parts, the synproxy core with common functions and an address family specific target. The SYNPROXY receives the connection request from the client, responds with a SYN/ACK containing a SYN cookie and announcing a zero window and checks whether the final ACK from the client contains a valid cookie. It then establishes a connection to the original destination and, if successful, sends a window update to the client with the window size announced by the server. Support for timestamps, SACK, window scaling and MSS options can be statically configured as target parameters if the features of the server are known. If timestamps are used, the timestamp value sent back to the client in the SYN/ACK will be different from the real timestamp of the server. In order to now break PAWS, the timestamps are translated in the direction server->client. Signed-off-by: Patrick McHardy <kaber@trash.net> Tested-by: Martin Topholm <mph@one.com> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
337 lines
10 KiB
Text
337 lines
10 KiB
Text
#
|
|
# IP netfilter configuration
|
|
#
|
|
|
|
menu "IP: Netfilter Configuration"
|
|
depends on INET && NETFILTER
|
|
|
|
config NF_DEFRAG_IPV4
|
|
tristate
|
|
default n
|
|
|
|
config NF_CONNTRACK_IPV4
|
|
tristate "IPv4 connection tracking support (required for NAT)"
|
|
depends on NF_CONNTRACK
|
|
default m if NETFILTER_ADVANCED=n
|
|
select NF_DEFRAG_IPV4
|
|
---help---
|
|
Connection tracking keeps a record of what packets have passed
|
|
through your machine, in order to figure out how they are related
|
|
into connections.
|
|
|
|
This is IPv4 support on Layer 3 independent connection tracking.
|
|
Layer 3 independent connection tracking is experimental scheme
|
|
which generalize ip_conntrack to support other layer 3 protocols.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config NF_CONNTRACK_PROC_COMPAT
|
|
bool "proc/sysctl compatibility with old connection tracking"
|
|
depends on NF_CONNTRACK_PROCFS && NF_CONNTRACK_IPV4
|
|
default y
|
|
help
|
|
This option enables /proc and sysctl compatibility with the old
|
|
layer 3 dependent connection tracking. This is needed to keep
|
|
old programs that have not been adapted to the new names working.
|
|
|
|
If unsure, say Y.
|
|
|
|
config IP_NF_IPTABLES
|
|
tristate "IP tables support (required for filtering/masq/NAT)"
|
|
default m if NETFILTER_ADVANCED=n
|
|
select NETFILTER_XTABLES
|
|
help
|
|
iptables is a general, extensible packet identification framework.
|
|
The packet filtering and full NAT (masquerading, port forwarding,
|
|
etc) subsystems now use this: say `Y' or `M' here if you want to use
|
|
either of those.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
if IP_NF_IPTABLES
|
|
|
|
# The matches.
|
|
config IP_NF_MATCH_AH
|
|
tristate '"ah" match support'
|
|
depends on NETFILTER_ADVANCED
|
|
help
|
|
This match extension allows you to match a range of SPIs
|
|
inside AH header of IPSec packets.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_MATCH_ECN
|
|
tristate '"ecn" match support'
|
|
depends on NETFILTER_ADVANCED
|
|
select NETFILTER_XT_MATCH_ECN
|
|
---help---
|
|
This is a backwards-compat option for the user's convenience
|
|
(e.g. when running oldconfig). It selects
|
|
CONFIG_NETFILTER_XT_MATCH_ECN.
|
|
|
|
config IP_NF_MATCH_RPFILTER
|
|
tristate '"rpfilter" reverse path filter match support'
|
|
depends on NETFILTER_ADVANCED && (IP_NF_MANGLE || IP_NF_RAW)
|
|
---help---
|
|
This option allows you to match packets whose replies would
|
|
go out via the interface the packet came in.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
The module will be called ipt_rpfilter.
|
|
|
|
config IP_NF_MATCH_TTL
|
|
tristate '"ttl" match support'
|
|
depends on NETFILTER_ADVANCED
|
|
select NETFILTER_XT_MATCH_HL
|
|
---help---
|
|
This is a backwards-compat option for the user's convenience
|
|
(e.g. when running oldconfig). It selects
|
|
CONFIG_NETFILTER_XT_MATCH_HL.
|
|
|
|
# `filter', generic and specific targets
|
|
config IP_NF_FILTER
|
|
tristate "Packet filtering"
|
|
default m if NETFILTER_ADVANCED=n
|
|
help
|
|
Packet filtering defines a table `filter', which has a series of
|
|
rules for simple packet filtering at local input, forwarding and
|
|
local output. See the man page for iptables(8).
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_TARGET_REJECT
|
|
tristate "REJECT target support"
|
|
depends on IP_NF_FILTER
|
|
default m if NETFILTER_ADVANCED=n
|
|
help
|
|
The REJECT target allows a filtering rule to specify that an ICMP
|
|
error should be issued in response to an incoming packet, rather
|
|
than silently being dropped.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_TARGET_SYNPROXY
|
|
tristate "SYNPROXY target support"
|
|
depends on NF_CONNTRACK && NETFILTER_ADVANCED
|
|
select NETFILTER_SYNPROXY
|
|
select SYN_COOKIES
|
|
help
|
|
The SYNPROXY target allows you to intercept TCP connections and
|
|
establish them using syncookies before they are passed on to the
|
|
server. This allows to avoid conntrack and server resource usage
|
|
during SYN-flood attacks.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_TARGET_ULOG
|
|
tristate "ULOG target support (obsolete)"
|
|
default m if NETFILTER_ADVANCED=n
|
|
---help---
|
|
|
|
This option enables the old IPv4-only "ipt_ULOG" implementation
|
|
which has been obsoleted by the new "nfnetlink_log" code (see
|
|
CONFIG_NETFILTER_NETLINK_LOG).
|
|
|
|
This option adds a `ULOG' target, which allows you to create rules in
|
|
any iptables table. The packet is passed to a userspace logging
|
|
daemon using netlink multicast sockets; unlike the LOG target
|
|
which can only be viewed through syslog.
|
|
|
|
The appropriate userspace logging daemon (ulogd) may be obtained from
|
|
<http://www.netfilter.org/projects/ulogd/index.html>
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
# NAT + specific targets: nf_conntrack
|
|
config NF_NAT_IPV4
|
|
tristate "IPv4 NAT"
|
|
depends on NF_CONNTRACK_IPV4
|
|
default m if NETFILTER_ADVANCED=n
|
|
select NF_NAT
|
|
help
|
|
The IPv4 NAT option allows masquerading, port forwarding and other
|
|
forms of full Network Address Port Translation. It is controlled by
|
|
the `nat' table in iptables: see the man page for iptables(8).
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
if NF_NAT_IPV4
|
|
|
|
config IP_NF_TARGET_MASQUERADE
|
|
tristate "MASQUERADE target support"
|
|
default m if NETFILTER_ADVANCED=n
|
|
help
|
|
Masquerading is a special case of NAT: all outgoing connections are
|
|
changed to seem to come from a particular interface's address, and
|
|
if the interface goes down, those connections are lost. This is
|
|
only useful for dialup accounts with dynamic IP address (ie. your IP
|
|
address will be different on next dialup).
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_TARGET_NETMAP
|
|
tristate "NETMAP target support"
|
|
depends on NETFILTER_ADVANCED
|
|
select NETFILTER_XT_TARGET_NETMAP
|
|
---help---
|
|
This is a backwards-compat option for the user's convenience
|
|
(e.g. when running oldconfig). It selects
|
|
CONFIG_NETFILTER_XT_TARGET_NETMAP.
|
|
|
|
config IP_NF_TARGET_REDIRECT
|
|
tristate "REDIRECT target support"
|
|
depends on NETFILTER_ADVANCED
|
|
select NETFILTER_XT_TARGET_REDIRECT
|
|
---help---
|
|
This is a backwards-compat option for the user's convenience
|
|
(e.g. when running oldconfig). It selects
|
|
CONFIG_NETFILTER_XT_TARGET_REDIRECT.
|
|
|
|
endif
|
|
|
|
config NF_NAT_SNMP_BASIC
|
|
tristate "Basic SNMP-ALG support"
|
|
depends on NF_CONNTRACK_SNMP && NF_NAT_IPV4
|
|
depends on NETFILTER_ADVANCED
|
|
default NF_NAT && NF_CONNTRACK_SNMP
|
|
---help---
|
|
|
|
This module implements an Application Layer Gateway (ALG) for
|
|
SNMP payloads. In conjunction with NAT, it allows a network
|
|
management system to access multiple private networks with
|
|
conflicting addresses. It works by modifying IP addresses
|
|
inside SNMP payloads to match IP-layer NAT mapping.
|
|
|
|
This is the "basic" form of SNMP-ALG, as described in RFC 2962
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
# If they want FTP, set to $CONFIG_IP_NF_NAT (m or y),
|
|
# or $CONFIG_IP_NF_FTP (m or y), whichever is weaker.
|
|
# From kconfig-language.txt:
|
|
#
|
|
# <expr> '&&' <expr> (6)
|
|
#
|
|
# (6) Returns the result of min(/expr/, /expr/).
|
|
|
|
config NF_NAT_PROTO_GRE
|
|
tristate
|
|
depends on NF_NAT_IPV4 && NF_CT_PROTO_GRE
|
|
|
|
config NF_NAT_PPTP
|
|
tristate
|
|
depends on NF_CONNTRACK && NF_NAT_IPV4
|
|
default NF_NAT_IPV4 && NF_CONNTRACK_PPTP
|
|
select NF_NAT_PROTO_GRE
|
|
|
|
config NF_NAT_H323
|
|
tristate
|
|
depends on NF_CONNTRACK && NF_NAT_IPV4
|
|
default NF_NAT_IPV4 && NF_CONNTRACK_H323
|
|
|
|
# mangle + specific targets
|
|
config IP_NF_MANGLE
|
|
tristate "Packet mangling"
|
|
default m if NETFILTER_ADVANCED=n
|
|
help
|
|
This option adds a `mangle' table to iptables: see the man page for
|
|
iptables(8). This table is used for various packet alterations
|
|
which can effect how the packet is routed.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_TARGET_CLUSTERIP
|
|
tristate "CLUSTERIP target support"
|
|
depends on IP_NF_MANGLE
|
|
depends on NF_CONNTRACK_IPV4
|
|
depends on NETFILTER_ADVANCED
|
|
select NF_CONNTRACK_MARK
|
|
help
|
|
The CLUSTERIP target allows you to build load-balancing clusters of
|
|
network servers without having a dedicated load-balancing
|
|
router/server/switch.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_TARGET_ECN
|
|
tristate "ECN target support"
|
|
depends on IP_NF_MANGLE
|
|
depends on NETFILTER_ADVANCED
|
|
---help---
|
|
This option adds a `ECN' target, which can be used in the iptables mangle
|
|
table.
|
|
|
|
You can use this target to remove the ECN bits from the IPv4 header of
|
|
an IP packet. This is particularly useful, if you need to work around
|
|
existing ECN blackholes on the internet, but don't want to disable
|
|
ECN support in general.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_TARGET_TTL
|
|
tristate '"TTL" target support'
|
|
depends on NETFILTER_ADVANCED && IP_NF_MANGLE
|
|
select NETFILTER_XT_TARGET_HL
|
|
---help---
|
|
This is a backwards-compatible option for the user's convenience
|
|
(e.g. when running oldconfig). It selects
|
|
CONFIG_NETFILTER_XT_TARGET_HL.
|
|
|
|
# raw + specific targets
|
|
config IP_NF_RAW
|
|
tristate 'raw table support (required for NOTRACK/TRACE)'
|
|
help
|
|
This option adds a `raw' table to iptables. This table is the very
|
|
first in the netfilter framework and hooks in at the PREROUTING
|
|
and OUTPUT chains.
|
|
|
|
If you want to compile it as a module, say M here and read
|
|
<file:Documentation/kbuild/modules.txt>. If unsure, say `N'.
|
|
|
|
# security table for MAC policy
|
|
config IP_NF_SECURITY
|
|
tristate "Security table"
|
|
depends on SECURITY
|
|
depends on NETFILTER_ADVANCED
|
|
help
|
|
This option adds a `security' table to iptables, for use
|
|
with Mandatory Access Control (MAC) policy.
|
|
|
|
If unsure, say N.
|
|
|
|
endif # IP_NF_IPTABLES
|
|
|
|
# ARP tables
|
|
config IP_NF_ARPTABLES
|
|
tristate "ARP tables support"
|
|
select NETFILTER_XTABLES
|
|
depends on NETFILTER_ADVANCED
|
|
help
|
|
arptables is a general, extensible packet identification framework.
|
|
The ARP packet filtering and mangling (manipulation)subsystems
|
|
use this: say Y or M here if you want to use either of those.
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
if IP_NF_ARPTABLES
|
|
|
|
config IP_NF_ARPFILTER
|
|
tristate "ARP packet filtering"
|
|
help
|
|
ARP packet filtering defines a table `filter', which has a series of
|
|
rules for simple ARP packet filtering at local input and
|
|
local output. On a bridge, you can also specify filtering rules
|
|
for forwarded ARP packets. See the man page for arptables(8).
|
|
|
|
To compile it as a module, choose M here. If unsure, say N.
|
|
|
|
config IP_NF_ARP_MANGLE
|
|
tristate "ARP payload mangling"
|
|
help
|
|
Allows altering the ARP packet payload: source and destination
|
|
hardware and network addresses.
|
|
|
|
endif # IP_NF_ARPTABLES
|
|
|
|
endmenu
|
|
|