Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59728
  • 博文数量: 19
  • 博客积分: 226
  • 博客等级: 二等列兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-02 18:33
文章分类

全部博文(19)

文章存档

2011年(19)

分类: LINUX

2011-12-19 10:19:31

iptables 使用技巧

1、禁止客户机访问某些网站
iptables -I FORWARD -d  -j DROP
也可以直接限制访问的IP地址,如:
iptables -I FORWARD -d 218.218.128.128 -j DROP

2、禁止某些客户机上网
iptables -I FORWARD -s 192.168.1.200 -j DROP

3、禁止某一网段上网
iptables -I FORWARD -s 192.168.1.0/24 -j DROP

4、禁止客户机访问特定的服务
iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport 21 -j DROP
(禁止192.168.1.0网络访问FTP服务)

5、禁止客户机ping linux服务器,但linux 服务器可以ping客户机
iptables -P INPUT DROP
iptables -A INPUT -i ppp0 -p icmp -m state --state ESTABLISH,RELATED -j ACCEPT
(只允许状态为ESTABLISH和RELATED的数据包通过,而状态为NEW的请求包不允许)

6、发布内网的服务器
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.200:80
(INTERNET的用户访问LINUX主机的80端口时,转到192.168.1.200的80端口,即访问内网的WEB服务)

7、智能DNS服务
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 61.128.128.68:53
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to-destination 61.128.128.68:53
(内网用户的DNS请求均送到一个合法的DNS服务器61.128.128.68,此时不论客户机设置的DNS是否正确,均能由61.128.128.68进行解析)

8、强制访问某一站点
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 210.21.118.68:80
(当客户机进行WEB请求时,自动转到210.21.118.68这台WEB服务器)

9、支持squid做透明代理
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
(当客户机访问WEB服务时,重定向到squid 的3128端口,由squid进行处理。)

注:要支持squid的透明代理,还需要在squid.conf添加如下语句:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Squid 访问控制列表

一、访问控制列表格式

acl <列表名称> <列表类型> -i <列表值>

解释:
列表名称:可以任意命名,但不能与其它列表重名。
列表类型:常见有以下几种
    src:源地址
    dst:目标地址
    srcdomain:源名称
    dstdomain:目标域名
    url_regex:url字串
    urlpath_regex:url目录路径字串,即网址中除了http://域名,剩下的那部分路径。
    maxconn:同一IP的最大并发连接数
    time:指定时间
    arp:指定MAC地址(高版本的squid才有此参数)

二、应用实例
1、禁止指定的IP上网
例:禁止192.168.1.20这台机器上网
acl client1 src 192.168.1.20 (定义这台机器)
http_access deny client1

2、禁止某个网段上网
例:禁止192.168.1.0网段的机器上网
acl net1 src 192.168.1.0/255.255.255.0
http_access deny net1

3、禁止用户访问某个IP
例:禁止用户访问192.168.1.66这台机器
acl ip1 dst 192.168.1.66
http_access deny ip1

4、禁止用户访问某个域名
例:禁止访问
acl domain1 dstdomain -i   (-i表示忽略大小写)
http_access deny domain1

5、禁止访问域名中包含163.com的网站
例:禁止访问包含“163.com”的域名,如、mail.163.com
acl domain2 url_regex -i 163.com
http_access deny domain2

6、禁止访问网址路径中含有关键字的网站
例:禁止访问网址路径中包含“***”的网站(如:)
acl domain3 urlpath_regex -i ***
http_access deny domain3

7、限制客户端最大并发连接数
例:限制192.168.1.18这台机器的最大并发连接数为5
acl client1 src 192.168.1.18
acl conn1 maxconn 5
http_access deny client1 conn1

8、禁止指定网段在指定时间段内上网
例:不允许192.168.2.0这个网段的机器在星期一至星期五的9:00-17:00上网
acl net1 src 192.168.2.0/255.255.255.0
acl time1 time MTWHF 9:00-17:00
http_access deny net1 time1
(MTWHF 是星期一至星期五的英文缩写)

9、禁止访问指定类型的文件(可禁止下载)
例:禁止访问.gif .exe .mp3 .rmvb .zip等类型的文件
acl badfile urlpath_regex -i \.gif$ \.exe$ \.mp3$ \.rmvb$ \.rm$ \.wma$ \.wav$ \.rar$ \.zip
http_access deny badfile

10、禁止指定的MAC地址的机器上网
例:禁止02:00:4C:4F:4F:50这台机器上网
acl mac1 arp 02:00:4C:4F:4F:50
http_access deny mac1

注:squid的访问控制列表是按顺序读取的,且类似于路由器的访问控制列表,隐含一条http_access deny all
所以,在所有的访问控制列表设置完毕后,要在最后加上
acl all src 0.0.0.0/0.0.0.0
http_access allow all 
这样其它机器才可访问。

11、让squid的提示信息变为中文
mv /etc/squid/errors /etc/squid/errors.bak(将原来的链接文件改名)
ln -s /usr/share/squid/errors/Simplify_Chinese /etc/squid/errors
/etc/rc.d/init.d/squid reload(重新载入新的配置)

12、squid透明代理
首先需要在squid.conf添加如下语句:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

然后设置iptables
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
所有从eth0口进入的WEB请求直接转发到3128端口,由squid进行处理。

阅读(3304) | 评论(0) | 转发(0) |
0

上一篇:TreeView

下一篇:CGI概述

给主人留下些什么吧!~~