[案例]iptables/netfilter建立防火墙之常用命令集锦
发布于: August 24, 2009, 11:27 am 分类: Linux/Unix 作者: Saturn
声明:本文由cnSaturn.com原创,转载请注明出处。
Update: 2009-8-25
本文的目标读者是已经了解过iptables运行原理的同学,如果你连iptables是什么都不知道,那么本文并不适合你。因为此文并不介绍iptables的运行原理,而是直奔主题介绍一些它的常用实施案例。
iptables/Netfilter可以用来在Linux主机环境下架设简单的防火墙。
现在,假设我们有一个IP段为192.168.1.0/24的内部子网,它通过一个网关(gateway)链接到外部网络(可能是互联网或其他子网)。我们的需求是:需要通过iptables为其配置一个简单的防火墙以满足特定的需求。以下所有案例均基于此假设,网络拓扑图如下:

案例一:拒绝外部网络的所有FTP数据包,但允许内部子网运行FTP服务。
Iptables命令如下:
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport ftp -j ACCEPT iptables -A INPUT -p tcp --dport ftp -j REJECT iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport ftp -j ACCEPT iptables -A FORWARD -p tcp --dport ftp -j REJECT
案例二:允许SSH远程连接,但需屏蔽Telnet服务
Iptables命令如下:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT iptables -A INPUT -p tcp --dport telnet -j REJECT
案例三:屏蔽Ping
屏蔽Ping,就是Reject所有ICMP包。
iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
案例四:屏蔽所有外部网络来自对21和80号端口的数据请求
iptables -A INPUT -p tcp --dport 21 -j REJECT iptables -A INPUT -p udp --dport 21 -j REJECT iptables -A INPUT -p tcp --dport 80 -j REJECT iptables -A INPUT -p udp --dport 80 -j REJECT
案例五:屏蔽所有外部网络来自对UDP端口的数据请求
iptables -A INPUT -p udp -j REJECT
案例六:允许内部子网的email数据包,但需屏蔽来自外部网络的所有出和进子网的email数据包
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m multiport --dport smtp,pop3,imap -j ACCEPT iptables -A INPUT -p tcp -m multiport --dports smtp,pop3,imap -j REJECT iptables -A OUTPUT -p tcp -m multiport --dports smtp,pop3,imap -j REJECT iptables -A FORWARD -p tcp -m multiport --dports smtp,pop3,imap -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT iptables -A FORWARD -p tcp -m multiport --dports smtp,pop3,imap -j REJECT
案例七:屏蔽两个特定网络对这个内部子网的所有数据交换请求
iptables -A INPUT -s 192.168.1.0/24 -j REJECT iptables -A INPUT -s 211.65.100.0/24 -j REJECT
附录:
计算机常用端口与其服务名称的对应图:
|
ftp |
21 |
pop3 |
110 |
|
ssh |
22 |
imap |
143 |
|
telnet |
23 |
|
|
|
smtp |
25 |
|
|
回应此文
你也可以选择引用此文章.