iptable防火墙

本文详细介绍了iptables防火墙的基础知识,包括OSI7层模型、TCP/IP连接过程和服务器端口。iptables是一种基于包过滤的防火墙工具,主要工作在OSI模型的二三四层。文章讲解了iptables的工作流程,以及表与链的关系,如Filter、NAT、Mangle和Raw表及其对应的链。此外,还提到了iptables的常用命令,帮助读者理解和配置iptables防火墙。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IPtables防火墙

基础

安全优化

  • 尽可能不给服务器配置外网ip。可以通过代理转发或者通过防火墙映射
  • 并发不是特别大情况在外网ip的环境要开启iptables防火墙

OSI7层模型以及不同层对应的协议

TCP/IP三次握手四次断开的过程

常用的服务器端口

简介

Iptables

  • 基于包过滤的防火墙工具,可以对流入和流出服务器的数据包进行很精细的控制
  • 主要工作在OSI七层的二三四层,重新编译内核可以支持七层控制

工作流程

iptables会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。

Client请求数据->IPtables Filter->获取主机Service

  • 接收到请求数据后防火墙开始逐层过滤(从上到下,从左到右)
  • 如果匹配上规则(明确表明是阻止还是通过),则不再匹配新规则
  • 若匹配不上,则继续向下匹配规则
  • 所一直匹配不上,则匹配默认规则,得到明确的阻止和通过

表与链

关系

  • 表table>链chain>规则policy

  • iptables包含四张表

  • 表是链的容器,每个表中包含若干链

  • 链式规则的容器,真正的过滤规则是属于链里面的

    表\链InputForwardOutputPreroutingPostrouting
    Filter11100
    Nat00111
    Mangle11111

各表和链详解

  • Filter:真正的防火墙功能,对filter表的控制是我们实现本机防火墙功能的重要手段,特别是对INPUT链的控制

    • INPUT:过滤进入主机的数据包
    • FORWORD:转发流经主机的数据包,和NAT关系很大
    • OUTPUT:处从主机出去的数据包
  • NAT表:负责网络地址转换,即来源与目的ip地址和port的转换(相当于网络交换机acl)。主要应用于局域网共享上网或者特殊的端口和IP转换服务器,做地址一对一映射(dmz)通过iptables防火墙映射ip到内部服务器,ftp服务

    • OUTPUT:和主机发送出去的数据包有关,改变主机发出数据包的目标地址
    • PREPOUTING:在数据包到达防火墙进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等【大概就是收信的时候重写收件人的地址】把ip:123.23.3.23->10.0.0.1 端口 80->9000
    • POSTPOUTING:在数据包离开防火墙进行路由判断之后执行的规则,作用是改变数据包的源地址、源端口(把pre改了的地址改回来)等【大概是寄信的时候,写好发件人的地址】
  • Mangel表:做一些路由标记

    • 不怎么用
  • Raw表

    • 基本不用
    # 查看表
    sudu su
    

man iptables
```

表和链示意图

​ 【主机服务器防火墙】

​ |---------------------LOCAL PROCESS------ROUTING

​ | |

​ FILTER(INPUT) NAT(OUTPUT)

​ | FILTER(OUTPUT)

​ | |

-NAT(PREROUTING)–FORWARD-----------FLTER(FORWARD)------------NAT(POSTROUTING)

[外部ip和端口映射为内部ip和端口] [局域网上网共享]

常用命令

  • 查看版本号

    iptables -V
    
  • 查看完整信息

    iptables -h
    
  • ubuntu中关于防火墙的命令

    #查看防火墙状态
    sudo ufw status
    
    #开放防火墙
    sudo ufw enable
    
    #关闭防火墙,inactive为关闭
    sudo ufw disable
    
    #外来访问默认允许/拒绝
    ufw default allow/deny
    
    #允许/拒绝 访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。
    ufw allow/deny 20
    
    #ufw从/etc/services中找到对应service的端口,进行过滤。
    ufw allow/deny servicename
    
    #允许自10.0.1.0/10的tcp封包访问本机的25端口。
    ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25
    
    #删除以前定义的"允许/拒绝访问20端口"的规则
    ufw delete allow/deny 20
    
  • 把iptable_filter加载进内核

    sudo modprobe iptable_nat
    
  • 清除所有规则留下默认规则

    sudo iptables -F
    
  • 清空用户自定义的链

    sudo iptables -X
    
  • 清空链的计数器

    sudo iptables -Z
    
  • 查看iptable的链

    sudo iptables -L
    
  • 查询ssh端口

    #第一次使用ssh/scp命令时要先安装ssh服务
    sudo spt install openssh-server
    #查询端口
    sudo netstat -lntup|grep ssh
    
  • 操纵链

    #-t指定表 -A添加规则到指定链的结尾 -p执行协议  --dport表示对客户端来说是目的 -j执行行为(丢弃接受拒绝)
    # -I添加规则到指定链的开头
    #处理行为 ACCEPT DROP 
    sudo iptables -t filter -A IPPUT -p tcp --dport 52113 -j DROP
    
  • 在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则)匹配所有访问本机 IP 的数据包,匹配到的丢弃

     iptables -t filter -A INPUT -j DROP 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值