#
INET_IFACE="eth0"
#
# Information pertaining to DHCP over the Internet,
if needed.
#
# Set DHCP variable to no if you don't get IP from DHCP.
If you get DHCP
# over the Internet set this variable to yes, and set up
the proper IP
# address for the DHCP server in the DHCP_SERVER variable.
#
DHCP="yes"
DHCP_SERVER="192.168.1.1"
#
# your LAN's IP range and
localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP
address. the same as netmask 255.255.255.0
#
LAN_IP="192.168.1.1"
LAN_IP_RANGE="192.168.0.0/16"
LAN_IFACE="eth0"
#
# 1.4 Localhost Configuration.
#
LO_IFACE="lo"
LO_IP="127.0.0.1"
#
# 1.5 IPTables Configuration.
#
IPTABLES="/sbin/iptables"
#
# Needed to initially load modules
#
/sbin/depmod -a
#
# no modules
needed as everything compiled into kernel
#
###########################################################################
#
# 3.1 Required proc configuration
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
###########################################################################
#
# 4.1.1 Set policies
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT
DROP
#
# Create chain for bad tcp packets
#
$IPTABLES -N bad_tcp_packets
#
# Create separate chains for ICMP, TCP and UDP to traverse
#
$IPTABLES
-N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
$IPTABLES
-N out_packets
#
#
# Special OUTPUT rules to decide which IP's to allow.
#
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT
-p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j
ACCEPT
#
# Rules for outgoing packets to the internet
#
$IPTABLES
-A out_packets -p tcp -o $INET_IFACE --sport 111 -j DROP
$IPTABLES -A out_packets
-p tcp -o $INET_IFACE --sport 631 -j DROP
$IPTABLES -A out_packets -p tcp
-o $INET_IFACE --sport 657 -j DROP
$IPTABLES -A out_packets -p tcp -o $INET_IFACE
--sport 2049 -j DROP
$IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport
3049 -j DROP
#
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport
111 -j DROP
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 631
-j DROP
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 657 -j DROP
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 2049 -j DROP
$IPTABLES
-A out_packets -p udp -o $INET_IFACE --sport 3049 -j DROP
#
# Let LO_IP
input packets
#
$IPTABLES -A INPUT -p ALL -s $LO_IP -j ACCEPT
#
#
ICMP rules
#
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j
ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
#
# Rules for incoming packets from the internet.
#
$IPTABLES -A INPUT
-p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT
-p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE
-j icmp_packets
#
# Bad TCP packets we don't want.
#
$IPTABLES -A
INPUT -p tcp -j bad_tcp_packets
#
# bad_tcp_packets chain
#
$IPTABLES
-A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state
NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp
! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES
-A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES
-A OUTPUT -p tcp -j bad_tcp_packets
#
# TCP RULES
#
$IPTABLES -A
tcp_packets -p TCP --syn -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -m state
--state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -j
DROP
#
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -P TCP -s 0/0 --dport 25 -j allowed
$IPTABLES
-A tcp_packets -p TCP -s 0/0 --dport 53 -j allowed
$IPTABLES -A tcp_packets
-p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s
0/0 --dport 113 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport
1024: -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 111 -j
DROP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 631 -j DROP
$IPTABLES
-A tcp_packets -p TCP -s 0/0 --dport 657 -j DROP
$IPTABLES -A tcp_packets
-p TCP -s 0/0 --dport 2049 -j DROP
$IPTABLES -A tcp_packets -p TCP -s 0/0
--dport 3049 -j DROP
#
# UDP ports
#
if [ $DHCP == "yes" ] ; then
$IPTABLES -A udp_packets -p UDP -s $DHCP_SERVER --sport 67 \
--dport
68 -j ACCEPT
fi
#
$IPTABLES -A udp_packets -p UDP -s 0/0 --source-port
53 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 1024: -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 111 -j DROP
$IPTABLES -A
udp_packets -p UDP -s 0/0 --dport 631 -j DROP
$IPTABLES -A udp_packets
-p UDP -s 0/0 --dport 657 -j DROP
$IPTABLES -A udp_packets -p UDP -s 0/0
--dport 2049 -j DROP
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 3049
-j DROP
#
# In Microsoft Networks you will be swamped by broadcasts.
These lines
# will prevent them from showing up in the logs.
#
$IPTABLES
-A udp_packets -p UDP -i $INET_IFACE \
--destination-port 135:139 -j DROP
#
# If we get DHCP requests from the Outside of our network, our logs will
# be swamped as well. This rule will block them from getting logged.
#
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \
--destination-port
67:68 -j DROP
#
# Special rule for DHCP requests from LAN, which are
not caught properly
# otherwise.
#
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE
--dport 67 --sport 68 -j ACCEPT
#
# Log weird packets that don't match
the above.
#
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst
3 -j LOG \
--log-level DEBUG --log-prefix "OUT packet"
$IPTABLES -A INPUT
-m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix
"IN packet"
#user] [OT] tips on my 1st try at iptables?
References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
<[EMAIL PROTECTED]>
In-Reply-To: <[EMAIL PROTECTED]>
X-Enigmail-Version: 0.91.0.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
david wrote:
> Here is my /var/lib/iptables/rules-save # Generated by
> iptables-save v1.2.11 on Sat May 21 16:58:29 2005 *nat :PREROUTING
> ACCEPT [29:1670] :POSTROUTING ACCEPT [431:26255] :OUTPUT ACCEPT
> [0:0] [30:1841] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT #
> Completed on Sat May 21 16:58:29 2005 # Generated by iptables-save
> v1.2.11 on Sat May 21 16:58:29 2005 *mangle :PREROUTING ACCEPT
> [16422:18018799] :INPUT ACCEPT [16422:18018799] :FORWARD ACCEPT
> [0:0] :OUTPUT ACCEPT [13453:2622146] :POSTROUTING ACCEPT
> [13453:2622146] COMMIT # Completed on Sat May 21 16:58:29 2005 #
> Generated by iptables-save v1.2.11 on Sat May 21 16:58:29 2005
> *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT
> [13453:2622146] [440:320869] -A INPUT -m state --state
> RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -i ! eth0 -m state
> --state NEW -j ACCEPT [0:0] -A INPUT -p icmp -j ACCEPT [3:180] -A
> INPUT -p tcp -m tcp --dport 80 -j ACCEPT [0:0] -A INPUT -p tcp -m
> tcp --dport 21 -j ACCEPT [0:0] -A INPUT -p tcp -m tcp --dport 20 -j
> ACCEPT COMMIT # Completed on Sat May 21 16:58:29 2005 I followed
> the guide here and it works great.Simple to set up.
> http://gentoo-wiki.com/HOWTO_setup_a_home-server
Here's mine. The innocent redacted to protect the guilty, ha???
#!/bin/sh
#
###########################################################################
#
INET_IFACE="eth0"
#
# Information pertaining to DHCP over the Internet, if needed.
#
# Set DHCP variable to no if you don't get IP from DHCP. If you get DHCP
# over the Internet set this variable to yes, and set up the proper IP
# address for the DHCP server in the DHCP_SERVER variable.
#
DHCP="yes"
DHCP_SERVER="192.168.1.1"
#
# your LAN's IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP address. the same as netmask 255.255.255.0
#
LAN_IP="192.168.1.1"
LAN_IP_RANGE="192.168.0.0/16"
LAN_IFACE="eth0"
#
# 1.4 Localhost Configuration.
#
LO_IFACE="lo"
LO_IP="127.0.0.1"
#
# 1.5 IPTables Configuration.
#
IPTABLES="/sbin/iptables"
#
# Needed to initially load modules
#
/sbin/depmod -a
#
# no modules needed as everything compiled into kernel
#
###########################################################################
#
# 3.1 Required proc configuration
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
###########################################################################
#
# 4.1.1 Set policies
# (notes- always
know your default policy, it all stems from this)
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
#
# Create chain for bad tcp packets
#
$IPTABLES -N bad_tcp_packets
#
# Create separate chains for ICMP, TCP and UDP to traverse
#
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
$IPTABLES -N out_packets
#
#
# Special OUTPUT rules to decide which IP's to allow.
#
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT
#
# Rules for outgoing packets to the internet (notes, ie NFS)
#
$IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 111 -j DROP
$IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 631 -j DROP
$IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 657 -j DROP
$IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 2049 -j DROP
$IPTABLES -A out_packets -p tcp -o $INET_IFACE --sport 3049 -j DROP
#
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 111 -j DROP
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 631 -j DROP
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 657 -j DROP
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 2049 -j DROP
$IPTABLES -A out_packets -p udp -o $INET_IFACE --sport 3049 -j DROP
#
# Let LO_IP input packets
# (no restrictions on loopbackk)
$IPTABLES -A INPUT -p ALL -s $LO_IP -j ACCEPT
#
# ICMP rules
# (could be several more added here)
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
#
# Rules for incoming packets from the internet.
#
$IPTABLES -A INPUT -p ALL -i $INET_IFACE -m state --state
ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
#
# Bad TCP packets we don't want.
#
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#
# bad_tcp_packets chain
#
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
#
# TCP RULES
#
$IPTABLES -A tcp_packets -p TCP --syn -j ACCEPT
$IPTABLES -A tcp_packets -p TCP -m state --state ESTABLISHED,RELATED
-j ACCEPT
$IPTABLES -A tcp_packets -p TCP -j DROP
#
(notes, allow mail, ssh, dns, www, ident, above 1024; drop NFS, LPR
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -P TCP -s 0/0 --dport 25 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 53 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1024: -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 111 -j DROP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 631 -j DROP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 657 -j DROP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 2049 -j DROP
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 3049 -j DROP
#
# UDP ports
# (notes, accept DHCP)
if [ $DHCP == "yes" ] ; then
$IPTABLES -A udp_packets -p UDP -s $DHCP_SERVER --sport 67 \
--dport 68 -j ACCEPT
fi
#
(notes- accept DNS, above 1024, exceptijng NFS)
$IPTABLES -A udp_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 1024: -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 111 -j DROP
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 631 -j DROP
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 657 -j DROP
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 2049 -j DROP
$IPTABLES -A udp_packets -p UDP -s 0/0 --dport 3049 -j DROP
#
# In Microsoft Networks you will be swamped by broadcasts. These lines
# will prevent them from showing up in the logs.
#
(note, its impossible to seperate wheat from chaffe without this)
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE \
--destination-port 135:139 -j DROP
#
# If we get DHCP requests from the Outside of our network, our logs will
# be swamped as well. This rule will block them from getting logged.
#
(note, same as above explanation)
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \
--destination-port 67:68 -j DROP
#
# Special rule for DHCP requests from LAN, which are not caught properly
# otherwise.
#
(accept DHCP)
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
#
# Log weird packets that don't match the above.
#
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "OUT packet"
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IN packet"
#
--
[email protected] mailing list