source: postlfs/security/firewalling/busybox.xml@ 1aacd4b5

10.0 10.1 11.0 11.1 11.2 6.0 6.1 6.2 6.2.0 6.2.0-rc1 6.2.0-rc2 6.3 6.3-rc1 6.3-rc2 6.3-rc3 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 krejzi/svn lazarus nosym perl-modules qt5new systemd-11177 systemd-13485 trunk upgradedb v5_0 v5_0-pre1 v5_1 v5_1-pre1 xry111/intltool xry111/soup3 xry111/test-20220226
Last change on this file since 1aacd4b5 was 1aacd4b5, checked in by Larry Lawrence <larry@…>, 19 years ago

add imlib2 and openquicktime, edited firewalling chapter

git-svn-id: svn:// af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 5.5 KB
1<sect3 id="postlfs-security-fw-busybox" xreflabel="BusyBox">
4<para>This scenario isn't too different from (<xref linkend="postlfs-security-fw-masqRouter"/>),
5but in this case you want to offer some services to your intranet.
6Examples of this can be when you want to admin your box from another host
7on your intranet or use it as a proxy or a name server. Note: Outlining a true
8concept howto protect a server that offers services on the internet
9goes far beyond the scope of this document,
10see <xref linkend="postlfs-security-fw-disclaimer"/>.</para>
12<para>Be cautious. Every service you offer and have enabled makes your
13setup more complex and your box less secure: You induce the risks of
14misconfigured services or running a service with an exploitable bug, both risks
15that a firewall principally should be immune of. See the introduction to
16<xref linkend="postlfs-security-fw-masqRouter"/> for some more details.</para>
18<para>If the services you'd like to offer do not need to access the internet
19themselves, like internal-only samba- or name-servers, it's quite
20simple and should still be acceptable from a security standpoint.
21Just add the following lines <emphasis>before</emphasis> the logging-rules
22into the script.
24<screen>iptables -A INPUT -i ! ppp+ -j ACCEPT
25iptables -A OUTPUT -o ! ppp+ -j ACCEPT</screen></para>
27<para>If your daemons have to access the web themselves, like squid would need
28to, you could open OUTPUT generally and restrict INPUT.
30<screen>iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
31iptables -A OUTPUT -j ACCEPT</screen></para>
33<para>However, it is generally not advisable to leave OUTPUT unrestricted: you lose
34any control on trojans who'd like to "call home", and a bit of redundancy in case
35you've (mis-)configured a service so that it does broadcast its existence to the
38<para>If you prefer to have this protection, you may restrict INPUT and OUTPUT
39on all ports except those that it's absolutely necessary to have open.
40Which ports you have to open depends on your needs: mostly you will find them
41by looking for failed accesses in your log-files.</para>
42<itemizedlist spacing="compact">
43<!-- <orderedlist numeration="arabic" spacing="compact"> -->
44<title>Have a look at the following examples:</title>
46<listitem><para>Squid is caching the web:
47<screen>iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
48iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT</screen></para></listitem>
50<listitem><para>Your caching name server (e.g., dnscache) does its
51lookups via udp:
52<screen>iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
53iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT</screen></para></listitem>
55<listitem><para>Alternatively, if you want to be able to ping your box to ensure
56it's still alive:
57<screen>iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
58iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT</screen></para></listitem>
60<listitem><para><anchor id='postlfs-security-fw-BB-4' xreflabel="example no. 4"/>If you are
61frequently accessing ftp-servers or enjoy chatting you might notice certain
62delays because some implementations of these daemons have the feature of
63querying an identd on your box for your username for logging.
64Although there's really no harm in this, having an identd running is not
65recommended because some implementations are known to be vulnerable.</para>
67<para>To avoid these delays you could reject the requests
68with a 'tcp-reset':
70<screen>iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
71iptables -A OUTPUT -p tcp --sport 113 -m state --state RELATED -j ACCEPT</screen></para></listitem>
73<listitem><para>To log and drop invalid packets, mostly harmless packets
74that came in after netfilter's timeout, sometimes scans:
76<screen>iptables -I INPUT 1 -p tcp -m state --state INVALID -j LOG --log-prefix \
78iptables -I INPUT 2 -p tcp -m state --state INVALID -j DROP</screen></para></listitem>
80<listitem><para>Anything coming from the outside should not have a
81private address, this is a common attack called IP-spoofing:
83<screen>iptables -t nat -A PREROUTING -i ppp+ -s -j DROP
84iptables -t nat -A PREROUTING -i ppp+ -s -j DROP
85iptables -t nat -A PREROUTING -i ppp+ -s -j
88<listitem><para>To simplify debugging and be fair to anyone who'd like to
89access a service you have disabled, purposely or by mistake, you should REJECT
90those packets that are dropped.</para>
92<para>Obviously this must be done directly after logging as the very
93last lines before the packets are dropped by policy:
95<screen>iptables -A INPUT -j REJECT
96iptables -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT</screen></para></listitem>
100<para>These are only examples to show you some of the capabilities of the new
101firewalling-code in Linux-Kernel 2.4. Have a look at the man page of
103There you will find more of them. The port-numbers you'll need for this
104can be found in <filename>/etc/services</filename>, in case you didn't
105find them by trial and error in your logfile.</para>
107<para>If you add any of your offered or accessed services such as the above,
108maybe even in FORWARD and for intranet-communication, and delete the
109general clauses, you get an old fashioned packet filter.</para>
Note: See TracBrowser for help on using the repository browser.