Linux Netfilter discussions
 help / color / mirror / Atom feed
From: Harry <hari76@omantel.net.om>
To: Netfilter <netfilter@lists.netfilter.org>
Subject: Re: Rules for Blocking Proxies...
Date: Wed, 21 Apr 2004 16:39:32 -0700	[thread overview]
Message-ID: <004401c427f9$e70b6480$36b4fea9@SABNANIS> (raw)
In-Reply-To: 200404201537.12472.Antony@Soft-Solutions.co.uk

[-- Attachment #1: Type: text/plain, Size: 1397 bytes --]

Hey All,

These are loads of recommendations, well I am using Windows 2000 Clients,
what i think should be best for my level of understanding is a simple set of
rules that can be added to my firewall script that will STOP all other
connections except the INTIF connection on which squid and Iptables listens.
I have attached my script, Pls suggest any modifications....

Regards
Harry



"In all this world, there is only you
When all else ceases, there is only you"
-- to my MASTER!
    Harish
harish@sabnanis.com
harish.sabnani@cyberhutoman.com
----- Original Message -----
From: "Antony Stone" <Antony@Soft-Solutions.co.uk>
To: "Netfilter" <netfilter@lists.netfilter.org>
Sent: Tuesday, April 20, 2004 7:37 AM
Subject: Re: Rules for Blocking Proxies...


> On Tuesday 20 April 2004 3:27 pm, Alexis wrote:
>
> > beside this.
> > You could remove privileges from the clients, even with an active
directory
> > implementation (ajjjj) or i think i saw cybercafe software that block
any
> > settings change on the client box.
>
> That is making some very big assumptions about what Operating System/s are
> running on the clients....
>
> Regards,
>
> Antony.
>
> --
> The truth is rarely pure, and never simple.
>
>  - Oscar Wilde
>
>                                                      Please reply to the
list;
>                                                            please don't CC
me.
>
>

[-- Attachment #2: rc.firewall-2.4 --]
[-- Type: application/octet-stream, Size: 12137 bytes --]

#!/bin/sh
#
# rc.firewall-2.4
FWVER=0.74
#
#               Initial SIMPLE IP Masquerade test for 2.4.x kernels
#               using IPTABLES.  
#
#               Once IP Masquerading has been tested, with this simple 
#               ruleset, it is highly recommended to use a stronger 
#               IPTABLES ruleset either given later in this HOWTO or 
#               from another reputable resource.
#
#
#
# Log:
#       0.74 - the ruleset now uses modprobe vs. insmod
#       0.73 - REJECT is not a legal policy yet; back to DROP
#       0.72 - Changed the default block behavior to REJECT not DROP
#       0.71 - Added clarification that PPPoE users need to use
#              "ppp0" instead of "eth0" for their external interface
#       0.70 - Added commented option for IRC nat module
#            - Added additional use of environment variables 
#            - Added additional formatting
#       0.63 - Added support for the IRC IPTABLES module
#       0.62 - Fixed a typo on the MASQ enable line that used eth0
#              instead of $EXTIF
#       0.61 - Changed the firewall to use variables for the internal
#              and external interfaces.
#       0.60 - 0.50 had a mistake where the ruleset had a rule to DROP
#              all forwarded packets but it didn't have a rule to ACCEPT
#              any packets to be forwarded either
#            - Load the ip_nat_ftp and ip_conntrack_ftp modules by default
#       0.50 - Initial draft
#

echo -e "\n\nLoading simple rc.firewall version $FWVER..\n"


# The location of the iptables and kernel module programs
#
#   If your Linux distribution came with a copy of iptables, 
#   most likely all the programs will be located in /sbin.  If 
#   you manually compiled iptables, the default location will
#   be in /usr/local/sbin
#
# ** Please use the "whereis iptables" command to figure out 
# ** where your copy is and change the path below to reflect 
# ** your setup
#
IPTABLES=/sbin/iptables
#IPTABLES=/usr/local/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe


#Setting the EXTERNAL and INTERNAL interfaces for the network
#
#  Each IP Masquerade network needs to have at least one
#  external and one internal network.  The external network
#  is where the natting will occur and the internal network
#  should preferably be addressed with a RFC1918 private address
#  scheme.
#
#  For this example, "eth0" is external and "eth1" is internal"
#
#
#  NOTE:  If this doesnt EXACTLY fit your configuration, you must 
#         change the EXTIF or INTIF variables above. For example: 
#
#            If you are a PPPoE or analog modem user:
#
#               EXTIF="ppp0" 
#
#
EXTIF="eth0"
INTIF="eth1"
echo "   External Interface:  $EXTIF"
echo "   Internal Interface:  $INTIF"


#======================================================================
#== No editing beyond this line is required for initial MASQ testing ==


echo -en "   loading modules: "

# Need to verify that all modules have all required dependencies
#
echo "  - Verifying that all kernel modules are ok"
$DEPMOD -a

# With the new IPTABLES code, the core MASQ functionality is now either
# modular or compiled into the kernel.  This HOWTO shows ALL IPTABLES
# options as MODULES.  If your kernel is compiled correctly, there is
# NO need to load the kernel modules manually.  
#
#  NOTE: The following items are listed ONLY for informational reasons.
#        There is no reason to manual load these modules unless your
#        kernel is either mis-configured or you intentionally disabled
#        the kernel module autoloader.
#

# Upon the commands of starting up IP Masq on the server, the
# following kernel modules will be automatically loaded:
#
# NOTE:  Only load the IP MASQ modules you need.  All current IP MASQ 
#        modules are shown below but are commented out from loading.
# ===============================================================

echo "----------------------------------------------------------------------"

#Load the main body of the IPTABLES module - "iptable"
#  - Loaded automatically when the "iptables" command is invoked
#
#  - Loaded manually to clean up kernel auto-loading timing issues
#
echo -en "ip_tables, "
$MODPROBE ip_tables


#Load the IPTABLES filtering module - "iptable_filter" 
#  - Loaded automatically when filter policies are activated


#Load the stateful connection tracking framework - "ip_conntrack"
#
# The conntrack  module in itself does nothing without other specific 
# conntrack modules being loaded afterwards such as the "ip_conntrack_ftp"
# module
#
#  - This module is loaded automatically when MASQ functionality is 
#    enabled 
#
#  - Loaded manually to clean up kernel auto-loading timing issues
#
echo -en "ip_conntrack, "
$MODPROBE ip_conntrack


#Load the FTP tracking mechanism for full FTP tracking
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -en "ip_conntrack_ftp, "
$MODPROBE ip_conntrack_ftp


#Load the IRC tracking mechanism for full IRC tracking
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -en "ip_conntrack_irc, "
$MODPROBE ip_conntrack_irc


#Load the general IPTABLES NAT code - "iptable_nat"
#  - Loaded automatically when MASQ functionality is turned on
# 
#  - Loaded manually to clean up kernel auto-loading timing issues
#
echo -en "iptable_nat, "
$MODPROBE iptable_nat


#Loads the FTP NAT functionality into the core IPTABLES code
# Required to support non-PASV FTP.
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -en "ip_nat_ftp, "
$MODPROBE ip_nat_ftp


#Loads the IRC NAT functionality into the core IPTABLES code
# Require to support NAT of IRC DCC requests
#
# Disabled by default -- remove the "#" on the next line to activate
#
#echo -e "ip_nat_irc"
#$MODPROBE ip_nat_irc

echo "----------------------------------------------------------------------"

# Just to be complete, here is a list of the remaining kernel modules 
# and their function.  Please note that several modules should be only
# loaded by the correct master kernel module for proper operation.
# --------------------------------------------------------------------
#
#    ipt_mark       - this target marks a given packet for future action.
#                     This automatically loads the ipt_MARK module
#
#    ipt_tcpmss     - this target allows to manipulate the TCP MSS
#                     option for braindead remote firewalls.
#                     This automatically loads the ipt_TCPMSS module
#
#    ipt_limit      - this target allows for packets to be limited to
#                     to many hits per sec/min/hr
#
#    ipt_multiport  - this match allows for targets within a range
#                     of port numbers vs. listing each port individually
#
#    ipt_state      - this match allows to catch packets with various
#                     IP and TCP flags set/unset
#
#    ipt_unclean    - this match allows to catch packets that have invalid
#                     IP/TCP flags set
#
#    iptable_filter - this module allows for packets to be DROPped, 
#                     REJECTed, or LOGged.  This module automatically 
#                     loads the following modules:
#
#                     ipt_LOG - this target allows for packets to be 
#                               logged
#
#                     ipt_REJECT - this target DROPs the packet and returns 
#                                  a configurable ICMP packet back to the 
#                                  sender.
# 
#    iptable_mangle - this target allows for packets to be manipulated
#                     for things like the TCPMSS option, etc.

echo -e "   Done loading modules.\n"



#CRITICAL:  Enable IP forwarding since it is disabled by default since
#
#           Redhat Users:  you may try changing the options in
#                          /etc/sysconfig/network from:
#
#                       FORWARD_IPV4=false
#                             to
#                       FORWARD_IPV4=true
#
echo "   Enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward


# Dynamic IP users:
#
#   If you get your IP address dynamically from SLIP, PPP, or DHCP, 
#   enable this following option.  This enables dynamic-address hacking
#   which makes the life with Diald and similar programs much easier.
#
#echo "   Enabling DynamicAddr.."
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr


# Enable simple IP forwarding and Masquerading
#
#  NOTE:  In IPTABLES speak, IP Masquerading is a form of SourceNAT or SNAT.
#
#  NOTE #2:  The following is an example for an internal LAN address in the
#            192.168.0.x network with a 255.255.255.0 or a "24" bit subnet mask
#            connecting to the Internet on external interface "eth0".  This
#            example will MASQ internal traffic out to the Internet but not
#            allow non-initiated traffic into your internal network.
#
#            
#         ** Please change the above network numbers, subnet mask, and your 
#         *** Internet connection interface name to match your setup
#         


#Clearing any previous configuration
#
#  Unless specified, the defaults for INPUT and OUTPUT is ACCEPT
#    The default for FORWARD is DROP (REJECT is not a valid policy)
#
echo "   Clearing any existing rules and setting default policy.."
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT 
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT 
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD 
$IPTABLES -t nat -F

echo "   FWD: Allow all connections OUT and only existing and related ones IN"
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
                                                                                                                             
# DROP BROADCAST TRAFFIC
$IPTABLES -A FORWARD -d 255.255.255.0/24 -j DROP
# DROP WINDOWS NETBIOS TRAFFIC
$IPTABLES -A FORWARD -p tcp --dport 135:139 -j DROP
$IPTABLES -A FORWARD -p udp --dport 135:139 -j DROP
$IPTABLES -A FORWARD -p tcp --dport 445 -j DROP
$IPTABLES -A FORWARD -p udp --dport 445 -j DROP
# DROP UNIX TRAFFIC
$IPTABLES -A FORWARD -p tcp --dport 111 -j DROP
$IPTABLES -A FORWARD -p udp --dport 111 -j DROP
$IPTABLES -A FORWARD -p tcp --dport 113 -j DROP
$IPTABLES -A FORWARD -p udp --dport 113 -j DROP
$IPTABLES -A FORWARD -p tcp --dport 513:515 -j DROP
$IPTABLES -A FORWARD -p udp --dport 513:515 -j DROP
# DROP LDAP
$IPTABLES -A FORWARD -p tcp --dport 389 -j DROP
$IPTABLES -A FORWARD -j LOG
echo "   Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

$IPTABLES -A INPUT -i lo -p all -j ACCEPT
$IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $INTIF -s 10.10.10.0/24 -j ACCEPT
$IPTABLES -P INPUT DROP

# IGNORE TCP SYN COOKIES (NOT WEB SITE COOKIES)
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# IGNORE ICMP BROADCASTS
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# IGNORE SPOOFED PACKETS
echo 1 >/proc/sys/net/ipv4/conf/$EXTIF/rp_filter
echo 1 >/proc/sys/net/ipv4/conf/$INTIF/rp_filter
# IGNORE SOURCE-ROUTED PACKETS (WILL NOT HURT ROUTING)
echo 0 > /proc/sys/net/ipv4/conf/$EXTIF/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/$INTIF/accept_source_route
# IGNORE ICMP REDIRECTS
echo 0 > /proc/sys/net/ipv4/conf/$EXTIF/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/$INTIF/accept_redirects
# DISABLE REDIRECT MESSAGES
echo 0 > /proc/sys/net/ipv4/conf/$INTIF/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/$EXTIF/send_redirects
                                                                                                                             
echo -e "\nDone.\n"

  reply	other threads:[~2004-04-21 23:39 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-20 16:44 Rules for Blocking Proxies Harry
2004-04-20  5:50 ` Rio Martin
2004-04-20  7:35 ` Antony Stone
2004-04-20 13:35 ` Alexis
2004-04-20 13:47   ` Ray Leach
2004-04-20 13:53   ` Antony Stone
2004-04-20 14:23     ` Alexis
2004-04-20 14:27     ` Alexis
2004-04-20 14:37       ` Antony Stone
2004-04-21 23:39         ` Harry [this message]
2004-04-28 17:34         ` Rules for Blocking Proxies...THANKS !! Harry
2004-04-28  6:53           ` Rio Martin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='004401c427f9$e70b6480$36b4fea9@SABNANIS' \
    --to=hari76@omantel.net.om \
    --cc=netfilter@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox