13 防火墙

防火墙

1.什么是防火墙

防火墙主要是用来防火的,那么在linux当中,防止恶意流量访问的软件就叫做防火墙。

2.防火墙的种类

软件防火墙:firewalld、 iptables、 netfilter
firewalld ---> iptables ---> netfilter
硬件防火墙:F5


firewalld和iptables的区别?
  firewalld更简单
  firewalld底层操作的还是iptables。
 
  iptables更底层
  iptables底层操作是系统内核流量的走向。
  四表五链
   
  系统安全框架。

3.什么是iptables

防火墙软件
用户--》iptables代理程序(用户空间) --》安全规则--》安全框架 --》netfilter ( 内核空间 )
netfilter/iptables --》 包过滤型防火墙 免费 (数据包过滤、数据包转换。)

 

 

4.什么是包过滤防火墙

数据包。
过滤数据包的防火墙就是包过滤防火墙

 

5.什么是表

具备某种功能的集合叫做表。
filter: 负责做过滤功能:INPUT、OUTPUT、FORWARD
nat: 负责网络地址转换:PREROUTING、INPUT、OUTPUT、POSTROUTING
mangle: 负责修改数据包内容:PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD
raw: 负责数据包跟踪:PREROUTING、OUTPUT

表的优先级:raw--》mangle--》nat--》filter

6.什么是链

1) PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,把本机地址转换为真正的目标机地址,通常指响应报文)
2) INPUT:报文进入本机用户空间位置,允许的表filter, mangle
3) OUTPUT:报文从本机用户空间出去的位置,允许filter, mangle, nat
4) FORWARD:报文经过路由并且发觉不是本机决定转发但还不知道从哪个网卡出去,允许filter, mangle
5) POSTROUTING:报文经过路由被转发出去,允许mangle,nat(源地址转换,把原始地址转换为转发主机出口网卡地址)

简化版:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
FORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)

流入本机:PREROUTING --> INPUT --> PROCESS(进程)
经过本机:PREROUTING --> FORWARD --> POSTROUTING
从本机流出:PROCESS(进程) --> OUTPUT --> POSTROUTING

 

 

 

总结:表的作用各有不同,链的位置各有不同。表中的链就是将表的功能放到链的具体位置去执行。

7.防火墙表与链的关系

filter: INPUT ------------------> FORWARD ---------------> OUTPUT
nat: PREROUTING ----------> INPUT ----------> OUTPUT -----------> POSTROUTING
mangle: PREROUTING ---------> INPUT --------> FORWARD -------> OUTPUT --------> POSTROUTING
raw :   PREROUTING ---------> OUTPUT

[root@web01 ~]# iptables -nvL -t mangle

8.什么是规则

防火墙规则右称之为防火墙策略,主要是描述执行什么防火墙功能的记录。
规则是如何组成的:条件+动作

9.防火墙规则

9.1规则的增删改查

# 安装iptables服务端
[root@web01 ~]# yum install iptables-services -y

格式:iptables -t 表名 选项 链名称 条件 动作
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

 



-n :禁止反向解析
-v :显示数据包详情 [root@web01 ~]# iptables -vnL()
-t: 指定操作的表(默认的表是filter) [root@web01 ~]# iptables -vnL -t nat
-A, --append 追加一条规则到链中
-D, --delete 删除链中的规则
-I, --insert 插入一条规则,插入到顶部
-R, --replace 修改
-L, --list 列出当前的规则   [root@web01 ~]# iptables -L
-S, --list-rules 列出所有的规则
-F, --flush 清空     iptables -F : 清除所有的防火墙规则
-Z, --zero 清空计数器( 包数量 、包大小)
-N, --new-chain 创建一个自定义 链
-X, --delete-chain 删除一个自定义链
-P, --policy 指定链的默认策略

[root@lb01 ~]# iptables -t filter -L -n -v # 查看规则
[root@lb01 ~]# iptables -t filter -I INPUT -p icmp -j REJECT # 添加 规则
[root@lb01 ~]# iptables -t filter -R INPUT 1 -p icmp -j DROP # 修改 规则
[root@lb01 ~]# iptables -t filter -Z # 清空计数器
[root@lb01 ~]# iptables -t filter -D INPUT 1 # 指定编号删除规则

9.2 iptables动作

      -j :制定动作,转发模式

      ACCEPT :允许通过

      DROP:不允许通过

ACCEPT 将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链。
REJECT 拦阻该数据包,并传送数据包通知对方。
DROP 丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT 将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则

9.3 iptables基本的条件匹配

  (1) 、-p协议:指定对应的管理流量类型

        TCP
UDP
ICMP :ping
ALL :所有协议

(2)、-s 源地址、

            -d 目标地址

(3)、--sport源端口

            --dport目标端口

(4)、-i、-o、-m、-j动作

       -i   : 进来的网卡
-o : 出去的网卡
-m : 指定模块
-j : 转发模式

注意:链的匹配规则是从上到下的,一旦匹配上了就无法在往下进行匹配了。

案例1:案例1:不允许访问本机
iptables -t filter -A INPUT -p ALL -j DROP

案例2:案例2:要求172.16.1.0可以访问web01,其他的请求全部拒绝
iptables -t filter -A INPUT -p ALL -s 172.16.1.0/20 -j ACCEPT
iptables -t filter -A INPUT -p ALL -j DROP

案例3:要求在案例2的基础上,允许192.168.15.66可以访问?
iptables -t filter -I INPUT -p ALL -s 192.168.15.66 -j ACCEPT

案例4:只允许其他网络ping web01

iptables -t filter -I INPUT -p ICMP -s 192.168.15.7 -j ACCEPT


   
练习题:

1、要求只有172.16.0.0网段的能够登录web01

iptables -t filter -I INPUT  -p ALL -s 172.16.0.0/20 -j ACCEPT
iptables -t filter -A INPUT -p ALL -j DROP



2、访问web01的8080端口转发至80端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80


#删
-F, --flush 清空
iptables -F : 清除所有的防火墙规则


格式:iptables -t [表] -D [链] [规则编号]


--line-number : 防火墙规则的编号
[root@web01 ~]# iptables -nvL --line-number
Chain INPUT (policy ACCEPT 6 packets, 396 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- * * 172.16.0.0/20 0.0.0.0/0

-D, --delete 删除链中的规则
[root@web01 ~]# iptables -t filter -D INPUT 2


# 改

-R, --replace 修改

iptables -t filter -R INPUT 2 -p ALL -s 192.168.15.0/24 -j ACCEPT

-S, --list-rules 列出所有的规则
[root@web01 ~]# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -s 172.16.0.0/20 -j ACCEPT
-Z, --zero 清空计数器( 包数量 、包大小)


-N, --new-chain 创建一个自定义 链
-X, --delete-chain 删除一个自定义链
-P, --policy 指定链的默认策略


-i : 进来的网卡
-o : 出去的网卡
-m : 指定模块
-j : 转发模式

 

 

 

posted @ 2021-11-03 19:17  甜甜de微笑  阅读(53)  评论(0编辑  收藏  举报