Linux for Firewalling
To
build a Linux IP firewall, it is necessary to have a kernel built with IP
firewall support and the appropriate configuration utility. In all production
kernels prior to the 2.2 series, you would use the ipfwadm utility. The 2.2.x
kernels marked the release of the third generation of IP firewall for Linux
called IP Chains. IP chains use a program similar to ipfwadm called ipchains. Linux kernels 2.3.15 and later support the fourth generation of
Linux IP firewall called netfilter. The netfilter code is the result of a large redesign of the
packet handling flow in Linux. The netfilter is a multifaceted creature, providing direct
backward-compatible support for both ipfwadm and ipchains as well as a new alternative command called iptables.
Kernel Configured with IP Firewall:-
The
Linux kernel must be configured to support IP firewalling. There isn't much
more to it than selecting the appropriate options when performing amake menuconfig of your kernel. In 2.2 kernels you should select the following
options:
Networking options --->
[*] Network firewalls
[*] TCP/IP networking
[*] IP: firewalling
[*] IP: firewall packet logging
Firewall
packet logging is a special feature that writes a line of information about
each datagram that matches a particular firewall rule out to a special device
so you can see them.In kernels 2.4.0 and later you should select this option
instead:
Networking options --->
[*] Network packet filtering (replaces
ipchains)
IP: Netfilter Configuration --->
.
<M> Userspace queueing via
NETLINK (EXPERIMENTAL)
<M> IP tables support(required for
filtering/masq/NAT)
<M> limit match support
<M> MAC address match support
<M> netfilter MARK match support
<M> Multiple port match support
<M> TOS match support
<M> Connection state match support
<M> Unclean match support (EXPERIMENTAL)
<M> Owner match support (EXPERIMENTAL)
<M> Packet filtering
<M> REJECT target support
<M> MIRROR target support (EXPERIMENTAL)
.
<M> Packet mangling
<M> TOS target support
<M> MARK target support
<M> LOG target support
<M> ipchains (2.2-style)
support
<M> ipfwadm (2.0-style)
support
The ipfwadm Utility:-
The ipfwadm (IP Firewall
Administration) utility is the tool used to build the firewall rules for all
kernels prior to 2.2.0. Its command syntax can be very confusing because it can
do such a complicated range of things, but I will provide some common examples
that will illustrate the most important variations of these.
The ipfwadm utility is included in
most modern Linux distributions, but perhaps not by default. There may be a
specific software package for it that you have to install. If your distribution
does not include it, you can obtain the source package from ftp.xos.nl in the /pub/linux/ipfwadm/ directory, and compile it yourself.
The ipchains Utility:-
Just
as for the ipfwadm utility, the ipchains utility can be somewhat baffling to use at first. It provides all
of the flexibility of ipfwadm with a simplified command syntax, and additionally provides a
"chaining" mechanism that allows you to manage multiple rulesets and
link them together.
The ipchains command appears in most
Linux distributions based on the 2.2 kernels. If you want to compile it
yourself, you can find the source package from its developer's site at http://www.rustcorp.com/linux/ipchains/. Included in the source package is a wrapper
script called ipfwadm-wrapper that mimics the ipfwadm command, but actually invokes the ipchains command. Migration of an existing firewall
configuration is much more painless with this addition.
The iptables Utility:-
The
syntax of the iptables utility is quite similar to that of the ipchains syntax. The changes are
improvements and a result of the tool being redesigned to be extensible through
shared libraries. Just as for ipchains,I will present iptables equivalents of the examples so you can compare
and contrast its syntax with the others.
The iptables utility is included in
the netfilter source package available at http://www.samba.org/netfilter/. It will also be included in any Linux
distribution based on the 2.4 series kernels.
No comments:
Post a Comment