linux+squid+iptables企业方案

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值