百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux,操作系统,防火墙,Netfilter,命令及操作

gudong366 2025-06-07 15:42 9 浏览

Netfilter模块

Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能。

Netfilter的架构就是在整个网络流程的若干位置放置了一些检测点(HOOK),而在每个检测点上登记了一些处理函数进行处理。

查看内核启动的参数(查看Netfilter是否启动):cat
/boot/config-3.10.0-957.e17.x86_64

Netfilter(IP层,网络层)的五个HOOK点的位置

1、NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验和等检测), 目的地址转换在此点进行;

2、NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;

3、NF_IP_FORWARD:要转发的包通过此检测点,FORWARD包过滤在此点进行;

4、NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的源地址转换功能(包括地址伪装)在此点进行;

5、NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。

CentOS6&CentOS7

CentOS6的防火墙-->iptables

---->4表13链,链表之间的关系。

---->iptables-save

CentOS7的防火墙-->firewall-cmd

---->firewall-cmd命令

包状态:数据能否穿透防火墙取决于包的状态。

---->数据包发不出

---->数据包回不来

---->通过内核管理的8个选项:包状态、包类型、源和目的端口、源和目的IP、源和目的mac。

---->管理7层防火墙,7层防火墙是在应用层工作的防火墙,它实时监控保护系统各个方面的行为。保护系统的安全运行,有效地保证系统的正常运行,网络系统安全中有良好的表现。

查看命令的软件包:yum provides iptables

读取配置文件:
/etc/sysconfig/iptables-config

firewall服务和firewall命令以及firewall区域

firewall-cmd:

---->firewall,根据区域来判断规则。

---->firewall-cmd --

---->firewall-cmd --get-zones

区域(9个):block(阻塞)、dmz(非军事交战区或隔离区)、drop(丢弃)、external、home、internal、public、trusted、work

drop,接收的任何网络数据包都会被丢弃,没有任何回复,仅能有发送出去的网络连接。

block,接收的任何网络数据包都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。

public,在公共区域内使用,不能相信网络内的其他计算机不会对你的计算机造成危害,只能接收经过选取的连接。

external,特别是为路由器启用了伪装功能的外部网,你不能信任来自网络的其他计算机,不能相信他们不会对你的计算机造成危害,只能接收经过选取的连接。

dmz,用于你的非军事区内的电脑,此区域内可公开访问,可以有限地进入你的内部网络,仅仅接收经过选取的连接。

work,用于工作区,你可以基本相信网络内的其他计算机不会危害你的电脑,仅接收经过选取的连接。

home,用于家庭网络,你可以基本相信网络内的其他计算机不会危害你的电脑,仅接收经过选取的连接。

internal,用于内部网络,你可以基本相信网络内的其他计算机不会危害你的电脑,仅接收经过选取的连接。

trusted,可以接收所有的网络连接。

动态管理防火墙:支持zones管理的防火墙,firewall按传入流量划分区域。

逻辑说明:1、如果传入的数据的Saddr,和区域的某个S规则匹配,就把这个包通过这路由;2、接口相同;3、默认区域。

具体操作:

查看所有区域:firewall-cmd --list-all
查看某个区域:firewall-cmd --zone=public--list-all
查看默认区域:firewall-cmd --get-default-zone
查看所有区域(激活的、可用的):firewall-cmd --get-zones
查看正在所用的区域(启用的):firewall-cmd --get-active-zones
查看防火墙的状态:firewall-cmd --state
查看防火墙支持的所有协议:firewall-cmd --get-services
查看协议icmp所支持的类型:firewall-cmd --get-icmptypes
查看网卡在哪个区域:firewall-cmd --get-zone-of-interface=ens33
查询当前区域内支持的服务:firewall-cmd --list-services
查询当前区域内支持的端口:firewall-cmd --list-ports
更改当前区域:firewall-cmd --set-default-zone=internal
某个网卡绑定到区域内:firewall-cmd --zone=work --add-interface=eth1
某个网卡更改绑定到区域:firewall-cmd --zone=work --change-interface=eth1
某个网卡更改移除到区域:firewall-cmd --zone=work --remove-interface=eth1
某个网卡查看绑定某个区域:firewall-cmd --zone=work --query-interface=eth1
区域内允许使用http协议:firewall-cmd --zone=work --add-service=http
区域内移除使用http协议:firewall-cmd --zone=work --remove-service=http
区域内查询使用http协议:firewall-cmd --zone=work --query-service=http
区域内允许使用80端口:firewall-cmd --zone=work --add-port=80/tcp
区域内允许使用20到30端口:firewall-cmd --zone=work --add-port=20-30/tcp
区域内拒绝使用20到30端口(本身不允许):firewall-cmd --zone=work --remove-port=20-30/tcp
上网伪装:
允许work区域访问外网:firewall-cmd --zone=work --add-masquerade
拒绝work区域访问外网:firewall-cmd --zone=work --remove-masquerade
查询work区域访问外网:firewall-cmd --zone=work --query-masquerade
禁止阻塞应答包:firewall-cmd --zone=work --add-icmp-block=ech0-reply
查询阻塞应答包:firewall-cmd --zone=work --query-icmp-block=ech0-reply
移除阻塞应答包:firewall-cmd --zone=work --remove-icmp-block=ech0-reply
禁止阻塞请求包:firewall-cmd --zone=work --add-icmp-block=ech0-request
查询阻塞请求包:firewall-cmd --zone=work --query-icmp-block=ech0-request
移除阻塞请求包:firewall-cmd --zone=work --remove-icmp-block=ech0-request
数据包的转发:
firewall-cmd --zone=work --add-forward-port=<port>[-port]:proto=<protocol>{:toport=port<port>|:toaddr=<address>}
firewall-cmd --reload
端口转发(80端口转到192.168.1.2的8080端口):firewall-cmd --zone=work --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.2
移除端口转发:firewall-cmd --zone=work --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.2
富策略:策略中的特例
firewall-cmd --zone=public --list-rich-rules
inverse---->取反
语法:
rule family=<ipv4/ipv6> source adddress=<ip/mask> invet=true destination address=<ip/mask> invet=true server name=<服务名> port=<服务端口> protocol=<tcp/udp>  <drop/reject/accept/log/adit>
举例:
从1.1.1.1过来的地址,访问8888端口,转到80端口:
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=1.1.1.1/8 forward-port port=8888 protocol=tcp to-port=80'
阻止可疑的IP地址访问:
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 drop'
限制某个协议每分钟允许访问3次(限流的作用):
firewall-cmd --permanent --add-rich-rule='rule service name=ssh accept limit value=3/m'
伪装IP,允许192.168.0.0/24访问:
firewall-cmd --permanent -zone=dmz ---add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade' 
开放服务器的端口:
firewall-cmd --permanent --zone=public --add-port=22/tcp 
firewall-cmd --permanent --zone=public --add-port=100-500/tcp
firewall-cmd --reload

允许某个IP/IP地址段访问某个端口:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept"
firewall-cmd --reload

限制某个IP访问某个端口:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" reject"
firewall-cmd --reload
防火墙的规则文件:
vi /etc/firewalld/zones/public.xml

相关推荐

由浅入深学shell,70页shell脚本编程入门,满满干货建议收藏

不会Linux的程序员不是好程序员,不会shell编程就不能说自己会Linux。shell作为Unix第一个脚本语言,结合了延展性和高效的优点,保持独有的编程特色,并不断地优化,使得它能与其他脚本语言...

小白7天掌握Shell编程:脚本的创建和执行

一、课前声明1、本分享仅做学习交流,请自觉遵守法律法规!2、搜索:Kali与编程,学习更多网络攻防干货!二、知识点详解Shell脚本的格式要求:脚本要以!#/bin/bash开头,其中bash可以替换...

飞牛fnNAS搭建Web版Linux系统(飞牛网改版升级说明)

飞牛NAS本身就是Linux内核(Debian发行版),那为何还要安装一个Linux呢?因为飞牛的Linux是特殊版本,并不能运行PC端的带UI的程序,比如我需要登录微信,需要使用wps打字……,这是...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

Apple尝试使用轻量级Linux虚拟机实现容器化

Apple于本周一发布了一个开源的容器化框架,用于在Mac上创建和运行Linux容器镜像。软件容器将应用程序及其依赖项组合成一个单元,在主机上运行于隔离环境中。由于它们基于符合OCI标准...

Docker 安全与权限控制:别让你的容器变成“漏洞盒子”

在享受容器带来的轻量与灵活的同时,我们也必须面对一个现实问题:安全隐患。容器并不是天然安全,错误配置甚至可能让攻击者“越狱”入侵主机!本篇将带你从多个层面强化Docker的安全防护,构建真正可放心...

网络安全必备!Linux firewalld 防火墙原理 + 配置实战(放行http)

5.1了解firewall防火墙基础概念与原理5.1.1Linux防火墙概述在网络安全领域,防火墙是保障网络安全的关键屏障,Linux系统中的firewall防火墙(firewalld服...

从零开始搭建 Linux PXE 无盘启动服务器

在企业环境或实验室中,PXE(PrebootExecutionEnvironment,无盘启动)被广泛用于大规模批量部署操作系统。通过PXE,无需U盘或CD,就能远程启动和安装Linux...

[250417] Fedora 42 正式发布,搭载 Linux 6.14 内核和 GNOME 48 桌面环境

Fedora42正式发布FedoraLinux42现已正式发布!此版本基于最新的Linux内核6.14构建,带来了众多激动人心的新特性和改进,旨在提供更现代化、更强大、更易用的Li...

Linux Kernel学习003——内核源码

Linux学习笔记:老版本内核的坑,新工具救场,代码门道藏着啥秘密.最近想学Linux内核,网上查资料发现现在的稳定版本都已经到5.x了,但我跟着教程选的是2.6.34。官网下载链接卡着老卡,后来用清...

Linux:实现Hadoop集群Master无密码登录

以下所介绍的安装方式都是在线安装方式,如果你需要连网请参考:Linux:宿主机通过桥接方式连接的VMware内部Linux14.04虚拟机(静态IP)实现上网方案环境:OS:LinuxUbuntu1...

除了Win10,微软还发布了一套“专业版Linux”系统

IT之家讯9月21消息,不知道大家是否还记得,微软CEO纳德拉曾在去年的一次活动中公开宣称“微软爱Linux”,其实那个时候的微软就已经在服务器方面拥抱Linux了。而最近,除了最新Windows1...

Linux系统匿名上网小技巧(linux匿名文件)

Tails可以做什么+优点Tails所有数据连接通过Tor网络传输,可以为个人用户提供最好的匿名性和安全性,并且它是一个Linux系统,不会感染Windows系统的病毒,它可以存储在闪存盘上运行。-...

Linux环境中DeepSeek AI大模型使用与管理之七:安装Cherry Studio

简介:在Linux系统中成功通过Ollama部署DeepSeek-R1大模型后,用户通常需要一个直观且易于操作的客户端来访问和交互。为了满足这一需求,本文将详细介绍如何在Linux环境中安装和配置Ch...

Linux系统部署Go编程环境(一)使用Go语言编写简单web服务器

摘要:Go语言是一个开源的编程语言,Go语言被称为“互联网时代的C语言”。Go语言的风格类似于C语言。其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括号,循环也只有for一种表示...