ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

iptables防火墙

2021-06-19 23:59:54  阅读:191  来源: 互联网

标签:iptables root 防火墙 filter INPUT 数据包 localhost


本章结构

Linux防火墙基础

  • iptables的表、链结构
  • 数据包控制过程

编写防火墙规则

  • 基本语法、控制类型
  • 添加、查看、删除规则
  • 规则的匹配条件

Linux包过滤防火墙概述

netfilter
  • 位于Linux内核中的包过滤功能体系
  • 称为Linux防火墙的“内核态”
iptables
  • 位于/sbin/iptables,用来管理防火墙规则的工具
  • 称为Linux防火墙的“用户态”
  • 位于最底层,也属于用户态
    注: 以上2中称呼都可以表示Linux防火墙
包过滤的工作层次
  • 主要是网络层,针对IP数据包
  • 体现在对包内的IP地址、端口等信息的处理上
    在这里插入图片描述

iptables的表、链结构

规则表
  • 表的作用:容纳各种规则链
  • 表的划分依据:防火墙规则的作用相似
默认包括4个规则表
  • raw表:确定是否对该数据包进行状态跟踪
  • mangle表:为数据包设置标记
  • nat表:修改数据包中的源、目标IP地址或端口
  • filter表:确定是否放行该数据包(过滤)
规则链
  • 规则的作用:对数据包进行过滤或处理
  • 链的作用:容纳各种防火墙规则
  • 链的分类依据:处理数据包的不同时机
默认包括5中规则链
  • INPUT:处理入站数据包
  • OUTPUT:处理出站数据包
  • FORWARD:处理转发数据包
  • POSTROUTING链:在进行路由选择后处理数据包
  • PREROUTING链:在进行路由选择前处理数据包
默认的表、链结构示意图

在这里插入图片描述
其中nat 表还包括 input链 ,功能的转换

  • raw表:关闭nat表上启用的连接追踪机制;iptable_raw
  • mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
  • nat表:network address translation,网络地址转换功能;内核模块:iptable_nat
  • filter表:负责过滤功能,防火墙;内核模块:iptables_filter
数据包过滤的匹配流程
  • 规则表之间的顺序
    raw——mangle——nat——filiter
  • 规则链之间的顺序
    入站:PREROUTING→INPUT
    出站:OUTPUT>POSTROUTING
    转发:PREROUTING→FORWARD→POSTROUTING
  • 规则链内的匹配顺序
    按顺序一次检查,匹配即停止(LOG策略例外)
    若找不到相匹配的规则,则按该链的默认策略处理
数据包过滤的匹配流程示意图

在这里插入图片描述

iptable安装
  • 关闭firewalld防火墙
    [root@localhost ~]# systemctl stop firewalld.service
    [root@localhost ~]# systemctl disable firewalld.service
    centos7 默认使用firewalld防火墙,若想要使用iptables防火墙,必须线关闭firewalld防火墙
  • 安装iptables防火墙
    [root@localhost~]#yum -y install iptables iptables-services
  • 设置iptables开机启动
    [root@localhost ~]# systemctl start iptables.service
    [root@localhost ~]# systemctl enable iptables.service
iptables的基本语法
  • 语法构成
    iptables [-t表名] 选择 [链名] [条件] [-j控制类型]
    [root@localhost ~]# iptables -t filter -l INPUT -p icmp -j REJECT
    注:阻止ping测试
    iptables -l 新增
    iptables -p 指定协议
  • 注意事项
    不指定表名时,默认指filiter表
    不指定链名时,默认指表内的所有链
    除非设置链的默认策略,否则必须指定匹配条件
    选项、链名、控制类型使用大写字母,其余均为小写
  • 数据包的常见控制类型
    ACCEPT:允许通过
    DROP:直接丢弃,不给出任何回应
    REJECT:拒绝通过,必要时会给出提示
    LOG:记录日志信息,然后传给下一条规则继续匹配
    注:Log:只记录日志不处理
常用

在这里插入图片描述

  • 控制选项(需要大写)
    ACCEPT:允许数据包通过
    REJECT:拒绝数据包通过,必要时会给数据包发送一个响应信息
    DROP:直接丢弃数据包,不给任何回应
    LOG:在/var/log/message文件中记录日志信息,然后将数据包给下一条规则,它本身不处理数据包
    例:
[root@localhost~]# iptables -t filter -L  iptables -L      查看filter表里面的规则    
[root@localhost~]# iptables -t net  -L                     查看net表里面的规则 
[root@localhost~]# iptables -t  filter -S                  查看filter表所有规则
[root@localhost~]# iptables -t  filter -S INPUT            查看INPUT链的规则
[root@localhost~]# iptables -t  filter -S INPUT 4          查看INPUT链的第四个规则
[root@localhost~]# iptables -t filter -L --line-number     查看filter表的规则编号
[root@localhost~]# iptables -t filter -L -N                以数字显示
[root@localhost~]# iptables -vnL                           以数字显示并显示详情
[root@localhost~]# iptables  -t filter -F                  清空
[root@localhost~]# iptables -t filter  -X                  清除自定义的链
[root@localhost~]# iptables -t filter -Z                   -Z清空链的计数器
[root@localhost~]# iptables -t filter -A INPUT -j REJECT   拒绝入站的所有数据包
[root@localhost~]# iptables -I INPUT -j ACCEPT             在表的最前面增加一条允许规则
[root@localhost~]# iptables -D INPUT  -j  REJECT           删除INPUT链中拒绝的规则
[root@localhost~]# iptables -D INPUT 1                     指定标号删除
[root@localhost~]# iptables -A OUTPUT -j REJECT            拒绝出站
[root@localhost~]# iptables -P INPUT  DROP                默认规则拒绝
[root@localhost~]# iptables -P  INPUT  ACCEPT              默认拒绝接受
[root@localhost~]# iptables -R INPUT 1  -j DROP            修改第一条 //修改的时候必须把编号加上
[root@localhost~]# iptables -A INPUT -s 192.168.80.1 -p tcp --dport 80 -j DROP  禁止访问80端口 //定义端口的时候必须指定协议
[root@localhost~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP   
[root@localhost~]# iptables -A INPUT -p tcp -m multiport --dport 80,22,23 -s 192.168.80.1 -j DROP  多端口
[root@localhost~]# iptables -A INPUT -p tcp -m multiport --dport 20:80 -s 192.168.80.1 -j DROP     指定端口范围
[root@localhost~]# iptables -A INPUT -p icmp -m mac --mac-source  00:0c:29:b3:61:84  -j DROP  指定MAC地址
[root@localhost~]# iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT  已建立连接和以前建立过连接
[root@localhost~]# iptables-save > /etc/sysconfig/iptables   保存到配置文件

标签:iptables,root,防火墙,filter,INPUT,数据包,localhost
来源: https://blog.csdn.net/yemu880/article/details/117816146

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有