从传统意义上来说防火墙分为三类:包过滤、应用代理、状态检测。无论一个防火墙的实现过程有多复杂,说到底都是在这三种技术的基础上进行扩展的
概述
firewalld提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具,支持ipv4、ipv6防火墙以及以太网桥,并且拥有两种配置模式:运行时配置与永久配置。它还支持服务或应用程序直接添加防火墙规则。
firewalld数据处理流程:
首先检查的就是其源地址。
若源地址关联到特定的区域,则执行该区域所制定的规则;
若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则;
若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则;
firewall-config图形工具;
firewall-cmd命令行工具;
/etc/firewalld/中的配置文件;
从上倒下,如没有匹配则执行默认(放行或阻止)
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策
规则链(五链)
在进行路由选择前处理数据包(PREROUTING);
处理流入的数据包(INPUT);
处理流出的数据包(OUTPUT);
处理转发的数据包(FORWARD);
在进行路由选择后处理数据包(POSTROUTING)。
表提供特定的功能,iptables里面有4个表: filter表、nat表、mangle表和raw表,分别用于实现包过滤、网络地址转换、包重构和数据追踪处理。
每个表里包含多个链。
四表
ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、DROP(拒绝流量通过)
accept:接收数据包;
DROP:丢弃数据包;
REDIRECT:重定向、映射、透明代理;
SNAT:源地址转换;
DNAT:目标地址转换;
MASQUERADE:IP伪装(NAT),用于ADSL;
LOG:日志记录;
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号
1、TCP是面向连接的(在客户端和服务器之间传输数据之前要先建立连接),UDP是无连接的(发送数据之前不需要先建立连接)
2、TCP提供可靠的服务(通过TCP传输的数据。无差错,不丢失,不重复,且按序到达);UDP提供面向事务的简单的不可靠的传输。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性比较高的通讯或广播通信。随着网速的提高,UDP使用越来越多。
4、每一条TCP连接只能是点到点的,UDP支持一对一,一对多和多对多的交互通信。
5、TCP对系统资源要去比较多,UDP对系统资源要求比较少
6、UDP程序结构更加简单
7、TCP是流模式,UDP是数据报模式
区域 默认规则策略
drop:丢弃所有进入的包,而不给出任何回应
block:拒绝所有外部发起的链接,允许内部发起的链接
public:允许指定的进入链接 (默认区域)
external:通public,处理伪装的进入链接,一般用于路由转发
dmz:允许受限制的进入链接
work:允许受信任的计算机被限制的进入链接
home:同work,如果流量和ssh,dhcpv6-client等服务相关,则允许
internal:同work,范围针对所有互联网用户
trusted:信任所有链接
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转
说明:表名、链名用于指定 iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样 条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Jump)给其它链处理。
[root@localhost ~]#iptables -F // 清空所有的防火墙规则
[root@localhost ~]#iptables -F INPUT //清空指定链 INPUT 上面的所有规则
[root@localhost ~]#iptables -X // 删除用户自定义的空链
[root@localhost ~]#iptables -Z //清空计数
[root@localhost ~]#iptables -P INPUT DROP //配置默认的不让进
[root@localhost ~]#iptables -P FORWARD DROP //默认的不允许转发
[root@localhost ~]#iptables -P OUTPUT ACCEPT //默认的可以出去
将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量:
[root@localhost ~]# iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT
[root@localhost ~]# iptables-save //保存配置
如果我只允许192.168.1.100和192.168.1.110 的PING命令,应该怎么添加
[root@localhost ~]# iptables -I INPUT -s 192.168.1.110 -p icmp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -s 192.168.1.100 -p icmp -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp -j DROP
如果我只允许192.168.1.0/24网段的,但拒绝192.168.1.100和192.168.1.110 的PING命令,应该怎么添加
[root@localhost ~]# iptables -I INPUT -s 192.168.1.0/24 -p icmp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -s 192.168.1.100 -p icmp -j DROP
[root@localhost ~]# iptables -I INPUT -s 192.168.1.110 -p icmp -j DROP
向INPUT规则链中添加拒绝所有人访问本机12345端口的策略规则
[root@localhost ~]# iptables -I INPUT -p tcp --dport 12345 -j REJECT
[root@localhost ~]# iptables -I INPUT -p UDP --dport 12345 -j REJECT
向INPUT规则链中添加拒绝所有主机访问本机1000~1024端口的策略规则
[root@localhost ~]# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
[root@localhost ~]# iptables -A INPUT -p UDp --dport 1000:1024 -j REJECT
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。