iptables 防火墙

iptables 防火墙,第1张

文章目录
  • ptables 防火墙
    • iptables概述
    • 防火墙中的四表五链
      • 四表
      • 五链
    • 规则链之间的匹配顺序
    • 那么我们来小结一下?
    • 安装iptables 服务
    • iptables命令行配置方法
  • 脱离纸上谈兵,进入实战
    • 查看序号
    • 删除规则
    • 设置默认规则
    • 修改规则

ptables 防火墙 iptables概述

Linux 系统的防火墙:IP信息包过滤系统,他实际上由两个组件netfilter和iptables组成。
主要工作在网络层,针对ip数据包。体现在对包内的ip地址、端口、协议等信息处理上。
netfilter/iptables关系:
netfilter:属于“内核态”(Kernel Space,又称为内核空间)的防火墙功能体系。
是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。

iptables:属于“用户态”(User Space,又称为用户空间)的防火墙体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables文件下。

netfilter/iptables后期简称为iptables。iptables是基于内核防火墙,其中内置了 raw、mangle、nat 和filter四个规则表。表中所有规则配置后,立即生效,不需要撑起服务。

防火墙中的四表五链

规则表的作用:容纳各种规则链。
规则链的作用:容纳各种防火墙规则。
总结:表里有链,链里有规则。

四表

1.raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。
2.mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTTING
POSTROUTING。
3.nat表:负责网络地址转换,用来修改数据包中的源、目标ip地址或端口。包含三个规则链,INPUT、FORWARD、OUTPUT。
4.filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。
在iptables的四个规则表中,mangle表和raw表的应用相对较少。

五链

INPUT:处理入站数据包,匹配目标ip为本机的数据包。
OUTPUT:处理出站数据包,一般不在此链上做配置。
FORWARD:处理转发数据包,匹配流经本机的数据包。
PREROUTING:在进行路由选择前处数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的ip和端口映射到路由器的外网ip和端口上。
POSTROUTING:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网ip地址上网。

数据包到达防火墙时,规则表之间的优先顺序:
raw > mangle > nat > filter

规则链之间的匹配顺序

主机型防火墙:
入站数据(来组外界的数据包,且目标地址是防火墙本机):PREROUTING- - - ->INPUT- - - ->本机的应用程序。
出站数据(从防火墙本机向外部地址发送的数据包):本机应用程序- - - ->OUTPUT- - - ->postrouting。
网络型防火墙:
转发数据(需要经过防火墙转发的数据包):PREROUTING- - - ->FORWARD- - - ->POSTROUTING。

规则链内的匹配顺序
自上向下按顺序依次进行检查,找到相匹配的规则则停止(LOG策略例外,表示记录相关日志)。
若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的情况下,默认策略为允许)。
####例如:
1、拒绝 源地址为100.100.100.0/24的
2、放通 目的地址为192.168.80.0/24的
3、放通 目的地址为192.168.100.0/24的

当数据包 源地址为100.100.100.100 目的地址为192.168.80.15 时能通过吗?
答案是不能的。为匹配即停止,第一条符合条件就不再匹配下一条。

默认策略 默认值为 放通 ACCEPT

那么我们来小结一下?

linux 防火墙 系统
组成: 内核态 netfilter(保存包过滤处理的规则集,过滤数据包) 用户态 iptables(防火墙规则管理工具)

四表
raw 对数据包进行状态跟踪
mangle 修改数据包内容,给数据包设置标记
nat 地址转换。转换源/目的IP 或者 端口
filter 过滤数据包 放行 丢弃

五链
INPUT 入站
OUTPUT 出站
FORWARD 转发
PREROUTING 路由前修改目的地址
POSTROUTING 路由后修改源IP

链中的规则集
从上往下一次匹配,匹配到规则即停止;若都没匹配到则按默认策略处理

安装iptables 服务

好了经过一番总结,大家对linux防火墙也有了一定的了解。那么就要开始实 *** 环节了。
首先要在系统中安装iptables防火墙服务。
Centos7中默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables。

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# systemctl disable firewalld.service 
[root@localhost ~]# yum -y install ipstables iptables-services.x86_64 
[root@localhost ~]# systemctl start iptables.service 
[root@localhost ~]# systemctl status iptables.service 

安装完成查看状态。

iptables命令行配置方法

命令格式:
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
控制类型使用大写字母,其余均为小写

常用的控制类型:
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给出任何回应信息。
REJECT:拒绝数据包的原地址。
SNAT:修改数据包的源地址。
DNAT:改数据包的目的地址。
MASQUERADE:伪装成一个非固定公网IP地址。
LOG:在/var/log/message文件中记录日志信息,然后讲数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包。

常用的管理选项:
-A:在指定链的末尾追加一条新的规则
-I:在指定链的开头插入一条新的规则,未指定序号时默认作为第一条规则
-R:修改、替换指定链中的某一条规则,可以指定规则序号或具体内容
-P:设置指定链的默认策略
-D:删除指定链中的某一条规则,可以指定规则序号或Juin内容
-F:清空指定链中的所有规则,可以指定规则序号或具体内容
-L:列出指定链中所有规则,若未指定链名,则列出表中所有链
-n:使用数字形式显示输出结果,如显示ip地址而不是主机名
-v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
–line–numbers:查看规则时,显示规则的序号

了解了语法格式,我们来做一个ping包小实验

[root@localhost ~]# iptables -F                 ####清空所有规则
[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j REJECT    #######拒绝包含icmp,并回应
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       

然后用另一台机ping它的IP地址

[root@localhost ~]# ping 192.168.43.22
PING 192.168.43.22 (192.168.43.22) 56(84) bytes of data.
From 192.168.43.22 icmp_seq=1 Destination Port Unreachable
From 192.168.43.22 icmp_seq=2 Destination Port Unreachable
From 192.168.43.22 icmp_seq=3 Destination Port Unreachable
From 192.168.43.22 icmp_seq=4 Destination Port Unreachable
From 192.168.43.22 icmp_seq=5 Destination Port Unreachable
CFrom 192.168.43.22 icmp_seq=6 Destination Port Unreachable

ping不通,并给出回应。

脱离纸上谈兵,进入实战 查看序号
[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2    DROP       icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination       
删除规则

1.按指定序号删除

[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2    DROP       icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination   
[root@localhost ~]# iptables -D INPUT 2
[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination  

2.按指定内容删除,多条内容相同,则会先删除序号最小的。

[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination    
[root@localhost ~]# iptables -D INPUT -p icmp -j ACCEPT
[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination     
设置默认规则
[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination      
 [root@localhost ~]# iptables -P INPUT DROP   #####修改完成
Chain INPUT (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination   
修改规则

我们常用的方法是,先添加一个新规则在进行修改,以免 *** 作失误带来的损失。

[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
[root@localhost ~]# iptables -R INPUT 1 -p icmp -j DROP     ######修改序号1 的icmp 为DROP
[root@localhost ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       icmp --  0.0.0.0/0            0.0.0.0/0            ####修改完成

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/732340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存