firewalld和iptables介绍

基础介绍:


firewalld:

动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络“zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对IPv4和IPv6防火墙设置的支持。他支持以太网桥,并有分离运行时间和永久性配置选择。他还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。

系统提供了图像化的配置工具firewall-config、system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:它依次用iptables工具与执行数据包筛选的内核中的Netfilter通信。

iptables:

理论基础:当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。

iptables实现防火墙功能的原理是:在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,称为钩子函数,iptables这款用户空间的软件可以在这5处地方写规则,对经过的数据包进行处理,规则一般的定义为“如果数据包头符合这样的条件,就这样处理数据包”。

4表5链:filter表(实现包过滤)、nat表(实现网络地址转换)、mangle表(实现包修改)、raw表(实现数据跟踪),这些表具有一定的优先级:raw–>mangle–>nat–>filter;5链包括:INPUT(数据包达到服务器)、OUTPUT(数据包离开服务器)、FORWORD(数据包在服务器内进行传播)、PREROUTING(服务器作为中转站)、POSTROUTING(也就是问完路离开的那一瞬间)。

在这里插入图片描述

firewalld和iptables service之间最本质的不同是:
  • iptables service 在/etc/sysconfig/iptables 中存储配置,而firewalld将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML文件里。

  • 使用 iptables service 每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables 里读取所有新的规则,然而使用firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行 时间内,改变设置而不丢失现行连接。

  • iptables通过控制端口来控制服务,而firewalld则是通过控制协议来控制端口


基本命令:


1、firewalld
# 查看火墙状态
firewall-cmd --state

# 查看活跃区域,默认区域,所有区域:
firewalld-cmd --get-active-zones
firewalld-cmd --get-default-zone
firewalld-cmd --get-zones

# 更改默认区域
firewalld-cmd --set-default-zone=trusted

# 列出服务
firewalld-cmd --get-services

# 将来源IP172.25.254.250设置为trust 
firewalld-cmd --add-source=172.25.254.250 --zone=trusted

# 删除
firewalld-cmd --remove-source=172.25.254.250 --zone=trusted

# 将eth0添加到trusted中,注意:得先将eth0从public中删除
firewalld-cmd --remove-interface=eth0 --zone=public
firewalld-cmd --add-interface=eth0 --zone=public

# 在trusted中加入http服务
firewalld-cmd --add-service=http --zone=trusted

# 将来源ip为172.25.254.79的所有包拒绝
firewalld-cmd --add-source=172.25.254.250 --zone=block
firewalld-cmd --reload
firewalld-cmd --complete-reload   # 如已有ssh连接,会中断连接

# 在防火墙服务器上将伪装打开
firewalld-cmd --permanent --zone=public --add-masquerade

# 当79端口登陆主机时,将79伪装 
firewalld-cmd --zone=public --add-rich-rule `rule family=ipv4 source address=172.25.254.79 masqueade`

# 当访问本机22端口时,将其转到236这个主机上
firewalld-cmd --add-forward-port=port=22:tcp:toport=22:toaddr=172.25.254.236
2、iptables
  • iptables的规则书写

    iptables [-t 表] [操作命令] [链][规则匹配器][-j 目标动作]

iptables

[-t filter]

[-AI INPUT,OUTPUT,FORWARD]

[-io interface]

[-p tcp,udp.icmp,all]

[-s ip/nerwork]

[–sport ports]

[-d ip/network]

[–dport ports]

[-j ACCEPT DROP REJECT REDIRECT MASQUERADE LOG

DNAT SNAT MIRROR QUEUE RETURN MARK]

  • 常用操作命令

-A 在指定链尾部添加规则

-D 删除匹配的规则

-R 替换匹配的规则

-I 在指定位置插入规则

例:iptables -I INPUT 1 –dport 80 -j ACCEPT

-L/S 列出指定链或所有链的规则

-F 删除指定链或所有链的规则

-N 创建用户自定义链

例:iptables -N allowed

-X 删除指定的用户自定义链

-P 为指定链设置默认规则策略,对自定义链不起作用

例:iptables -P OUTPUT DROP 

-Z 将指定链或所有链的计数器清零

-E 更改自定义链的名称

例:iptables -E allowed disallowed 

-n ip地址和端口号以数字方式显示

例:iptables -Ln 
  • 常见规则匹配器

-p tcp|udp|icmp|all 匹配协议,all会匹配所有协议

-s addr[/mask] 匹配源地址

-d addr[/mask] 匹配目标地址

–sport port1[:port2] 匹配源端口(可指定连续的端口)

–dport port1[:port2] 匹配目的端口(可指定连续的端口)

-o interface 匹配出口网卡,只适用FORWARD、POSTROUTING、OUTPUT。

例:iptables -A FORWARD -o eth0

-i interface 匹配入口网卡,只使用PREROUTING、INPUT、FORWARD。

–icmp-type 匹配icmp类型(使用iptables -p icmp -h可查看可用的ICMP类型)

–tcp-flags mask comp 匹配TCP标记,mask表示检查范围,comp表示匹配mask中的哪些标记。

例:iptables -A FORWARD -p tcp –tcp-flags ALL SYN,ACK -j ACCEPT
  • 目标动作说明

ACCEPT 允许数据包通过

DROP 丢弃数据包

REJECT 丢弃数据包,并且将拒绝信息发送给发送方

SNAT 源地址转换(在nat表上)

例:iptables -t nat -A POSTROUTING -d 192.168.0.102 -j SNAT –to 192.168.0.1 

DNAT 目标地址转换(在nat表上)

例:iptables -t nat -A PREROUTING -d 202.202.202.2 -j DNAT –to-destination 192.168.0.102 

REDIRECT 目标端口转换(在nat表上)

例:iptables -t nat -D PREROUTING -p tcp –dport 8080 -i eth2.2 -j REDIRECT –to 80 

MARK 将数据包打上标记

例:iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK –set-mark 60

猜你喜欢

转载自blog.csdn.net/fy_long/article/details/85328441
今日推荐