linux下的防火墙Netfilter配置:iptables的了解与使用(详细)
Posted Tuki_a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下的防火墙Netfilter配置:iptables的了解与使用(详细)相关的知识,希望对你有一定的参考价值。
iptables
什么是iptables
防火墙的基础知识:点击查看
linux系统在内核外加了层访问限制,这个访问限制就是 Netfilter数据包过滤机制(也就是linux的防火墙)。
在Linux上面我们使用内核内建了Netfilter 这个机制,Netfilter 利用一些数据包过滤的规则设置,来定义出什么数据可以接收,什么数据需要剔除,以达到保护主机的目的。
Netfilter 提供了iptables这个软件来作为防火墙数据包过滤的命令。通过iptables写入访问策略,而iptables又是通过表格和链管理这些策略的,写入表格可以用iptables或者firewalld软件。
官方定义:
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。
在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。
iptables的三表五链
我上篇文章详细写了,可以点击蓝字查看
iptables规则的读取顺序
自上而下,从第一条开始读,符合规则就直接执行且不再往下读,不符合规则就继续读下一条,如此继续。
实验环境配置
我们需要一台双网卡主机,一台单网卡主机。
双网卡:luckya主机
先添加一块网卡
然后对两块网卡进行设置:
网卡ens160:
nm-connection-editor
ip设为静态192.168.187.129
网卡ens224:
nm-connection-editor
ip设为静态192.168.0.100
两个网卡更改完后都需重启网络
nmcli connection reload
nmcli connection up ens160
nmcli connection up ens224
单网卡:luckyb主机
网卡ens160:
nm-connection-editor
ip设为静态192.168.0.200
网关设为luckya主机的第二块网卡ens224上的ip保证两个主机可以互相通信
网卡更改完后需重启网络
nmcli connection reload
nmcli connection up ens160
测试设置是否生效:
两台主机互相ping一下,如图,成功!
防火墙管理工具切换到iptables
在rhel8中默认使用的是firewalld,所以我们需要下载并切换为iptables。
firewalld---切换到--->iptables
dnf install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
systemctl enable --now iptables
iptales ---切换到---> fiewalld
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld
下载并开启iptables:
iptables命令及简单使用
语法:
iptables [选项] [参数]
iptables
-t #指定表名称,不指定这个参数默认是filter表
-n #不做解析,保留ip
-L #查看
-A #添加策略
-p #协议
-m #状态
--dport #目的地端口
-s #来源
-j #动作
ACCEPT #允许
DROP #丢弃
REJECT #拒绝
SNAT #源地址转换
DNAT #目的地地址转换
-N #新建链
-E #更改链名称
-X #删除链
-D #删除规则
-I #插入规则
-R #更改规则
-P #更改默认规则
查看表规则
#prot是protocol协议
添加删除规则
添加/改名/删除链
防火墙策略的永久保存
我们使用iptables进行设置时,都是临时的,关机后就会重启恢复到默认,需要保存才不会让设置重置。
/etc/sysconfig/iptables #iptables 策略记录文件
永久保存策略两个方式(两个命令):
1、iptales-save > /etc/sysconfig/iptables
2、service iptables save
iptables设置规则使ssh只允许特定用户连接
先设置一个丢弃所有数据包的规则:
iptables -A INPUT -j DROP
然后在单网卡主机测试,如下图会一直没有回应
在filter表INPUT链插入第一条规则,允许22端口的数据包:
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
##如果直接-A加规则会是第二条规则,那么数据包来了后读到第一条直接被丢弃,所以要用-I插入
然后在单网卡主机测试,ssh连接成功!
更改filter表INPUT链第一条规则使特定网段的才可以连接:
iptables -R INPUT 1 -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
##现在只有192.168.0.0/24网段的ip可以连
iptables设置规则不重复过滤数据包
防火墙在进行数据包过滤时如果规则有几万条,每一个数据包都要从头读到尾那么必然会影响过滤速度,添加状态检测会提高效率,比如在第一条添加规则检查这个包是不是以前建立过连接的,如果是,直接让它过,如果不是再往下读,这样重复的包就不会重复过滤。
iptables的数据包状态
数据包状态
RELATED #建立过连接的
ESTABLISHED #正在连接的
NEW #新的连接
设置步骤
在filter表INPUT链进行设置:
iptables -F #清空之前设置的规则
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #添加状态检测,连接过的和正在连接的直接允许过
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT #新的连接里自己访问自己的都允许通过(lo回环接口)
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT #新的连接里22端口的访问都允许
iptables -A INPUT -m state --state NEW-j REJECT #除了上面之外的新连接都拒绝
service iptables save #保存规则
iptables设置规则做网关使内网能访问外网
nat表就是用来做地址转换的,我们要让单网卡主机(内网主机)能通过我们的双网卡主机(网关)访问外网,所以我们在nat表里进行设置。
先清除之前的规则:
iptables -F #清空之前filter表设置的规则
iptables -t nat -F #清空nat表设置的规则
前提:在我们之前的实验环境设置里已经设置好了网关,然后再开一台虚拟机当外网,总共三台虚拟机
内网:192.168.0.0/24
外网:192.168.187.0/24
第一步:做源地址转换
iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.187.129 #从ens160网卡出去的数据包IP转换为192.168.187.129
#内网访问外网需要伪装成和外网一个网段的地址,所以需要在网关经过内核路由之后做源地址转换
第二步:开启内核路由功能
sysctl -a | grep ip_forward #检查net.ipv4.ip_forward是否等于1,1开启0关闭
vim /etc/sysctl.conf #如果是关闭,那么编辑文件
加入:
net.ipv4.ip_forward=1
sysctl -p #使设置生效
源地址转换
开启内核路由功能
在单网卡主机(内网主机)测试一下,如图,ping和ssh都没问题,测试成功!
#我的外网主机ip是192.168.187.135
以上是关于linux下的防火墙Netfilter配置:iptables的了解与使用(详细)的主要内容,如果未能解决你的问题,请参考以下文章