13
2025
03
20:03:29

使用PHP开关RDP服务(远程桌面)和网络适配器

简介

总所周知,windows的3389端口是个危险端口,开启后容易被爆破密码,但有时候为了运维方便,又不得不开启。本文给出一段使用PHP开启和关闭RDP服务的代码供参考。使用以下代码,可以在不需要RDP服务时关闭RDP,需要时再打开。

开关RDP服务

原理

开启和关闭远程桌面,是通过修改注册表来实现的。当HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server中的fDenyTSConnections的值为1时,表示关闭了远程桌面,为0时表示开启。
只需要通过PHP来修改注册表即可。

PHP代码


  1. <?php

  2. function openRdp()

  3. {

  4.    $cmd = "REG query \"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections";

  5.    exec($cmd,$output, $return_val);

  6.    if(strstr($output['2'],'0x0')!==false){

  7.        //已开启状态

  8.    }else{

  9.        //已关闭状态

  10.        $cmd = "REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal\" \"Server /v fDenyTSConnections /t REG_DWORD /d 0 /f  2>&1";

  11.        exec($cmd,$output, $return_val);

  12.        if($return_val!=0){

  13.            $data['code'] = 1;

  14.            $data['error'] = $output[0];

  15.            echo json_encode($data);exit();

  16.        }

  17.    }

  18.    $data['code'] = 0;

  19.    echo json_encode($data);exit();

  20. }

  21. function stopRdp()

  22. {

  23.    $cmd = "REG query \"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections";

  24.    exec($cmd,$output, $return_val);

  25.    if(strstr($output['2'],'0x0')!==false){

  26.        //已开启状态

  27.        for($i=0;$i<=10;$i++){

  28.            $cmd = "ECHO Y|logoff {$i}";

  29.            exec($cmd);

  30.        }

  31.        $cmd = "REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal\" \"Server /v fDenyTSConnections /t REG_DWORD /d 1 /f  2>&1";

  32.        exec($cmd,$output, $return_val);

  33.        if($return_val!=0){

  34.            $data['code'] = 1;

  35.            $data['error'] = $output[0];

  36.            echo json_encode($data);exit();

  37.        }

  38.    }else{

  39.        //已关闭状态

  40.    }

  41.    $data['code'] = 0;

  42.    echo json_encode($data);exit();

  43. }

  44. $action = $_GET['action'];

  45. if($action == 'open'){

  46.    openRdp();

  47.    exit();

  48. }

  49. if($action == 'stop'){

  50.    stopRdp();

  51.    exit();

  52. }

  53. echo 'wait';



开关网络适配器

在突发情况,需要立即停掉网络(拔掉网线)时,可以使用以下代码来达到断网的目的:

查询网络适配器名称

netsh interface show interface

禁用网络适配器

netsh interface set interface "以太网" disable

启用网络适配器

netsh interface set interface "以太网" enable

PHP代码

function openNetWork()
{
    $cmd = "netsh interface set interface \"以太网\" enable";
    exec($cmd,$output, $return_val);
    if($return_val!=0){
        $data['code'] = 1;
        $data['error'] = $output[0];
        echo json_encode($data);exit();
    }
    $cmd = "schtasks  /Delete  /tn  opennetWork /f";
    exec($cmd);
    $data['code'] = 0;
    echo json_encode($data);exit();
}
function stopNetWork()
{
    //添加定时任务(1分钟后开启网络)
    if(!file_exists('C:\Windows\System32\openNetwork.bat')){
        $content = <<<CODE
@echo off
echo ****************************************
echo 开启网络
echo ****************************************
:: 开启网络
netsh interface set interface "以太网" enable
:: 删除计划任务
schtasks  /Delete  /tn  opennetWork /f
echo 已开启!       
CODE;
        $content = iconv("UTF-8","gbk//TRANSLIT",$content);
        file_put_contents('C:\Windows\System32\openNetwork.bat',$content);
    }
    $time = date('H:i:s',strtotime('+1 minute'));
    $cmd = "schtasks  /create  /tn  opennetWork /tr  C:/Windows/System32/openNetwork.bat  /f /RU System /sc  ONCE /st  ".$time;
    exec($cmd);
    //关闭网络
    $cmd = "netsh interface set interface \"以太网\" disable";
    exec($cmd,$output, $return_val);
    if($return_val!=0){
        $data['code'] = 1;
        $data['error'] = $output[0];
        echo json_encode($data);exit();
    }
    $data['code'] = 0;
    echo json_encode($data);exit();
}
$action = $_GET['action']?:$_SERVER['argv'][1];
if($action == 'open'){
    openNetWork();
    exit();
}
if($action == 'stop'){
    stopNetWork();
    exit();
}
echo 'wait';

关闭ssh服务

Linux服务器,可以通过关闭ssh服务来提高安全性。如果你安装了宝塔面板,可以直接在宝塔面板中的“安全”菜单关闭,也可以通过命令来关闭。需要注意的是关闭后,你将不能通过ssh的方式登录服务器。

查看你的linux服务器版本:

cat /etc/redhat-release

如果是centos7、centos8 或 Fedora,通过如下命令关闭:

systemctl stop sshd.service

其他版本使用如下命令关闭:

/etc/init.d/sshd stop




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://sg.hqyman.cn/post/9565.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: