linux:iptables与firewalld防火墙

在公网与企业内网 之间充当保护屏障的防火墙虽然有软件或硬件之分,但主要功能都是依据策略对 穿越防火墙自身的流量进行过滤。防火墙策略可以基于流量的源目地址、端口号、协议、应 用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策 略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在 企业内网和外部公网之间流动了。

在 RHEL 7 系统中,firewalld 防火墙取代了 iptables 防火墙。

其实,iptables 与 firewalld 都不是真正的防火墙, 它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理,而 firewalld 服务 则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理。

iptables:

iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则 链,而规则链则依据数据包处理位置的不同进行分类,具体如下:

在进行路由选择前处理数据包(PREROUTING);

处理流入的数据包(INPUT);
处理流出的数据包(OUTPUT);使用最多的就是INPUT 规则链

处理转发的数据包(FORWARD);

在进行路由选择后处理数据包(POSTROUTING)。

iptables 服务 的术语中分别是 ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、 DROP(拒绝流量通过)。“允许流量通过”和“记录日志信息”都比较好理解,这里需要着重 讲解的是 REJECT 和 DROP 的不同点。就 DROP 来说,它是直接将流量丢弃而且不响应; REJECT 则会在拒绝流量后再回复一条“您的信息已经收到,但是被扔掉了”信息,从而让 流量发送方清晰地看到数据被拒绝的响应信息。

当把 Linux 系统中的防火墙策略设置为 REJECT 拒绝动作后,流量发送方会看到端口不 可达的响应

而把 Linux 系统中的防火墙策略修改成 DROP 拒绝动作后,流量发送方会看到响应超时 的提醒。但是流量发送方无法判断流量是被拒绝,还是接收方主机当前不在线

iptables 中基本的命令参数

linux:iptables与firewalld防火墙

iptables -L   查看已有防火墙规则

iptables -P INPUT DROP     把INPUT规则链的默认策略设置成为DROP

防火墙策略规则的设置有两种:通和堵。当把 INPUT 链设置为默认拒绝后, 就要在防火墙策略中写入允许策略了,否则所有到来的流量都会被拒绝掉。另外,需要注意 的是,规则链的默认拒绝动作只能是 DROP,而不能是 REJECT。

向 INPUT 链中添加允许 ICMP 流量进入的策略规则:

iptables -I INPUT -p icmp -j ACCEPT

删除 INPUT 规则链中刚刚加入的那条策略(允许 ICMP 流量),并把默认策略设置为 允许:

iptables -D INPUT 1

iptables -P INPUT ACCEPT

将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口,拒绝来自其他所有 主机的流量:

iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT

再次重申,防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到 拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务。

 举例:设置linux服务器为应用网关

vim /etc/sysctl.conf

net.ipv4.ip_forward=1      启动数据包转发功能

再设置iptables的转发功能

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

可以把这条语句加入/etc/rc.local文件,开机自启动