Linux网络服务管理防火墙详解端口问题

news2024/12/27 13:06:34

每次配置访问服务器都会一团迷雾,今天来尝试弄清楚同时借鉴一下大佬的博文当做笔记

文章目录

  • 防火墙简介
  • 一、防火墙基础
  • 二、iptables
    • 防火墙策略
    • iptables 命令格式:
    • iptables案例
      • 1.查看开放的端口
      • 2.开放端口(此处以80端口为例)
      • 3.关闭端口(此处以80端口为例)
      • 3.查看端口状态
      • 4.将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口,拒绝来自其他所有主机的流量:
      • 5.向 INPUT 规则链中添加拒绝所有人访问本机 12345 端口的策略规则:
      • 6.向 INPUT 规则链中添加拒绝 192.168.10.5 主机访问本机 80 端口(Web 服务)的策略规则:
      • 7.向 INPUT 规则链中添加拒绝所有主机访问本机 1000~1024 端口的策略规则:
      • 8.查看已有的防火墙规则链:
      • 9.把 INPUT 规则链的默认策略设置为拒绝:
      • 10.向防火墙的INPUT 规则链中添加一条允许 ICMP 流量进入的策略规则默认允许了这种 ping 命令检测行为:
      • 11、删除 INPUT 规则链中刚刚加入的那条策略(允许 ICMP 流量),并把默认策略设置为允许:
      • 12.使用 iptables 命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令:
  • 三、firewalld
    • 区域管理
    • firewalld-cmd终端管理工具
    • firewalld案例
      • 1.查看 firewall 防火墙程序是否正在运行:
      • 2.查看已打开的所有端口:
      • 3.开启指定端口:(以80端口为例)
      • 4.关闭指定端口
  • 四、linux防火墙状态命令
    • iptables防火墙
    • firewall防火墙
  • 五、查看服务状态操作

防火墙简介

详细讲下linux防火墙,防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义防火墙到底如何去工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。

一、防火墙基础

Linux防火墙主要工作在网络层,属于典型的包过滤防火墙。

redhat 6 使用的是iptables
redhat 7 使用的是firewalld
iptables服务会把配置好的防火墙策略交由**内核层面的 netfilter **网络过滤器来处理

firewalld服务则是把配置好的防火墙策略交由**内核层面的 nftables **包过滤框架来处理

iptables和firewalld都是Linux配置内核防火墙的工具

二、iptables

iptables 是一款基于命令行的防火墙策略管理工具,具有大量参数,学习难度较大。好在对于日常的防火墙策略配置来讲,大家对“四表五链”的理论概念了解即可,只需要掌握常用的参数并做到灵活搭配即可,这就足以应对日常工作了。

iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。另外,再次提醒一下,防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误。
下表总结归纳了常用的iptables命令参数。再次强调,我们无需死记硬背这些参数,只需借助下面的实验来理解掌握即可。

Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,raw表,mangle表,nat表,filter表,每个表容器内包括不同的规则链,根据处理数据包的不同时机划分为五种链,而决定是否过滤或处理数据包的各种规则,按先后顺序存放在各规则链中。

规则表分为以下4种(了解)
filter表:用来对数据包进行过滤,表内包含三个链,即:INPUT,FORWARD,OUTPUT
Nat表:nat表主要用来修改数据包的ip地址、端口号等信息。包含三个链,即PREROUTING,POSTROUTING,OUTPUT
Mangle表:用来修改数据包的TOS、TTL,或者为数据包设置MARL标记,实现流量×××,策略路由等高级应用,包含五个链,PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD
Raw表:用来决定是否对数据包进行状态跟踪,包含两个链:即OUTPUT,PREROUTING

规则链分为以下5种(了解)
INPUT链:当收到访问防火墙本机地址的数据包(入站),应用此链中的规则。
OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。
FORWARD链:当收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则。
PREROUTING链:在对数据包做路由选择之前,应用此链中的规则。
POSTROUTING链:在对数据包做路由选择之后,应用此链中的规则。

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

防火墙策略

防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。
当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;
如果防火墙的默认策略为允许时(通),就要设置拒绝规则(堵),否则谁都能进来,防火墙也就失去了防范的作用

ACCEPT(允许流量通过)
REJECT(拒绝流量通过)
LOG(记录日志信息)
DROP(拒绝流量通过)

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

iptables 命令格式:

iptables [-t 表] -命令 匹配 操作

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

参数作用
-P设置默认策略
-F清空规则链
-L查看规则链
-A在规则链追加新规则
-I在规则链插入行规则
-R替换规则链中的相应规则
-D删除某一条规则
-Z清空规则链中的数据包计数器和字节计数器
-p<协议>匹配协议:如TCP、UDP、ICMP
-s<源地址>指定要匹配的数据包的源IP地址
-dport匹配目标端口号
-sport匹配来源端口号
-j指定要跳转的目标(一般写策略规则)

iptables案例

1.查看开放的端口

# cat /etc/sysconfig/iptables
# netstat -ntlp #列出所有端口

2.开放端口(此处以80端口为例)

方法一:

# iptables -I INPUT -p tcp --dport 80 -j ACCEPT #写入修改
# service iptables save #保存修改 
# service iptables restart 重启防火墙,修改生效

方法二:

# vi /etc/sysconfig/iptables #打开配置文件加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT  
10#然后重启防火墙,修改完成

3.关闭端口(此处以80端口为例)

方法一:

# iptables -I INPUT -p tcp --dport 80 -j DROP #写入修改
# service iptables save #保存修改
# service iptables restart #重启防火墙,修改生效 

方法二:

# vi /etc/sysconfig/iptables #打开配置文件加入如下语句: 
8-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP   
9#然后重启防火墙,修改完成

3.查看端口状态

# /etc/init.d/iptables status

4.将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口,拒绝来自其他所有主机的流量:

# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT 
# iptables -A INPUT -p tcp --dport 22 -j REJECT

5.向 INPUT 规则链中添加拒绝所有人访问本机 12345 端口的策略规则:

# iptables -I INPUT -p tcp --dport 12345 -j REJECT 
# iptables -I INPUT -p udp --dport 12345 -j REJECT

6.向 INPUT 规则链中添加拒绝 192.168.10.5 主机访问本机 80 端口(Web 服务)的策略规则:

# iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT

7.向 INPUT 规则链中添加拒绝所有主机访问本机 1000~1024 端口的策略规则:

# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT 
# iptables -A INPUT -p udp --dport 1000:1024 -j REJECT

8.查看已有的防火墙规则链:

# iptables -L

9.把 INPUT 规则链的默认策略设置为拒绝:

# iptables -P INPUT DROP

10.向防火墙的INPUT 规则链中添加一条允许 ICMP 流量进入的策略规则默认允许了这种 ping 命令检测行为:

# iptables -I INPUT -p icmp -j ACCEPT

11、删除 INPUT 规则链中刚刚加入的那条策略(允许 ICMP 流量),并把默认策略设置为允许:

# iptables -D INPUT 1 
# iptables -P INPUT ACCEPT

12.使用 iptables 命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令:

# service iptables save

三、firewalld

相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了**区域(zone)**的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

firewalld跟iptables比起来至少有两大好处:

  1. firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
  2. firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

注:firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

区域管理

一个重要的概念:区域管理
firewalld将网卡对应到不同的区域(zone),zone 默认共有9个: block,dmz,drop,external,home,internal,public, trusted,work
都保存在“/usr/lib/firewalld/zones/”目录下。
在这里插入图片描述
firewalld 中常用的区域名称及默认规则:

区域默认规则
阻塞区域(block)任何传入的网络数据包都将被阻止。
工作区域(work)相信网络上的其他计算机,不会损害你的计算机。
家庭区域(home)相信网络上的其他计算机,不会损害你的计算机。
公共区域(public)不相信网络上的任何计算机,只有选择接受传入的网络连接。
隔离区域(DMZ)隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
信任区域(trusted)所有的网络连接都可以接受。
丢弃区域(drop)任何传入的网络连接都被拒绝。
内部区域(internal)信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
外部区域(external)不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

firewalld-cmd终端管理工具

终端管理工具 firewalld-cmd
firewall 可以看成整个防火墙服务,而 firewall-cmd 可以看成是其中的一个功能,可用来管理端口

firewalld-cmd 命令中使用的参数以及作用

参数作用
–get-default-zone查询默认的区域名称
–set-default-zone=<区域名称>设置默认的区域,使其永久生效
–get-zones显示可用的区域
–get-services显示预先定义的服务
–get-active-zones显示当前正在使用的区域与网卡名称
–add-source=将源自此 IP 或子网的流量导向指定的区域
–remove-source=不再将源自此 IP 或子网的流量导向某个指定区域
–add-interface=<网卡名称>将源自该网卡的所有流量都导向某个指定区域
–change-interface=<网卡名称>将某个网卡与区域进行关联
–list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息
–list-all-zones显示所有区域的网卡配置参数、资源、端口以及服务等信息
–add-service=<服务名>设置默认区域允许该服务的流量
–add-port=<端口号/协议>设置默认区域允许该端口的流量
–remove-service=<服务名>设置默认区域不再允许该服务的流量
–remove-port=<端口号/协议>设置默认区域不再允许该端口的流量
–reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
–panic-on开启应急状况模式
–panic-of关闭应急状况模式

firewalld案例

1.查看 firewall 防火墙程序是否正在运行:

# firewall-cmd --state

2.查看已打开的所有端口:

# firewall-cmd --zone=public --list-ports

3.开启指定端口:(以80端口为例)

# firewall-cmd --zone=public --add-port=80/tcp --permanent

(–permanent 永久生效,没有此参数重启后失效)
重新加载 firewall,

firewall-cmd --reload 

修改配置后,必须重新加载才能生效

4.关闭指定端口

以8080为例

# firewall-cmd --zone=public --remove-port=8080/tcp --permanent

(–permanent 表示永久生效,没有此参数重启后失效)
重新加载 firewall,修改配置后,必须重新加载才能生效:

firewall-cmd --reload 

firewall-cmd对端口的操作,如开放端口等信息,都放在"/etc/firewall/zones/public.xml"中记录,所以直接修改此文件也是可以的

四、linux防火墙状态命令

iptables防火墙

目的命令
查看防火墙状态service iptables status
停止防火墙service iptables stop
启动防火墙service iptables start
重启防火墙service iptables restart
永久关闭防火墙(禁止防火墙自启)chkconfig iptables off
永久关闭后重启chkconfig iptables on

开启80端口 vim /etc/sysconfig/iptables 加入如下代码 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
保存退出后重启防火墙 service iptables restart

firewall防火墙

目的命令
查看firewall服务状态systemctl status firewalld
查看firewall的状态firewall-cmd --state
开启防火墙,启动 firewall 服务systemctl start firewalld
重启防火墙,重启 firewall 服务systemctl restart firewalld
临时关闭防火墙,停止 firewall 服务systemctl stop firewalld
永久关闭防火墙systemctl disable firewalld
开机自动启动服务systemctl enable firewalld.service
查看防火墙规则firewall-cmd --list-all
查询端口是否开放firewall-cmd --query-port=8080/tcp
开放80端口firewall-cmd --permanent --add-port=80/tcp
移除8080端口firewall-cmd --permanent --remove-port=8080/tcp
重启防火墙(修改配置后要重启防火墙)firewall-cmd --reload

参数解释 1、firwall-cmd:是Linux提供的操作firewall的一个工具; 2、–permanent:表示设置为持久; 3、–add-port:标识添加的端口;

五、查看服务状态操作

service network status  //查看指定服务状态
service network stop  //停止指定服务
service network start  //启动指定服务
service network restart  //重启指定服务
 
service --status-all  //查看系统中所有后台服务
netstat -nltp  //查看系统中网络进程的端口监听情况

本文借鉴于(侵删):Linux防火墙是什么?有什么用?

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

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

相关文章

超级详细的PMP复习方法,3A拿下考试不发愁!

如果问我是怎么一次性通过考试的&#xff0c;那绝对不只是运气&#xff0c;没有一点基本的实力怎么有底气通过考试呢&#xff0c;所以今天我们不讲什么刷题技巧&#xff0c;基础不牢靠将技巧都是没用的&#xff0c;今天我们先讲讲要怎么巩固基础&#xff0c;给到朋友们分享一些…

kaggle平台学习复习笔记 | 特征工程

目录数值字段roundBox/Bins类别字段onehotLabelEncoderOrdinal EncodingBinaryEncoderFrequency/Count EncodingMean/Target Encoding日期字段特征筛选feature_importances_利用方差利用相关性利用线性模型迭代消除排列重要性(Permutation Importance)特征工程决定了模型精度的…

MATLAB-RBF神经网络例1

采用所描述的系统中﹐假设真实质量为m2,在仿真中,初始值为,采用的自适应律为&#xff1a;设定参数为y0.5,10,25,6&#xff0c;分别设定参考位置为r(t)0,r(t )sin(4t) ,初始条件为&#xff0c;。图1.1和图1.2为指令r(t)0时控制效果,图1.3和图1.4为指令r(t)sin(4t )时的控制效果。…

verilog学习笔记- 12)触摸按键控制LED灯实验

目录 简介&#xff1a; 实验任务: 硬件设计: 程序设计: 下载验证&#xff1a; 简介&#xff1a; 触摸按键主要可分为四大类&#xff1a;电阻式、电容式、红外感应式以及表面声波式。根据其属性的不同&#xff0c;每种触摸按键都有其合适的使用领域。 电阻式触摸按键&#…

响应式与观察者模式

什么是响应式&#xff1f;响应式 是Vue 最独特的特性之一&#xff0c;是非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时&#xff0c;视图会进行更新。我们也叫他双向绑定。如果想要更改视图&#xff0c;只要直接更改对应属性的值即可&#xff…

从隔壁老王开始的信号处理入门

诸神缄默不语-个人CSDN博文目录 我是从GNN被扔到NLP然后又做起了GNN现在又被喊去搞时间序列分类&#xff0c;所以现在才开始看信号处理&#xff08;因为我开始做GNN以来&#xff0c;GNN就以图域而非谱域为主了&#xff0c;所以那时我没怎么看过信号处理&#xff09;。 所以写个…

RabbitMQ消息队列(三):任务分发机制

在上篇文章中&#xff0c;我们解决了从发送端&#xff08;Producer&#xff09;向接收端&#xff08;Consumer&#xff09;发送“Hello World”的问题。在实际的应用场景中&#xff0c;这是远远不够的。从本篇文章开始&#xff0c;我们将结合更加实际的应用场景来讲解更多的高级…

jetson nano上编译与使用西门子PLC通讯库snap7

文章目录一.西门子snap7介绍二.西门子S7通讯介绍三.jetson nano编译snap7库四.Qt Cmake导入snap7库五.snap7主要函数说明1.与PLC建立连接2.读写PA区变量3.读写MK区变量六.通讯程序示例一.西门子snap7介绍 Snap7 是一个基于以太网与S7系列的西门子PLC通讯的开源库。支持包括S7系…

2023美赛数学建模ABCDEF题思路模型代码

占个位置吧&#xff0c;开始在本帖实时更新赛题思路代码&#xff0c;文章末尾获取&#xff01; 持续为更新参考思路 赛题思路 会持续进行思路模型分析&#xff0c;下自行获取。 A题思路&#xff1a; &#xff08;比赛开始后第一时间更新&#xff09; B题思路&#xff1a;…

《算法分析与设计》复习笔记

目录 一、算法的基本概念 1.1 算法的定义 1.2 算法的“好坏”如何衡量&#xff1f; 1.3 描述算法的时间复杂度 ⭐ 1.4 如何评价算法 二、 分治法 2.1 分治法的求解步骤 2.2 平衡的概念 2.3 递归式解法 2.3.1 主定理法 ⭐ 2.4 分治法的使用条件 2.5 分治法实例 2.5…

助力安全作业生产,基于轻量级YOLOv6s开发实践反光衣检测识别分析系统

在很多实际作业生产场景中&#xff0c;出于对安全的考虑&#xff0c;施工作业等操作都是要求穿戴反光衣的&#xff0c;这个主要是为了保护人身安全&#xff0c;但是很多时候工程作业场景下因为实际种种的原因工人实际作业操作的时候很多人并没有按照要求穿戴反光衣这就给安全生…

OPTEE安全存储

本文主要介绍OPTEE的安全存储技术&#xff0c;翻译自官方文档&#xff1a;Secure storage — OP-TEE documentation documentation (optee.readthedocs.io) 一、背景 OP-TEE中的安全存储是根据GlobalPlatform的TEE Internal Core API&#xff08;这里称为可信存储&#xff09;…

2023/1/13总结

今天学习了链式向前星和唯一分解定理&#xff08;数论&#xff09;。 链式向前星 链式向前星是一种存储图的方法&#xff0c;在此之前我们学到过存储图的方式&#xff1a;邻接表以及邻接矩阵&#xff0c;邻接矩阵浪费了很大的空间&#xff0c;而邻接表 写起来的代码有一点点…

微信小程序wxml的数据和事件的绑定,以及条件和列表的渲染

文章目录1.数据绑定的基本原则在data中定义页面的数据2.事件绑定bingtap的语法格式:在事件处理函数中为data中的数据赋值事件传参bindinput的语法格式实现文本框和data之间的数据同步1.定义数据2.渲染结构3.美化样式4.绑定input事件处理函数3.条件渲染hiddenwx:if与hidden的对比…

数据库 表设计 MySQL

表设计 约束 为了保证入库数据的合理性&#xff0c;添加的各种规则。 约束的分类 准备测试用的表格&#xff1a; CREATE TABLE emp ( id INT, -- 员工id&#xff0c;主键且自增长 ename VARCHAR(50), -- 员工姓名&#xff0c;非空且唯一 joindate DATE, -- 入职日期&…

【uniapp】渲染列表数据删除项导致每项数据重置的问题解决方案

开发uniapp项目&#xff0c;使用的是JavaScript Vue写法&#xff0c;操作wList数组列表更新的时候&#xff0c;如果每一项都带input 或 radio组件&#xff0c;要操作移除的话&#xff0c;那么组件的输入数据会被清除重置&#xff0c;若不希望这样&#xff0c;那应该怎么做才好呢…

设计模式相关内容介绍—软件设计原则(六个)

在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;程员要尽量根据6条原则来开发程序&#xff0c;从而提高软件开发效率、节约软件开发成本和维护成本。 目录 1.开闭原则 2.里氏代替原则 3.依赖倒转原则 4.接…

dvwa中的文件包含攻击

环境&#xff1a;dvwa: 192.168.11.135 dvwa版本&#xff1a; Version 1.9 (Release date: 2015-09-19)kail机器&#xff1a;192.168.11.156一、什么是文件包含漏洞?为简化代码&#xff0c;会把重复的code内容单独写到一个页面文件&#xff0c;然后再需要调用重复内容的页面中…

C语言:初识C语言

目录前言1. 什么是c语言呢2. 第一个c语言程序2. 数据类型3. 变量和常量3.1 变量3.1.1 变量的定义3.1.2 变量的分类3.1.3 变量的使用3.1.4 变量的作用域和生命周期3.2 常量4. 字符串、转义字符、注释4.1 字符串4.2 转义字符4.3 注释5. 选择语句6. 循环语句7. 函数8. 数组9. 操作…

学习笔记——keep-alive缓存组件,再次返回组件data数据重置

前言&#xff1a;使用keep-alive缓存组件&#xff0c;当再次返回该组件后&#xff0c;希望其组件中的数据或状态&#xff0c;保持上次离开该组件时的情况。 一、当前组件树 希望缓存HomeMain组件的状态。 二、错误处理 我在HomeMain的祖先组件HomeLayout中&#xff0c;写了如下…