文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>iptables 入门

iptables 入门

时间:2005-08-16  来源:cexoyq

iptables 中的指令,均需区分大小写。 ipchains 和 iptables 在语法上的主要的差异,注意如下: 1. 在 ipchains 中,诸如 input 链,是使用小写的 chains 名,在 iptables 中,要改用大写 INPUT。 2. 在 iptables 中,要指定规则是欲作用在那一个规则表上(使用 -t 来指定,如 -t nat),若不指定,则预设是作用在 filter 这个表。 3. 在 ipchains 中, -i 是指介面(interface),但在 iptables 中,-i 则是指进入的方向,且多了 -o,代表出去的方向。 4. 在 iptables 中,来源 port 要使用关键字 --sport 或 --source-port 5. 在 iptables 中,目的 port 要使用关键字 --dport 或 --destination-port 6. 在 iptables 中,"丢弃" 的处置动作,不再使用 DENY 这个 target,改用 DROP。 7. 在 ipchains 的记录档功能 -l,已改为目标 -j LOG,并可指定记录档的标题。 8. 在 ipchains 中的-y,在 iptables 中可用 --syn 或 --tcp-flag SYN,ACK,FIN SYN 9. 在 iptables 中,imcp messages 型态,要加上关键字 --icmp-type,如: iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT

iptables 入门 iptables 入门 这一节开始说明 iptables 的观念及用法 iptables 中的指令,均需区分大小写。 ipchains 和 iptables 在语法上的主要的差异,注意如下: 1. 在 ipchains 中,诸如 input 链,是使用小写的 chains 名,在 iptables 中,要改用大写 INPUT。 2. 在 iptables 中,要指定规则是欲作用在那一个规则表上(使用 -t 来指定,如 -t nat),若不指定,则预设是作用在 filter 这个表。 3. 在 ipchains 中, -i 是指介面(interface),但在 iptables 中,-i 则是指进入的方向,且多了 -o,代表出去的方向。 4. 在 iptables 中,来源 port 要使用关键字 --sport 或 --source-port 5. 在 iptables 中,目的 port 要使用关键字 --dport 或 --destination-port 6. 在 iptables 中,"丢弃" 的处置动作,不再使用 DENY 这个 target,改用 DROP。 7. 在 ipchains 的记录档功能 -l,已改为目标 -j LOG,并可指定记录档的标题。 8. 在 ipchains 中的-y,在 iptables 中可用 --syn 或 --tcp-flag SYN,ACK,FIN SYN 9. 在 iptables 中,imcp messages 型态,要加上关键字 --icmp-type,如: iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT iptables 使用时的例子 在设定 iptables 的封包过滤规则时,有几个例子,若先熟悉它们,往后就可自行套用,依此类推,很快地,您就可以进入这个天地之中。 ############################################## ##--------## 准备工作 ##--------## 首先查看一下机器上的有关于iptables的设定情况 作法如下: iptables -L -n iptablse -t nat -L -n 定义以下例子中引用的变数IP $FW_IP="163.26.197.8" 打开核心 forward 功能,作法如下: ###-----------------------------------------------------### # 打开 forward 功能 ###-----------------------------------------------------### echo "1" > /proc/sys/net/ipv4/ip_forward 或在/etc/sysconfig/network 中添加 FORWARD_IPV4=yes 打开转发功能 清除所有的规则,作法如下:: 一开始要先清除所有的规则,重新开始,以免旧有的规则影响新的设定。作法如下: ###-----------------------------------------------------### # 清除先前的设定 ###-----------------------------------------------------### # 清除预设表 filter 中,所有规则链中的规则 iptables -F # 清除预设表 filter 中,使用者自订链中的规则 iptables -X # 清除mangle表中,所有规则链中的规则 iptables -F -t mangle # 清除mangle表中,使用者自订链中的规则 iptables -t mangle -X # 清除nat表中,所有规则链中的规则 iptables -F -t nat # 清除nat表中,使用者自订链中的规则 iptables -t nat -X ################################################### 选定预设的策略 接着,要选定各个不同的规则链,预设的策略为何。作法如下: 预设全部丢弃: ###-----------------------------------------------------### # 设定 filter table 的预设策略 ###-----------------------------------------------------### iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP 或者预设全部接受: ###-----------------------------------------------------### # 设定 filter table 的预设策略 ###-----------------------------------------------------### iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT **各个规则链的预设策略可独立自主的设定,不必受其它链的影响。** 以下练习,若目标为 DROP(丢弃),则 policy 请设为 ACCEPT(接受);若目标为 ACCEPT,则 policy 请设为 DROP,如此方可看出效果。 开放某一个介面 作法如下: iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT 注:IPFW 或 Netfilter 的封包流向,local process 不会经过 FORWARD Chain, 因此 lo 只在 INPUT 及 OUTPUT 二个 chain 作用。 iptables -A INPUT -i eth1 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -o eth1 -j ACCEPT IP 伪装(SNAT应用) 使内网的封包经过伪装之后,使用对外的 eth0 网卡当作代理号,对外连线。作法如下: ###-----------------------------------------------------### # 启动内部对外转址 ###-----------------------------------------------------### iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j SNAT --to-source $FW_IP 上述指令意指:把 172.16.0.0/16 这个网段,伪装成 $FW_IP 出去。 虚拟主机(DNAT应用) 利用转址、转 port 的方式,使外网的封包,可以到达内网中的服务器主机,俗称虚拟主机。这种方式可保护服务器主机大部份的 port 不被外 界存取,只开放公开服务的通道(如 Web Server port 80),因此安全性较高。 作法如下: ###-----------------------------------------------------### # 启动外部对内部转址 ###-----------------------------------------------------### # 凡对 $FW_IP:80 连线者, 则转址至 172.16.255.2:80 iptables -t nat -A PREROUTING -i eth0 -p tcp -d $FW_IP --dport 80 -j DNAT --to-destination 172.16.255.2:80 开放内部主机可以 telnet 至外部的主机 开放内网,可以 telnet 至外部主机。 作法如下:(预设 policy 为 DROP) ###-----------------------------------------------------### # open 外部主机 telnet port 23 ###-----------------------------------------------------### iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport 1024:65535 -j ACCEPT 开放邮包转递通道 开放任意的邮件主机送信包给你的 Mail Server,而你的 Mail Server 也可以送信包过去。 作法如下:(预设 policy 为 DROP) ###-----------------------------------------------------### # open SMTP port 25 ###-----------------------------------------------------### # 以下是:别人可以送信给你 iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 25 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 25 -d any/0 --dport 1024:65535 -j ACCEPT # 以下是:你可以送信给别人 iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport 1024:65525 -j ACCEPT 开放对外离线下载信件的通道 开放内网可以对外网的 POP3 server 取信件。 作法如下:(预设 policy 为 DROP) ###-----------------------------------------------------### # open 对外部主机的 POP3 port 110 ###-----------------------------------------------------### iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP --dport 1024:65535 -j ACCEPT 开放观看网页的通道 开放内网可以观看外网的网站。 作法如下:(预设 policy 为 DROP) ###-----------------------------------------------------### # open 对外部主机的 HTTP port 80 ###-----------------------------------------------------### iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 80 -d $FW_IP --dport 1024:65535 -j ACCEPT 开放查询外网的 DNS 主机 开放内网,可以查询外网任何一台 DNS 主机。 作法如下:(预设 policy 为 DROP) ###-----------------------------------------------------### # open DNS port 53 ###-----------------------------------------------------### # 第一次会用 udp 封包来查询 iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT # 若有错误,会改用 tcp 封包来查询 iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT # 开放这台主机上的 DNS 和外部的 DNS 主机互动查询:使用 udp iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT # 开放这台主机上的 DNS 和外部的 DNS 主机互动查询:使用 tcp iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! -y -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT 开放内部主机可以 ssh 至外部的主机 开放内网,可以 ssh 至外部主机。 作法如下:(预设 policy 为 DROP) ###-----------------------------------------------------### # open 外部主机 ssh port 22 ###-----------------------------------------------------### iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1024:65535 -j ACCEPT # 以下是 ssh protocol 比较不同的地方 iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1020:1023 -d any/0 --dport 22 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1020:1023 -j ACCEPT 开放内部主机可以 ftp 至外部的主机 开放内网,可以 ftp 至外部主机。 作法如下:(预设 policy 为 DROP) ###-----------------------------------------------------### # open 对外部主机 ftp port 21 ###-----------------------------------------------------### # 以下是打开命令 channel 21 iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 21 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 21 -d $FW_IP --dport 1024:65535 -j ACCEPT # 以下是打开资料 channel 20 iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 20 -d $FW_IP --dport 1024:65535 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 1024:65535 -d any/0 --dport 20 -j ACCEPT # 以下是打开 passive mode FTP 资料通道 iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 1024:65535 -d $FW_IP --dport 1024:65535 -j ACCEPT 开放 ping 可以对外 ping 任何一台主机。 作法如下:(预设 policy 为 DROP) iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT iptables -A INPUT -i eth0 -p icm -s any/0 --icmp-type 0 -d $FW_IP -j ACCEPT ********************************************************************************************************************************************************* 追加: 问题1:为什么每个功能都用了两条链INPUT和OUTPUT,他们的作用是不是先允许网关机器output,然后再允许局域网到网关机器?             _____              /         .   Incoming-->[Routing ]--->|FORWARD|------->Outgoing         [Decision]  _____/     ^           |              |           v           _____          ____         /            /           |OUTPUT|          |INPUT|          ______/           ____/            ^           |             |            ----> Local Process ----   还是分析一下包的在链中的处理流程吧! 其中三个圈代表前述的三个链,当一个包抵达上图其中的一个链时,相应的链就会被检验(examined)以决定如何处理这个包。如果链认为 应该丢弃(DROP)这个包,则将该包丢弃;如果链认为应该接受(ACCEPT)该包,那么它将继续在图中穿越。 (1)当一个包进入时,内核首先看包的目的地,如果目的地址为本机,这个包就下行至INPUT链,如果能够通过检测,则进入后面的包处理 程序。 (2)如果目的地址不是本机,但内核没有启动转发功能,或者内核不知道如何转发这个包,那么该包就会被丢弃。 (3)如果目的地址不是本机,转发功能也已经启动,那么这个包将右行至FORWARD链。如果该包被接受,那么它将会被发送出去。 (4)一个在本机运行的程序发送网络包,这时包会直接经过OUTPUT链,如果被接受,该包会继续被发送到它所指定的网络接口。 注:Incoming & Outgoing 可以是内网也可以是外网, Local Process是指提供代理 或 IP过滤的服务器. 现在知道各链的功能,也就能知道同时出现INPUT,OUTPUT规则语句的含义

相关阅读 更多 +
排行榜 更多 +
正太寿司屋游戏安卓版下载

正太寿司屋游戏安卓版下载

模拟经营 下载
波比的游戏时间第七章手游下载

波比的游戏时间第七章手游下载

休闲益智 下载
像素火影(次世代)千手扉间下载

像素火影(次世代)千手扉间下载

飞行射击 下载