Xshell作为一款功能强大的终端仿真工具,通过命令行模式,可以方便地对远程Linux服务器的防火墙进行配置和管理
本文将详细介绍如何使用Xshell连接Linux服务器,并通过命令行配置firewalld防火墙,以确保系统的网络安全
一、Xshell连接Linux服务器 首先,确保你已经安装了Xshell,并能够通过SSH协议连接到你的Linux服务器
以下是基本的连接步骤: 1.启动Xshell:双击Xshell图标,启动Xshell客户端
2.新建会话:点击左上角的“新建”按钮,在弹出的对话框中输入会话名称和主机地址(或IP地址)
3.配置SSH连接:选择“SSH”作为连接协议,并输入远程服务器的用户名和密码(或选择使用密钥认证)
4.连接服务器:点击“连接”按钮,等待Xshell建立与远程服务器的连接
如果连接成功,你会看到远程服务器的命令行界面
二、查看防火墙状态 在配置防火墙之前,首先需要了解当前防火墙的状态
你可以使用以下命令来查看firewalld服务的状态: systemctl status firewalld 如果防火墙正在运行,你会看到类似以下的输出: ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded(/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active(running) since ... ... 如果防火墙未运行,你可以使用以下命令启动防火墙服务: systemctl start firewalld 三、使用firewall-cmd配置防火墙 firewalld是CentOS等Linux发行版中广泛使用的防火墙管理工具
它提供了命令行和图形化界面两种配置方式
在这里,我们将重点介绍如何通过命令行配置firewalld
1. 基本命令介绍 firewall-cmd命令的基本语法如下: firewall-cmd 【选项】【区域】 【参数】 其中,常用的选项包括: - `--list-all`:列出指定区域的所有配置信息
- `--add-service=<服务名`:添加允许的服务
- `--add-port=<端口号/协议`:添加允许的端口
- `--remove-service=<服务名`:移除不允许的服务
- `--remove-port=<端口号/协议`:移除不允许的端口
- `--reload`:重新加载防火墙配置,使更改立即生效
- `--permanent`:使配置永久生效
2. 配置示例 (1)允许HTTP服务 假设你希望允许HTTP服务通过防火墙,可以使用以下命令: firewall-cmd --permanent --add-service=http firewall-cmd --reload 然后,你可以使用以下命令验证HTTP服务是否已被允许: firewall-cmd --list-all | grep services 你应该会看到类似以下的输出: services: ssh dhcpv6-client http (2)允许特定端口 假设你希望允许TCP协议的8080和8081端口通过防火墙,可以使用以下命令: firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --permanent --add-port=8081/tcp firewall-cmd --reload 同样,你可以使用以下命令验证端口是否已被允许: firewall-cmd --list-all | grep ports (3)富规则(Rich Rules) 除了基本的服务和端口配置外,firewalld还支持富规则,允许你定义更复杂的防火墙规则
例如,你可以使用以下命令允许来自特定IP地址段的流量: firewall-cmd --permanent --add-rich-rule=rule family=ipv4 source address=192.168.1.0/24 accept firewall-cmd --reload 或者,你可以使用以下命令拒绝来自特定IP地址段的流量: firewall-cmd --permanent --add-rich-rule=rule family=ipv4 source address=192.168.1.0/24 reject firewall-cmd --reload 四、脚本化配置防火墙 对于需要频繁更改防火墙配置的场景,编写Shell脚本可以大大提高效率
以下是一个简单的Shell脚本示例,用于配置firewalld防火墙: !/bin/bash 检查firewalld服务状态 systemctl status firewalld.service 1>/dev/null 2>&1 B=$? if 【 $B -eq 4】; then echo 服务未安装: firewalld.service exit 1 elif 【 $B -ne 0】; then echo 当前防火墙属于关闭状态,选择操作:(1)start(2)stop read -p 你的选择: choice case $choice in 1) systemctl start firewalld systemctl enable firewalld echo 防火墙开启中... ;; 2) echo 未开启防火墙,退出程序... exit 0 ;; ) echo 无效选择,退出程序... exit 1 ;; esac fi 配置防火墙规则 ZONE=--zone=public PERM=--permanent 开放端口示例 echo 当前防火墙规则: firewall-cmd $ZONE --list-all read -p 请输入要开放的端口(例如8080): PORT read -p 请输入协议(例如tcp/udp/all,默认tcp): PROTOCOL PROTOCOL=${PROTOCOL:?未指定协议} ACTION=add默认添加规则 case $PROTOCOL in 3|all) PROTOCOL=all ;; 2) PROTOCOL=udp ;; 1|) PROTOCOL=tcp ;; esac for PORT_NUM in $PORT; do if【【 $PORT_NUM =~^(【0-9】+)(-(【0-9】+))?$】】; then START_PORT=${BASH_REMATCH【1】} END_PORT=${BASH_REMATCH【3】} if【 -z $END_PORT】; then END_PORT=$START_PORT fi for((i=$START_PORT; i<=$END_PORT;i++)); do echo firewall-cmd $ZONE $PERM --$ACTION-port=$i/$PROTOCOL firewall-cmd $ZONE $PERM --$ACTION-port=$i/$PROTOCOL done else echo 无效端口格式: $PORT_NUM fi done 重新加载防火墙配置 firewall-cmd --reload echo 防火墙配置完成! 五、总结 通过Xshell连接Linux服务器,并使用firewalld命令行工具配置防火墙,是确保系统网络安全的重要步骤
本文详细介绍了如何查看防