Linux常用的防火墙工具

Linux防火墙规则是用于控制进出Linux系统的网络流量的一系列指令。防火墙规则可以基于源IP地址、目的IP地址、端口号、协议类型等条件来允许或拒绝网络连接。在Linux中,最常用的防火墙工具是iptables和firewalld。

iptables

iptables是Linux上最传统的防火墙工具,工作在内核层面,提供了强大的包过滤功能。

iptables基于Netfilter框架,允许管理员定义规则来控制进出系统的网络流量。iptables的核心是一系列的表(tables)、链(chains)和规则(rules)。

表格(Tables)

iptables有四种内建表:

1. Filter表:默认表,用于决定数据包的接受、拒绝或转发。
2. NAT表:用于网络地址转换,可以实现如端口转发、伪装等。
3. Mangle表:用于修改经过的数据包,如设置服务质量(QoS)标志位。
4. Raw表:用于设置对数据包的初始处理,如设置IP头部的TTL值。

链(Chains)

每个表包含若干预定义的链:

- INPUT链:处理进入本机的数据包。
- OUTPUT链:处理从本机发出的数据包。
- FORWARD链:处理通过本机路由转发的数据包。
- PREROUTING链:处理进入本机但还未路由的数据包。
- POSTROUTING链:处理即将离开本机的数据包。
- 其他链:如在Mangle表中的`--mangle`链。

规则(Rules)

规则是应用在链上的一系列条件和动作,它决定了如何处理匹配特定条件的数据包。

常用命令

以下是iptables的一些基本命令和选项:

- `-A`:追加规则到链的末尾。
- `-I`:插入规则到链的指定位置。
- `-D`:删除链中的指定规则。
- `-R`:替换链中的指定规则。
- `-L`:列出链中的规则。
- `-F`:清空链中的所有规则。
- `-Z`:清空链中规则的统计信息。
- `-P`:设置链的默认策略。
- `-N`:创建新的用户定义链。
- `-X`:删除用户定义链。
- `-E`:修改用户定义链的名称。

匹配参数

- `-p`:指定协议(如tcp、udp、icmp)。
- `--dport`:指定目的端口。
- `--sport`:指定源端口。
- `-s`:指定源IP地址。
- `-d`:指定目的IP地址。
- `-i`:指定输入接口。
- `-o`:指定输出接口。
- `--tcp-flags`:指定TCP标志位。
- `--icmp-type`:指定ICMP类型。

目标动作

- `ACCEPT`:接受数据包。
- `DROP`:丢弃数据包。
- `REJECT`:拒绝数据包,并发送错误信息。
- `QUEUE`:将数据包排队到用户空间。
- `RETURN`:返回到调用链。

 

示例配置

1. 查看当前防火墙规则:

iptables -L -n


2. 清空当前的防火墙规则:

iptables -F


3. 允许特定端口的入站连接(例如TCP协议的80端口): 

iptables -A INPUT -p tcp --dport 80 -j ACCEPT


4. 允许特定IP地址范围的入站连接(例如192.168.0.0/24子网):

iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT


5. 阻止所有入站连接:

iptables -P INPUT DROP


6. 保存配置:

service iptables save

 7.重启iptables服务

service iptables restart

 注意事项

- 在修改iptables规则之前,建议备份当前的规则。
- 错误的iptables配置可能导致网络连接中断,因此在应用新规则前应该确保理解其影响。
- 在生产环境中,建议在非生产系统上测试新的iptables规则。

这些是iptables的基本介绍和命令配置。根据具体需求,可以创建更复杂的规则来满足网络安全策略。

如何备份这些规则

备份iptables当前规则的常用方法是将规则列表导出到一个文件中。这可以通过使用`iptables-save`命令来完成。以下是备份iptables规则的步骤:

1. 导出规则到文件:

iptables-save > /path/to/iptables_backup.conf

 这里`/path/to/iptables_backup.conf`是你希望保存备份文件的路径和文件名。你需要替换它为实际的路径,例如`/etc/iptables/iptables_backup.conf`。

2. 验证备份:

使用`cat`命令查看备份文件的内容,确保规则已正确保存:

cat /path/to/iptables_backup.conf

3. 保存备份到安全位置:

 为了安全起见,应该将备份文件保存在安全的位置,例如,可以将其复制到一个外部存储设备或上传到云存储服务。

4. 定期备份:

如果iptables规则经常更改,建议定期进行备份,以确保在需要时能够恢复到最新状态。

5. 自动化备份:

可以通过编写脚本或使用系统任务计划工具(如cron)来自动化iptables规则的备份过程。

请注意,`iptables-save`命令默认导出所有表的规则。如果你只想备份特定的表,可以使用`-t`选项指定表名,例如:

iptables-save -t filter > /path/to/filter_backup.conf

这将只导出`filter`表的规则到指定的文件中。

在恢复规则时,可以使用`iptables-restore`命令从备份文件中读取并应用规则:

iptables-restore < /path/to/iptables_backup.conf

确保在恢复规则之前,你已经理解了备份文件中的内容,并且知道这些规则将如何影响你的系统。如果可能,最好在一个测试环境中先进行恢复尝试。

firewalld

Firewalld是一个动态管理防火墙的守护进程,它提供了一个易于使用的界面来管理防火墙规则,而不需要重启服务。它是基于iptables的,但提供了更高级的抽象和更易于管理的区域(zones)和服务(services)概念。Firewalld自CentOS 7起成为默认的防火墙管理工具,并在Fedora及其衍生版中广泛使用。

Firewalld的核心概念

1.区域(Zones):区域是预定义的安全级别,用于根据来源或目的地将网络流量分类。例如,公共区域(public)通常用于不受信任的网络,而家庭区域(home)用于家庭网络。

2. 服务(Services):服务是预定义的端口和协议集合,代表特定的网络服务,如ssh、http、https等。

3. 接口(Interfaces):接口可以是网络设备或网络区域,它们可以被分配到特定的区域。

4. 直接规则(Direct Rules):直接规则允许你添加自定义的iptables规则,这些规则不是基于服务或端口,而是直接操作iptables规则。

`firewall-cmd` 选项参数及其描述:

1. `--state`:显示 firewalld 服务的状态(running 或 not running)。

firewall-cmd --state

2. `--reload`:不中断服务的情况下重新加载防火墙规则。

firewall-cmd --reload

3. `--runtime-to-permanent`:将当前运行时的防火墙规则永久保存。

firewall-cmd --runtime-to-permanent

4. `--permanent`:使添加的策略永久生效,需要重新加载才能应用。

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

5. `--get-default-zone`:查看当前默认的区域(zone)。

firewall-cmd --get-default-zone

6. `--get-active-zones`:查看当前激活的区域(zones)。

firewall-cmd --get-active-zones

7. `--set-default-zone=<zone>`:设置默认的区域。

firewall-cmd --set-default-zone=public

8. `--get-zones`:查看当前有哪些区域(zones)。

firewall-cmd --get-zones

9. `--get-services`:查看当前支持哪些服务(services)。

firewall-cmd --get-services

10. `--list-all-zones`:查看所有区域设置的策略。

firewall-cmd --list-all-zones

11. `--list-all`:查看当前区域设置的策略。

firewall-cmd --list-all

12. `--direct`:使用直接接口添加、删除或查看自定义的 iptables 规则。

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -j ACCEPT

13. `--add-source=<IP or subnet>`:将来源于指定 IP 或子网的流量导向指定的区域。

firewall-cmd --zone=public --add-source=192.168.1.0/24

14. `--remove-source=<IP or subnet>`:不再将指定 IP 或子网的流量导向某个指定区域。

firewall-cmd --zone=public --remove-source=192.168.1.0/24

15. `--add-interface=<interface>`:将指定的网络接口添加到某个区域。

firewall-cmd --zone=public --add-interface=eth0

16. `--change-interface=<interface>`:更改网络接口所属的区域。

firewall-cmd --zone=public --change-interface=eth0

17. `--add-service=<service>`:允许默认区域允许该服务的流量。

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

18. `--add-port=<port/protocol>`:允许默认区域允许该端口的流量。

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

19. `--remove-service=<service>`:设置默认区域不再允许该服务的流量。

firewall-cmd --zone=public --remove-service=http

20. `--remove-port=<port/protocol>`:允许默认区域不再允许该端口的流量。

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

21. `--panic-on`:启动应急状况模式,阻断一切网络连接。

firewall-cmd --panic-on

22. `--panic-off`:关闭应急状况模式。

firewall-cmd --panic-off

23. `--list-rich-rules`:列出当前区域的所有富规则(rich rules)。

firewall-cmd --zone=public --list-rich-rules

24. `--add-rich-rule`:添加一个富规则。

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'

25. `--remove-rich-rule`:移除一个富规则。

firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'


这些选项参数可以帮助你根据需要配置和管理 firewalld,从而控制进出系统的网络流量。在使用这些参数时,请确保你了解每个参数的作用,以避免不必要的网络连接问题。

Firewalld命令配置示例

以下是一些常用的firewalld命令及其配置示例:

1. 启动和停止firewalld服务:

systemctl start firewalld
systemctl stop firewalld

2.设置firewalld开机自启:

systemctl enable firewalld
systemctl disable firewalld

3.检查firewalld服务状态:

systemctl status firewalld

4. 添加服务到区域(例如,将http服务添加到public区域):

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

5. 移除服务从区域(例如,移除http服务从public区域):

firewall-cmd --zone=public --remove-service=http --permanent
firewall-cmd --reload

6.添加端口到区域(例如,开放端口8080):

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

7.移除端口从区域(例如,关闭端口8080):

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

8.查看区域信息:

firewall-cmd --zone=public --list-all

9.更改默认区域**(例如,将默认区域更改为internal):

firewall-cmd --set-default-zone=internal --permanent
firewall-cmd --reload

10. 设置接口的区域(例如,将eth0接口设置为internal区域):

firewall-cmd --zone=internal --add-interface=eth0 --permanent
firewall-cmd --reload

11.端口转发(例如,将外部访问的80端口转发到内部的8080端口):

firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --reload

12.临时应用规则(不永久生效):

firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --reload

13.删除临时规则:

firewall-cmd --zone=public --remove-port=8080/tcp
firewall-cmd --reload

14. 列出所有区域:

firewall-cmd --get-zones

15.列出所有服务:

firewall-cmd --get-services

16.查看firewalld版本:

firewall-cmd --version

17.查看firewalld帮助信息:

firewall-cmd --help


请注意,带有`--permanent`标志的命令将更改永久存储在配置文件中,而没有该标志的命令仅在当前会话中有效,重启后失效。使用`--reload`命令来重新加载firewalld配置,使更改生效。

在使用firewalld时,建议查看官方文档以获取更详细的信息和高级用法。

  • 38
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用\[3\]:本方法提供的工具包共包括下列工具工具包作用tree显示目录的树形结构nmap主机发现和端口扫描工具lrzsz文件传输工具dos2unixDos格式文件转换为Unix格式文件ncnetcat 安全工具,可实现端口侦听、端口扫描、传输文件、网络测速lsoflist open files 查看打开的文件 系统监测工具wget文件下载工具 从网络上自动下载文件的自由工具tcpdump抓包工具 可监听网卡、指定协议的数据、指定主机、指定端口、除某个端口之外的其它端口。htop监控软件iftop实时流量监控工具 可用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等iotop监视磁盘I/O使用状况的top类工具sysstat观察服务负载 如CPU和内存的占用率、网络的使用率、磁盘写入和读取速度等nethogs网络流量监控工具psmisc实用性命令工具 pstree-以树状图显示程序;killall-用于杀死指定名字的进程;fuser-用来显示所有正在使用着指定的file/file system或sockets的进程信息。net-tool工具箱bash-completion命令自动补全工具MariadbMariaDB数据库管理系统 mariadb-5.5.68-1.el7.x86_64Nginxweb服务器 nginx-1.20.2-1.el7.ngx.x86_64Iptables防火墙 iptables-1.4.21-35.el7.x86_64 问题:linux常用工具版本 回答:根据引用\[3\]提供的信息,以下是一些常用工具的版本: - Mariadb数据库管理系统版本为mariadb-5.5.68-1.el7.x86_64 - Nginxweb服务器版本为nginx-1.20.2-1.el7.ngx.x86_64 - Iptables防火墙版本为iptables-1.4.21-35.el7.x86_64 请注意,这只是其中一些工具的版本信息,还有其他工具的版本信息未提及。 #### 引用[.reference_title] - *1* [linux常用命令及常用工具安装](https://blog.csdn.net/m0_50990607/article/details/127037745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Linux常用工具包安装](https://blog.csdn.net/m0_65267037/article/details/123882185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值