QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 850|回复: 0

高性能的动态防火墙脚本+透明squid配置文件(绝对能用)

[复制链接]
发表于 2005-4-16 21:01:35 | 显示全部楼层 |阅读模式
以下是我潜心配置的基于动态机制iptables防火墙脚本,和透明squid的配置方法.
都是我的机器上正在使用的绝对没问题.

iptables脚本如下:

#! /bin/bash
#Enable Ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Starting iptables......."

#Preparing .......
echo "preparing..........."
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp


#flush all
echo "Flushing .........."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

#DROP all filter and Enable others
echo "Droping.............."
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

#INPUT
echo "Preparing INPUT.................."
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.0.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -i eth0 -s ! 192.168.0.0/24 -d 192.168.0.0/24 -j DROP
iptables -A INPUT -j MIRROR

#OUTPUT
echo "Preparing OUTPUT..............."
iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT

#FORWARD
echo "Preparing FORWARD...................."
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -i eth0 -s ! 192.168.0.0/24 -d 192.168.0.0/24 -j DROP

#NAT
echo "Preparing NAT..............."
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 7788
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

#ftp
echo "About Ftp Preparing................."
iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT


如想直接使用,按如下步骤:


  
1. touch /etc/rc.d/firewall
                              2. 将以上内容写入firewall文件
                              3. chmod u+x /etc/rc.d/firewall
                              4. 在/etc/rc.d/rc.local文件的末尾加入
                                  "/etc/rc.d/firewall"




squid配置为透明代理的方法:

注意:squid的默认配置文件无法正常使用且被设置为poxy
模式.





在sauid.conf(一般在/etc/squid/squid.conf)的末尾加入




httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
cache_effective_user squid
cache_effective_group squid



更改http_port 7788 (我使用的端口,默认是3128,你也可以该为其他的)
       visible_hostname NO1.proxy (你可以随便设)
        

关闭除80以外的所有端口,之所以这样因为iptables拥有更强大的控制能力,没必要用suid来作防火墙,做法如下:
  acl Safe_ports port 80                # http
#acl Safe_ports port 21                # ftp
#acl Safe_ports port 53
#acl Safe_ports port 443 563        # https, snews
#acl Safe_ports port 70                # gopher
#acl Safe_ports port 210                # wais
#acl Safe_ports port 1025-65535        # unregistered ports
#acl Safe_ports port 280                # http-mgmt
#acl Safe_ports port 488                # gss-http
#acl Safe_ports port 591                # filemaker
#acl Safe_ports port 777                # multiling http
acl CONNECT method CONNECT
照我的该就行

接下来是关键:
   acl our_networks src 192.168.0.0/24 (改为你的客户端的网段)
    http_access allow our_networks

很多人在照搬别人的用http_access allow all 省事,但很不安全,建议不采用.











通过以上配置可以实现局域网对外的透明访问,且有效的防范,
风险.所有的网页浏览都由squid负责,其它由iptables负责.



特别注意,如客户端不能上网一定是你没设首选dns或设的不对,这里设的可不是防火墙的内网ip而是isp的dns地址



以上的设置数据包完全安我所设计的流动,我是用ehtereal和
ip_conntrack记录分析过的.


欢迎大家指正问题,大家一起提高
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 00:41 , Processed in 0.037262 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表