百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

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

sinye56 2024-12-19 16:18 9 浏览 0 评论

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

相关推荐

一个不错的软件版本命名规范!

之前写了一篇如何自动生成版本号的文章,《让你的C程序,自动打印版本信息》初衷是让自己的程序在运行时自动打印与版本相关的信息,避免测试时因为版本信息不确定导致的一些功能对应不上去的问题,当时留了一个坑,...

国产操作系统迎来发展风口 公务领域更能培育起Linux生态

谷歌和微软在俄罗斯市场的一番套路猛如虎,就让我们深刻地意识到了,只有自己的东西才能靠得住。也由此,国内操作系统发展迎来了发展风口。我就看到有朋友就秀出了他们单位采购的纯国产的主机,一款华为的主机,纯国...

5个大有“前途”的Linux桌面发行版本

ZD至顶网CIO与应用频道08月27日专栏:Linux无处不在。你的服务器里,你的电话、汽车、手表、烤面包机、冰箱……和台式机里都有Linux的身影。虽然在桌面上见到Linux的用户比在自动调温...

Linux 常用应用软件大全

编译自:https://www.fossmint.com/most-used-linux-applications/作者:MartinsD.Okoi译者:HankChow对于许多应用程序...

Linux 4.1 系列的最大版本 4.1.18 LTS发布,带来大量修改

(LCTT译注:这是一则过期的消息,但是为了披露更新内容,还是发布出来给大家参考)著名的内核维护者GregKroah-Hartman貌似正在度假中,因为SashaLevin2016年2月16日的...

Linux发行版需要杀软吗?卡巴斯基推出免费KVRT病毒扫描清理工具

IT之家6月4日消息,你认为使用Linux发行版,需要杀毒软件吗?或许很多用户认为Linux发行版偏小众,因此受到黑客攻击的风险也相对较小,不过卡巴斯基并不这么认为,近期推出了适用于...

适合开发人员的 5款 Linux 发行版

什么是Linux?Linux是基于Unix的操作系统。由LinusTorvalds开发于1991年首次发布其内核。因为Linux是开源软件,其发行版由不同组织发布,因此不同的发行版具有不同的风格...

VMware Workstation 17.0 Pro 发布:新增 TPM 2.0 完美兼容Win11

IT之家11月18日消息,VMwareWorkstation17.0Pro现已发布,它带来了许多新特性,例如微软Windows11硬性要求:虚拟可信平台模块(TPM)2.0。...

你是否需要一个容器专用的Linux发行版本?

单单使用容器是不够的,提供商们认为你需要一个容器专用的Linux发行版本。我们可以让容器在不同的操作系统上运行,不同的操作系统都有自己的虚拟化服务,如:SolarisZones、BSDJails、...

Tizen 3.0版本发布 采用Linux 4.1内核

2015-09-2111:31:39作者:马荣【中关村在线软件资讯】9月21日消息:尽管三星靠着Android系统设备在移动市场赚钱,但是仍然没有忘记自家的Tizen开发。现在Tizen3.0版...

欧拉操作系统演进:应用累计超130万套 支持鲲鹏、英特尔、飞腾等芯片

21世纪经济报道记者倪雨晴深圳报道4月15日,在欧拉开发者大会(openEulerDeveloperDay2022)的主论坛上,欧拉首个数字基础设施全场景长周期版openEuler22.03...

Papyros:以Material Design为灵感的Linux发行版本

项目团队并不希望只是采用传统的桌面主题,而是致敬谷歌Android系统的MaterialDesign设计语言想要打造出某些不同以往足够吸引用户的Linux发行版本,自然该版本还在不断的更新和改进中,...

比特网早报:全国空间计量技术委员会成立,银河麒麟操作系统上架微信Linux4.0.0版本

2024年11月6日消息,昨夜今晨,科技圈都发生了哪些大事?行业大咖抛出了哪些新的观点?比特网为您带来值得关注的科技资讯:全国空间计量技术委员会在北京成立近日,经市场监管总局批准,全国空间计量技术委员...

2024年最稳定的5个Linux发行版,赶紧收藏!

Linux是最流行的免费开源平台之一。Linux已被广泛使用,因为它安全、可扩展和灵活。Linux发行版收集开源代码,对其进行编译,并将其组合成一个可以轻松启动和安装的操作系统。它们还提供不同的...

彰显Linux生态繁华,Ubuntu、Fedora等四发行版同时发布新版本

上周对于开源社区来说是忙碌的一周。EndeavourOS和TrueNASScale于周二(4月16日)发布,Fedora于周三(4月17日)发布,Ubuntu于周四(4月18日)发布。四个新版本中都...

取消回复欢迎 发表评论: