随笔 - 8  文章 - 0  评论 - 0  阅读 - 1199

Linux防火墙

Netfilter是Linux内核中构建防火墙的网络子系统。firewalld是iptables的一个封装,更容易地管理iptables,firewalld和iptables一样,它们的作用都用于维护规则,而真正使用规则干活的是内核的netfilter。
firewalld:
firewalld是较新的防火墙管理工具,主要在基于RHEL/CentOS 7及更高版本的系统中使用,并逐渐取代了iptables成为默认的防火墙配置工具。
firewalld采用了动态的、面向服务的管理方式,相较于iptables更加灵活和易于管理。
firewalld提供了一个抽象层,通过定义服务(services)、区域(zones)和规则(rules)等概念来组织和管理防火墙配置。
firewalld支持实时动态更新防火墙规则,可以在运行时添加、删除或修改规则,而无需重启或重新加载配置。

iptables:
iptables是Linux系统中最经典和传统的防火墙工具,早期版本的Linux默认使用iptables作为防火墙配置工具。
iptables基于内核空间的netfilter框架,通过直接操作内核中的iptables规则表来过滤和处理网络数据包。
iptables使用规则链(rule chains)和表(tables)的概念来组织和管理防火墙规则,例如常见的filter表、nat表和mangle表等。
配置iptables需要手动编写规则,并且规则是静态的,一旦配置完成后,除非重新加载或重启,否则规则不会自动更新。

firewalld命令:
查看规则

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

查看防火墙状态

firewall-cmd --state
systemctl status firewalld 

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

重启防火墙

firewall-cmd --reload
systemctl restart firewalld

添加服务

firewall-cmd --permanent --zone=public --add-service=http --permanent

开放端口

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

删除端口

firewall-cmd --permanent --zone=public --remove-port=80/tcp --permanent

删除某个IP

firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept"

针对某个IP开放端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.10" port protocol="tcp" port="6379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.10" accept"

针对一个ip段访问

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"

iptables 命令:

iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

说明:表名、链名用于指定 iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样 条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Jump)给其它链处理。
iptables防火墙常用的策略
1.拒绝进入防火墙的所有ICMP协议数据包

iptables -I INPUT -p icmp -j REJECT

2.允许防火墙转发除ICMP协议以外的所有数据包

iptables -A FORWARD -p ! icmp -j ACCEPT
使用“!”可以将条件取反。

3.拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据

iptables -A FORWARD -s 192.168.1.11 -j REJECT 
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

4.丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包

iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP 
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP 
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

5.封堵网段(192.168.1.0/24),两小时后解封。

# iptables -I INPUT -s 10.20.30.0/24 -j DROP 
# iptables -I FORWARD -s 10.20.30.0/24 -j DROP 
# at now 2 hours at> iptables -D INPUT 1 at> iptables -D FORWARD 1

6.只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。

iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -j DROP

7.允许本机开放从TCP端口20-1024提供的应用服务。

iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

8.允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。

iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT 
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

9.禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机

iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP 
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT 
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT

10.禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包

iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP
iptables中使用“-m 模块关键字”的形式调用显示匹配。咱们这里用“-m mac –mac-source”来表示数据包的源MAC地址。

11.允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280

iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
这里用“-m multiport –dport”来指定目的端口及范围

12.禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包。

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
此处用“-m –iprange –src-range”指定IP范围。

13.禁止转发与正常TCP连接无关的非—syn请求数据包。

iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
“-m state”表示数据包的连接状态,“NEW”表示与任何连接无关的,新的嘛!

14.拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包

iptables -A INPUT -p tcp -m state --state NEW -j DROP 
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
posted on   island-lark  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示