Linux 防火墙

本文防火墙配置是基于CentOS7进行叙述,其他linux版本仅供参考

防火墙概述

  • 在 Centos7里有几种防火墙共存: firewalldiptables 、 ebtables(基本不用)。

  • 默认是使用 firewalld来管理 netfilter 子系统,不过底层调用的命令仍然是 iptables等。

firewalld 和 iptables 区别

firewalld 防火墙

firewalld的重要概念 - 区域管理 firewalld将网卡对应到不同的区域(zone),zone默认有9个

注意 :Firewalld的默认区域是 public

区域:

  • 区域就像进入主机之前的安全检査的关口,毎个区域都具有不同程度的限制规则。

  • 可以同时使用多个区域,但是每个区域都必须关联ip和接口。

  • 默认情况下,public区域是默认区域,包含所有网卡。[/start-plane]

Firewalld 默认提供的9个zone配置文件。配置文件分别为:

block. xml、 dmz.xml、drop.xml、 external xml、 home. xml、 internal xml、 public. xml、trusted. xml、 work. xml

存放路径: /usr/ib/ firewall/ zones/ 目录下

firewalld 配置方法

Firewalld的配置方法主要有三种: firewall-configfirewall-cmd 和 直接编辑xml文件

1. firewall-config :图形化工具

CentOS7默认服务都是关闭的,勾选Services服务即打开,或者新建一条端口规则打开

2. firewall-cmd :命令行工具

**允许或者拒绝任意端口/协议 **           举例:允许或禁用1234端口的TCP流量

[root@localhost ~]# firewall-cmd --zone=public --add-port=1234/tcp --permanent     #允许1234端口的TCP流量
[root@localhost ~]# firewall-cmd --zone=public --remove-port=1234/tcp --permanent  #禁止1234端口的TCP流量

## 命令分析:
firewall-cmd:firewalld命令行工具
--ad-port:标识添加的端口
--permanent:表示设置为永久
--zone:指定到具体的zone配置文件

批量开放或限制端口                         举例:批量开放端口,如从100-500之间的端口都开放[/c-alert]

[root@localhost ~]# firewall-cmd --zone=public --add-port=100-500/tcp --permanent

**启用或禁用服务 **                                举例:启用或禁用HTTP服务[/c-alert]

firewall-cmd --zone=public --add-service=http --permanent      #永久允许http服务的流量
firewall-cmd --zone=public --remove-service=http --permanent   #永久禁用http服务流量

3. 直接编辑xml 文件

可以直接修改xml文件(不推荐

用户配置目录有:

/etc/firewalld/

/etc/firewalld/services/

/etc/firewalld/zones/

注意 :更改完xml文件后,要使用 firewall-cmd --reload 命令 重新加载

iptables 防火墙

iptables 和 firewalld 一样不是真正的防火墙,我们可以将它理解成一个客户端代理,通过这个代理,我们将安全的设定执行到对应的“安全框架”中,这个“安全框架”才是真正的防火墙,即 netfilter
iptables是按照规则,即网络管理员与定义的条件和方法来处理数据包,如:通过(accept)、丢弃(drop)等。
iptables的结构:iptables→ Tables→ Chains→ Rules,即 tables由 chains组成,而 chains又由rules组成。

iptables 四表五链

Linux防火墙过滤框架

如图为 Linux防火墙的过滤框架,从图中可以看出,

  • 如果是 外部主机 发送数据包给 防火墙本机 ,数据将会经过 PREROUTING 链 与 INPUT 链;

  • 如果是 防火墙本机 发送数据包到 外部主机 ,数据会经过 OUTPUT 链与 POSTROUTING 链;

  • 如果防火墙作为路由负责转发数据 ,则数据将经过 PREROUTING 链、 FORWARD 链以及POSTROUTING 链。

iptables 语法构成

iptables [-t 表名] 选项 [链名] [条件] [控制类型]

[root@icq Desktop]# iptables -t filter -I INPUT -p icmp -j REJECT   #阻止ping

-j:数据包的常见控制类型

ACCEPT:允许通过

REJECT:拒绝通过,必要时会给出提示

DROP:直接丢弃,不给出任何回应

LOG:记录日志信息,然后传给下一条规则继续匹配

-p:指定协议类型:tcp、udp、icmp

-m:表示启用扩展功能,一般和-p配合使用

注意

  1. 不指定表名时,默认指 filter表

  2. 不指定链名时,默认指表内的所有链

  3. 除非设置链的默认策略,否则必须指定匹配条件

  4. 选项、链名、控制类型使用大写字母,其余均为小写字母[/c-alert]

iptables 命令详解

iptables 添加新的规则

    示例:

[root@icq Desktop]# iptables -t filter -A INPUT -p tcp -j ACCEPT 

[root@icq Desktop]# iptables -I INPUT -p udp -j ACCEPT 

[root@icq Desktop]# iptables -I INPUT 2 -p icmp -j ACCEPT 

    参数:

    -A:在链的末尾追加条规则

    -I:在链的开头,或指定序号,插入一条规则

    -d:指定IP地址

    --dport:知道目的端口

iptables 规则查看

    示例:

[root @icq Desktop]# iptables -n -L INPUT

参数:

-L:列出所有的规则条目

-n:以数字形式显示地址、端口等信息

-I:以更详细的方式显示规则信息

iptables 删除、清空规则

    示例:

[root@icq Desktop]# iptables -D INPUT 1

[root@icq Desktop]# iptables -F

[root@icq Desktop]# iptables -t 指定表 -F

参数:

-D:删除链内指定序号(或内容)的一条规则

-F:清空所有的规则

posted @ 2021-11-07 17:40  FreeK0x00  阅读(138)  评论(0编辑  收藏  举报