Linux防火墙(以iptables为例)

news2024/11/19 10:46:31

目录

  • Linux配置防火墙
    • 1. 引言
    • 2. 什么是防火墙
    • 3. Linux中的防火墙
      • 3.1 iptables
        • iptables命令参数
        • 常用方式:
        • 3.1.1 安装iptables
        • 3.1.2 配置iptables规则
        • 3.1.3 示例一:使用iptables配置防火墙规则
        • 4. iptables执行过程

Linux配置防火墙

在这里插入图片描述

1. 引言

在互联网时代,网络安全问题成为了一个极为重要的议题。为了保护服务器和计算机免受网络攻击的威胁,配置防火墙是必不可少的。本节将介绍如何在Linux系统上配置防火墙。

2. 什么是防火墙

防火墙是一种网络安全设备,用于监视和控制网络数据流量。其主要功能是在不同网络之间建立一条阻隔,对进出的数据流量进行过滤和筛选,从而保护内部网络免受未经授权的访问和恶意攻击。
防火墙通过规则集合控制网络流量的通过与阻止,这些规则可以根据网络策略和需求进行配置。不正确的配置可能导致无法访问特定服务或应用程序。

3. Linux中的防火墙

Linux操作系统提供了内置的防火墙工具,包括iptablesfirewalld。这些工具可以用来管理网络流量的过滤规则。

3.1 iptables

iptables是一个在Linux内核中操作防火墙规则的工具。它提供了一种灵活的方式来定义规则,控制网络流量的通过与阻止。
iptables使用表(table)链(chain)规则(rule)来实现这一功能。
iptables的规则由多个表组成,每个表又包含多个链。每个链包含一系列的规则,规则决定了如何处理数据包。
常用的表包括filternatmangle

  • filter表用于过滤数据包
    • 三个链:INPUT、FORWARD、OUTPUT
  • nat表用于网络地址转换
    • 三个链:PREROUTING、POSTROUTING、OUTPUT
  • mangle表用于修改数据包头信息。
    • 五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

链的解释:

  • INPUT——进来的数据包应用此规则链中的策略
  • OUTPUT——外出的数据包应用此规则链中的策略
  • FORWARD——转发数据包时应用此规则链中的策略
  • PREROUTING——对数据包作路由选择前应用此链中的规则
    (所有的数据包进来的时侯都先由这个链处理)
  • POSTROUTING——对数据包作路由选择后应用此链中的规则
    (所有的数据包出来的时侯都先由这个链处理)

iptables规则可以根据源IP地址目标IP地址端口号协议类型等来筛选和转发数据包。用户可以自定义规则,允许或阻止特定的网络连接。

iptables命令参数
参数含义
-L显示表中的所有规则
-n不要把端口或IP反向解析为名字
-t指定表,不指定默认是filter表
-Aappend追加,加入准许类规则
-Ddelete删除,例如 -D INPUT 1
-Iinsert拒绝类规则放在所有规则的最上面
-p协议protocal tcp/udp/icmp/all
–dport目标端口dest destination指定端口加上协议 -p tcp
–sport源端口,source源
-d–destination 目标IP
-s–source 来源IP或网段
-m指定模块 multiport
-iinput输入的时候,从哪个网卡进来
-ooutput输出的时候,从哪个网卡出去
-j满足条件后的工作:DROP/ACCEPT/REJECT
DROP把数据丢掉,不会返回信息给用户
REJECT拒绝,返回拒绝信息
-Fflush 清除所有规则,不会处理默认的规则
-X删除用户自定义的链
-Z链的计数器清零(数据包计数器和数据包字节计数器)
常用方式:

在这里插入图片描述

3.1.1 安装iptables

几乎所有的Linux发行版都内置了iptables,不需要额外安装。但是,对于某些较新的发行版来说,可能启用了firewalld,所以需要先禁用firewalld才能使用iptables

3.1.2 配置iptables规则

以下是一些常用的iptables命令:

•	iptables -L:列出当前的iptables规则。
•	iptables -A chain:添加一条规则到指定链。
•	iptables -D chain rule_number:删除指定链上的一条规则,规则从1编号
•	iptables -P chain target:设置指定链上到目标机器的默认处理动作。
•	iptables -I chain [rule_number]:在指定链上指定位置插入一条规则。
3.1.3 示例一:使用iptables配置防火墙规则

使用iptables来配置一个简单的防火墙,只允许通过SSH和HTTP访问服务器。

  1. 首先检查iptables的状态,确保它已经启用:
$ sudo systemctl status iptables
  1. 添加一个允许SSH连接(22端口)的规则:
$ sudo iptables -A INPUT  -p tcp  --dport 22  -j ACCEPT
  1. 添加一个允许HTTP连接(80端口)的规则:
$ sudo iptables -A INPUT  -p tcp  --dport 80  -j ACCEPT
  1. 允许已建立的连接和相关的数据包通过:
$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

conntrack是一种状态跟踪和记录的机制,本身并不能过滤数据包,只是提供包过滤的依据。有状态是一种过滤依据,无状态实际也是一种过滤依据。其他还有INVALID(无效连接)、CLOSE(关闭连接)、TIME_WAIT(等待超时)、NEW(新建连接)等状态。

  1. 将默认的处理动作设置为拒绝:
$ sudo iptables -P INPUT DROP
  1. 使用iptables禁用23端口
iptables -A INPUT -p tcp --dport 23 -j DROP
  1. 使用iptables禁止别人ping通,直接丢弃 icmp 的请求包
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
  1. 为防止SSH服务被暴力枚举,设置iptables防火墙策略仅允许172.16.10.0/24网段内的主机通过SSH连接本机
iptables –A INPUT –p tcp –dport 22 –s 172.16.10.0/24 –j ACCEPT
iptables –A INPUT –p tcp –dport 22 -j DROP
  1. 设置防火墙允许本机转发除ICMP协议以外的所有数据包
iptables -A FORWARD -p ! icmp -j ACCEPT
  1. 在工作时间,即周一到周五的8:30-18:00,开放本机的ftp给192.168.1.0/24网络中的主机访问
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.0/24 -m time --weekdays 1,2,3,4,5 --timestart 08:30 --timestop 18:00 -j ACCEPT
  1. 配置iptables防火墙过滤规则,以封堵目标网段(172.16.1.0/24),并在两小时后解除封锁
iptables -I INPUT -s 172.16.1.0/24 -j DROP
iptables -I FORWARD -s 172.16.1.0/24 -j DROP
at now +2 hours
at> iptables -D INPUT 1
at> iptables -D FORWARD 1

例:屏蔽某个ip

# iptables -I INPUT  -s 10.0.0.7   -j DROP
# iptables -I INPUT  -s 172.16.1.7   -j DROP   
  1. 在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给 192.168.1.0网络中的主机访问要求从ftp服务的数据下载请求次数每分钟不得超过 5 个
iptables -A INPUT -s 172.16.0.0/16 -d 192.168.1.111 -p tcp --dport 21 -m time --timestart 8:30 --timestop 18:00 --weekdays 1,2,3,4,5 -m connlimit --connlimit-upto 5 -j ACCEPT

引用:iptables常用命令_iptables命令-CSDN博客

4. iptables执行过程

防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
  如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT),数据包就不再向下匹配新的规则。
  如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
  防火墙的默认规则是所有规则都匹配完才会匹配的。

在这里插入图片描述

DROP 是直接将流量丢弃而且不响应;
REJECT 则会在拒绝流量后再回复一条“信息已经收到,但是被扔掉了”信息,从而让流量发送方清晰地看到数据被拒绝的响应信息。

防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1707711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NIUSHOP 开源商城 V6 开源版(商城+分销+VIPCard+上门服务)前端技术探索与实践

摘要: 本文深入探讨了NIUSHOP V6开源商城前端技术的选型、实现与设计理念。NIUSHOP V6作为一款优秀的企业级商城系统,其前端采用了Vite、TypeScript、Vue3及ElementPlus等最新技术栈,为开发者提供了高效、灵活的开发体验。本文将从技术选型、…

某有赞滑块验证码

⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识,欢迎私信共享学习心得。 如有侵权,联系博主删除。 请勿商用,否则后果自负。 网址 aHR0cHM6Ly9wYXNzcG9ydC55b3V6YW4uY29tL2xvZ2luL3Bhc3N3b3Jk 1. 首先来分析一下参数 1_1. get-beh…

宝塔下应该用 Memcached 还是 Redis?

明月最近在跟几个使用宝塔面板的客户运维的时候发现不少站长不知道如何选择 Memcached 和 Redis,甚至都说不清楚 Memcached 或者 Redis 具体是用来干啥的?甚至还碰到过一个站长 Memcached 和 Redis 都安装了,但一个都没有用,就那么…

vscode远程登录阿里云服务器【使用密钥方式--后期无需再进行密码登录】【外包需要密码】

1:windows主机上生成【私钥】【公钥】 1.1生成公钥时不设置额外密码 1.2生成公钥时设置额外密码【给外包人员使用的方法】 2:在linux服务器中添加【公钥】 3:本地vscode连接linux服务器的配置 操作流程如下 1.1本地终端中【生成免密登录…

python练习题-反转一个只有三位数的整数

【问题描述】&#xff1a;反转一个只有三位数的整数 [示例]&#xff1a;123 321 完整代码如下&#xff1a; nint(input()) if n<100 or n>999: print("请输入三位数&#xff01;") else: gen%10 shin//10%10 bain//100 m100*ge10*shibai…

Pytorch入门需要达到的效果

会搭建深度学习环境和依赖包安装 使用Anaconda创建环境、在pytorch官网安装pytorch、安装依赖包 会使用常见操作&#xff0c;例如matmul&#xff0c;sigmoid&#xff0c;softmax&#xff0c;relu&#xff0c;linear matmul操作见文章torch.matmul()的用法 sigmoid&#xff0…

【算法】位运算算法——判断字符是否唯一

题解&#xff1a;判断字符是否唯一(位运算算法) 目录 1.题目2.题解3.位图参考代码4.细节5.总结 1.题目 题目链接&#xff1a;LINK 2.题解 题解有两种方法&#xff0c; 一是做一个哈希数组&#xff0c;去查重&#xff1b; 二是直接用一个变量每一位来对应表示是否有这个字母…

Linux主机连接腾讯云服务器详细配置

硬件条件 当然你要先有一个云服务器&#xff0c;腾讯云比阿里云便宜一点&#xff0c;所以就用腾讯云了 问了师兄买这个98的就行&#xff0c;选择CentOS&#xff0c;不要选Ubuntu&#xff0c;因为 嗯&#xff0c;大概就是这样 编程测试 云服务器当然是作为服务端 server.cpp…

LabVIEW高低温试验箱控制系统

要实现LabVIEW高低温试验箱控制系统&#xff0c;需要进行硬件配置、软件设计和系统集成&#xff0c;确保LabVIEW能够有效地监控和控制试验箱的温度。以下是详细说明&#xff1a; 硬件配置 选择合适的试验箱&#xff1a; 确定高低温试验箱的型号和品牌。 确认试验箱是否支持外…

SpringBoot 返回值 i18n 自动处理

定义基础通用类 首先定义一波错误码&#xff1a;ResultCode Getter AllArgsConstructor public enum ResultCode {SUCCESS(200, "请求成功", "request.success"),Fail(400, "请求失败", "request.failed"),PASSWORD_NOT_MATCH(1000…

保护“第二生命线”,科技守护颈椎健康

脊柱支撑着人体重量&#xff0c;汇集着众多血管神经&#xff0c;素有“人体第二生命线”之称。在如今快节奏的时代&#xff0c;人们生活方式也在发生着变化&#xff0c;长期低头看手机、伏案久坐等不良生活习惯引发脊柱健康问题&#xff0c;且呈现年轻化趋势。目前&#xff0c;…

2024.05.22学习记录

1、面经复习&#xff1a; Vue组件通讯、vuex、js严格模式、options请求、vue3 Setup 语法糖、React hook 2、代码随想录刷题&#xff1a;动态规划 3、rosebush组件库 完成Alert和Alert测试 Menu组件初步开发

基于单片机的自行车里程监测系统的设计

摘 要 &#xff1a;本设计是一种基于单片机的自行车里程监测系统&#xff0c;采用 STC89C52RC 单片机为核心处理芯片&#xff0c;液晶显示器使用 LCD1602 &#xff0c; 速度测量使用霍尔传感器&#xff0c;温度传感器使用 DS18B20 &#xff0c;时间由时钟芯片 DS1302 进行…

昆仑通态触摸屏组态软件MCGS 嵌入版V7.7.1.7老版触摸屏安装程序

1.MCGS7.7嵌入版用于昆仑通态老版本触摸屏组态开发&#xff0c;具体支持哪些型号组态&#xff0c;可以在软件的工程设置里面查看。新出的触摸屏一般用MCGS Pro版本组态开发&#xff0c;老版本触摸屏必须用MCGS 7.7嵌入版组态开发。 2.MCGS7.7嵌入版支持当下常用的Win7、Win10、…

Nodejs 第七十三章(网关层)

什么是网关层(getway)&#xff1f; 技术选型fastify 速度快适合网关层 fastify教程上一章有讲 网关层是位于客户端和后端服务之间的中间层&#xff0c;用于处理和转发请求。它充当了请求的入口点&#xff0c;并负责将请求路由到适当的后端服务&#xff0c;并将后端服务的响应…

怎样打造一份个性化画册呢?我来教你

在这个数字化的时代&#xff0c;传统的照片已经不能满足我们对个性化回忆的需求。个性化画册&#xff0c;不仅能够承载我们的记忆&#xff0c;还能展现自我风格。今天&#xff0c;就让我来教你如何打造一份属于自己的个性化画册。 1.要制作电子杂志,首先需要选择一款适合自己的…

Debian12 安装留档@Virtual Box

在学蜜罐系统的时候&#xff0c;T-Pot 需要Debian&#xff0c;于是安装Debian12 下载安装光盘 先去中科大下载了12的安装光盘&#xff0c;然后在VirtualBox中创建一个新虚拟机&#xff0c;将安装光盘挂载上。 安装光盘下载地址&#xff1a;https://mirrors.ustc.edu.cn/debi…

隐藏服务器源IP怎么操作,看这一篇学会!

在当今的网络环境中&#xff0c;服务器作为信息和服务的中枢&#xff0c;常驻于公网之上&#xff0c;面临着各式各样的安全威胁&#xff0c;其中&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击尤为猖獗&#xff0c;它通过协调大量计算机同时向目标服务器发送请求…

看花眼,眼花缭乱的主食冻干到底应该怎么选?靠谱的主食冻干分享

随着科学养猫知识的普及&#xff0c;主食冻干喂养越来越受到养猫人的青睐。主食冻干不仅符合猫咪的饮食天性&#xff0c;还能提供均衡的营养&#xff0c;有助于维护猫咪的口腔和消化系统健康。许多猫主人认识到了主食冻干喂养的诸多益处&#xff0c;计划尝试这种喂养方式&#…

缓存三问与缓存预热-如何预防缓存崩溃

一、缓存三剑客 &#xff08;图片来源&#xff1a;什么是缓存雪崩、击穿、穿透&#xff1f; | 小林coding&#xff09; 缓存穿透 (Cache Penetration) 又称"空缓存"指用户请求的数据在缓存和数据库中都不存在,导致每次请求都去查询数据库,给数据库带来巨大压力。解…