Joe,

        We are preparing to implement a new firewall for our network and we
        are looking for the best rule sets to configure.  Can anyone
        provide a list of a few that would be the best.  We have looked at
        denying access to the firewall except... and we have looked at
        rlogin commands as well.

For a deeper understanding, I'd suggest a book such as Chapman & Zwicky's
"Building Internet Firewalls", and taking a look at some of the papers in
the CERT archive.  There are links to the papers I've personally found
helpful at <http://rlz.ne.mediaone.net/linux>.

If you want a starting point, the following rules are based on Chapman &
Zwicky, the CERT papers, and 15 years experience in Unix operating system
development (which means I was exposed, but it wasn't central to my work).

They are written for Linux, ipfw version 4.  I hope they are meaningful to
you, as you are using a "checkpoint" firewall, and I have no idea of what
the interface looks like to you.

These aren't the rules for enabling services.  They are just a collection
of protection and failsafe types of rules, to give you an idea of what you
might want to consider.  This is a cut and paste of a piece of a firewall
example I publish on my web site for home Linux users. It uses a deny-by-
default policy in both directions.


Bob Ziegler


# ----------------------------------------------------------------------------
EXTERNAL_INTERFACE="eth0"               # whichever you use
IPADDR=<your IP address>
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
MULTICAST="240.0.0.0/3"
BROADCAST_0="0.0.0.0"
BROADCAST_1="255.255.255.255"
PRIVPORTS="0:1023"
UNPRIVPORTS="1024:65535"
RESTRICTED_PORTS="2049"                 # (TCP/UDP) NFS
RESTRICTED_OPENWINDOWS="2000"           # (TCP) openwindows

# X Windows port allocation begins at 6000 and increments
# for each additional server running.
RESTRICTED_XWINDOWS="6000:6001"         # (TCP) X windows


# SPOOFING & BAD ADDRESSES
# Refuse spoofed packets.
# Ignore blatantly illegal source addresses.
# Protect yourself from sending to bad addresses.

    # Refuse spoofed packets pretending to be to or from the external address.
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -S $IPADDR
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -D $IPADDR

    # Refuse packets claiming to be to or from a Class A private network
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -S $CLASS_A
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -D $CLASS_A
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -S $CLASS_A
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -D $CLASS_A

    # Refuse packets claiming to be to or from a Class B private network
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -S $CLASS_B
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -D $CLASS_B
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -S $CLASS_B
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -D $CLASS_B

    # Refuse packets claiming to be to or from a Class C private network
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -S $CLASS_C
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -D $CLASS_C
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -S $CLASS_C
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -D $CLASS_C

    # Refuse packets claiming to be to or from the loopback interface
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -S $LOOPBACK
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -D $LOOPBACK
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -S $LOOPBACK
    ipfwadm -O -a reject -o -W $EXTERNAL_INTERFACE -D $LOOPBACK

    # Refuse broadcast address SOURCE packets
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -S $BROADCAST_1
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -D $BROADCAST_0

    # Refuse multicast/anycast/broadcast addresses (in.h) (NET-3-HOWTO)
    ipfwadm -I -a deny -o -W $EXTERNAL_INTERFACE -S $MULTICAST

# ----------------------------------------------------------------------------
# ICMP

    #    To prevent denial of service attacks based on ICMP bombs, filter
    #    incoming Redirect (5) and outgoing Destination Unreachable (3).
    #    Note, however, disabling Destination Unreachable (3) is not
    #    advisable, as it is used to negotiate packet fragment size.

    # For bi-directional ping.
    #     Message Types:  Echo_Reply (0),  Echo_Request (8)
    #     To prevent attacks, limit the src addresses to your ISP range.
    #
    # For outgoing traceroute.
    #     Message Types:  INCOMING Dest_Unreachable (3), Time_Exceeded (11)
    #     default UDP base: 33434 to base+nhops-1
    #
    # For incoming traceroute.
    #     Message Types:  OUTGOING Dest_Unreachable (3), Time_Exceeded (11)
    #     To block this, deny OUTGOING 3 and 11

    #  0: Echo_Reply
    #  3: Dest_Unreachable, Network_Unavailable, Service_Unavailable, etc.
    #  4: Source_Quench
    #  5: Redirect
    #  8: Echo_Request
    # 11: Time_Exceeded
    # 12: Parameter_Problem

    ipfwadm -I -a accept -P icmp  -W $EXTERNAL_INTERFACE \
            -S $ANYWHERE 0 3 4 11 12 -D $IPADDR

    ipfwadm -I -a accept -P icmp  -W $EXTERNAL_INTERFACE \
            -S <my_service_provider> 8 -D $IPADDR

    ipfwadm -O -a accept -P icmp  -W $EXTERNAL_INTERFACE \
            -S $IPADDR 0 -D <my_service_provider>

    ipfwadm -O -a accept -P icmp  -W $EXTERNAL_INTERFACE \
            -S $IPADDR 3 4 8 12 -D $ANYWHERE

    ipfwadm -O -a accept -P icmp  -W $EXTERNAL_INTERFACE \
            -S $IPADDR 11 -D <my_service_provider>

# ----------------------------------------------------------------------------
    #  The following rules are redundant in this type of firewall
    #  because none of the following ports are open.
    #  They are included as a safety precaution.
    #  None of these services should be available on the internet.
    #  They were designed for intranet use and represent serious
    #  holes if available outside of the LAN.

    # reserved link sunrpc exec login shell printer uucp
    ipfwadm -O -a reject -P tcp -W $EXTERNAL_INTERFACE \
            -S $IPADDR \
            -D $ANYWHERE 0 87 111 512 513 514 515 540

    # reserved link sunrpc exec login shell printer uucp
    ipfwadm -O -a reject -P tcp -W $EXTERNAL_INTERFACE \
            -S $IPADDR 0 87 111 512 513 514 515 540 \
            -D $ANYWHERE

    # reserved dhcp tftp sunrpc snmp snmp-trap biff who syslog route mountd
    ipfwadm -O -a reject -P udp -W $EXTERNAL_INTERFACE \
            -S $IPADDR \
            -D $ANYWHERE 0 68 69 111 161 162

    ipfwadm -O -a reject -P udp -W $EXTERNAL_INTERFACE \
            -S $IPADDR 0 67 69 111 161 162 \
            -D $ANYWHERE

    ipfwadm -O -a reject -P udp -W $EXTERNAL_INTERFACE \
            -S $IPADDR 512 513 514 520 521 635 \
            -D $ANYWHERE

    ipfwadm -O -a reject -P udp -W $EXTERNAL_INTERFACE \
            -S $IPADDR \
            -D $ANYWHERE 512 513 514 520 521 635

# ----------------------------------------------------------------------------
# TCP UNPRIVILEGED PORTS
# Avoid ports subject to protocol & system administration problems.

    # Deny access to the NFS, openwindows and X windows unpriveleged ports
    ipfwadm -I -a deny -o -P tcp -y -W $EXTERNAL_INTERFACE \
            -D $IPADDR $RESTRICTED_PORTS

    ipfwadm -I -a deny -o -P tcp -y -W $EXTERNAL_INTERFACE \
            -D $IPADDR $RESTRICTED_OPENWINDOWS

    ipfwadm -I -a deny -o -P tcp -y -W $EXTERNAL_INTERFACE \
            -D $IPADDR $RESTRICTED_XWINDOWS

    # SOCKS: incoming connection
    ipfwadm -I -a deny -P tcp -y -W $EXTERNAL_INTERFACE \
            -S $ANYWHERE \
            -D $IPADDR 1080

# Disallow outgoing traffic to protect yourself from mistakes.

    # openwindows: establishing a connection
    ipfwadm -O -a reject -P tcp -y -W $EXTERNAL_INTERFACE \
            -S $IPADDR \
            -D $ANYWHERE $RESTRICTED_OPENWINDOWS

    # Xwindows: establishing a connection
    ipfwadm -O -a reject -P tcp -y -W $EXTERNAL_INTERFACE \
            -S $IPADDR \
            -D $ANYWHERE $RESTRICTED_XWINDOWS

    # SOCKS: establishing a connection
    ipfwadm -O -a reject -P tcp -y -W $EXTERNAL_INTERFACE \
            -S $IPADDR \
            -D $ANYWHERE 1080

# ----------------------------------------------------------------------------
# UDP UNPRIVILEGED PORTS
# Avoid ports subject to protocol & system administration problems.

    ipfwadm -I -a deny -o -P udp -W $EXTERNAL_INTERFACE \
            -D $IPADDR $RESTRICTED_PORTS

    # UDP INCOMING TRACEROUTE
    # traceroute usually uses -S 32769:65535 -D 33434:33523

    ipfwadm -I -a accept -o -P udp -W $EXTERNAL_INTERFACE \
            -S 24.128.0.0/16 32769:65535 \
            -D $IPADDR 33434:33523

    ipfwadm -I -a deny -o -P udp -W $EXTERNAL_INTERFACE \
            -S $ANYWHERE 32769:65535 \
            -D $IPADDR 33434:33523


........................................................................
Home Page .................. <http://rlz.ne.mediaone.net>
Resume ..................... <http://rlz.ne.mediaone.net/resume.html>
Linux LAN & Firewall Paper . <http://rlz.ne.mediaone.net/linux/faq>
Linux Firewall Design Tool . <http://rlz.ne.mediaone.net/linux/firewall>


-
[To unsubscribe, send mail to [EMAIL PROTECTED] with
"unsubscribe firewalls" in the body of the message.]

Reply via email to