[案例]iptables/netfilter建立防火墙之常用命令集锦

声明:本文由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

 

 

标签: linux,iptables

回应此文

你也可以选择引用此文章.