Wie blockiere ich einen Port für eine bestimmte Zeit?

Wie blockiere ich einen Port für eine bestimmte Zeit?

Ich möchte einen Port für eine bestimmte Zeit blockieren, beispielsweise von 1 bis 3 Uhr morgens. Ich kann der integrierten Firewall eine Regel hinzufügen, aber diese blockiert den Port ständig. Gibt es eine Möglichkeit, dies nur für einen bestimmten Zeitraum zu tun?

Antwort1

Nein. Das ist nicht machbar, es sei denn, Sie erstellen Ihr eigenes VBS-Skript zur Automatisierung mit dem Taskplaner. Dazu müssen Sie die Windows-Firewall-API implementieren. Wenn Sie ein Skript erstellen, posten Sie es. Es wäre für andere eine große Hilfe.

Antwort2

Endlich habe ich eine Lösung gefunden. Zuerst füge ich eine Regel hinzu, um die gewünschte Anwendung in der Firewall zu blockieren. Anschließend kann die Regel mit dem folgenden Befehl aktiviert oder deaktiviert werden:

netsh advfirewall firewall set rule name="MyRule" new enable=yes

Dies kann zu einem Skript hinzugefügt werden, das regelmäßig die Zeit überprüft und MuRule entsprechend aktiviert/deaktiviert. Ich konnte den Sleep-Befehl im Batch-Skript nicht finden und kenne PowerShell nicht, also habe ich ein einfaches C++-Programm geschrieben.

#include<ctime>
#include<windows.h>
using namespace std;

int main()
{//code for hiding console
    HWND window; 
    AllocConsole();
    window = FindWindowA("ConsoleWindowClass", NULL);
    ShowWindow(window,0);

    Sleep(60*1000);// 1 min delay
    time_t now;
    struct tm *current;
    now = time(0);
    while(1)
    {
    current = localtime(&now);
    if(current->tm_hour>=22||current->tm_hour<=6) // 10 pm to 6 am
        system ("netsh advfirewall firewall set rule name=\"MyRule\" new enable=yes");
    else
        system ("netsh advfirewall firewall set rule name=\"MyRule\" new enable=no");
    Sleep(10*60*1000);// 10 min delay
    }
    return 0;
}

Mit gcc kompilieren und bei der Anmeldung mit dem Taskplaner mit Administratorrechten ausführen.

verwandte Informationen