iptables防火墙概念-规则命令详解-配置文件修改

这篇具有很好参考价值的文章主要介绍了iptables防火墙概念-规则命令详解-配置文件修改。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 概念

iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框中,这个全框才是真正的防火墙,这个框架的名字叫netfilter

netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间,iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架

数据包信息表 = 源地址、目的地址、传输协议(如 T C P )和服务类型(如 H T T P ) 数据包信息表=源地址、目的地址、传输协议(如TCP)和服务类型(如HTTP) 数据包信息表=源地址、目的地址、传输协议(如TCP)和服务类型(如HTTP

数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则

二. 表结构

不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表

  1. filter表:负责过滤功能,防火墙;内核模块:iptables_filter
  2. nat表:network address translation,网络地址转换功能;内核模块:iptable_nat
  3. mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
  4. raw表:关闭nat表上启用的连接追踪机制;iptable_raw

三. 安装配置

3.1 安装


# 安装软件
sudo apt-get install iptables

# 安装软件的配置文件,这个不一定能安装成功
sudo apt-get install iptables-services

3.2 配置策略【可以不配置,自定义规则】


编辑配置文件

vi /etc/iptables.rules

添加如下内容

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# 常用端口
#-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 59.109.149.221 -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 7080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 7180 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许loopback!(不然会导致DNS无法正常关闭等问题)
-A OUTPUT -o lo -p all -j ACCEPT
-A INPUT -i lo -p all -j ACCEPT
# 允许SSH连接
# The --dport 端口号要与 /etc/ssh/sshd_config 中的Port参数相同
-A INPUT -p tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp --sport 22 -j ACCEPT
#允许icmp包通过,也就是允许ping
-I INPUT -p icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p ICMP --icmp-type timestamp-request -j DROP
-A INPUT -p ICMP --icmp-type timestamp-reply -j DROP
-A INPUT -p ICMP --icmp-type time-exceeded -j DROP
-A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
-A OUTPUT -p ICMP --icmp-type time-exceeded -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 8080 -j DROP
COMMIT

############################

使配置生效

iptables-restore < /etc/iptables.rules

四. 规则

iptables的规则无非增删改查,但是在学习之前,还需要了解字段含义以及如何使用ping命令


使用指定的网卡去ping指定ip地址

# [interface] 是指要使用的网卡的名称,例如 eth0
# [ip address] 是要 ping 的目标 IP 地址
ping -I [interface] [ip address]

查看接收到的 ping 命令数据包来自哪个IP地址

apt-get install tcpdump

随后开启检测

# [interface] 是指要监视的网络接口的名称,例如 eth0
sudo tcpdump -i [interface] icmp

4.1 字段含义


  1. pkts:对应规则匹配到的报文的个数
  2. bytes:对应匹配到的报文包的大小总和
  3. target:规则对应的target,往往表示规则对应的”动作”,即规则匹配成功后需要采取的措施
  4. prot:表示规则对应的协议,是否只针对某些协议应用此规则。
  5. opt:表示规则对应的选项。
  6. in:表示数据包由哪个接口(网卡)流入,即从哪个网卡来。
  7. out:表示数据包将由哪个接口(网卡)流出,即到哪个网卡去。
  8. source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。
  9. destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。

4.2 查询


查看表的所有规则,其中-t表示指定表的名称,-L表示列出全部

sudo iptables -t filter -L

sudo iptables -t raw -L

sudo iptables -t mangle -L

sudo iptables -t nat -L

如果要展示具体的表中的某个链规则,可以在-L后追加具体的链名称

sudo iptables -t filter -L INPUT

展示具体的表中的某个链的具体规则,再添加-v参数

sudo iptables -t filter -vL INPUT

ip地址做出解析,可直接将源地址和目的地址展示,添加-n参数

sudo iptables -t filter -nvL INPUT

可以对当前规则执行编号,添加--line参数

sudo iptables --line -t filter -nvL INPUT

4.3 增加


增添规则

先使用同一网段一台机器(10.250.143.29)连通测试机(10.250.143.175),发现网络可联通
iptables配置文件详解,网络虚拟化,网络,linux,系统安全

随后在测试机上添加拦截规则,规则含义是报文源地址为10.250.143.29时,报文则被DROP(丢弃),查看对应的表,发现规则已经被添加进去

iptables -t filter -I INPUT -s 10.250.143.29 -j DROP

iptables配置文件详解,网络虚拟化,网络,linux,系统安全

  • -t选项指定了要操作的表,此处指定了操作filter
  • -I选项,即insert,指明将”规则”插入至哪个链中,默认插入第一个位置
  • -s选项,即source,指明”匹配条件”中的”源地址”
  • -j选项,即judge,指明当”匹配条件”被满足时,在iptables所对应的为动作target,上例中指定的动作为DROP

再去测试连通性,发现网络不通
iptables配置文件详解,网络虚拟化,网络,linux,系统安全

再次查看规则表,发现七个数据包被拦截,总计588 bytes,能和上述对应

iptables配置文件详解,网络虚拟化,网络,linux,系统安全

追加规则

如果要在尾部添加规则,则使用- A选项,此时表示报文源地址为10.250.143.29时,报文则被ACCEPT(接受)。虽然此时第一条为丢弃语句,第二条为接受语句,但是iptables按照顺序执行匹配,当前依旧无法接收到数据包

iptables -t filter -A INPUT -s 10.250.143.29 -j ACCEPT

iptables配置文件详解,网络虚拟化,网络,linux,系统安全

在指定位置插入

可以在INPUT后写入数字来指定的位置插入我们的规则,如下图即可发现在第一行插入了规则

iptables -t filter -I INPUT 1 -s 10.250.143.29 -j ACCEPT

iptables配置文件详解,网络虚拟化,网络,linux,系统安全

4.4 删除


删除filter表中INPUT中的一条规则,有两种办法,下图为当前规则表

iptables配置文件详解,网络虚拟化,网络,linux,系统安全

按照编号删除

假设我们要删除编号为1的规则

iptables -t filter -D INPUT 1

具体的匹配条件与动作删除

假设我们按照源地址和动作规则来删除

iptables -t filter -D INPUT -s 10.250.143.29 -j ACCEPT 

清除整个表

-F参数表示flush刷新,请勿随便清空链或者表中的规则

iptables -t filter -F

4.5 修改


iptables配置文件详解,网络虚拟化,网络,linux,系统安全

所谓修改,就是将某条规则中的动作进行改动,比如将上图中的accept改为reject,要注意以下几点

  • 最重要的:使用-s指定对应规则中原本的源地址,否则修改的规则中的源地址会自动变为0.0.0.0/0,即那么所有IP的请求都被拒绝了
  • 一定要指定规则的序号
iptables -t filter -R INPUT 1 -s 10.250.143.29 -j REJECT

我们修改完如下图,

iptables配置文件详解,网络虚拟化,网络,linux,系统安全

此时我们再去测试连通,会直接展示不可达

iptables配置文件详解,网络虚拟化,网络,linux,系统安全

4.6 保存


我们防火墙所做出的修改都是临时的,为了防止这种情况的发生,我们需要将规则保存

ubuntu 20.04仿佛没有网上说的配置文件,那么我们需要自定义配置文件,并且将其设置为开机自启

首先,创建我们的配置文件

vi /etc/iptables.rules 

此后,写完命令,我们执行保存配合重定向,即可将我们当前的规则保存在配置文件中

iptables-save > /etc/iptables.rules 

我们同时也可以从配置文件中来加载规则

iptables-restore < /etc/iptables.rules 

但是我们每次开机来加载配置文件很麻烦,所以我们要设置该配置文件开机自动生效

第一步:赋予启动文件的修改权限

sudo chmod 777 /lib/systemd/system/rc-local.service

第二步:然后设置该 rc-local 服务开机启动

systemctl enable /lib/systemd/system/rc-local.service

第三步:创建脚本文件

sudo vi /etc/rc.local

第四步:添加如下内容

#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0

第五步:这个超级重要rc.local赋予执行权限,否则没有权限无法运行

sudo chmod 777 /etc/rc.local

到此位置,开机配置文件即可生效文章来源地址https://www.toymoban.com/news/detail-640482.html

到了这里,关于iptables防火墙概念-规则命令详解-配置文件修改的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows通过命令开启、关闭、删除防火墙规则

    #关闭端口 #开启端口 #删除规则 参考: https://blog.51fuli.info/windows%e9%98%b2%e7%81%ab%e5%a2%99-netsh-advfirewall-%e8%ae%be%e7%bd%ae/

    2024年02月16日
    浏览(48)
  • 【防火墙】iptables防火墙(一)

    防火墙具有 隔离功能 主要部署在网络边缘或者主机边缘,防火墙的主要作用是 决定哪些数据可以被外网访问,哪些数据可以进入内网访问 网络层(路由器):数据的转发 安全技术 1.入侵监测系统:在检测到威胁(木马、病毒)后,不会阻断网络访问,只会在事后提供报警

    2024年02月15日
    浏览(44)
  • iptables防火墙(一)

    Linux系统的防火墙:IP信息包过滤系统,它实际上由两个组件 netfilter 和 iptables 组成。 主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 1.netfilter netfilter 属于\\\"内核态\\\"(Kernel Space,又称为内核空间)的防火墙功能体系。 netfilter是内核的

    2024年02月05日
    浏览(38)
  • iptables 防火墙(二)

    目录 1. SNAT 策略及应用 1.1 SNAT策略概述  1. 只开启路由转发,未设置地址转换的情况 2. 开启路由转发,并设置SNAT转换的情况 1.2 SNAT策略的应用 1. 2.1 共享固定IP上网 (1)打开网关的路由转发 (2)设置正确的SNAT策略 (3)测试SNAT共享接入结果 1.2.2 共享动态IP 地址上网 2. DN

    2024年02月03日
    浏览(47)
  • iptables防火墙2

    SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由) SNAT原理:修改数据包的源地址。 SNAT转换前提条件: 1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址 2.Linux网关开启IP路由转发 临时打开: 或 永久打开: SNAT转换 1:固定的

    2024年02月05日
    浏览(39)
  • 【iptables 实战】06 iptables网络防火墙实验

    在上一节中,我们将两个网段的机器,通过中间机器的网络转发,能达到互通。再来回顾一下这个网络连接的图 这一节,我们将通过设置机器B的iptables规则,来做一些防火墙实验 机器A模拟公网的一台服务器,机器C模拟我们内网的一台机器。机器B充当路由器的角色 2.1 三台机

    2024年02月07日
    浏览(41)
  • Linux——iptables防火墙

    Linux系统的防火墙:IP信息包过滤系统,它实际上由两个net filter和iptables组成。 主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 netfilter:属于“内核态”(Kernel Space,又称内核空间)的防火墙功能体系 是内核的一部分,由一些数据包

    2024年02月07日
    浏览(38)
  • iptables安全与防火墙

    防火墙主要作用是隔离功能,它是部署在网络边缘或主机边缘;另外在生产中防火墙的主要作用是:决定哪些数据可以被外网访问以及哪些数据可以进入内网访问;顾名思义防火墙处于TCP协议中的网络层。 防火墙分类: 软件防火墙:360,iptables,firewalld 硬件防火墙:路由器

    2024年02月12日
    浏览(33)
  • iptables防火墙-NAT

    工作在网络层和传输层,实现地址重写,实现端口重写     作用:①隐藏本地网路中主机地址                 ②节约IP地址的使用 分为DNAT和SNAT(互相对应的,需要查找NAT会话表)    SNAT:只是修改请求报文的源地址(为了隐藏真实服务器的IP地址)    DNAT:只是修改请

    2024年04月16日
    浏览(57)
  • 【Linux】iptables防火墙

    Linux 系统的防火墙:IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口、协议等信息的处理上。 netfilter 位于Linux内核中的包过滤功能体系 称为Linux防火墙的“内核态\\\" iptables 位于/sbin/iptables,用来管

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包