分享
 
 
 

iptables入门

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

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 -L -n

iptablse -t nat -L -n

定义变数

FW_IP="163.26.197.8"

打开核心 forward 功能

作法如下∶

###-----------------------------------------------------###

# 打开 forward 功能

###-----------------------------------------------------###

echo "1" > /proc/sys/net/ipv4/ip_forward

清除所有的规则

一开始要先清除所有的规则,重新开始,以免旧有的规则影响新的设定。作法如下∶

###-----------------------------------------------------###

# 清除先前的设定

###-----------------------------------------------------###

# 清除预设表 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 伪装

使内部网路的封包经过伪装之后,使用对外的 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 出去。

虚拟主机

利用转址、转 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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有