24 123
发新话题
打印

[iptables] Iptables入门与提高

Iptables入门与提高

ptables基础(规则,链,表)
规则rules:就是网络管理员预定的条件,这些规则分别指定了源地址,目的地址,传输协议(tcp,udp,icmp),和服务类开型(HTTP,FTP,SMTP)
    定义一些动作:acccept,reject,drop
链chains:是数据包的传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条规则.
表tables:filter,nat,mangle三个表.
    fitler:是iptables默认的表,主要用于包过滤.
    nat:主要用于NAT网络地址转换,访表可以实现一对一,一对多,多对多等NAT工作(PREROUTING,OUTPUT,POSTROUTING)
    mangle:主要用于对指定的包进行修改,因为某些特应用可能需要去改写数据包的一些传输特性,如更改数据包的TTL和TOS等,
           不过在实际应用中访表的使用率不高.

    网关功能的实现

二,使用iptables实现NAT服务:
NAT服务器安装双网卡:
eth0 企业内部,内部网卡
eth1 企业外部(通过eth1连接到ADSL modem通过pppoe协议拨号到internet)
  画出图:
1.#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=.....
IPADDR=192.168.0.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
OBOOT=yes
type=Ethernet

2.#vi /etc/sysconfig/network-scripts/ifcfg-eth1:
DEVICE=eth1
BOOTPROTO=static
BROADCAST=172.16.1.255
HWADDR=.....
IPADDR=172.16.1.1
NETMASK=255.255.255.0
NETWORK=172.16.1.0
OBOOT=yes
type=Ethernet
注:eth1与adsl moden相连,然后通过pppoe拨号接入到internet,系统在启动时需要分配一个IP给eth1,默认是通过DHCP自动获取,为了加快
系统的启动速度,可以为eth1手动指定一个ip地址172.16.1.1,这个地址最好是私有的面明这个地址不能与局域网机器使用的IP位于同一个子网

3.为系统指定DNS服务器:
#vi /etc/resolv.conf
nameserver 61.143.12.101
nameserver 202.92.128.86

#servcie network restart

三,建立ADSL连接:
1.#rpm -qa |grep rp-ppoe
2.#adsl-setup
  LOGIN NAME: 输入账户名
  INTERFACE:eth1(与adsl modem相连网卡的名称)
  设置是否按需拨号,如果设置按需拨号,输入闲置多少秒后自动断开连接,对于包用户永久在线,输入:no
  输入"server",表示使用adsl拨号时自动从ISP获取得DNS服务器IP地址.
  PASSWORD:输入密码
  设置是否允许一般用户连接断开adsl连接:no
  firewall:0 不启用,以后可以配.
  系统动启时是否自动进行拨号:no (为了以后方便调试)
  确认保存设置:y
  #adsl-status
  #adsl-start,adsl-stop
  #tail -n 20 /var/log/messages

四,使用iptables实现NAT
  1,打开NAT路由功能和IP为装
  echo "1">/proc/sys/network/ipv4/ip_forward
  或者#vi /etc/sysctl.conf
  iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 实现IP为装.
  #iptables -t nat -L
  2.设置客户端:
  Linux:vi /etc/sysconfig/network,/etc/resolv.conf
  windows:网络连接,属性.
  3.启动时自动拨号和配置NAT:
  #vi /etc/rc.d/rc.local
   /sbin/adsl-start
   echo "1" > /proc/sys/net/ipv4/ip_forward
   /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE



iptables技巧实例:
1.禁止局域网内的用户访问不健康的网站:www.playboy.com
#iptables -A FORWARD -d www.play.com -j DROP

2.禁止用户访为IP为210.12.19.3的网站
#iptables -A FORWARD -d 210.12.19.3 -j DROP

3.禁止192.168.1.20客户机上网:
#iptables -A FORWARD -s 192.168.1.20 -j DROP

4.禁止192.168.1.0子网里的所有客户机上网:
#iptables -A FORWARD -s 192.168.1.0/24 -j DROP

5.禁止客户机访问某些服务:
#iptables -A FORWARD -s 192.168.0.1/24 -p tcp --dport 21 -j DROP 禁止局网内使用FTP下载,即把21端口封啦.
#iptables -A FORWARD -s 192.168.0.1 -p tcp --dport 23 -j DROP 禁止所有的客户端使用telnet协议连接远程主机.

#iptables -t filter -L FORWARD

6.强制访问指定的站点
#iptalbes -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 210.10.11.19:80
#iptalbes -t nat -L PREROUTING 强制所有的客户机访问210.10.11.19:80这台WEB服务器.
  注:强制访问的站点技术注意事项:
  1.只能使用网站的IP地址,不能使用网站的域名:
  2.不适于使用虚拟主机技术的网站,因这种网站的IP地址是由多个网站共用的.

7,禁止客户机使用QQ(config.db里面的服务和端口,好像这个加密啦关键找到服务的IP地址)
#iptables -A FORWARD -p tcp --dport 8000 -j DROP
#iptables -A FORWARD -p udp --dport 8000 -j DROP
#iptables -A FORWARD -d tcpconn.tencent.com -j DROP
#iptables -A FORWARD -d tcpconn2.tencent.com -j DROP
#iptables -A FORWARD -d tcp.....
...............................4...
#iptables -A FORWARD -d http.tencent.com -j DROP
#iptables -A FORWARD -d http2.tencent.com -j DROP

8.禁止使用ICMP协议:
#iptables -A INPUT -i ppp0 -p icmp -j DROP

9.发布部服务器:
#iptables -t nat -I PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.22:80
#iptables -t nat -I PREROUTING -i ppp0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.36:3389

10.智能DNS服务:
#iptables -t nat -I PREROUTING -i eth0 -p upd --dport 53 -j DNAT --to-destination 61.144.56.101:53
#iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to-destination 61.144.56.101:53
积极!努力!低调!百折不挠!IT运维专家网[LinuxTone]
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux!
  Linux= howto+man ! ^_^

TOP

发现了几个问题
引用:
1.禁止局域网内的用户访问不健康的网站:www.playboy.com
#iptables -A FORWARD -d www.play.com -j DROP
上面写 www.playboy.com,下面写成了 www.play.com
引用:
6.强制访问指定的站点
#iptalbes -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 210.10.11.19:80
#iptalbes -t nat -L PREROUTING 强制所有的客户机访问210.10.11.19:80这台WEB服务器.
  注:强制访问的站点技术注意事项:
  1.只能使用网站的IP地址,不能使用网站的域名:
  2.不适于使用虚拟主机技术的网站,因这种网站的IP地址是由多个网站共用的.
是否应该向用户介绍一下 eth0 接口的作用?
引用:
7,禁止客户机使用QQ(config.db里面的服务和端口,好像这个加密啦关键找到服务的IP地址)
#iptables -A FORWARD -p tcp --dport 8000 -j DROP
#iptables -A FORWARD -p udp --dport 8000 -j DROP
#iptables -A FORWARD -d tcpconn.tencent.com -j DROP
#iptables -A FORWARD -d tcpconn2.tencent.com -j DROP
#iptables -A FORWARD -d tcp.....
...............................4...
#iptables -A FORWARD -d http.tencent.com -j DROP
#iptables -A FORWARD -d http2.tencent.com -j DROP
这样真的可以禁止掉嘛?
引用:
8.禁止使用ICMP协议:
#iptables -A INPUT -i ppp0 -p icmp -j DROP
好像功能没有描述清楚,禁止谁的?禁止什么流向?
引用:
9.发布部服务器:
#iptables -t nat -I PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.22:80
#iptables -t nat -I PREROUTING -i ppp0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.36:3389
这里可以简写为
iptables -t nat -I PREROUTING -i ppp0 -p tcp -m multiport --dports 80,3389 -j DNAT --to 192.168.0.22
另外,这里为何用 -I,上面 8 条为何都是 -A,-A 是否也该换成 -I 比较好?
引用:
10.智能DNS服务:
#iptables -t nat -I PREROUTING -i eth0 -p upd --dport 53 -j DNAT --to-destination 61.144.56.101:53
#iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to-destination 61.144.56.101:53
为何要对 TCP/53 也做目的地址转换?
DNS 的确会用到 TCP/53,但只有在 zone 传输和平衡负载的时候才会用到,一般情况下解析 A 记录、MX 记录不会用到 TCP 协议
一个人活得精彩
封存于 0612141938(133)

TOP

呵呵,谢谢白金大哥,细心找出这么多问题,

这是去年的学心笔记,存在很多问题,从中也暴露出我和很多问题,给朋友们说声sorry!^&*

eth0 为NAT服务器的IP,所有通过eth0接口进入WEB请求的都发送到IP:210.10.11.19

记得去年听大哥的讲座是就讲到I/A, firewall这些规则顺序的重要顺序,在这又犯错误啦.

QQ是很难禁止的公司用的V5的一个LINUX防火墙,也是直接输入服务器IP,当然没有办法绝对禁址的,我们很多同事通过代理照样能上.

关于封掉ICMP可以简单的设定:
iptables –A INPUT –p icmp --icmp-type echo-request –j REJECT

至于是DNS真得是否要用到TCP53,本人只是考虑DNS服务使用的是UDP/TCP 53端口所以通常不常会把这两个都加上,本人可能有点不求甚解,照猫花虎,看来需要端正学习态度啦!
                                                   
                                                                NetSeek  呈上
积极!努力!低调!百折不挠!IT运维专家网[LinuxTone]
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux!
  Linux= howto+man ! ^_^

TOP

引用:
eth0 为NAT服务器的IP,所有通过eth0接口进入WEB请求的都发送到IP:210.10.11.19
这个 NAT 服务器只有一个 eth0 嘛?
若不是,应该叙述一下是 LAN 口还是 WAN 口比较好一些:)
引用:
关于封掉ICMP可以简单的设定:
iptables –A INPUT –p icmp --icmp-type echo-request –j REJECT
ICMP 是一个协议群,其中的 type 8 code 0 是 ping,type 0 code 0 是 pong
ICMP 还有很多很多其他功能,所以做控制时要特别小心
一个人活得精彩
封存于 0612141938(133)

TOP

引用:
原帖由 platinum 于 2006-8-31 22:10 发表

这个 NAT 服务器只有一个 eth0 嘛?
若不是,应该叙述一下是 LAN 口还是 WAN 口比较好一些:)


ICMP 是一个协议群,其中的 type 8 code 0 是 ping,type 0 code 0 是 pong
ICMP 还有很多很多其他功能,所 ...
受教! 以后贴出来的东西一定要经过全面的测试,重新温习一下iptables相关的基础知识!
积极!努力!低调!百折不挠!IT运维专家网[LinuxTone]
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux!
  Linux= howto+man ! ^_^

TOP

不要急,慢慢来,我也是这样一点一点扣出来的 ^_^
一个人活得精彩
封存于 0612141938(133)

TOP

能不能详细解释一下ICMP协议群?
#iptables -A INPUT -i ppp0 -p icmp  --icmp-type 8 -j DROP
"--icmp-type 8"是什么意思?

TOP

引用:
原帖由 liheng 于 2006-10-14 15:45 发表
能不能详细解释一下ICMP协议群?
#iptables -A INPUT -i ppp0 -p icmp  --icmp-type 8 -j DROP
"--icmp-type 8"是什么意思?
type 8 是代表 ping 包,type 0 是代表 pong 包(ping 的返回)
TCP/IP 详解卷一的第六章有详细说明
一个人活得精彩
封存于 0612141938(133)

TOP

顶一下
把握每一天

TOP

受教

TOP

 24 123
发新话题