Linux中的iptables基础

防火墙种类

netfilter

位于Linux内核中的包过滤功能体系
称为Linux防火墙的“内核态”

iptables

位于/sbin/iptables,用来管理防火墙规则的工具
称为防火墙的“用户态”

包过滤的工作层次

主要是网络层,针对IP数据包
体现在对包内的IP地址、端口等信息的处理上(还有tcp、udp)

表、链结构

规则链

规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙的规则
链的分类依据:处理数据包的不同时机

默认5种规则链

INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
PREROUTING链:在进行路由选择前处理数据包
POSTROUTING链:在进行路由选择后处理数据包

规则表

作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似

默认4个规则表

raw表:确定是否对该数据包进行状态跟踪
    表中包含PREROUTING链、OUTPUT链
    要跟踪就必须是自己发出的
mangle表:为数据包设置标记
      表中包含五种链
nat表:修改数据包中的源、目标IP地址或端口
    表中包含PREROUTING链、POSTROUTING链、OUTPUT链
filter表:确定是否放行该数据包(过滤)
    表中包含INPUT链、FORWARD链、OUTPUT链

数据包控制的匹配流程

规则表之间的顺序

raw→mangle→nat→filter

规则链之间的顺序

入站:PREROUTING→INPUT
出站:OUTPUT→POSTROUTING、
转发:PREROUTING→FORWARD→POSTROUTING

规则链内的匹配顺序

按顺序依次检查,匹配即停止(LOG策略除外)
若找不到相匹配的规则,则按该链的默认策略处理

编写防火墙规则

基本语法、控制类型

语法构成:iptables 【-t 表名】 选项 【链名】 【条件】【-j 控制类型】
     示例:iptables -t filter -I INPUT -p icmp -j REJECT
控制类型:ACCEPT:允许通过
     DROP:直接丢弃,不回应任何(拒绝一般用DROP)
     REJECT:拒绝通过,必要时给出提示
     LOG:记录日志信息,然后传给下一条规则链继续匹配,不对数据包进行控制
注意:  不指定表名时,默认指filter表
     不指定链名时,默认指表内的所有链
     除非设置链的默认策略,否则必须指定匹配条件
     选项、链名、控制类型使用大写字母,其余均为小写

添加、查看、删除规则

添加新规则(选项名)
      -A:在链的末尾追加一条规则
      -I:在链的开头(或指定序列号)插入一条规则
      示例:iptables -I INPUT 2 -p icmp -j ACCEPT
删除、清空规则
      -D:删除链内的指定序列号的规则
      示例:iptables -D INPUT 10
      -F:清空所有规则
      示例:iptables -F
查看
      iptables -L -n --line-number -v
      -L:列出所有的规则条目
      -n:以数字形式显示地址、端口等信息
      -v:以更详细的方式显示规则信息
      --line-number:查看规则时,显示规则的序号
设置默认策略(ACCEPT、DROP)
      -P:为指定的链设定默认规则
      示例:iptables -t filter -P DROP
注意
      修改后虽然实时生效,但必须save,不然重启后消失(进配置选项修改后不用save)

规则的匹配条件

通用匹配:  可直接使用,不依赖于其他条件或扩展
      包括网络协议、IP地址、网络接口
      常见的通用匹配条件
         协议匹配:-p 协议名
         地址匹配:-s 源地、-d目的地址(可以192.168.8.0/24指定网段)
         接口匹配:-i入站网卡(接eth0)、-o出站网卡
         示例
         iptables -A INPUT -s 192.168.8.252 -p icmp -j ACCEPT
         iptables -A INPUT -s 192.168.8.0/24 -p icmp -j ACCEPT
         iptables -I INPUT -i eth0 -p icmp -j DROP
隐含匹配  要求以特定的协议匹配为前提
      端口匹配
        --sport 源端口
        --dport 目的端口
      TCP标记匹配:
        --tcp-flags 检查范围,被设置的标记
      ICMP类型匹配:
        --icmp-type ICMP类型(百度有哪些类型)
        --icmp-type类型: 8 icmp请求 0 icmp回显 3 不可达
      示例
        iptables -I INPUT -s 192.168.8.122 -p tcp --dport 22 -j ACCEPT(先设置此协议,防止后面不能远程登录服务器)
        iptables -I INPUT -p tcp --dport 80 -j ACCEPT
显示匹配  要求以-m扩展模块的形式明确指出类型
      多端口匹配:-m multiport --sport/–dport (加不加S??)
       示例:iptables -I INPUT -m multiport -p tcp --dports 80,443 -j REJECT
       IP范围:-m IPrange --src-range
       MAC范围:-m mac --mac-source mac地址
       示例:iptables -I INPUT -m mac --mac-source mac地址 -p icmp -j DROP
数据包状态匹配:-m state --state 连接状态
       示例:iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

      !:取反
     -p协议:TCP、UDP、ICMP
     ICMP:Internet Control Message Protocol,控制报文协议是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
     iptables -L -n --line-number -v查询时
        pkts:匹配了多少包
        bytes:总共多少字节
        policy:默认策略,只要DROP和ACCEPT
     HTTP协议:默认80端口的TCP连接
     保存防火墙规则:service iptables save(也可以把修改写入配置文件)

两种地址转换

SNAT

应用环境: 局域网主机共享单个公网IP地址接入internet
原理:   源地址转换,修改数据包的源地址
前提条件 局域网各主机正确设置IP地址/子网掩码
     局域网各主机正确设置默认网关地址
     Linux网关支持IP路由转发
实现方法
编写SNAT转换规则
  固定公网IP时
     iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j SNAT --to-source 192.168.18.66
     eth0是外网接口名称、POSTROUTING表示路由选择后再处理
  不固定公网IP(如家庭的公网Ip,几小时会自动更换一次)
      iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j MASQUERADE
       MASQUERADE表示复用公网IP,当时是多少就映射为多少
编写配置文件/etc/sysctl
     net.ipv4.ip_forward = 1
     保存退出后 sysctl -p (让配置起作用)
     验证(访问的httpd服务)
     cat /var/log/httpd/access_log

DNAT

目的地址转换
实现:   iptables -t nat -A PREROUTING -i eth0 -d 192.168.8.122 -p tcp --dport 80 -j DNAT --to-destination 192.168.18.66
端口转换: 在转换成的ip后加 :端口号
规则的备份
      备份:iptables-save > /路径
      示例:iptables-save > /iptables.txt
      还原:iptables-restore < /路径

服务脚本路径:/etc/init.d/iptables
规则配置文件路径:/etc/sysconfig/iptables

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值