Linux_iptables防火墙学习笔记

iptables 概述

  1. 主机型
    1. 对主机进行保护
  2. 网络型
    1. 系统当作路由时使用,对网络进行保护
  3. iptables是一个用户空间的应用,用来设置内核空间的netfilter
  4. iptables没有守护进程,不能算是真正意义上的服务,应该算是内核提供的功能

四表五链

  1. 数据经过防火墙的流程
    在这里插入图片描述

  2. 四表

    1. filter表
      1. 负责过滤功能,防火墙;内核模块:iptables_filter
    2. nat表
      1. network address translation,网络地址转换功能;内核模块:iptable_nat
    3. mangle表
      1. 拆解报文,做出修改,并重新封装的功能;内核模块:iptable_mangle
    4. raw表
      1. 关闭nat表上雇用的连接追踪机制;内核模块:iptable_raw
  3. 五链

    1. PREROUTING(路由前)
    2. INPUT(数据包入本机)
    3. FORWARD(数据转发)
    4. OUTPUT(数据包出本机)
    5. POSTROUTING(路由后)
  4. 规则

    1. 处理运作
      1. ACCEPT
        1. 允许数据包通过
      2. DROP
        1. 直接丢弃数据包,不给任何回应信息
      3. REJECT
        1. 拒绝数据包通过,返回拒绝的回应信息
      4. SNAT
        1. 源地址转换,解决内网用户用同一个公网地址上网的问题
      5. MASQUERADE
        1. 伪装,是SNAT的一种特殊形式,适用于动态的、临时会变的IP上
      6. DNAT
        1. 目标地址转换
      7. REDRECT
        1. 在本机做端口映射
      8. LOG
        1. 在/var/log/message文件中记录日志信息,继续进行下一条规则

iptables 安装启动

  1. 以CentOS7为例
  2. 禁用selinux和firewalld
    systemctl stop firewalld;systemctl disable firewalld;setenforce 0;sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
    
  3. 安装启动iptables服务
    yum -y install iptables-services;systemctl enable iptables --now;systemctl status iptables
    
  4. 查看内核是否支持iptables
    lsmod|egrep "nat|filter"
    

iptables 配置详解

iptables配置文件

  1. ipv4
    vi /etc/sysconfig/iptables
    
  2. ipv6
    vi /etc/sysconfig/ip6tables
    

iptables配置语法

  1. 语法
    iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 运作]
    
  2. 管理选项
    选项 功能 备注
    -t 表 指定要操作的表 默认为filter表
    -A 向规则链中添加条目 在最后添加
    -D 从规则链中删除条目 指定条目内容
    -I 向规则链中插入条目 默认在最前插入
    -R 替换规则链中已有的条目
    -L 显示规则链中已有的条目
    -F 清空规则链中所有条目 注意,可能会断SSH
    -Z 清空规则链中的数据包计数器和字节计数器
    -N 创建新的用户自定义规则链
    -P 定义规则链中的默认目标
    -h 显示帮助信息
    -p 指定要匹配的数据包协议类型
    -s 指定要匹配的数据包源ip地址
    -d 指定要匹配的数据包目的ip地址
    -j 目标 指定动作
    -i 网络接口 指定数据包进入本机的网络接口
    -o 网络接口 指定数据包要离开本机所使用的网络接口

iptables常用实例

查看规则
  1. 默认为netfilter表,不解析,显示行号
    iptables -nL --line-numbers
    
修改默认规则
  1. 默认为netfilter表,修改INPUT链默认规则为"DROP"
    iptables -P INPUT DROP
    
保存和备份规则
  1. 修改的规则临时生效
  2. 如果要永久生效需要保存配置
  3. 命令
    1. 保存配置
      iptables-save
      
    2. 备份配置
      iptables-save > /mnt/iptables_bak_$(date "+%Y-%m-%d_%H:%M")
      
恢复备份的规则
  1. 命令
    iptables-restore 备份的文件名
    
清空规则
  1. 默认为netfilter表,清空规则,如果默认规则不是ACCEPT,会造成SSH立即断开
    iptables -F
    
放行SSH服务
  1. 源IP:192.168.86.2
  2. 目的IP:192.168.99.202
  3. SSH端口:22
  4. 命令
    iptables -I INPUT -s 192.168.86.2 -d 192.168.99.202 -p tcp --dport 22 -j ACCEPT
    iptables -I OUTPUT -s 192.168.99.202 -d 192.168.86.2 -p tcp --sport 22 -j ACCEPT
    
在ubuntu14.04中iptables规则持久化
  1. 修改规则–保存规则为文件–制作开启启动脚本,自动载入文件中规则
  2. 脚本
    #!/bin/bash
    # 修改规则(略)
    # 查看规则
    iptables -nL --line-numbers
    # 保存规则到文件
    sudo mkdir /etc/iptables
    sudo iptables-save > /etc/iptables/rules.v4
    # 制作开机脚本
    sudo iptables-save > /etc/iptables/rules.v4
    cat >> /etc/network/if-pre-up.d/iptables << EOF
    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables/rules.v4
    EOF
    sudo chmod +x /etc/network/if-pre-up.d/iptables
    ```![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/dc4e35de8b4143d5b023fd88c9864e8b.png#pic_center)
    
    

相关推荐

  1. 学习笔记

    2024-04-20 17:06:03       29 阅读
  2. 学习笔记:机器学习

    2024-04-20 17:06:03       79 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 17:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 17:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 17:06:03       87 阅读
  4. Python语言-面向对象

    2024-04-20 17:06:03       96 阅读

热门阅读

  1. NLP预训练模型

    2024-04-20 17:06:03       31 阅读
  2. 微服务架构中的业务数据可视化设计

    2024-04-20 17:06:03       45 阅读
  3. Linux学习 - 常用和不太常用的实用awk命令

    2024-04-20 17:06:03       36 阅读
  4. go服务k8s容器化之grpc负载均衡

    2024-04-20 17:06:03       32 阅读
  5. Docker实战十一之Redis部署

    2024-04-20 17:06:03       35 阅读
  6. 关于txt导入Excel

    2024-04-20 17:06:03       34 阅读
  7. Scrapy设置随机User-Agent

    2024-04-20 17:06:03       32 阅读
  8. nvm使用指定镜像安装node和npm包

    2024-04-20 17:06:03       33 阅读
  9. nodejs 定时任务的执行 node-cron node-schedule

    2024-04-20 17:06:03       48 阅读
  10. C语言实现快速排序算法

    2024-04-20 17:06:03       28 阅读