当前位置:首页 > 行业动态 > 正文

服务器关闭端口 脚本

bash,#!/bin/bash,# 关闭指定端口,如8080,iptables -A INPUT -p tcp --dport 8080 -j DROP,echo "端口8080已关闭",“此脚本使用iptables规则来阻止对指定端口(这里是8080)的访问。请根据实际情况修改端口号,并确保有足够的权限来执行iptables命令。在运行脚本前,建议先备份现有的iptables规则,以防误操作导致服务不可用。

服务器关闭端口脚本

一、脚本

在服务器管理中,有时需要关闭特定的端口以增强安全性或避免端口冲突,下面将介绍如何使用脚本来关闭服务器上的端口。

二、常见操作系统下的关闭端口方法

(一)Linux系统(以Ubuntu为例)

1、使用ufw命令(适用于有ufw防火墙的系统)

确保ufw防火墙已安装并启用,如果没有安装,可以使用以下命令安装:

命令 功能
sudo apt-get install ufw 安装ufw防火墙软件包

查看当前开放的端口:

|命令|功能|

|sudo ufw status|显示当前防火墙规则和开放端口状态|

关闭特定端口,例如关闭22端口(SSH端口):

|命令|功能|

|sudo ufw deny 22|拒绝22端口的连接请求,即关闭该端口|

保存并应用更改:

|命令|功能|

|sudo ufw reload|重新加载防火墙规则,使更改生效|

2、直接修改iptables规则(适用于没有ufw的情况)

查看当前的iptables规则:

服务器关闭端口 脚本

|命令|功能|

|sudo iptables -L|列出当前的iptables规则链|

删除允许特定端口的规则,例如删除允许22端口的规则:

|命令|功能|

|sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT|删除输入链中允许22端口TCP连接的规则|

添加拒绝特定端口的规则,例如拒绝22端口:

|命令|功能|

|sudo iptables -A INPUT -p tcp --dport 22 -j DROP|在输入链中添加一条规则,拒绝22端口的TCP连接请求|

保存iptables规则:

|命令|功能|

|sudo sh -c "iptables-save > /etc/iptables/rules.v4"|将当前的iptables规则保存到指定文件中,以便在系统重启后仍然生效|

(二)Windows系统

1、使用Windows防火墙(图形界面操作)

服务器关闭端口 脚本

打开“控制面板”,选择“系统和安全”,然后点击“Windows防火墙”。

在左侧导航栏中选择“高级设置”,打开“Windows防火墙高级安全”窗口。

在“入站规则”选项卡中,找到要关闭端口对应的规则(可以根据端口号筛选),如果要关闭3389端口(远程桌面端口),可以在右侧列表中找到与3389端口相关的规则。

右键单击该规则,选择“禁用规则”,即可关闭该端口。

2、使用PowerShell脚本

打开PowerShell,以管理员身份运行。

可以使用以下命令来禁用特定端口的规则,禁用3389端口:

|命令|功能|

|Get-NetFirewallRule -DisplayName "Remote Desktop" | Disable-NetFirewallRule|获取名为“Remote Desktop”(远程桌面)的防火墙规则并禁用它,从而关闭3389端口|

三、脚本示例(以Linux系统为例)

以下是一个简单的Bash脚本,用于关闭指定的端口:

#!/bin/bash
检查是否安装了ufw
if ! command -v ufw &> /dev/null; then
    echo "ufw未安装,请先安装ufw。"
    exit 1
fi
检查是否以root用户执行脚本
if [ "$(id -u)" -ne 0 ]; then
    echo "请以root用户执行此脚本。"
    exit 1
fi
读取用户输入的端口号
read -p "请输入要关闭的端口号:" port
检查端口号是否合法
if ! [[ "$port" =~ ^[0-9]+$ ]]; then
    echo "无效的端口号。"
    exit 1
fi
关闭指定端口
ufw deny $port
重新加载防火墙规则
ufw reload
echo "端口 $port 已成功关闭。"

使用上述脚本时,将其保存为一个.sh文件,例如close_port.sh,然后赋予执行权限:

服务器关闭端口 脚本

chmod +x close_port.sh

以root用户身份执行脚本:

sudo ./close_port.sh

按照提示输入要关闭的端口号即可。

四、相关问题与解答

(一)问题1:如果不小心关闭了重要端口,如何恢复?

解答:如果是在Linux系统中使用ufw关闭了端口,可以通过以下命令重新开放端口,要重新开放之前关闭的22端口:

sudo ufw allow 22
sudo ufw reload

如果是通过修改iptables规则关闭的端口,需要找到之前删除的规则并重新添加,可以使用以下命令查看当前的iptables规则,找到对应的规则后手动添加:

sudo iptables -L

对于Windows系统,如果是通过图形界面禁用的规则,可以再次进入“Windows防火墙高级安全”窗口,找到对应的规则并启用,如果是通过PowerShell脚本禁用的规则,可以编写相应的命令来启用规则,要启用之前禁用的3389端口规则:

Get-NetFirewallRule -DisplayName "Remote Desktop" | Enable-NetFirewallRule

(二)问题2:关闭端口对服务器的正常运行有哪些影响?

解答:关闭不同的端口可能会对服务器产生不同的影响,一些常见的影响如下:

1、服务不可用:如果关闭了某个服务所使用的端口,那么该服务将无法正常对外提供服务,关闭了Web服务器的80端口(HTTP默认端口),那么用户将无法通过浏览器访问该网站的网页内容。

2、远程连接失败:如果关闭了用于远程连接的端口,如SSH端口(默认22端口),那么管理员将无法通过SSH协议远程登录到服务器进行管理操作。

3、应用程序通信中断:某些应用程序可能需要特定的端口来进行通信,如果这些端口被关闭,应用程序之间的数据传输将受到影响,可能导致应用程序无法正常运行,数据库应用程序可能需要特定端口与其他应用程序进行数据交互,关闭该端口后,相关应用程序可能无法获取数据库中的数据。