Linux 下 iptables 防火墙管理服务设置

Linux 下 iptables 防火墙管理服务设置

  • iptables
    iptables是linux系统中管理防火墙的工具(内核版本为2.4及以上,在低于2.4版本的LINUX系统中,用的不是iptables) iptables本身不是防火墙。 通过iptables可以建立、删除、修改、保存(导出)、导入防火墙策略。
  • iptables 的三表五链
    预设的情況下, Linux 的 iptables 至少就有三個表格,
    三张表包括:filter、nat、mangle
    五条链包括:
    INPUT链:处理输入数据包。
    OUTPUT链:处理输出数据包。
    PORWARD链:处理转发数据包。
    PREROUTING链:用于目标地址转换(DNAT)。
    POSTOUTING链:用于源地址转换(SNAT)。
    • 管理本机进出的 filter
      filter (过滤器):主要跟进入 Linux 本机的封包有关,这是预设的 table,包含以下三条链:
      INPUT:主要与想要进入我们 Linux 本机的封包有关;
      OUTPUT:主要与我們 Linux 本机所要送出的封包有关;
      FORWARD:这个与 Linux 本机比较沒有关系, 他可以”转换封包”到后端的电脑中,与下列 nat table 相关性较高。
    • 管理后端主机 (防火墙內部的其他电脑) 的 nat
      nat (位址转换):是 Network Address Translation 的缩写, 这个表格主要在进行来源与目的之 IP 或 port 的转换,与 Linux 本机较无关,主要与 Linux 主机后的区域网路內电脑较有相关。包含以下四条链:
      INPUT:主要与想要进入我们 Linux 本机的封包有关;
      PREROUTING:在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
      POSTROUTING:在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)
      OUTPUT:与发送出去的封包有关
    • 管理特殊旗标使用的 mangle (较少使用) 。
      mangle (破坏者):这个表格主要是与特殊的封包的路由旗标有关,由于这个表格与特殊旗标相关性较高,所以像这种单纯的环境当中,较少使用 mangle 这个表格。包含以下五条链:
      INPUT:主要与想要进入我们 Linux 本机的封包有关;
      PREROUTING:在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
      POSTROUTING:在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)
      OUTPUT:与发送出去的封包有关
      FORWARD:可以”转换封包”到后端的电脑中。

1. iptables 中常用的参数以及作用

参数作用
-t指定tabke
-R修改
-n不作地址解析
-P设置默认策略
-F清空规则链
-L查看规则链
-A在规则链的末尾加入新规则
-Inum 在规则链的头部加入新规则
-Dnum 删除某一条规则
-s匹配来源地址 IP/MASK,加叹号“!”表示除这个 IP 外
-d匹配目标地址
-i网卡名称 匹配从这块网卡流入的数据
-o网卡名称 匹配从这块网卡流出的数据
-p匹配协议,如 TCP、UDP、ICMP
-E修改规则链名称
-N添加自定义链名
-X删除自定义链

iptables命令选项输入顺序:

 iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-sIP/源子网> 
--sport 源端口 <-d 目标IP/目标子网> -- dport 目标端口 -j 动作

动作包括:

 accept:接收数据包。
 DROP:丢弃数据包。
 REJECT:拒绝接受数据包。
 REDIRECT:重定向、映射、透明代理。
 SNAT:源地址转换。
 DNAT:目标地址转换。
 MASQUERADE:IP伪装(NAT),用于ADSL。
 LOG:日志记录。

2. iptables 链表的具体操作

注:在进行操作时关闭 firewalld

iptables 策略的执行,是由上到下依次查询表链信息,一但查到符合的信息,将直接进行应用,若是下述链中还有对应的符合信息是无法被是别的,若是表链中未查询到策略信息,将会执行默认的策略

2.1 iptables 策略查看、清空及保存

 [root@client ~]# iptables -nL   #不加地址解析的查看防火墙策略
 其中:
   target:代表进行的动作, ACCEPT 是放行,而 REJECT 則是拒绝,此外,还有 DROP (丢弃) 的項目!
   prot:代表使用的封包协定,主要有 tcp, udp 及 icmp 三种封包格式;
   opt:額外的选项说明
   source :代表此规则是针对哪个“来源 IP”进行限制?
   destination :代表此规则是针对哪个“目标 IP”进行限制?
 [root@client ~]# iptables -F    #清空防火墙策略
 [root@client ~]# service iptables save  
                # 保存火墙策略到: /etc/sysconfig/iptables

执行如下:
查看火墙策略
这里写图片描述
清空策略并进行保存
这里写图片描述

2.2 iptables 策略的修改

2.2.1 iptables 默认策略修改,及简单的策略添加
 iptables 的默认策略是 ACCEPT 允许,接受
 [root@client ~]# iptables -P INPUT DROP  #修改 INPUT 链的策略为 DROP
                # 当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理
 [root@client ~]# iptables -nL
 利用 httpd 服务进行测试
 [root@client ~]# iptables -A IPNUT -p tcp --dport 80 -j ACCEPT
                # 修改火墙策略,允许 80 端口通过 tcp 协议进行访问
 利用 httpd 服务进行测试

执行如下:
修改火墙策略
这里写图片描述
在另一主机通过 http 服务进行访问,由于火墙策略为DROP 因此无法访问,且无回复
这里写图片描述
为火墙添加策略,允许 80 端口通过 tcp 协议进行访问
这里写图片描述
访问成功
这里写图片描述

2.2.2 iptables 策略添加,插入,修改及删除
 [root@client ~]# iptables -A INPUT -s 172.25.151.250 -p tcp --dport 80 -j REJECT
                # 添加策略,拒绝指定主机通过 80 端口访问
                # 添加默认是添加在策略最后
 [root@client ~]# iptables -I INPUT 1 -s 172.25.151.250 -p tcp --dport 22 -j REJECT
                # 插入策略到 INPUT 链的第一条,拒绝指定主机通过 22 端口访问
 [root@client ~]# iptables  -D INPUT 2 
                # 删除指定策略
 [root@client ~]# iptables -R INPUT 2 -s 172.25.151.250 -p tcp --dport 80 -j ACCEPT
                # 修改 INPUT 链的第二条策略,允许指定主机通过 80 端口访问 

执行如下:
添加策略,默认添加到最后
这里写图片描述
验证策略要求,拒绝主机 172.25.151.250 通过 80 端口访问
这里写图片描述
插入策略到指定位置
这里写图片描述
验证策略要求,拒绝主机 172.25.151.250 通过 22 端口访问
这里写图片描述
删除指定位置的策略
这里写图片描述
修改指定策略
这里写图片描述
验证策略要求,允许主机 172.25.151.250 通过 80 端口访问
这里写图片描述

2.3 iptables 规则链的添加与删除

 [root@client ~]# iptables -N test  # 添加名为 test 的链(默认在 filter 表中进行操作)
 [root@client ~]# iptables -E test linux  # 将 test 链重命名为 linux
 [root@client ~]# iptables -X linux  # 删除 linux 链

执行如下:
添加新链
这里写图片描述
修改链名称
这里写图片描述
删除指定链
这里写图片描述

2.4 iptables -m state –state 状态模组

iptables 的链表策略在执行时,是一条条的去进行识别,此时若是所要匹配的策略在最后,那么每次进行匹配时,就会过于浪费时间, iptables 状态模组可以解决这个问题,在第一次进行匹配时,进行指定策略的筛选,已经连接过,或正在连接的,下次访问时,直接访问,不用再次匹配策略

具体执行如下

 [root@client ~]# iptables -A chain [-m state] [--state 状态]
 选项与参数:
 -m state :狀態模組
 --state :一些封包的狀態,主要有:
  INVALID    :无效的封包,通常这些包被DROP
  ESTABLISHED:该包属于某个已建立的连接
  NEW        :该包想要开始一个新的连接(重新连接或连接重定向)
  RELATED    :该包是属于某个已建立的连接所建立的新连接
 例如:对 net 表的 POSTROUTING 设定策略,将已经连接的或连接过的封包都允许
 [root@client ~]# iptables -t nat -I POSTROUTING 1 -m state --state 
 RELATED,ESTABLISHED -j ACCEPT

执行如下:
这里写图片描述

3. 通过 iptables 的端口转发及地址伪装

3.1 地址伪装

可以通过对 iptables 的 nat 表进行设置,实现主机的路由功能,借由让别的主机,借由本机进行外网连接(实际是客户端借由防火墙主机的身份去访问外界)

  • 双网卡主机网卡及 IP 分别为:
    eth0:172.25.151.50
    eth1:192.168.1.1
  • 单网卡主机网卡及 IP :
    eth0:192.168.1.151
  • 借由地址伪装操作,让单网卡主机可以通过双网卡主机访问与其不同网段的主机
    操作如下
 首先设单网卡主机网关为双网卡主机 eth1 IP 
 在双网卡主机进行 iptables 策略设置,并开启本机内核路由功能
 [root@client ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT
 --to-source 172.25.151.50
 -t nat:指定 nat 表
 -A POSTROUTING:指定 POSTROUTING POSTROUTING:可以在这里定义进行源NAT的规 则,系统在决定了数据包的路由以后在执行该链中的规则。
 -O eth0:匹配从网络接口 eth0 出去
 -j SNAT:进行源地址转换
 --to-source:转发数据包的源地址 

指定如下:
在双网卡主机进行 iptables 策略配置,允许数据通过本机的 eth0 网卡进行转发
这里写图片描述
开启内核路由功能(编辑配置文件,/etc/sysctl.conf)
这里写图片描述
这里写图片描述
在单网卡主机
配置网关:
这里写图片描述
添加策略之前无法ping 通不同网段
这里写图片描述
可以 ping 通不同网段的
这里写图片描述
通过 ssh 服务进行访问外界主机,可看到是以 172.25.151.50 主机身份进行访问的
这里写图片描述

3.2 端口转发

可以通过对 iptables 的 nat 表进行设置,使得在访问本机某些端口时,将数据转发到别的主机中
设置好单网卡主机网关,如 3.1 地址伪装所作
执行如下:

 [root@client ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 
 -j DNAT --to-dest 192.168.1.151
 -t nat:指定 nat 表
 -A PREROUTING:指定 PREROUTING PREROUTING:(外部访问内部)可以在这里定义进行 目的NAT的规则,因为路由
 器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必
 须 在路由之前就进行目的NAT;
 -i eth0:匹配从网络接口 eth0 进来
 -p tcp:封包协议为 tcp 协议
 --dport 22:目的端口为 22 端口
 -j DNAT:进行目标地址转换 
 --to-dest:转发数据包的目的地址

执行如下:
本机有两张网卡,分别为eth0:172.15.151.50,eth1:192.168.1.1,其中eth0 可以连接外网
这里写图片描述
设定 iptables 策略,外界主机想通过 22 端口访问本机时,将数据转发到 192.168.1.151 主机
这里写图片描述
测试如下
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值