转贴自:http://bbs.newhua.com/thread-69131-1-9.html
01、允许部分人可以访问Internet,但是不能下载; 02、允许部分人可以下载; 03、允许部分人完全没有限制; 04、允许全体人员在固定时间,有部分限制,不在此时间之内,撤除限制; 05、不允许下载的特定url字符:exe/zip等等; 06、不允许访问特定的站点; 07、透明代理与用户认证共存; 08、允许部分人员只能浏览指定网站; 09、只允许收发邮件(所有域名邮件(smtp,pop3))和只能收某域名收发某域名邮件; 10、IP/MAC绑定用户名认证上网; 11、三种认证方式(mysql,samba,ncsa); 首先本人认为01 是不可能实现的,而11我又不会SQL和SAMBA认证只会基本认证,除此之外其余均能实现 假设子网192.168.1.0/24,某个域名为www.163.com通过PING 的其IP为202.108.36.196,通过其IP限制收发该域名邮件(可在iptables中实现) 外网网卡为eth0内网网卡为eht1,为eth1绑定192.168.1.201和192.168.0.201 cp eth1 eth1:1 修改eht1:1 没有限制的用户为192.168.0.201以后的IP用MAC标志 由于AS3没有安装GCC而本身的SQUID里又没有NCSA文件,固重新安装GCC和SQUID, tar zxvf squid-2.5.STABLE7.tar.gz cd squid-2.5.STABLE7 ./configure --prefix=/usr/local/squid --sysconfdir=/etc/squid #配置文件位置 --enable-arp-acl #客户端的MAC地址进行管理 --enable-linux-netfilter #允许使用Linux的透明功能 --enable-pthreads --enable-err-language="Simplify_Chinese" --enable-default-err-language="Simplify_Chinese" #上面两个选项告诉Squid编入并使用简体中文错误信息 --enable-storeio=ufs,null #可以不用缓冲 --enable-auth="basic" #认证方式 --enable-baisc-auth-helpers="NCSA" #认证程序为 --enable-underscore #允许解析的URL中出现下划线 make make install 开始配置squid.conf ###################################################################### # 服务器配置 icp_port 0 cache_store_log none cache_access_log /dev/null cache_log /dev/null http_port 3128 cache_mem 128 MB cache_dir null /tmp pid_filename none client_netmask 255.255.255.255 half_closed_clients on #用户分类 auth_param basic program /usr/bin/ncsa_auth /usr/etc/passwd auth_param basic children 5 auth_param basic realm Tianfuming proxy-caching server auth_param basic credentialsttl 2 hours acl normal proxy_auth REQUIDE #用户认证 acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b ... #10 IP/MAC绑定用户名认证上网; acl lana src 192.168.1.0/24 acl lanb src 192.168.0.1-192.168.0.200/32 #行为分类 acl download urlpath_regex -i /.mp3$ /.exe$ /.avi$ /.rar$ /.rvmb$ /.jpg #禁止下载 #acl conncount maxconn 5 #最大连接数 acl worktime MTWHF 8:00-18:00 # 04、允许全体人员在固定时间,有部分限制, #不在此时间之内,撤除限制(在http_access中限制) acl qq dstdomain .snnu.edu.cn acl badwords url_regex sex acl localhost src 127.0.0.1/32 acl all src 0.0.0.0/0.0.0.0 http_access allow advance # 03 允许部分人完全没有限制; http_access allow localhost #http_access deny conncount normal http_access deny ! http_access deny badwords worktime # 不允许访问特定url字符网站 http_access deny qq worktime # 06 不允许访问特定的站点 http_access allow lana # 02 允许部分人可以下载 http_access deny download worktime # 05 不允许下载的特定url字符:exe/zip等等; http_access allowd lanb homepage #08、允许部分人员只能浏览指定网站; http_access allow normal http_access deny all #除这些,禁止所有 #结合透明代理 07、透明代理与用户认证共存 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on ##################################################################### iptables脚本 ##################################################################### #! /bin/sh UPLINK="eth0" UPIP="a.b.c.d" LANLINK="eth1" ROUTER="yes" #NAT="UPIP/dynamic" NAT="UPIP" INTERFACES="lo eth0 eth1" SERVICES="80 22 25 110 " deny="" case "$@" in start) echo -n "Starting firewall..." modprobe ip_nat_ftp modprobe ip_conntrack_ftp iptables -P INPUT DROP iptables -A INPUT -i ! ${UPLINK} -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD DROP iptables -A FORWARD -p tcp -m multiport --dport 25 80 110 -j ACCEPT iptables -A FORWARD -d !202.108.36.196 -p tcp -m multiport --dprot 25 110 -j DROP ##09、只允许收发邮件(所有域名邮件 iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT #(smtp,pop3))和只能收某域名收发某域名邮件 #iptables -P OUTPUT DROP #enable public access to certain services for x in ${SERVICES} do iptables -A INPUT -p tcp --dport ${x} -m state --state NEW -j ACCEPT done for y in ${deny} do iptables -A OUTPUT -p tcp --dport ${y} -j DROP iptables -A OUTPUT -p udp --dport ${y} -j DROP done #enable system-log #iptables -A INPUT -j LOG --log-prefix "bad input:" iptables -A INPUT -p tcp -i ${UPLINK} -j REJECT --reject-with tcp-reset #iptables -A INPUT -p udp -i ${UPLINK} -j REJECT --reject-with icmp-port-unreachable #explicitly disable ECN if [ -e /proc/sys/net/ipv4/tcp_ecn ] then echo 0 > /proc/sys/net/ipv4/tcp_ecn fi #disable spoofing on all interfaces for x in ${INTERFACES} do echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter done if [ "$ROUTER" = "yes" ] then #we're a router of some kind, enable IP forwarding echo 1 > /proc/sys/net/ipv4/ip_forward if [ "$NAT" = "dynamic" ] then #dynamic IP address, use masquerading iptables -t nat -A POSTROUTING -o ${UPLINK} -j MASQUERADE elif [ "$NAT" != "" ] then #static IP, use SNAT iptables -t nat -A PREROUTING -i ${LANLINK} -d ! ${UPIP} -j DNAT --to-ports 3128 iptables -t nat -A POSTROUTING -o ${UPLINK} -j SNAT --to ${UPIP} fi fi echo "OK!" exit 0 ;; stop) echo -n "Stopping firewall..." iptables -F INPUT iptables -P INPUT ACCEPT iptables -F OUTPUT iptables -P OUTPUT ACCEPT #turn off NAT/masquerading, if any #iptables -t nat -F POSTROUTING echo "OK!" exit 0 ;; restart) $0 stop $0 start ;; show) clear echo ">------------------------------------------------------" iptables -L echo ">------------------------------------------------------" iptables -t nat -L POSTROUTING exit 0 ;; *) echo "Usage: $0 {start|stop|restart|show}" exit 1 esac |