Linux中的火墙(1)(iptables)

1.火墙介绍

  • netfilter:真正的防火墙,位于内核空间。
  • iptables:它其实不是真正的防火墙,可以将其理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架”中,这个安全框架才是真正的防火墙,这个框架的名字就是netfilter
  • iptables|firewalld(两个工具)
    在这里插入图片描述

2.火墙管理工具切换

  • 在rhel8中默认使用的是firewalld
  • firewalld----->iptables
  • dnf install iptables-services -y安装iptables服务
  • systemctl stop firewalld停止firewalld
  • systemctl disable firewalld 开机也不启动firewalld
  • systemctl mask firewalld 冻结firewalld
  • systemctl enable --now iptables打开iptables
    在这里插入图片描述
  • iptales -------> fiewalld
  • systemctl stop iptables停止iptables
  • systemctl disable iptables开机也不启动iptables
  • systemctl mask iptables冻结iptables
  • systemctl enable --now firewalld打开firewalld

3.iptables 的使用

  • /etc/sysconfig/iptables iptables 策略记录文件
    在这里插入图片描述

  • 永久保存策略

  • iptales-save > /etc/sysconfig/iptables

  • service iptables save

  • -这两种方法都是更改/etc/sysconfig/iptables这个文件

  • 如果不改文件,你对火墙进行操作之后,restart,它又会恢复原样
    在这里插入图片描述
    在这里插入图片描述

4.火墙默认策略

  • 默认策略中的5条链
input 输入
output 输出
forward 转发
postrouting 路由之后
prerouting 路由之后

在这里插入图片描述

  • 默认的3张表
filter 经过本机内核的数据(input output forward)
nat 不经过内核的数据(postrouting,prerouting,input,output)
mangle 当filter和nat表不够用时使用(input, output ,forward, postrouting,prerouting,)

在这里插入图片描述

5.iptables命令

  • iptables
参数 作用
-t 指定表名称
-n 不做解析
-L 查看
-A 添加策略
-p 协议
–dport 目的地端口
-s 来源
-j 动作
-j ACCEPT 允许
-j DROP 丢弃
-j REJECT 拒绝
-j SNAT 源地址转换
-j DNAT 目的地地址转换
-N 新建链
-E 更改链名称
-X 删除链
-D 删除规则
-I 插入规则
-R 更改规则
-P 更改默认规则

在这里插入图片描述
在这里插入图片描述

  • iptables是按规则一条一条执行的,遇到匹配的规则时,就不再继续执行下一条了,所以要想让其执行第二条规则,应该将其插入到第一条中
    在这里插入图片描述
  • 例子:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 数据包状态:
  • RELATED 建立过连接的
  • ESTABLISHED 正在连接的
  • NEW 新的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
##允许已经认证过的
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
##允许回环
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
##允许 80 443 53 端口访问
iptables -A INPUT -m state --state NEW ! -s 192.168.1.15 -p tcp --dport 22 -j ACCEPT
##允许除了192.168.1.15之外的主机通过22端口访问
iptables -A INPUT -m state --state NEW -j REJECT
service iptables save

在这里插入图片描述

  • 如下图设置也可以虽然也可以通过之前的方法设置,但是会大大降低火墙的效率
    在这里插入图片描述
  • 实验准备:VMware下一台双网卡主机,两台单网卡主机
  • 在本机设置双网卡,ip分别为192.168.1.33和172.25.254.33
  • 一台单网卡主机ip为172.25.254.20,网关设置为172.25.254.33
  • 一台单网卡主机ip是192.168.1.15(作为测试主机)
  • 保证双网卡主机的内核路由功能是开启的(双网卡主机充当路由)
    在这里插入图片描述
  • nat表中的dnat snat
  • SNAT
iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.1.33
##所有从ens160出去的所有数据都伪装成192.168.1.33这个ip
  • 这样做,可以使172.25.254.20访问到192.168.1.15
  • DNAT
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
##所有从ens160进来的数据都伪装成172.25.254.33这个ip
  • 这样做,可以使192.168.1.15访问到172.25.254.20
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章