Download - An Iptables Guide & Tutorial
-
8/2/2019 An Iptables Guide & Tutorial
1/49
An iptables guide & tutorial - iptablesrocks.org
home | syntax & structure | examples | faq | contact | links
Welcome to Iptablesrocks.org
come to iptablesrocks.org! Iptablesrocks was created to provide a publicly available, easy to understand guide and tutorial for the installatiofiguration of iptables. Iptables is a linux package for managing IPv4 (and optionally IPv6) packet filtering and NAT (Network Address Transla
bles can be configured to function as a firewall, a NAT mechanism, a packet filter or all 3 at once. The diversity of capabilities possible with kes it a secure, stable and economical alterative to hardware based firewalls and routers or costly 3rd party firewall software. Iptables can alve as a rendundant firewall in conjunction with a hardware firewall, providing you with an extra layer of security. Iptablesrocks.org covers theallation of iptables in a Redhat environment, the syntax and structure associated with iptables and a collection a pre-configured iptablesfigurations for a variety of applications. This site is currently under development. Enjoy!
The iptablesrocks.org iptables firewall setup guide Quick links to need specific iptables configurat
overview of the iptablesrocks firewall
p 1:System requirements & Pre-configuration
p 2:Deploying a safety net.
p 3:The iptables firewall ruleset
p 4: Testing functionality
p 5:Installing Iptables Log Analyzer
p 6:Maintaining & modifying your firewall and starting it on boot
p 7:Feedback
general web server firewall
linux gateway w/DSL connection
linux gateway w/Cable connection
sever to server trusted connections
word of advise: Before you make any changes to your iptables configuration, you should read about pre-configuration precautions!
2666
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/ [2/13/2004 8:04:42 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
2/49
ptablesrocks.org - Syntax & Structure
home | syntax & structure | examples | faq | contact | links
Syntax & Structure
iptables manual page is the best resource for learning all of the possible syntax options for iptables:
bles man page
An iptables syntax quick reference
king a look at what you have
ables -L [chain] - Lists your current iptables configuration
king modifications
ables -A [chain] - Append a rule to a desired chain in the current configuration
ables -D [chain] - Delete a rule from a desired chain in the current configuration
ables -R [chain] - Replace an existing rule from a desired chain in the current configuration
ables - I [chain] - (that's a capital I as in Insert) Insert a new rule into a desired chain of the current configuration
ables -N [chain]- Create a new chain
ables -X [chain] - Delete a chain
tting rid of all rules and starting over
able -X - Delete all chains
ables -F - Flush the table of all contents
porting & Exporting
ables-save > filename - exports the current iptables configuration to a flat file.
ables-restore < filename - imports an iptables configuration from a flat file and overwrites the current configuration.
re syntax & structure information coming soon!
home | syntax & structure | examples | faq | contact | links
ttp://www.iptablesrocks.org/syntax/ (1 of 2) [2/13/2004 8:04:43 PM]
-
8/2/2019 An Iptables Guide & Tutorial
3/49
ptablesrocks.org - Syntax & Structure
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/syntax/ (2 of 2) [2/13/2004 8:04:43 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
4/49
-
8/2/2019 An Iptables Guide & Tutorial
5/49
ptablesrocks.org - Examples
ttp://www.iptablesrocks.org/examples/ (2 of 2) [2/13/2004 8:04:44 PM]
http://www.rocksproject.org/ -
8/2/2019 An Iptables Guide & Tutorial
6/49
-
8/2/2019 An Iptables Guide & Tutorial
7/49
ptablesrocks.org - Contact
home | syntax & structure | examples | faq | contact | links
Contact Iptablesrocks.org
If you would like to contact me, please fill out the form below and then click "Send It!".
Your name:
Your e-mail:
Comments/Questions:
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/contact/ [2/13/2004 8:04:45 PM]
Send It!
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
8/49
ptablesrocks.org - Links
home | syntax & structure | examples | faq | contact | links
Linksollection of useful links.
Netfilter/Iptables Project - http://www.netfilter.org/
uxguruz Iptables Tutorial - http://www.linuxguruz.com/iptables/howto/iptables-HOWTO.html
ailrocks.org - My qmail installation guide
dnsrocks.org - My djbdns installation guide
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/links/ [2/13/2004 8:04:45 PM]
http://www.netfilter.org/http://www.linuxguruz.com/iptables/howto/iptables-HOWTO.htmlhttp://www.qmailrocks.org/http://www.djbdnsrocks.org/http://www.rocksproject.org/mailto:[email protected]://www.djbdnsrocks.org/http://www.qmailrocks.org/http://www.linuxguruz.com/iptables/howto/iptables-HOWTO.htmlhttp://www.netfilter.org/ -
8/2/2019 An Iptables Guide & Tutorial
9/49
ptablesrocks.org - Maintaining, modifying and more...
home | syntax & structure | examples | faq | contact | links
The iptablesrocks.org iptables firewall setup guidentaining & modifying your firewall and starting it on boot:
ntenance
ntaining your iptables firewall is pretty easy. The only thing you will want to keep an eye on is the logs at /var/log/firewall. The logs can let yoen your server is being probed or when an attack is being attempted, this allowing you to take appropriate action. Once you start viewing you
are going to notice that almost every hour of every day someone is going to be trying to gain access to your server, find an exploit on your sttack your server. This is normal. Attackers simply scan entire networks for vulnerable servers, so don't take scans and attempted intrusions
sonally. Every publicly available server out there gets probed and scanned all the time, so don't think you are special and that you need to caor something rash like that. The fact is that anytime your see unsuccessful attempts to break into your server or attack it, that's a good thingause it means that the attackers were not able to succeed. It means your server is secure and your firewall is working. In other words, failurelogged are a sign of a secure server.
may also want to make sure that you have a log rotation schedule set up for the firewall logs. The logs can get quite large, so you will wantp them in check by rotating them out on a regular basis.
difications
so you've got your firewall up and running. But what if you need to make a change to the rules? What if you need to open up another port? want to close a certain unused port? What if you want to block someone from your server? Get the answers right here.
at if I want to open another port?
le it is possible to append rules to your live iptables configuration, I find that the best way to make changes is to change the firewall script itsn re-import the script back into the iptables configuration. In terms of this site's setup, this means that you will want to edit the /root/primary_f
Within this config file you can add rules or remove rules and then import the new firewall into the iptables ruleset.
let's take an example
mple: I want to allow inbound "tcp" traffic to port 139
do this you would add the following line to the "INPUT" section of the /root/primary_firewall script:
NPUT -p tcp -m tcp --dport 139 -j ACCEPT
s go over what this line does...
- this tells iptables to "append" the new rule to the current iptables ruleset.
UT - The new rule will be appended to the "INPUT" portion of the ruleset, which controls inbound server traffic.
- Indicates what protocol the rule applies to. Popular protocols are "tcp", "udp", "icmp" and several others.
- Indicates a matching protocal value. Usually, this is set to the same value as the -p flag.
port - Specifies the destination port to which the traffic will be directed. In this case, it's port 139.
Instructs the firewall to "jump" to specified state. In this case, request to TCP port 139 "jump" to "ACCEPT" and are threfore accepted and a
ass through the firewall.
CEPT - As denoted above, this is the state that the rule "jumps" to. In the example above, any inbound traffic to TCP port 139 will "jump" to CEPT" state, and thus will be able to pass through the firewall.
he breakdown above should tell you that the rule we are adding is going to allow all inbound traffic to TCP port 139. Once you add that line
ttp://www.iptablesrocks.org/guide/maintain.php (1 of 3) [2/13/2004 8:04:47 PM]
-
8/2/2019 An Iptables Guide & Tutorial
10/49
ptablesrocks.org - Maintaining, modifying and more...
PUT" section of the firewall script, you can then import the new firewall with the following command:
bles-restore < /root/primary_firewall
w, now wasn't that easy?
at if I want to close a port?
answer to this is similar to the previous question. However, you need to remember that your firewall, as it stands now, automatically blocksound, outbound and fowarded traffic by default. The only way that a port gets opened is if there is a rule telling the firewall to open that port.
s take an example...
mple: I was to close TCP port 143 inbound.
he firewall script that comes with this guide, you will notice the following entry that open up inbound traffic to TCP port 143 (For IMAP). That ks like this:
NPUT -p tcp -m tcp --dport 143 -j ACCEPT
l, if you wanted to close port 143, all you would have to do is edit the firewall script at /root/primary_firewall and remove that line. Once the lie and you've saved the changes, you would activate the change by re-importing the firewall script back into the iptables ruleset like so
ables-restore < /root/primary_firewall
w wasn't that easy?
w, let's take another example so that I can demonstrate something that you DON'T need to worry about.
mple: I want to block all inbound traffic to TCP port 3389.
in, let's take the firewall that comes with this guide. All of the sudden you get it in your head that you need to close TCP port 3389. What to dl, if you take a look at the firewall script you will notice that TCP port 3389 is not mentioned anywhere in the script and, to be more specific,
ntioned in the "INPUT" portion of the script. Well, since our firewall is configured to block ALL traffic by default and only open ports on reques
LREADY CLOSED. In other words, you don't need to worry about that port because it has been automatically closed by the firewall. The on
ould be open is if you created a specific rule that rquested that the port be open. Get it?
at if I want to completely block someone from my server?
procedure for this is just the same as the ones above. Basically, all you're going to do is edit the firewall script, add a rule to block whoeverchanges and then re-import the firewall script back into the server's ruleset. Easy as hell.
et's take an example:
mple: I want to block anyone from the host 1.2.3.4 from accessing my server.
en the /root/primary_firewall script and add the following line to the INPUT section of the script:
NPUT -s 1.2.3.4 -j DROP
w let's break that down to see what this rule is doing..
- this tells iptables to "append" the new rule to the current iptables ruleset.
UT - The new rule will be appended to the "INPUT" portion of the ruleset, which controls inbound server traffic.
Specifies the source address of the request. In this case we are specifying 1.2.3.4 as the source.
Instructs the firewall to "jump" to specified state. In this case, request coming from source 1.2.3.4 "jump" to a DENY state, thus blocking anym that addresss from accessing your server at all.
ttp://www.iptablesrocks.org/guide/maintain.php (2 of 3) [2/13/2004 8:04:47 PM]
-
8/2/2019 An Iptables Guide & Tutorial
11/49
-
8/2/2019 An Iptables Guide & Tutorial
12/49
ptablesrocks.org - Feedback
home | syntax & structure | examples | faq | contact | links
The iptablesrocks.org iptables firewall setup guidedback:
Now that you've finished the iptablesrocks.org iptables setup guide, please provide me with some feedback.
What do you think of the setup guide? It stinks! Not very good It was ok Very helpful Excellent
Your Name: (required)
Your E-mail: (required)
Any comments/suggestions?
May we post your comments on this website? Yes No(your name & e-mail address will not be posted)
A note on privacy: Some people worry about providing their e-mail address on the form. You don't need to worry. The onlyreason I require your e-mail address is so that I can personally reply to any questions or comments you may have. I won't put
your e-mail address on any list or anything like that. I'm hate spam just as much as you do. :)
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/guide/feedback.php [2/13/2004 8:04:47 PM]
Submit Feedback
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
13/49
ptablesrocks.org - safety precautions
home | syntax & structure | examples | faq | contact | links
iptables pre-configuration safety precautionsking changes to your server's firewall/routing configuration can be very tricky. One simple mistake can result in your being completely lockedr server. If the server you are working on is remotely hosted, this can cause prolonged downtime and a tech support nightmare. In short, it c
or pain in the ass.
this reason, anytime you are making changes to your server's firewall or routing config via iptables, you should first take a few minutes to
lement some "disaster recovery" measures that can be automatically triggered should you accidentally lock yourself out of your server.
enver I'm making any major changes to my firewall, I like to implement a "disaster recovery" measure by means of a crontab entry. I do this ating a simple crontab entry that runs every 15 minutes or so. This crontab entry runs a command which simply resets my server's iptables
figuration to a completely open setting. That is, it sets my iptables configuration so that the server will accept all incoming, outgoing and forwuests. In this way, should I screw up at some point and lock myself out of my server, I will only need to wait a maximum of 10 minutes beforefirewall rules will be dropped and I'll be able to shell into my server again. If you are a newbie at iptables, or even a seasoned pro, this little
asure can be a lifesaver. Everyone makes mistakes every now and then, and this measure will ensure that a mistake made in your firewallfiguration doesn't turn into a nightmare!
here's how you do it....
into your server as the root user.
t, create a iptables import script that, when imported, will reset the iptables configuration to a default "accept all" state:
root/iptables.open
erPUT ACCEPT [164:15203]RWARD ACCEPT [0:0]TPUT ACCEPT [147:63028]
MMITangleEROUTING ACCEPT [164:15203]
PUT ACCEPT [164:15203]RWARD ACCEPT [0:0]TPUT ACCEPT [147:63028]STROUTING ACCEPT [147:63028]MMITtEROUTING ACCEPT [14:672]STROUTING ACCEPT [9:684]TPUT ACCEPT [9:684]
MMIT
w save and exit.
w let's set up a crontab entry that will import the reset configuration every 15 minutes...
ntab -e
* * * * /sbin/iptables-restore < /root/iptables.open
e and exit from the crontab editor
All done.
w let's review what this is going to do to your server...
ce you enable the crontab, your server is going to reset it's iptables configuration every 15 minutes. This means that every 15 minutes you w
ttp://www.iptablesrocks.org/precautions.php (1 of 2) [2/13/2004 8:04:48 PM]
-
8/2/2019 An Iptables Guide & Tutorial
14/49
ptablesrocks.org - safety precautions
previous settings and you server will be in a "accept all" state where it accepts any incoming, outgoing and forward packet requests. You cenot want to leave this crontab running if you are not actively working on your iptables configuration. The sole of this crontab is to provide a sashould you accidentally screw up and lock yourself out of your server while you are implementing or testing new iptables configurations. Witntab running, should you lock yourself out you will only have to wait a maximum of 15 minutes before the iptables configuration resets and yo
e to log into your server again.
u should always disable this crontab entry once you are finished modifying your iptables configuration.
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/precautions.php (2 of 2) [2/13/2004 8:04:48 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
15/49
ttp://www.iptablesrocks.org/examples/scripts/web_server.config
import this saved configuration into your iptables configuration with the following command:
iptables-restore < web_server.config
at
REROUTING ACCEPT [127173:7033011]
OSTROUTING ACCEPT [31583:2332178]
UTPUT ACCEPT [32021:2375633]
MMIT
angle
REROUTING ACCEPT [444:43563]
NPUT ACCEPT [444:43563] :FORWARD ACCEPT [0:0]
UTPUT ACCEPT [402:144198]
OSTROUTING ACCEPT [402:144198]
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROPPREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
MMIT
ilter
NPUT DROP [1:242]
ORWARD DROP [0:0]
UTPUT DROP [0:0]
cmp_packets - [0:0]INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
INPUT -p tcp -m tcp --dport 20 -j ACCEPT
INPUT -p tcp -m tcp --dport 21 -j ACCEPT
INPUT -p tcp -m tcp --dport 22 -j ACCEPT
INPUT -p tcp -m tcp --dport 25 -j ACCEPT
INPUT -p tcp -m tcp --dport 43 -j ACCEPT
INPUT -p udp -m udp --dport 53 -j ACCEPT
INPUT -p tcp -m tcp --dport 80 -j ACCEPT
INPUT -p tcp -m tcp --dport 110 -j ACCEPT
INPUT -p udp -m udp --dport 123 -j ACCEPT
INPUT -p tcp -m tcp --dport 143 -j ACCEPT
INPUT -p tcp -m tcp --dport 443 -j ACCEPT
INPUT -p tcp -m tcp --dport 783 -j ACCEPT
INPUT -p tcp -m tcp --dport 993 -j ACCEPT
INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
INPUT -p tcp -m tcp --dport 12000 -j ACCEPT
INPUT -p tcp -m tcp --dport 15000 -j ACCEPT
INPUT -s 127.0.0.1 -j ACCEPT
INPUT -p icmp -j icmp_packets
INPUT -j LOG --log-prefix "IPTABLES-IN Default Drop: " --log-level 7
OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
OUTPUT -p tcp -m tcp --dport 20 -j ACCEPT
ttp://www.iptablesrocks.org/examples/scripts/web_server.config (1 of 2) [2/13/2004 8:04:48 PM]
-
8/2/2019 An Iptables Guide & Tutorial
16/49
ttp://www.iptablesrocks.org/examples/scripts/web_server.config
OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 23 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 43 -j ACCEPT
OUTPUT -p udp -m udp --dport 53 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
OUTPUT -p udp -m udp --dport 123 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 143 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 443 -j ACCEPTOUTPUT -p tcp -m tcp --dport 783 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 993 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 12000 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 15000 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 2210 -j ACCEPT
OUTPUT -d 127.0.0.1 -j ACCEPT
OUTPUT -p icmp -j icmp_packets
OUTPUT -j LOG --log-prefix "IPTABLES-OUT Default Drop: " --log-level 7
icmp_packets -p icmp -m icmp --icmp-type 0 -j ACCEPT
icmp_packets -s 127.0.0.1 -p icmp -m icmp --icmp-type 8 -j ACCEPTicmp_packets -p icmp -m icmp --icmp-type 8 -j DROP
icmp_packets -p icmp -m icmp --icmp-type 3 -j ACCEPT
icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
MMIT
ttp://www.iptablesrocks.org/examples/scripts/web_server.config (2 of 2) [2/13/2004 8:04:48 PM]
-
8/2/2019 An Iptables Guide & Tutorial
17/49
Manpage of IPTABLES
ontent-type: text/html
PTABLES
ection: (8)
pdated: Mar 09, 2002
dexReturn to Main Contents
NAME
tables - administration tool for IPv4 packet filtering and NAT
SYNOPSIS
tables [-t table] -[ADC] chain rule-specification [options]
tables [-t table] -I chain [rulenum] rule-specification [options]
tables [-t table] -R chain rulenum rule-specification [options]
tables [-t table] -D chain rulenum [options]
tables [-t table] -[LFZ] [chain] [options]
tables [-t table] -N chain
tables [-t table] -X [chain]tables [-t table] -P chain target [options]
tables [-t table] -E old-chain-name new-chain-name
DESCRIPTION
tables is used to set up, maintain, and inspect the tables of IP packet filter rules in the Linux kernel
everal different tables may be defined. Each table contains a number of built-in chains and may also
ntain user-defined chains.
ach chain is a list of rules which can match a set of packets. Each rule specifies what to do with a pa
at matches. This is called a `target', which may be a jump to a user-defined chain in the same table.
TARGETS
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (1 of 20) [2/13/2004 8:04:51 PM]
http://-/?-http://localhost/cgi-bin/man/man2htmlhttp://localhost/cgi-bin/man/man2htmlhttp://-/?- -
8/2/2019 An Iptables Guide & Tutorial
18/49
Manpage of IPTABLES
firewall rule specifies criteria for a packet, and a target. If the packet does not match, the next rule i
e chain is the examined; if it does match, then the next rule is specified by the value of the target, w
n be the name of a user-defined chain or one of the special valuesACCEPT,DROP, QUEUE, or
ETURN.
CCEPTmeans to let the packet through.DROP means to drop the packet on the floor. QUEUEmea
pass the packet to userspace (if supported by the kernel).RETURNmeans stop traversing this chaind resume at the next rule in the previous (calling) chain. If the end of a built-in chain is reached or a
le in a built-in chain with targetRETURNis matched, the target specified by the chain policy
termines the fate of the packet.
TABLES
here are currently three independent tables (which tables are present at any time depends on the kern
nfiguration options and which modules are present).
--table table
This option specifies the packet matching table which the command should operate on. If the
kernel is configured with automatic module loading, an attempt will be made to load the
appropriate module for that table if it is not already there.
The tables are as follows:
ter
This is the default table (if no -t option is passed). It contains the built-in chains INPUT (forpackets coming into the box itself), FORWARD (for packets being routed through the box), a
OUTPUT (for locally-generated packets).
at
This table is consulted when a packet that creates a new connection is encountered. It consists
three built-ins: PREROUTING (for altering packets as soon as they come in), OUTPUT (for
altering locally-generated packets before routing), and POSTROUTING (for altering packets
they are about to go out).
angle
This table is used for specialized packet alteration. Until kernel 2.4.17 it had two built-in chainPREROUTING (for altering incoming packets before routing) and OUTPUT (for altering lo
generated packets before routing). Since kernel 2.4.18, three other built-in chains are also
supported: INPUT (for packets coming into the box itself), FORWARD (for altering packets
being routed through the box), and POSTROUTING (for altering packets as they are about to
out).
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (2 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
19/49
Manpage of IPTABLES
OPTIONS
he options that are recognized by iptables can be divided into several different groups.
OMMANDS
hese options specify the specific action to perform. Only one of them can be specified on the commane unless otherwise specified below. For all the long versions of the command and option names, yo
ed to use only enough letters to ensure that iptables can differentiate it from all other options.
A, --append chain rule-specification
Append one or more rules to the end of the selected chain. When the source and/or destination
names resolve to more than one address, a rule will be added for each possible address
combination.
D, --delete chain rule-specification
D, --delete chain rulenumDelete one or more rules from the selected chain. There are two versions of this command: the
can be specified as a number in the chain (starting at 1 for the first rule) or a rule to match.
--insert chain [rulenum] rule-specification
Insert one or more rules in the selected chain as the given rule number. So, if the rule number i
the rule or rules are inserted at the head of the chain. This is also the default if no rule number
specified.
R, --replace chain rulenum rule-specification
Replace a rule in the selected chain. If the source and/or destination names resolve to multiple
addresses, the command will fail. Rules are numbered starting at 1.L, --list [chain]
List all rules in the selected chain. If no chain is selected, all chains are listed. As every other
iptables command, it applies to the specified table (filter is the default), so NAT rules get listed
iptables -t nat -n -L
Please note that it is often used with the -n option, in order to avoid long reverse DNS lookups
is legal to specify the -Z (zero) option as well, in which case the chain(s) will be atomically lis
and zeroed. The exact output is affected by the other arguments given. The exact rules are
suppressed until you use
iptables -L -v
, --flush [chain]
Flush the selected chain (all the chains in the table if none is given). This is equivalent to delet
all the rules one by one.
, --zero [chain]
Zero the packet and byte counters in all chains. It is legal to specify the -L, --list (list) option a
well, to see the counters immediately before they are cleared. (See above.)
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (3 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
20/49
Manpage of IPTABLES
N, --new-chain chain
Create a new user-defined chain by the given name. There must be no target of that name alrea
X, --delete-chain [chain]
Delete the optional user-defined chain specified. There must be no references to the chain. If t
are, you must delete or replace the referring rules before the chain can be deleted. If no argume
is given, it will attempt to delete every non-builtin chain in the table.
, --policy chain target
Set the policy for the chain to the given target. See the section TARGETS for the legal targetsOnly built-in (non-user-defined) chains can have policies, and neither built-in nor user-defined
chains can be policy targets.
E, --rename-chain old-chain new-chain
Rename the user specified chain to the user supplied name. This is cosmetic, and has no effect
the structure of the table.
Help. Give a (currently very brief) description of the command syntax.
ARAMETERS
he following parameters make up a rule specification (as used in the add, delete, insert, replace and
pend commands).
, --protocol [!]protocol
The protocol of the rule or of the packet to check. The specified protocol can be one of tcp, ud
icmp, or all, or it can be a numeric value, representing one of these protocols or a different one
protocol name from /etc/protocols is also allowed. A "!" argument before the protocol inverts
test. The number zero is equivalent to all. Protocol all will match with all protocols and is take
default when this option is omitted.
--source [!] address[/mask]
Source specification.Address can be either a network name, a hostname (please note that
specifying any name to be resolved with a remote query such as DNS is a really bad idea), a
network IP address (with /mask), or a plain IP address. The maskcan be either a network mask
a plain number, specifying the number of 1's at the left side of the network mask. Thus, a mask
24 is equivalent to 255.255.255.0. A "!" argument before the address specification inverts thesense of the address. The flag --src is an alias for this option.
, --destination [!] address[/mask]
Destination specification. See the description of the -s (source) flag for a detailed description o
the syntax. The flag --dst is an alias for this option.
--jump target
This specifies the target of the rule; i.e., what to do if the packet matches it. The target can be
user-defined chain (other than the one this rule is in), one of the special builtin targets which
decide the fate of the packet immediately, or an extension (see EXTENSIONS below). If this
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (4 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
21/49
Manpage of IPTABLES
option is omitted in a rule, then matching the rule will have no effect on the packet's fate, but t
counters on the rule will be incremented.
--in-interface [!] name
Name of an interface via which a packet is going to be received (only for packets entering the
INPUT, FORWARD and PREROUTING chains). When the "!" argument is used before the
interface name, the sense is inverted. If the interface name ends in a "+", then any interface wh
begins with this name will match. If this option is omitted, any interface name will match.
, --out-interface [!] nameName of an interface via which a packet is going to be sent (for packets entering the FORWA
OUTPUT and POSTROUTING chains). When the "!" argument is used before the interface
name, the sense is inverted. If the interface name ends in a "+", then any interface which begin
with this name will match. If this option is omitted, any interface name will match.
-f, --fragment
This means that the rule only refers to second and further fragments of fragmented packets. Si
there is no way to tell the source or destination ports of such a packet (or ICMP type), such a
packet will not match any rules which specify them. When the "!" argument precedes the "-f"
the rule will only match head fragments, or unfragmented packets., --set-counters PKTS BYTES
This enables the administrator to initialize the packet and byte counters of a rule (during INSE
APPEND,REPLACE operations).
THER OPTIONS
he following additional options can be specified:
, --verbose
Verbose output. This option makes the list command show the interface name, the rule options
any), and the TOS masks. The packet and byte counters are also listed, with the suffix 'K', 'M'
'G' for 1000, 1,000,000 and 1,000,000,000 multipliers respectively (but see the -x flag to chan
this). For appending, insertion, deletion and replacement, this causes detailed information on t
rule or rules to be printed.
, --numeric
Numeric output. IP addresses and port numbers will be printed in numeric format. By default,
program will try to display them as host names, network names, or services (whenever applica
, --exact
Expand numbers. Display the exact value of the packet and byte counters, instead of only the
rounded number in K's (multiples of 1000) M's (multiples of 1000K) or G's (multiples of 1000
This option is only relevant for the -L command.
ine-numbers
When listing rules, add line numbers to the beginning of each rule, corresponding to that rule's
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (5 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
22/49
Manpage of IPTABLES
position in the chain.
modprobe=command
When adding or inserting rules into a chain, use command to load any necessary modules (tar
match extensions, etc).
MATCH EXTENSIONS
tables can use extended packet matching modules. These are loaded in two ways: implicitly, when
protocol is specified, or with the -m or --match options, followed by the matching module name; a
ese, various extra command line options become available, depending on the specific module. You
ecify multiple extended match modules in one line, and you can use the -h or --help options after th
odule has been specified to receive help specific to that module.
he following are included in the base package, and most of these can be preceded by a ! to invert thense of the match.
cp
hese extensions are loaded if `--protocol tcp' is specified. It provides the following options:
source-port [!]port[:port]
Source port or port range specification. This can either be a service name or a port number. An
inclusive range can also be specified, using the formatport:port. If the first port is omitted, "0
assumed; if the last is omitted, "65535" is assumed. If the second port greater then the first the
will be swapped. The flag --sport is a convenient alias for this option.
destination-port [!]port[:port]
Destination port or port range specification. The flag --dport is a convenient alias for this opti
tcp-flags [!] maskcomp
Match when the TCP flags are as specified. The first argument is the flags which we should
examine, written as a comma-separated list, and the second argument is a comma-separated lis
flags which must be set. Flags are: SYN ACK FIN RST URG PSH ALL NONE. Hence the
command
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
will only match packets with the SYN flag set, and the ACK, FIN and RST flags unset.
--syn
Only match TCP packets with the SYN bit set and the ACK and FIN bits cleared. Such packet
used to request TCP connection initiation; for example, blocking such packets coming in an
interface will prevent incoming TCP connections, but outgoing TCP connections will be
unaffected. It is equivalent to --tcp-flags SYN,RST,ACK SYN. If the "!" flag precedes the "-
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (6 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
23/49
Manpage of IPTABLES
syn", the sense of the option is inverted.
tcp-option [!] number
Match if TCP option set.
mss value[:value]
Match TCP SYN or SYN/ACK packets with the specified MSS value (or range), which contro
maximum packet size for that connection.
dp
hese extensions are loaded if `--protocol udp' is specified. It provides the following options:
source-port [!]port[:port]
Source port or port range specification. See the description of the --source-port option of the
extension for details.destination-port [!]port[:port]
Destination port or port range specification. See the description of the --destination-port optio
the TCP extension for details.
cmp
his extension is loaded if `--protocol icmp' is specified. It provides the following option:
cmp-type [!] typename
This allows specification of the ICMP type, which can be a numeric ICMP type, or one of the
ICMP type names shown by the command
iptables -p icmp -h
mac
mac-source [!] address
Match source MAC address. It must be of the form XX:XX:XX:XX:XX:XX. Note that this on
makes sense for packets coming from an Ethernet device and entering the PREROUTING,
FORWARD or INPUT chains.
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (7 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
24/49
Manpage of IPTABLES
mit
his module matches at a limited rate using a token bucket filter. A rule using this extension will matc
ntil this limit is reached (unless the `!' flag is used). It can be used in combination with the LOG targ
give limited logging, for example.
imit rate
Maximum average matching rate: specified as a number, with an optional `/second', `/minute',
`/hour', or /day' suffix; the default is 3/hour.
imit-burst number
Maximum initial number of packets to match: this number gets recharged by one every time th
limit specified above is not reached, up to this number; the default is 5.
multiport
his module matches a set of source or destination ports. Up to 15 ports can be specified. It can only b
ed in conjunction with -p tcp or -p udp.
source-portsport[,port[,port...]]
Match if the source port is one of the given ports. The flag --sports is a convenient alias for th
option.destination-portsport[,port[,port...]]
Match if the destination port is one of the given ports. The flag --dports is a convenient alias f
this option.
portsport[,port[,port...]]
Match if the both the source and destination ports are equal to each other and to one of the giv
ports.
mark
his module matches the netfilter mark field associated with a packet (which can be set using the MA
rget below).
mark value[/mask]
Matches packets with the given unsigned mark value (if a mask is specified, this is logically
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (8 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
25/49
Manpage of IPTABLES
ANDed with the mask before the comparison).
wner
his module attempts to match various characteristics of the packet creator, for locally-generated pac
is only valid in the OUTPUT chain, and even this some packets (such as ICMP ping responses) ma
ve no owner, and hence never match.
uid-owner userid
Matches if the packet was created by a process with the given effective user id.
gid-owner groupid
Matches if the packet was created by a process with the given effective group id.
pid-ownerprocessid
Matches if the packet was created by a process with the given process id.
sid-owner sessionid
Matches if the packet was created by a process in the given session group.
cmd-owner name
Matches if the packet was created by a process with the given command name. (this option is
present only if iptables was compiled under a kernel supporting this feature)
tate
his module, when combined with connection tracking, allows access to the connection tracking state
is packet.
state state
Where state is a comma separated list of the connection states to match. Possible states are
INVALID meaning that the packet is associated with no known connection, ESTABLISHED
meaning that the packet is associated with a connection which has seen packets in both directi
NEW meaning that the packet has started a new connection, or otherwise associated with aconnection which has not seen packets in both directions, and RELATED meaning that the pa
is starting a new connection, but is associated with an existing connection, such as an FTP dat
transfer, or an ICMP error.
onntrack
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (9 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
26/49
Manpage of IPTABLES
his module, when combined with connection tracking, allows access to more connection tracking
formation than the "state" match. (this module is present only if iptables was compiled under a kern
pporting this feature)
ctstate state
Where state is a comma separated list of the connection states to match. Possible states are
INVALID meaning that the packet is associated with no known connection, ESTABLISHEDmeaning that the packet is associated with a connection which has seen packets in both directi
NEW meaning that the packet has started a new connection, or otherwise associated with a
connection which has not seen packets in both directions, and RELATED meaning that the pa
is starting a new connection, but is associated with an existing connection, such as an FTP dat
transfer, or an ICMP error. SNAT A virtual state, matching if the original source address diffe
from the reply destination. DNAT A virtual state, matching if the original destination differs f
the reply source.
ctprotoproto
Protocol to match (by number or name)
ctorigsrc [!] address[/mask]
Match against original source address
ctorigdst [!] address[/mask]
Match against original destination address
ctreplsrc [!] address[/mask]
Match against reply source address
ctrepldst [!] address[/mask]
Match against reply destination address
ctstatus [NONE|EXPECTED|SEEN_REPLY|ASSURED][,...]
Match against internal conntrack states
ctexpire time[:time]
Match remaining lifetime in seconds against given value or range of values (inclusive)
scp
his module matches the 6 bit DSCP field within the TOS field in the IP header. DSCP has supersedeOS within the IETF.
dscp value
Match against a numeric (decimal or hex) value [0-32].
dscp-classDiffServ Class
Match the DiffServ class. This value may be any of the BE, EF, AFxx or CSx classes. It will th
be converted into it's according numeric value.
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (10 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
27/49
Manpage of IPTABLES
kttype
his module matches the link-layer packet type.
pkt-type [unicast|broadcast|multicast]
os
his module matches the 8 bits of Type of Service field in the IP header (ie. including the precedence
ts).
tos tosThe argument is either a standard name, (use
iptables -m tos -h
to see the list), or a numeric value to match.
h
his module matches the SPIs in AH header of IPSec packets.
ahspi [!] spi[:spi]
sp
his module matches the SPIs in ESP header of IPSec packets.
espspi [!] spi[:spi]
ength
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (11 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
28/49
Manpage of IPTABLES
his module matches the length of a packet against a specific value or range of values.
ength length[:length]
l
his module matches the time to live field in the IP header.
ttl ttl
Matches the given TTL value.
nclean
his module takes no options, but attempts to match packets which seem malformed or unusual. This
garded as experimental.
TARGET EXTENSIONS
tables can use extended target modules: the following are included in the standard distribution.
OG
urn on kernel logging of matching packets. When this option is set for a rule, the Linux kernel will p
me information on all matching packets (like most IP header fields) via the kernel log (where it can
ad with dmesg or syslogd(8)). This is a "non-terminating target", i.e. rule traversal continues at the n
le. So if you want to LOG the packets you refuse, use two separate rules with the same matching
iteria, first using target LOG then DROP (or REJECT).
og-level level
Level of logging (numeric or see syslog.conf(5)).
og-prefixprefix
Prefix log messages with the specified prefix; up to 29 letters long, and useful for distinguishin
messages in the logs.
og-tcp-sequence
Log TCP sequence numbers. This is a security risk if the log is readable by users.
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (12 of 20) [2/13/2004 8:04:51 PM]
http://localhost/cgi-bin/man/man2html?8+syslogdhttp://localhost/cgi-bin/man/man2html?5+syslog.confhttp://localhost/cgi-bin/man/man2html?5+syslog.confhttp://localhost/cgi-bin/man/man2html?8+syslogd -
8/2/2019 An Iptables Guide & Tutorial
29/49
Manpage of IPTABLES
og-tcp-options
Log options from the TCP packet header.
og-ip-options
Log options from the IP packet header.
MARK
his is used to set the netfilter mark value associated with the packet. It is only valid in the mangle ta
can for example be used in conjunction with iproute2.
set-mark mark
EJECT
his is used to send back an error packet in response to the matched packet: otherwise it is equivalent
ROP so it is a terminating TARGET, ending rule traversal. This target is only valid in the INPUT,
ORWARD and OUTPUT chains, and user-defined chains which are only called from those chains
llowing option controls the nature of the error packet returned:
reject-with type
The type given can be icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachaicmp-proto-unreachable, icmp-net-prohibited oricmp-host-prohibited, which return the
appropriate ICMP error message (port-unreachable is the default). The option tcp-reset can
used on rules which only match the TCP protocol: this causes a TCP RST packet to be sent ba
This is mainly useful for blocking ident(113/tcp) probes which frequently occur when sending
mail to broken mail hosts (which won't accept your mail otherwise).
OS
his is used to set the 8-bit Type of Service field in the IP header. It is only valid in the mangle table
set-tos tos
You can use a numeric TOS values, or use
iptables -j TOS -h
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (13 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
30/49
Manpage of IPTABLES
to see the list of valid TOS names.
MIRROR
his is an experimental demonstration target which inverts the source and destination fields in the IP
ader and retransmits the packet. It is only valid in the INPUT, FORWARD and PREROUTING
ains, and user-defined chains which are only called from those chains. Note that the outgoing packe
e NOT seen by any packet filtering chains, connection tracking or NAT, to avoid loops and other
oblems.
NAT
his target is only valid in the nat table, in the POSTROUTING chain. It specifies that the source
dress of the packet should be modified (and all future packets in this connection will also be mangld rules should cease being examined. It takes one type of option:
to-source ipaddr[-ipaddr][:port-port]
which can specify a single new source IP address, an inclusive range of IP addresses, and
optionally, a port range (which is only valid if the rule also specifies -p tcp or -p udp). If no p
range is specified, then source ports below 512 will be mapped to other ports below 512: those
between 512 and 1023 inclusive will be mapped to ports below 1024, and other ports will be
mapped to 1024 or above. Where possible, no port alteration will occur.
ou can add several --to-source options. If you specify morethan one source address, either via an address range or multiple --to-source options, a simple r
robin (one after another in cycle) takes place between these adresses.
NAT
his target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defin
ains which are only called from those chains. It specifies that the destination address of the packet
ould be modified (and all future packets in this connection will also be mangled), and rules should
ase being examined. It takes one type of option:
to-destination ipaddr[-ipaddr][:port-port]
which can specify a single new destination IP address, an inclusive range of IP addresses, and
optionally, a port range (which is only valid if the rule also specifies -p tcp or -p udp). If no p
range is specified, then the destination port will never be modified.
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (14 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
31/49
Manpage of IPTABLES
ou can add several --to-destination options. If you specify more
than one destination address, either via an address range or multiple --to-destination options, a
simple round-robin (one after another in cycle) load balancing takes place between these adres
MASQUERADE
his target is only valid in the nat table, in the POSTROUTING chain. It should only be used with
ynamically assigned IP (dialup) connections: if you have a static IP address, you should use the SNA
rget. Masquerading is equivalent to specifying a mapping to the IP address of the interface the pack
oing out, but also has the effect that connections areforgotten when the interface goes down. This is
rrect behavior when the next dialup is unlikely to have the same interface address (and hence any
tablished connections are lost anyway). It takes one option:
to-portsport[-port]
This specifies a range of source ports to use, overriding the default SNAT source port-selectio
heuristics (see above). This is only valid if the rule also specifies -p tcp or -p udp.
EDIRECT
his target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defin
ains which are only called from those chains. It alters the destination IP address to send the packet e machine itself (locally-generated packets are mapped to the 127.0.0.1 address). It takes one option
to-portsport[-port]
This specifies a destination port or range of ports to use: without this, the destination port is ne
altered. This is only valid if the rule also specifies -p tcp or -p udp.
LOG
his target provides userspace logging of matching packets. When this target is set for a rule, the Linu
rnel will multicast this packet through a netlinksocket. One or more userspace processes may then
bscribe to various multicast groups and receive the packets. Like LOG, this is a "non-terminating
rget", i.e. rule traversal continues at the next rule.
ulog-nlgroup nlgroup
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (15 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
32/49
Manpage of IPTABLES
This specifies the netlink group (1-32) to which the packet is sent. Default value is 1.
ulog-prefixprefix
Prefix log messages with the specified prefix; up to 32 characters long, and useful for
distinguishing messages in the logs.
ulog-cprange size
Number of bytes to be copied to userspace. A value of 0 always copies the entire packet,
regardless of its size. Default is 0.
ulog-qthreshold sizeNumber of packet to queue inside kernel. Setting this value to, e.g. 10 accumulates ten packets
inside the kernel and transmits them as one netlink multipart message to userspace. Default is
(for backwards compatibility).
CPMSS
his target allows to alter the MSS value of TCP SYN packets, to control the maximum size for that
nnection (usually limiting it to your outgoing interface's MTU minus 40). Of course, it can only be
conjunction with -p tcp.
his target is used to overcome criminally braindead ISPs or servers which block ICMP Fragmentatio
eeded packets. The symptoms of this problem are that everything works fine from your Linux
ewall/router, but machines behind it can never exchange large packets:
) Web browsers connect, then hang with no data received.
) Small mail works fine, but large emails hang.
) ssh works fine, but scp hangs after initial handshaking.
orkaround: activate this option and add a rule to your firewall configuration like:
ptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
set-mss value
Explicitly set MSS option to specified value.
clamp-mss-to-pmtu
Automatically clamp MSS value to (path_MTU - 40).
hese options are mutually exclusive.
SCP
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (16 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
33/49
Manpage of IPTABLES
his target allows to alter the value of the DSCP bits within the TOS header of the IPv4 packet. As th
anipulates a packet, it can only be used in the mangle table.
set-dscp value
Set the DSCP field to a numerical value (can be decimal or hex)
set-dscp-class class
Set the DSCP field to a DiffServ class.
CN
his target allows to selectively work around known ECN blackholes. It can only be used in the mang
ble.
ecn-tcp-remove
Remove all ECN bits from the TCP header. Of course, it can only be used in conjunction with
tcp.
DIAGNOSTICS
arious error messages are printed to standard error. The exit code is 0 for correct functioning. Errors
hich appear to be caused by invalid or abused command line parameters cause an exit code of 2, and
her errors cause an exit code of 1.
BUGS
ugs? What's this? ;-) Well... the counters are not reliable on sparc64.
COMPATIBILITY WITH IPCHAINS
his iptables is very similar to ipchains by Rusty Russell. The main difference is that the chains INP
d OUTPUT are only traversed for packets coming into the local host and originating from the loca
ost respectively. Hence every packet only passes through one of the three chains; previously a forwa
cket would pass through all three.
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (17 of 20) [2/13/2004 8:04:51 PM]
-
8/2/2019 An Iptables Guide & Tutorial
34/49
Manpage of IPTABLES
he other main difference is that -i refers to the input interface; -o refers to the output interface, and b
e available for packets entering the FORWARD chain.
tables is a pure packet filter when using the default `filter' table, with optional extension modules. T
ould simplify much of the previous confusion over the combination of IP masquerading and packet
tering seen previously. So the following options are handled differently:
MASQ
M -S
M -L
here are several other changes in iptables.
SEE ALSO
tables-save(8), iptables-restore(8), ip6tables(8), ip6tables-save(8), ip6tables-restore(8). The pac
tering-HOWTO details iptables usage for packet filtering, the NAT-HOWTO details NAT, the netf
tensions-HOWTO details the extensions that are not in the standard distribution, and the netfilter-
cking-HOWTO details the netfilter internals.
ee http://www.netfilter.org/.
AUTHORS
usty Russell wrote iptables, in early consultation with Michael Neuling.
arc Boucher made Rusty abandon ipnatctl by lobbying for a generic packet selection framework in
tables, then wrote the mangle table, the owner match, the mark stuff, and ran around doing cool stuf
erywhere.
mes Morris wrote the TOS target, and tos match.
zsef Kadlecsik wrote the REJECT target.
arald Welte wrote the ULOG target, TTL, DSCP, ECN matches and targets.
he Netfilter Core Team is: Marc Boucher, Jozsef Kadlecsik, James Morris, Harald Welte and Rusty
ussell.
an page written by Herve Eychenne .
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (18 of 20) [2/13/2004 8:04:51 PM]
http://localhost/cgi-bin/man/man2html?8+iptables-savehttp://localhost/cgi-bin/man/man2html?8+iptables-restorehttp://localhost/cgi-bin/man/man2html?8+ip6tableshttp://localhost/cgi-bin/man/man2html?8+ip6tables-savehttp://localhost/cgi-bin/man/man2html?8+ip6tables-restorehttp://www.netfilter.org/mailto:[email protected]:[email protected]://www.netfilter.org/http://localhost/cgi-bin/man/man2html?8+ip6tables-restorehttp://localhost/cgi-bin/man/man2html?8+ip6tables-savehttp://localhost/cgi-bin/man/man2html?8+ip6tableshttp://localhost/cgi-bin/man/man2html?8+iptables-restorehttp://localhost/cgi-bin/man/man2html?8+iptables-save -
8/2/2019 An Iptables Guide & Tutorial
35/49
Manpage of IPTABLES
ndex
AME
YNOPSISESCRIPTION
ARGETS
ABLES
PTIONS
COMMANDS
PARAMETERS
OTHER OPTIONS
ATCH EXTENSIONStcp
udp
icmp
mac
limit
multiport
mark
ownerstate
conntrack
dscp
pkttype
tos
ah
esp
length
ttl
unclean
ARGET EXTENSIONS
LOG
MARK
REJECT
TOS
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (19 of 20) [2/13/2004 8:04:51 PM]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
8/2/2019 An Iptables Guide & Tutorial
36/49
Manpage of IPTABLES
MIRROR
SNAT
DNAT
MASQUERADE
REDIRECT
ULOG
TCPMSSDSCP
ECN
IAGNOSTICS
UGS
OMPATIBILITY WITH IPCHAINS
EE ALSO
UTHORS
his document was created by man2html, using the manual pages.
me: 05:21:18 GMT, January 07, 2004
ttp://www.iptablesrocks.org/syntax/man_iptables.htm (20 of 20) [2/13/2004 8:04:51 PM]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://localhost/cgi-bin/man/man2htmlhttp://localhost/cgi-bin/man/man2htmlhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
8/2/2019 An Iptables Guide & Tutorial
37/49
ttp://www.iptablesrocks.org/guide/
home | syntax & structure | examples | faq | contact | links
The iptablesrocks.org iptables firewall setup guideoverview:
iptablesrocks.org iptables firewall is geared for a typical webserver running the following services:
HTP and HTTPSPS
TPP3
AP and IMAPSSQL
en running a typical web server, you need a firewall that is secure and offers protection, but you also need one that allows all needed traffic e to enter and leave the server so that your server's day to day operations can carry on unimpeded. This particular iptables configuration doeowing:
ses the "mangle" portion of the table to effectively block and/or confuse most port scans. These rules deal with FIN,SYN,RST,PSH,ACK,UR
,PSH and URG packets.
stablishes a secure foundation by initially blocking all incoming, outgoing and forwarded packets COMPLETELY.
With all incoming packets dropped by default, it then grants incoming access to a select number of ports. These ports are ports that a typical
ver might allow.
en inbound ports include: 20 & 21 (ftp), 22 (ssh), 25 (smtp), 53 (dns), 80 (http), 110 (pop), 143 (imap), 443 (https), 993 (imaps)
With all outbound packets dropped by default, it then grants outbound access to a select number of ports. These ports are posts that a typica
ver might allow.
en outbound ports include: 20 & 21 (ftp), 22 (ssh), 25 (smtp), 43 (whois), 53 (dns), 80 (http), 110 (pop), 143 (imap), 443 (https), 993 (imaps)
ll requests to prohibited ports are logged to a custom log file. Additional logging is also possible.
n installation of "Iptables Log Analyzer", which you provides a web based tool to monitor the firewall logs.
Start the installation here
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/guide/ [2/13/2004 8:04:52 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
38/49
ptablesrocks.org - Preparation
home | syntax & structure | examples | faq | contact | links
The iptablesrocks.org iptables firewall setup guidetem Requirements/Installation:
bles is geared for Linux type operating systems. This setup guide is geared for Redhat Linux and Redhat Enterprise Linux. However you ca
bably apply this to any other Linux distro that Iptables will run on. In order to run this setup, you will obviously need to have iptables installedr server.
a Redhat server, you can usually find out if you have the iptables RPM package installed by running the following commnand:
m -q iptables
tables is installed, you should get an output like this:
bles-1.2.8-12
tables is not installed on your server, you can either download the RPM from Redhat's site or, if your server is registered with Redhat Netwoate service, you can install iptables directly from Redhat with the following command:
date -i iptables
-configuration:
part of the preparation for our new iptables firewall, we're going to adjust the kernel logging configuration so that the firewall will log its activittom logfile. Here's how you do it...
etc/syslog.conf
the following to the syslog.conf file:
Tables loggingernel messages.n.debug;kern.info /var/log/firewall
e and exit the file.
w let's activate the changes...
/rc.d/init.d/syslog restart
r kernel should now log the activity of the soon to be firewall to /var/log/firewall. Once we start up the iptables firewall, the /var/log/firewall filelocation of the logging output of the firewall. This output will, in turn, be analyzed by the "Iptables Log Analyzer" tool and put in to a web acceuser friendly format. Woohoo!
last thing you will want to do is to add a module to your kernel. The "ip_conntrack_ftp" module will need to be added so that FTP sessions cction correctly. If you don't add this module, the firewall will prevent proper FTP sessions. Fortunately, adding the module is easy. Jus run theowing command:
mod ip_conntrack_ftp
a! The module is added. You may want to add that line to your server's /etc/rc.local file to ensure that the module loads on boot. We'll coverr in the guide.
ttp://www.iptablesrocks.org/guide/preparation.php (1 of 2) [2/13/2004 8:04:52 PM]
-
8/2/2019 An Iptables Guide & Tutorial
39/49
ptablesrocks.org - Preparation
Proceed to the next step
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/guide/preparation.php (2 of 2) [2/13/2004 8:04:52 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
40/49
ptablesrocks.org - Deploying a Safetynet
home | syntax & structure | examples | faq | contact | links
The iptablesrocks.org iptables firewall setup guideploying a Safetynet:
s next step is of critical importance. Whenever you start toying around with the firewall settings of any server, you will want to deploy a mean
to regain access to the server should you accidentally lock yourself out. This may sound silly at first, but it can be very easy to lock yourselfr server when making firewall adjustments, no matter how skilled you are. It only takes a tiny syntax error or a missed flag somewhere in thewall script to lock your server down to a point where you cannot access it. While locking yourself out of a server that you have physical accesthat big of a deal, it can be a nightmare if you lock yourself out of a server that you don't have physical access to. This is certainly the case iver is being hosted somewhere. If you don't believe me, try skipping this step and you may end up learning your lesson the hard way.
unately, safeguarding against an accidental server lock down is not difficult. The procedure only takes a couple of minutes and can be a lifehere's how you do it:
safety net is simply going to be a firewall reset script that runs of our server's crontab. We will set the script to run at regular intervals. In theuld you lock yourself out of your server, all you'll have to do is sit back and wait for the script to execute and for the firewall to reset.
et's create the reset script...
oot/firewall_reset
tables firewall reset scripterPUT ACCEPT [164:15203]RWARD ACCEPT [0:0]TPUT ACCEPT [147:63028]
MMIT
angleEROUTING ACCEPT [164:15203]
PUT ACCEPT [164:15203]RWARD ACCEPT [0:0]
TPUT ACCEPT [147:63028]STROUTING ACCEPT [147:63028]MMIT
tEROUTING ACCEPT [14:672]STROUTING ACCEPT [9:684]TPUT ACCEPT [9:684]
MMIT
e and exit the file
w let's test the reset script. The following command will utilize the "iptables-import" tool, which is used to import an iptables config script direciptables ruleset. When we import the above iptables configuration into the ruleset, it will completely reset your firewall and put your server is
lly "open" state where all packets are allowed to freely move in and out of your server. If you've locked yourself out of your server, this will dtakes and let you back in.
bles-restore < /root/firewall_reset
ou don't get an error, the script worked. The last thing you will want to do is to actually look at the iptables status just to make sure that your sompletely open as it should be. The following command will display your current iptables status:
bles -L
open firewall should look similar to this:
ttp://www.iptablesrocks.org/guide/safetynet.php (1 of 2) [2/13/2004 8:04:53 PM]
-
8/2/2019 An Iptables Guide & Tutorial
41/49
ptablesrocks.org - Deploying a Safetynet
ain INPUT (policy ACCEPT)get prot opt source destination
ain FORWARD (policy ACCEPT)get prot opt source destination
ain OUTPUT (policy ACCEPT)get prot opt source destination
you can see, the INPUT, OUTPUT and FORWARD chains of your firewall are now set to a default "ACCEPT" state. This means that your seaccept any packets, be they OUTBOUDN, INBOUND or FORWARDED. In other words, you have no firewall at this point. So now that we kn
pt works, let's put it into the server's crontab.We'll create a crontab entry that resets the firewall every 15 minutes.
ntab -e
5,30,45 * * * * /sbin/iptables-restore < /root/firewall_reset
t's it. Now save and exit out of the crontab editor.
t's it. Until the crontab is disabled, your server's iptables ruleset will reset every 15 minutes. This means that if you lock yourself out later on up guide, you'll only have to wait a maximum of 15 minutes before the firewall resets and the erroneous rules are dropped.
e: Obviously, once you finally get your firewall safely configured you will want to disable this crontab entry. ;)
now let's get down to business and deploy the firewall script!
Proceed to the next step
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/guide/safetynet.php (2 of 2) [2/13/2004 8:04:53 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
42/49
ptablesrocks.org - Deploying the firewall
home | syntax & structure | examples | faq | contact | links
The iptablesrocks.org iptables firewall setup guideploying the firewall:
l, it's finally time to create the main firewall ruleset script. We will simply create an importable iptables ruleset script and then import it into th
bles ruleset on your server. As soon as we import it, it instantly becomes active. So let's get started.
ate the firewall script...
oot/primary_firewall
e NAT portion of the ruleset. Used for Network Address Transalation.sually not needed on a typical web server, but it's there if you need it.tEROUTING ACCEPT [127173:7033011]STROUTING ACCEPT [31583:2332178]TPUT ACCEPT [32021:2375633]
MMIT
e Mangle portion of the ruleset. Here is where unwanted packet types get dropped.is helps in making port scans against your server a bit more time consuming and difficult, but not impossible.
angleEROUTING ACCEPT [444:43563]
PUT ACCEPT [444:43563]RWARD ACCEPT [0:0]TPUT ACCEPT [402:144198]STROUTING ACCEPT [402:144198]
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROPPREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROPPREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROPPREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROPPREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROPPREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROPMMIT
e FILTER section of the ruleset is where we initially drop all packets and then selectively open certain ports.
e will also enable logging of all dropped requests.erPUT DROP [1:242]RWARD DROP [0:0]TPUT DROP [0:0]G_DROP - [0:0]G_ACCEPT - [0:0]
mp_packets - [0:0]
rst, we cover the INPUT rules, or the rules for incoming requests.ote how at the end we log any incoming packets that are not accepted.NPUT -m state --state RELATED,ESTABLISHED -j ACCEPTNPUT -p tcp -m tcp --dport 20 -j ACCEPTNPUT -p tcp -m tcp --dport 21 -j ACCEPT
ttp://www.iptablesrocks.org/guide/ruleset.php (1 of 4) [2/13/2004 8:04:54 PM]
-
8/2/2019 An Iptables Guide & Tutorial
43/49
ptablesrocks.org - Deploying the firewall
NPUT -p tcp -m tcp --dport 22 -j LOG_ACCEPTNPUT -p tcp -m tcp --dport 25 -j LOG_ACCEPTNPUT -p tcp -m tcp --dport 43 -j ACCEPTNPUT -p udp -m udp --dport 53 -j ACCEPTNPUT -p tcp -m tcp --dport 80 -j ACCEPTNPUT -p tcp -m tcp --dport 110 -j ACCEPTNPUT -p tcp -m tcp --dport 143 -j ACCEPTNPUT -p tcp -m tcp --dport 443 -j ACCEPTcomment the next line if you are running Spamassassin on your serverINPUT -p tcp -m tcp --dport 783 -j ACCEPT
NPUT -p tcp -m tcp --dport 993 -j ACCEPTNPUT -p tcp -m tcp --dport 3306 -j ACCEPTNPUT -s 127.0.0.1 -j ACCEPTNPUT -p icmp -j icmp_packetsNPUT -j LOG_DROP
ext, we cover the OUTPUT rules, or the rules for all outgoing traffic.ote how at the end we log any outbound packets that are not accepted.OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPTOUTPUT -p tcp -m tcp --dport 20 -j ACCEPTOUTPUT -p tcp -m tcp --dport 21 -j ACCEPTOUTPUT -p tcp -m tcp --dport 22 -j ACCEPTOUTPUT -p tcp -m tcp --dport 23 -j ACCEPTOUTPUT -p tcp -m tcp --dport 25 -j ACCEPTOUTPUT -p tcp -m tcp --dport 43 -j ACCEPT
OUTPUT -p udp -m udp --dport 53 -j ACCEPTOUTPUT -p tcp -m tcp --dport 80 -j ACCEPTOUTPUT -p tcp -m tcp --dport 110 -j ACCEPTOUTPUT -p tcp -m tcp --dport 143 -j ACCEPTOUTPUT -p tcp -m tcp --dport 443 -j ACCEPTcomment the next line if you are running Spamassassin on your serverOUTPUT -p tcp -m tcp --dport 783 -j ACCEPT
OUTPUT -p tcp -m tcp --dport 993 -j ACCEPTOUTPUT -p tcp -m tcp --dport 3306 -j ACCEPTOUTPUT -d 127.0.0.1 -j ACCEPTOUTPUT -p icmp -j icmp_packetsOUTPUT -j LOG_DROP
ere we have 2 sets of logging rules. One for dropped packets to log all dropped requests and one for accepted packets, should we
og any accepted requesets.LOG_DROP -j LOG --log-prefix "[IPTABLES DROP] : " --log-tcp-options --log-ip-optionsLOG_DROP -j DROP
LOG_ACCEPT -j LOG --log-prefix "[IPTABLES ACCEPT] : " --log-tcp-options --log-ip-optionsLOG_ACCEPT -j ACCEPT
nd finally, a rule to deal with ICMP requests. We drop all ping requests except from our own server.ake sure you replace 1.2.3.4 with the IP address of your server.cmp_packets -p icmp -m icmp --icmp-type 0 -j ACCEPTcmp_packets -s 1.2.3.4 -p icmp -m icmp --icmp-type 8 -j ACCEPTcmp_packets -p icmp -m icmp --icmp-type 8 -j DROPcmp_packets -p icmp -m icmp --icmp-type 3 -j ACCEPTcmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
MMIT
e and exit the file.
w import the firewall into your server's iptables ruleset...
bles-restore < /root/primary_firewall
ou don't get any errors, your firewall should now be active. So let's take a look at the iptables status and see what it looks like.
bles -L
ttp://www.iptablesrocks.org/guide/ruleset.php (2 of 4) [2/13/2004 8:04:54 PM]
-
8/2/2019 An Iptables Guide & Tutorial
44/49
ptablesrocks.org - Deploying the firewall
should see an output like this:
ain INPUT (policy DROP)get prot opt source destinationCEPT all -- anywhere anywhere state RELATED,ESTABLISHEDCEPT tcp -- anywhere anywhere tcp dpt:ftp-dataCEPT tcp -- anywhere anywhere tcp dpt:ftpG_ACCEPT tcp -- anywhere anywhere tcp dpt:sshG_ACCEPT tcp -- anywhere anywhere tcp dpt:smtpCEPT tcp -- anywhere anywhere tcp dpt:nicnameCEPT udp -- anywhere anywhere udp dpt:domain
CEPT tcp -- anywhere anywhere tcp dpt:httpCEPT tcp -- anywhere anywhere tcp dpt:pop3CEPT tcp -- anywhere anywhere tcp dpt:imapCEPT tcp -- anywhere anywhere tcp dpt:httpsCEPT tcp -- anywhere anywhere tcp dpt:imapsCEPT tcp -- anywhere anywhere tcp dpt:mysqlCEPT all -- localhost.localdomain anywherep_packets icmp -- anywhere anywhere
G_DROP all -- anywhere anywhere
ain FORWARD (policy DROP)get prot opt source destination
ain OUTPUT (policy DROP)
get prot opt source destinationCEPT all -- anywhere anywhere state RELATED,ESTABLISHEDCEPT tcp -- anywhere anywhere tcp dpt:ftp-dataCEPT tcp -- anywhere anywhere tcp dpt:ftpCEPT tcp -- anywhere anywhere tcp dpt:sshCEPT tcp -- anywhere anywhere tcp dpt:telnetCEPT tcp -- anywhere anywhere tcp dpt:smtpCEPT tcp -- anywhere anywhere tcp dpt:nicnameCEPT udp -- anywhere anywhere udp dpt:domainCEPT tcp -- anywhere anywhere tcp dpt:httpCEPT tcp -- anywhere anywhere tcp dpt:pop3CEPT tcp -- anywhere anywhere tcp dpt:imapCEPT tcp -- anywhere anywhere tcp dpt:httpsCEPT tcp -- anywhere anywhere tcp dpt:imaps
CEPT tcp -- anywhere anywhere tcp dpt:mysqlCEPT all -- anywhere localhost.localdomainp_packets icmp -- anywhere anywhere
G_DROP all -- anywhere anywhere
ain LOG_ACCEPT (2 references)get prot opt source destinationG all -- anywhere anywhere LOG level warning tcp-options ip-options prefix `[IPTABLES ACCEPT] : 'CEPT all -- anywhere anywhere
ain LOG_DROP (2 references)get prot opt source destinationG all -- anywhere anywhere LOG level warning tcp-options ip-options prefix `[IPTABLES DROP] : 'OP all -- anywhere anywhere
ain icmp_packets (2 references)get prot opt source destinationCEPT icmp -- anywhere anywhere icmp echo-replyCEPT icmp -- yourhostname anywhere icmp echo-requestOP icmp -- anywhere anywhere icmp echo-requestCEPT icmp -- anywhere anywhere icmp destination-unreachableCEPT icmp -- anywhere anywhere icmp time-exceeded
gratulations. Your server now has an active firewall. Technically speaking, you can stop here and you should have a decent firewall set up fb server. In the next few steps we will test the functionality of the firewall and we will also install a log analyzer that will provide us with a webmonitor. Additionally, I'll show you how to ensure that your new firewall starts up on boot.
ttp://www.iptablesrocks.org/guide/ruleset.php (3 of 4) [2/13/2004 8:04:54 PM]
-
8/2/2019 An Iptables Guide & Tutorial
45/49
ptablesrocks.org - Deploying the firewall
ortant Note: Now that your firewall is up and running, you will want to disable the "safetynet" crontab so that your firewall will remrunning.
Proceed to the next step
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/guide/ruleset.php (4 of 4) [2/13/2004 8:04:54 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
46/49
ptablesrocks.org - Testing your new firewall
home | syntax & structure | examples | faq | contact | links
The iptablesrocks.org iptables firewall setup guideting your new firewall:
h you firewall now up and running, it's time to run a few simple tests on it to make sure it's doing it's job.
m a remote server, try the following:
SH to your server. A successful connection will be logged in the firewall logs at /var/log/firewall. This will ensure that the ACCEPT logging fuworking correctly.
un the "nmap" utility against your server (nmap 1.2.3.4, where 1.2.3.4 is your server's IP). The default namp attempt will probably fail. This i
can add other flags to the nmap probe to further test the server. While your firewall won't be albo to block ALL portscans, it should block make the others a bit more time consuming and troublesome. A portion nmap probe's activities should be logged in the /var/log/firewall logfile. Ties will confirm that the server's DROP logging functions are working correctly.
ry to ping your server. This should fail, since all ping requests are being dropped by the firewall.
TP to your server and test for full FTP functionality. If you can't get directly listings, you will need to add the "ip_conntrack_ftp" module with tmmand "insmod ip_conntrack_ftp".
assuming all your tests went smoothly your firewall should be in good shape. In the next step, we'll install the "Iptables Log Analyzer" packach will allow you to view your log entries in a nice web based environment.
Proceed to the next step
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
ttp://www.iptablesrocks.org/guide/test.php [2/13/2004 8:04:54 PM]
http://www.rocksproject.org/mailto:[email protected] -
8/2/2019 An Iptables Guide & Tutorial
47/49
-
8/2/2019 An Iptables Guide & Tutorial
48/49
ptablesrocks.org - Iptables Log Analyzer
ost of the MySQL database_host="localhost";
ser of the MySQL database_user="iptables_user";
assword of the MySQL databaseake sure you enter your "iptables_user" password in place of the red x's below_password="xxxxxx";
ame of the database_name="iptables";
RL Path to your installation_base="/firewall/";
bug modebug=1;
e default number of record displayedfault_number=20;
e default chain displayed
fault_chain="ALL";
e default date for packets (10000 means any)fault_date=10000;
e default ignored portsfault_ignored_ports= array();
e and exit the file.
w we will configure and install the database feeder script.
cripts/feed_db.pl
ke sure the following configuration section is set properly. Make sure you enter the "iptables_user" mysql password where the x's are.
$dsn = 'DBI:mysql:iptables:localhost';$db_user_name = 'iptables_admin';$db_password = 'xxxxx';$log_file = '/var/log/syslog';$pid_file = "/var/run/iptablelog.pid";
e and exit the file.
w we will copy the database feeder script to a location from which it can be easily called:
feed_db.pl /usr/local/bin/
t, copy the init.d script called "iptablelog" to your server's init.d directory..
scripts/iptablelog /etc/rc.d/init.d/
e: I've already pre-configured the "iptableslog" init.d script, but you may want to customize it further depending on your needs.
let's start it up!
/init.d/iptablelog start
ttp://www.iptablesrocks.org/guide/analyze.php (2 of 3) [2/13/2004 8:04:55 PM]
-
8/2/2019 An Iptables Guide & Tutorial
49/49
ptablesrocks.org - Iptables Log Analyzer
ght! That should be it. Iptables Log Analyzer should now be running! So, let's take a look at the web interface.
en a browser and go to: http://www.yourdomain.com/firewall
should get the Iptables Log Analyzer screen. It's pretty self explanatory, so just play around with it for a while and you'll figure it out. If you dany logs yet, you can trigger a test by logging out of your server and then logging in again via SSH. The SSH connection will be recorded inbles logs and this will appear on the Iptables Log Analyzer screen. If you need more help with Iptables Log Analyzer, check out the homepa
://www.gege.org/iptables/.
he next step, we'll cover firewall maintenence as well as step to modify your firewall when needed. We'll also go over how to ensure that you
wall starts up on boot.
Proceed to the next step
home | syntax & structure | examples | faq | contact | links
Site last modified:February 13, 2004 15:27:51
http://www.gege.org/iptables/http://www.rocksproject.org/mailto:[email protected]://www.gege.org/iptables/