Linux防火墙软件iptables

本文旨在简单介绍Linux下防火墙软件iptables的使用及相关知识。

1. Netfilter

一般依据防火墙的作用域范围,Linux下提供了三种防火墙机制:Netfilter(同时适用单一主机网域和区网域)、TCP Wrapper(常用于单主机网域)和Proxy Server(常用于区网域),而本文要讲的是iptables这个软件则是由Netfilter提供的,通过分析进入主机的网络,主要是比对封包的表头数据比如MAC、IP等,进而决定对其放行或是阻挡。

2. iptables几个重要概念

iptables下定义了几个表格,而每个表格又定义了自己的预设政策和规则,来实现不同的功能。

2.1 filter

主要跟进入的Linux本机的封包相关,且是默认的表格,主要包括如下三种类型的链:

  • INPUT:进入本机的封包;
  • OUTPUT:本机发出的封包;
  • FROWARD:转发,跟NAT表相关;

举个简单的例子:
iptables -A INPUT -p tcp -s 192.168.10.50 --dport 21:23 -j DROP

2.2 nat

主要是用来做源、目标地址和端口转换的,包括如下常见的三种类型的链:

  • PREROUTING:进入路由之前要判断的规则(DNAT/REDIRECT),可以修改封包的目标IP;
  • POSTROUTING:进入路由之后要判断的规则(SNAT/MASQUERADE),可以修改封包的源IP;
  • OUTPUT:发出的封包规则;

举两个相关的简单例子:
iptables -t nat -A POSTROUTING -s 192.168.10.100 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SDAT --to-source 10.106.5.14

2.3 mangle

这个一般用的不多特别对于初学者,此处不做赘述。

3. iptables软件的使用

3.1 预设防火墙policy

当所有设定的规则没匹配上时,会按照预设的防火墙policy来决定流量的处理。

如下是单机最常见的防火墙预设设定:

iptables -P INPUT DROP
iptables -P OUYPUT ACCEPT
iptables -P FROWARD ACCEPT
iptable -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

3.2 规则添加格式

iptables -A [optional params]
默认操作filter表,如果要添加NAT规则,需要加上参数-t nat

optional params:

  • -s/-d : 源/目标地址IP
  • -p : 协议,常见的取值有tcp、udp、icmp、all
  • --sport/--dport : 源/目标port
  • -i/-o : 源/目标网卡设备
  • -j : 操作,常见的取值有ACCEPT、DROP、LOG等

在实际添加防火墙规则时,要注意添加的规则顺序以防有些规则根本不会生效,因为当有流量接入时,iptables会自上而下对规则进行扫描,一旦规则匹配上则停止继续扫描。

3.3 规则保存

直接通过iptables命令添加的规则是临时生效的,一旦机器重启或者关机,该规则就会失效。因此建议把规则添加到iptables的规则配置文件(比如ubuntu 14.04下/etc/iptables/rules.v4),而后通过命令iptables-restore < /etc/iptables/rules.v4来生效。

你可能感兴趣的:(Linux防火墙软件iptables)