iptables及其过滤规则

1. iptables是Linux内核的一个模块,用以管理对网络设备(网卡)的访问,如路由过滤、端口转发、NAT等,root用户可以通过iptables配置操作系统的路由表。在当前的主流Linux发布系统中,都默认安装了iptables。

为了适应IPv6,事实上iptables用以管理IPv4数据包的过滤和地址转换,ip6tables用以管理IPv6数据包的过滤和地址转换。后文将其统一称为iptables。

在CentOS 5.x+上,检查iptables的安装情况:

[root@my]# rpm -q iptables
iptables-1.4.21-28.el7.x86_64

在CentOS上,检查iptables的启动情况:

[root@my]# lsmod | grep ip_tables
ip_tables              27126  5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw

如果iptables没有被启动,则执行命令:

[root@my]# system-config-securitylevel

2. iptables的路由规则以表(table)的方式存储,默认为如下5个表

1) filter

iptables/ip6tables命令默认操作的表,过滤IP数据包

2) nat

iptables/ip6tables -t nat,创建新连接的IP数据包

3) mangle

iptables/ip6tables -t mangle,特殊IP数据包的替换

4) raw

iptables/ip6tables -t raw

5) security

iptables/ip6tables -t security,MAC网络规则

表中又以链(chain)的方式组织不同类型的过滤规则。链与链之间可以嵌套(父子链)或级联(先后链)。iptables/ip6tables提供了一些内置的chain,如表filter中的过滤规则,默认被划分为3个chains:

  • INPUT,目标(destination)为当前机器的IP包
  • OUTPUT,源(origination)为当前机器的IP包
  • FORWARD,任何经过当前机器的其他IP包

每个chain都包含一个路由规则的列表。对于要处理的IP包,按照从上到下的顺序匹配列表中的路由规则,一旦某个路由规则被匹配则执行对应的操作(DROP,ACCESS或RETURN),而不再考虑后续的路由规则。

如果最后没有任何一个路由规则被匹配,则执行该chain的默认操作。一个chain的默认操作可以是DROP或ACCESS。对于INPUT chain,建议默认操作为DROP;对于OUTPUT chain,建议默认操作为ACCESS。

3. iptables的常见命令

1) 查看路由表
        iptables -L
        iptables -L -n

2) 查看NAT相关的路由表
        iptables -L -t nat

3) 配置SSH
        iptables -A INPUT -p tcp --dport 22 -j ACCEPT

4) 可以将若干命令写入到一个脚本文件myfirewall,并chmod +x myfirewall,这样在需要的时候执行脚本文件./myfirewall即可。

# iptables -P INPUT ACCEPT
# iptables -F即flush all existing rules
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -L -v

4. 保存对iptables的配置

[root@my]# /sbin/service iptables save

说明,iptables/ip6tables中的过滤规则往往是由初始化脚本或daemon进程创建,默认是不能持久化的;所以Linux系统重启后,需要重新设置。

该命令将执行iptables初始化脚本,并进而调用/sbin/iptables-save命令,从而将当前的过滤规则写入到/etc/sysconfig/iptables文件中。这样,当重启Linux系统时,iptables初始化脚本会调用/sbin/iptables-restore命令恢复/etc/sysconfig/iptables文件中的过滤规则。

5. Linux内核中的netfilter模块

与iptables运行在用户空间不同,为了提高执行的效率,netfilter是运行在Linux内核空间的模块。

netfilter实际进行路由控制的过滤操作,对于IP包进行实际的操作,DROP或者ACCESS。

 

参考链接:

    https://wiki.centos.org/HowTos/Network/IPTable

你可能感兴趣的:(Docker,Linux)