如何正确开启防火墙命令?

在Linux系统中,防火墙是保障服务器安全的重要屏障,通过合理配置防火墙规则可以有效控制网络访问,防止未授权访问和恶意攻击,不同Linux发行版使用的防火墙工具有所不同,常见的有iptables(CentOS 7之前)、firewalld(CentOS 7及以后版本、RHEL、Fedora等)以及nftables(较新的Linux发行版),以下将详细介绍这些防火墙的开启命令及相关配置方法,帮助用户根据实际需求选择合适的工具进行操作。

开启防火墙命令
(图片来源网络,侵删)

基于iptables的防火墙开启命令

iptables是Linux系统中传统的防火墙工具,通过内核模块实现包过滤功能,功能强大且灵活,在CentOS 6、Ubuntu 14.04等较老版本中,默认使用iptables作为防火墙解决方案。

安装iptables

如果系统中未安装iptables,可通过以下命令安装:

# CentOS/RHEL系统
yum install iptables -y
# Ubuntu/Debian系统
apt-get update
apt-get install iptables -y

开启iptables服务

安装完成后,需启动iptables服务并设置为开机自启:

# 启动iptables服务
service iptables start
# CentOS 6系统设置开机自启
chkconfig iptables on
# Ubuntu系统设置开机自启
update-rc.d iptables enable

添加基本规则

iptables的规则由表(table)和链(chain)组成,默认使用filter表,包含INPUT(入站)、OUTPUT(出站)、FORWARD(转发)三条链,开启防火墙后,需添加允许必要服务的规则,避免因拦截所有流量导致服务不可用,以下为常用规则示例:

开启防火墙命令
(图片来源网络,侵删)
# 允许本地回环地址(localhost)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接和相关连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH连接(默认端口22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP(80端口)和HTTPS(443端口)访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 拦截所有其他入站流量(默认策略设置为DROP)
iptables -P INPUT DROP

保存规则

不同系统中保存iptables规则的命令不同:

# CentOS/RHEL系统
service iptables save
# Ubuntu/Debian系统
iptables-save > /etc/iptables/rules.v4

查看和删除规则

# 查看当前规则
iptables -L -n -v
# 删除某条规则(例如删除SSH允许规则)
iptables -D INPUT -p tcp --dport 22 -j ACCEPT

基于firewalld的防火墙开启命令

firewalld是CentOS 7、RHEL 7、Fedora等系统默认的防火墙管理工具,支持动态规则更新,无需重启服务即可生效,适合需要频繁修改规则的场景。

检查firewalld状态

# 查看firewalld运行状态
systemctl status firewalld
# 如果未启动,执行以下命令开启并设置开机自启
systemctl start firewalld
systemctl enable firewalld

使用firewall-cmd管理规则

firewall-cmd是firewalld的命令行工具,以下为常用操作:

# 查看已开放的端口
firewall-cmd --list-ports
# 开放永久端口(例如SSH 22端口)
firewall-cmd --permanent --add-port=22/tcp
# 开放临时端口(重启后失效)
firewall-cmd --add-port=80/tcp
# 重新加载防火墙规则使永久规则生效
firewall-cmd --reload
# 添加服务(例如http服务,自动开放80端口)
firewall-cmd --permanent --add-service=http
# 查看已启用的服务
firewall-cmd --list-services
# 设置默认区域(public为默认区域)
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone=public
# 添加富规则(允许特定IP访问22端口)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'

区域(Zone)管理

firewalld将网络流量分为不同的区域(如public、trusted、block等),每个区域有不同的默认规则,可通过以下命令管理区域:

开启防火墙命令
(图片来源网络,侵删)
# 查看所有区域
firewall-cmd --get-active-zones
# 将网络接口添加到指定区域(例如eth0加入trusted区域)
firewall-cmd --permanent --zone=trusted --add-interface=eth0

基于nftables的防火墙开启命令

nftables是iptables的替代方案,在Linux内核3.13版本后引入,提供了更简洁的语法和更好的性能,逐渐成为主流防火墙工具(如Ubuntu 20.04、CentOS 8默认使用nftables)。

安装nftables

# CentOS/RHEL 8系统
dnf install nftables -y
# Ubuntu 20.04系统
apt-get install nftables -y

启动nftables服务

systemctl start nftables
systemctl enable nftables

基本规则配置

nftables规则通过nft命令管理,配置文件通常位于/etc/nftables/目录下,以下为基本规则示例:

# 创建一个表名为firewall的表
nft add table inet firewall
# 在表中创建链
nft add chain inet firewall input { type filter hook input priority 0 \; }
# 添加规则
nft add rule inet firewall input iif lo accept
nft add rule inet firewall input tcp dport 22 accept
nft add rule inet firewall input tcp dport 80 accept
nft add rule inet firewall input tcp dport 443 accept
nft add rule inet firewall input counter drop
# 保存规则(CentOS 8系统)
nft list ruleset > /etc/sysconfig/nftables.conf
# Ubuntu系统规则保存
nft list ruleset > /etc/nftables/ruleset.nft

加载和查看规则

# 加载保存的规则
nft -f /etc/sysconfig/nftables.conf
# 查看当前规则
nft list ruleset

防火墙开启后的注意事项

  1. 规则优先级:防火墙规则按顺序匹配,一旦匹配某条规则即停止向下检查,因此需将允许规则置于拦截规则之前。
  2. 默认策略:iptables和nftables可设置默认策略(如DROP或ACCEPT),建议在测试环境验证规则无误后再设置为DROP,避免合法流量被误拦截。
  3. 日志记录:可通过iptables -A INPUT -j LOG或nftables的log选项记录被拦截的流量,便于分析安全事件。
  4. 远程管理安全:开启防火墙后,确保SSH等管理端口允许访问,建议限制特定IP访问,避免暴露在公网中。

不同工具对比

特性iptablesfirewalldnftables
默认支持系统CentOS 6及以前CentOS 7+CentOS 8+、Ubuntu 20.04+
规则更新方式需重启服务动态更新动态更新
语法复杂度复杂中等简洁
性能较低中等较高
适用场景老系统维护日常管理新系统部署

相关问答FAQs

问题1:如何查看当前系统使用的防火墙类型?
解答:可通过以下命令判断系统使用的防火墙工具:

# 检查iptables是否运行
service iptables status 2>/dev/null || systemctl status iptables 2>/dev/null
# 检查firewalld是否运行
systemctl status firewalld
# 检查nftables规则是否存在
nft list ruleset 2>/dev/null || ls /etc/nftables/ 2>/dev/null

iptables服务运行,则使用iptables;若firewalld服务运行,则使用firewalld;若存在nftables规则文件或nft命令可执行,则使用nftables。

问题2:开启防火墙后无法访问服务器怎么办?
解答:可按以下步骤排查:

  1. 检查防火墙状态:确认防火墙已启动(如systemctl status firewalldservice iptables status)。
  2. 查看规则日志:通过journalctl -u firewalldiptables -L -v查看是否有流量被拦截。
  3. 临时开放端口:若因规则拦截导致无法访问,可临时开放端口(如firewall-cmd --add-port=22/tcpiptables -I INPUT -p tcp --dport 22 -j ACCEPT),然后重新加载规则。
  4. 检查默认策略:确保默认策略未设置为DROP(如iptables -P INPUT ACCEPT临时放行,再调整具体规则)。
  5. 安全组/云平台规则:若使用云服务器(如AWS、阿里云),需检查云平台的安全组是否开放了对应端口。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/366091.html<

(0)
运维的头像运维
上一篇2025-09-26 09:48
下一篇 2025-09-26 09:55

相关推荐

  • 2003系统如何正确开放指定端口?

    在2003系统中打开端口通常涉及防火墙配置和系统服务设置,以下是详细操作步骤及注意事项,首先需要明确端口的用途,是用于远程管理、文件共享还是其他服务,不同服务的默认端口不同,如远程桌面默认3389端口,文件共享默认445端口,操作前建议备份系统注册表或创建系统还原点,避免配置错误导致系统无法访问,通过Windo……

    2025-11-20
    0
  • cmd at命令实例有哪些具体用法?

    在Windows操作系统中,命令提示符(CMD)是一个强大的工具,它允许用户通过文本命令与系统进行交互,at命令是一个计划任务工具,用于在指定的时间运行命令或程序,尽管在较新的Windows版本中(如Windows 8和Windows 10),at命令已被schtasks命令取代,但了解at命令的实例和用法仍然……

    2025-11-20
    0
  • bat如何启动服务?命令格式是怎样的?

    在Windows操作系统中,BAT脚本(批处理文件)是一种强大的工具,可以通过简单的命令实现自动化操作,其中启动服务是常见的应用场景,服务是Windows中在后台运行的应用程序,通常没有用户界面,用于提供系统功能或支持其他应用程序,通过BAT脚本启动服务,可以简化手动操作,提高管理效率,以下是关于使用BAT脚本……

    2025-11-20
    0
  • cmd命令如何获取当前时间戳?

    在Windows操作系统中,cmd命令是用户与系统交互的重要工具,而时间戳则是记录和追踪事件发生时间的关键数据,结合cmd命令与时间戳,可以实现日志记录、任务调度、文件管理等多种实用功能,本文将详细解析如何通过cmd命令获取、处理和应用时间戳,并通过具体示例和表格展示操作方法,获取当前时间戳的cmd命令在cmd……

    2025-11-20
    0
  • net命令建用户的具体步骤是什么?

    在Windows操作系统中,net命令是功能强大的网络命令行工具,其中通过net user子命令可以方便地创建、管理和删除用户账户,尤其适合管理员在无图形界面的服务器环境中进行用户管理操作,以下是关于使用net命令创建用户的详细说明,包括命令语法、参数详解及实际应用场景,net user命令的基本语法为:net……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注