Heute möchte ich Ihnen ein paar Worte zur Windows-Firewall oder, wie es im russifizierten Betriebssystem heißt, zur Firewall sagen. Im Allgemeinen ist dies eine sehr gute Sache, aber im Besonderen ... Es stellt sich heraus, dass es standardmäßig in einem ziemlich interessanten Modus funktioniert. Wie das Sprichwort sagt: "Und die Jungs wissen es nicht." Also fangen wir an herauszufinden, was was ist.
Einführung
Zunächst erkläre ich die Essenz des Problems, das ich gelöst habe. Ich musste überprüfen, wie das nächste Board mit unserem All Hardware-Service richtig funktioniert. Aber nicht das, was ich in einem der vorherigen Artikel überprüft habe , sondern das Xilinx FPGA.
Was ist der All Hardware Service? Dies ist die Site, die der Benutzer besucht, sich anmeldet und eine Liste verschiedener Karten erhält, die sich physisch auf dem Server befinden. Warum macht er das? Mit dem Board arbeiten, ohne es zu kaufen. Überprüfen Sie beispielsweise, ob es für ihn funktioniert, oder üben Sie einfach die Arbeit mit einem bestimmten Controller. Die Boards werden von den Herstellern bereitgestellt, und der Service bietet eine zeitlich begrenzte Sitzung mit ihnen. Der Benutzer wählt eine Karte aus der Liste aus und erhält drei Dinge: IP-Adresse, Portnummer und Video von der Kamera, die dieses Layout betrachtet. Tatsächlich können Sie dort immer noch Ports über SSH weiterleiten, aber ich bin kein Experte dafür. Meinerseits - genau die Adresse, den Port und das Video.
Außerdem muss der Benutzer in der Entwicklungsumgebung, die sich auf seinem lokalen Computer befindet, einen Remote-Debugger auswählen (für die meisten Umgebungen ist dies die gute alte GDB, für Keil ist sie perverser, aber wenn Sie interessiert sind - Sie können einen separaten Artikel darüber verfassen, dies gilt nicht für die Firewall). Die ausgegebene IP und der ausgegebene Port werden dort eingegeben. Anschließend können Sie eine Remote-Debugging-Sitzung starten, in der Sie sich auf das Bild von der Kamera und die über SSH weitergeleiteten Ports konzentrieren.
Somit kann jeder die Arbeit mit verschiedenen Entwicklungsboards spüren, ohne sie zu kaufen. Gleichzeitig befinden sich wie im Fall von Redd die Entwicklungsumgebung und die Quellcodes auf dem lokalen Computer. Nur Binärcode geht an den Server. Nach Ablauf der Sitzung löscht die Automatisierung das ROM, sodass der nächste Benutzer den Code nicht lesen kann.
Also zurück zum Thema des Artikels. Was ist die Seite der Firewall hier? Es ist einfach. Ich musste mit einem Xilinx FPGA arbeiten. Und ihre Entwicklungsumgebung ist offiziell WebTalk. Ich wollte nicht, dass sie meine Aktionen "dort meldet, wo sie sein sollten", daher befand sich die Umgebung auf einem nicht vernetzten Computer. Auch wenn sie es wirklich wollte - ihre Hände sind kurz. Es gibt keinen physischen Kanal und das wars! Das Konzept des All-Hardware-Dienstes sieht jedoch vor, dass ein Netzwerk vorhanden sein muss. Zum Testen musste das Auto vorübergehend an das Kabel angeschlossen werden (tatsächlich ist das Fehlen eines Netzwerks eher eine Gewohnheit, es gibt immer noch nichts Interessantes an diesem Auto). Was zu tun ist? Auf die Kehle deiner Paranoia treten? Nun, Ich nicht! Ich habe beschlossen, die Liste der zulässigen Adressen auf die Entwicklungsumgebung zu beschränken, damit sie nur mit localhost und dem All Hardware-Server funktioniert. Ich weiß nicht, was als nächstes passieren wirdund jetzt hat der All Hardware Server die gleiche IP-Adresse. Es ist nur so, dass von Sitzung zu Sitzung neue Ports ausgegeben werden. Das Ziel ist also klar. Kommen wir zur Implementierung.
Welche Firewall soll ich nehmen?
Unter Windows XP und Windows 7 habe ich die Outpost-Firewall verwendet. Dies ist eine inländische Entwicklung. Sehr zuverlässig und komfortabel. Ich habe mir sogar eine lebenslange Lizenz für drei nicht vorrätige Autos gekauft. Einmal hat mir diese Firewall geholfen, einen Trojaner zu identifizieren, den kein Antivirus gesehen hat. Als ich die Datei mit dem Virenkörper aufnehmen konnte, gab ich sie an mehrere auf der LiveCD gelieferte Antivirenprogramme weiter. Keiner bemerkte etwas Verdächtiges. Und meine Firewall befand sich nur in einem paranoiden Modus, von dem aus ich von den verdächtigen Aktivitäten des Programms erfuhr.
Alles war in Ordnung, bis der Hersteller dieser Firewall unter seltsamen Umständen herunterfuhr. Danach wurde ich sehr traurig. Ich war so traurig, dass mein Hauptlaptop immer noch eine 7 mit Outpost hat, da ich keinen Ersatz gesucht habe. Aber die Xilinx IDE will die Top Ten! Perfekt! Es ist also Zeit zu lernen, wie man mit der in dieses Betriebssystem integrierten Firewall arbeitet!
Wir alle wissen, dass diese Standard-Firewall uns fragt, ob ein Programm mit dem Netzwerk arbeiten darf oder nicht, wenn es versucht, auf das Netzwerk zuzugreifen. Wir können sofort verbieten oder das Berechtigungsfeld deaktivieren, nachdem es im Netzwerk viele Anleitungen dazu gibt. Diese Kontrollkästchen sind:
Jeder weiss das. Aber welchen Wert hat dieses Wissen? Ich werde meine Gedanken weglassen, die mich beim Lesen der Masse der gleichen Art von Artikeln "wie man das Online-Verbot einer Anwendung verbietet" überwältigten, die nicht sagen, wie man sie nicht verbietet, sondern nur einschränkt. Ich möchte lieber meine Schlussfolgerungen zu einem speziell für dieses Beispiel angefertigten zeigen. Schreiben wir zwei einfachste Konsolenanwendungen.
Server
Die erste Anwendung gibt vor, ein Server zu sein. Es nimmt UDP-Pakete, die Zeichenfolgen enthalten, und zeigt sie auf dem Bildschirm an. Damit wir über dasselbe sprechen können, ist hier der C ++ - Quellcode:
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
// Need to link with Ws2_32.lib
#pragma comment (lib, "Ws2_32.lib")
#define DEFAULT_BUFLEN 16
int main(int argc, char** argv)
{
if (argc != 2)
{
printf("usage: ServerTest.exe port");
return -1;
}
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
// The socket address to be passed to bind
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons((u_short)strtoul (argv[1],0,0));
SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0/*IPPROTO_UDP*/);
bind(sock, (struct sockaddr*) &addr, sizeof(addr));
while (true)
{
struct sockaddr from;
int len = sizeof(from);
char buf[DEFAULT_BUFLEN];
memset(buf, 0, DEFAULT_BUFLEN);
recvfrom(sock, buf, DEFAULT_BUFLEN-1, 0, &from, &len);
printf(buf);
}
return 0;
}
Wir starten dieses Programm, übergeben die Portnummer (z. B. 1234) als Argument und erhalten vorhersehbar eine Anfrage von der Firewall:
Lassen Sie ihn Netzwerkaktivität ... Lassen Sie ihn warten, und wir schreiben den Client-Teil als eine weitere EXE-Datei.
Klient
Lassen Sie unseren Kunden die sich drehenden Sticklinien an den Server senden. Hier ist der Text:
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include "Windows.h"
// Need to link with Ws2_32.lib
#pragma comment (lib, "Ws2_32.lib")
#define DEFAULT_BUFLEN 16
int main(int argc, char** argv)
{
if (argc != 3)
{
printf("usage: ClientTest.exe address port");
return -1;
}
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
struct sockaddr_in server, client = { AF_INET,INADDR_ANY,INADDR_ANY };
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons((u_short)strtoul (argv[2],0,0));
InetPton(AF_INET, argv[1], &server.sin_addr.s_addr);
SOCKET sock = socket(PF_INET, SOCK_DGRAM, 0);
bind(sock, (sockaddr*)& client, sizeof(client));
for (int i=0;;i++)
{
static const char* sticks[] = { "\\\r","|\r","/\r","-\r" };
sendto(sock, sticks[i%4], strlen(sticks[i%4])+1, 0, (sockaddr*)& server, sizeof(server));
Sleep(250);
}
}
Wir beginnen mit der Angabe der Serveradresse und des Ports, den der Server hatte (ich habe ihn 192.168.1.95 und 1234). Danach wird im Serverfenster eine etwas andere ausgeführt, als ich wollte, aber immer noch ein Stick:
Aber was mich beunruhigt, ist nicht, dass das Symbol "\ R" bringt den Wagen nicht an den Anfang der Zeile zurück, sondern die Tatsache, dass der Client ein separater Prozess ist ... Wird aus einer vollständig separaten Datei gestartet! .. Und die Firewall hat mich nicht um Erlaubnis zur Netzwerkaktivität gebeten. Stattdessen löste er es selbst, ohne mich darüber zu informieren, dass das Programm irgendwohin gehen würde. Wieso das?
Ein bisschen Theorie über Firewall-Betriebsmodi
Hier kommen wir zum Kern des Artikels.
, Windows- , . , , - ( ), , , !
Hier ist eigentlich die entsprechende Firewall-Einstellung:
Alles, was nicht verboten ist, ist erlaubt. Einer Anwendung kann die Aktivität explizit verweigert werden. Dies ist, was eine große Anzahl von Artikeln im Internet gewidmet ist ... Aber der Trojaner wird unmerklich auf unser Auto klettern, wir werden nicht einmal erraten, was genau in verbotene Anwendungen eingegeben werden soll. Auch dies löst mein in der Einleitung des Artikels vorgestelltes Problem nicht. Ich muss den Zugriff auf die Adressen, die ich zugelassen habe, belassen und alle anderen verweigern.
Dazu müssen Sie die Firewall für ausgehende Verbindungen in den Modus "Alles verboten, was nicht erlaubt ist" schalten. Ich bin immer verwirrt, wie ich den entsprechenden Menüpunkt eingeben soll ... Ja, ich habe ihn gefunden ...
Und dort wählen wir zuerst die Registerkarte aus, die dem aktiven Profil entspricht (in meinem Bild war es "Allgemeines Profil", und wechseln dann die Auswahlliste "Ausgehende Verbindungen" von "Zulassen (Standard)" zu "Blockieren".
Das ist es, können wir gut schlafen? Wenn es so einfach wäre, würde Microsoft sicher sofort den "Block" -Modus für alle wählen. Schade, aber alles fängt gerade erst an.
Ein wenig über angewandten Masochismus
Damit. Angenommen, Sie haben den Blockierungsmodus für ausgehende Nachrichten aktiviert ... Alles ist auf einmal gestorben, einschließlich der Browser. Im Allgemeinen stört es niemanden, die Auswahl an die alte Position zurückzusetzen und zur ursprünglichen Version zurückzukehren. Aber mal sehen, was uns das neue Regime im Allgemeinen gibt. Wir bekommen eine Liste von Regeln. Für diese Regeln können Sie eine bedingungslose Berechtigungsbedingung festlegen oder eine Liste offener Ports und eine Liste offener Adressen für die Anwendung festlegen. Adressen können als Gruppe festgelegt werden. Hier ist das Fenster mit den Porteinstellungen:
Hier ist das Fenster mit den Adresseinstellungen:
Außerdem macht sich niemand die Mühe, den Port für Programme zu öffnen, wodurch die Liste der gültigen Adressen für dieses Programm eingeschränkt wird. Das heißt, wir sagen nicht "Programmieren Sie solche und solche, um den Zugriff auf solche und solche Ports zu ermöglichen", sondern "Alle Programme, die über solche und solche Ports arbeiten, ermöglichen Arbeiten und beschränken die Adressen auf die nächste Gruppe."
Bis auf eine Sache ist alles großartig. Wenn die Liste der Regeln für eingehende Verbindungen vom System generiert wird, müssen Sie für ausgehende Verbindungen alles selbst hinzufügen. Wie gesagt, mein Browser ist gestorben - ich musste ihn selbst zu den erlaubten Postausgängen hinzufügen. Ich werde nicht beschreiben, wie Adressen konfiguriert sind, dies ist nicht der Artikel. Artikel über das Festlegen von Regeln (zum Zwecke des Blockierens) sind ein Dutzend. Im Allgemeinen habe ich eine geeignete Regel für eingehende Nachrichten gefunden, den Dateinamen von dort kopiert und dann - eine Regel für ausgehende Nachrichten erstellt und dieselbe Datei angegeben. Nun, und erlaubte diesem Programm, aktiv zu sein.
Als ich im Büro ein Problem mit der Verbindung zu einem VPN hatte, habe ich eine Liste vorgefertigter Regeln recherchiert und diese gefunden (ich wusste im Voraus, dass unsere VPN-Verbindung über das L2TP-Protokoll hergestellt wurde):
Die Regel wurde für uns erstellt, aber nicht aktiviert. Ich ging in seine Eigenschaften, aktivierte es, woraufhin links in der Liste ein grüner Ball mit einem Häkchen erschien und die VPN-Verbindung zum Büro funktionierte.
Aber auf die eine oder andere Weise, aber im Allgemeinen, riecht die Arbeit mit einer solchen Firewall nach Masochismus. Sie müssen einen eisernen Willen haben, um nicht zu schreien: "Und das ist alles müde" und nicht zur alten Arbeitsweise zurückzukehren. Ich habe diesen Zustand fast erreicht (zum Glück wurden die Experimente mit Xilinx für alle Hardware bereits abgeschlossen), aber einer meiner Bekannten schlug mir eine schöne Lösung vor.
Add-On über die Standard-Firewall
Es stellt sich heraus, dass es ein offiziell kostenloses Windows Firewall Control-Programm gibt.
Es macht nichts für sich, es verwaltet nur die in Windows integrierte Firewall und bietet sehr benutzerfreundliche Oberflächen. Jetzt müssen Sie nicht mehr durch eine Reihe von Menüs gehen, um etwas anzupassen. Alle Einstellungen werden bequem und kompakt auf mehreren Registerkarten erfasst. Ich werde nicht alle Funktionen dieses Programms beschreiben. Der Zweck des Artikels besteht nicht darin, ihn zu beschreiben, sondern lediglich seine Existenz zu kennzeichnen. Außerdem kann jeder Fachartikel finden, die den Namen der Windows-Firewall-Steuerung kennen.
Und jetzt, als ich den Client-Teil aus dem obigen Beispiel startete, erhielt ich endlich eine Nachricht:
Ich kann ihm Zugriff gewähren, danach wird automatisch eine Regel erstellt, ich kann den Zugriff verweigern, ich kann die Anwendung einmal blockieren.
Aus Gründen des Interesses habe ich eine automatisch erstellte Regel in der Standard-Firewall-Liste gefunden und die Liste der verfügbaren Adressen dafür eingeschränkt:
Im Allgemeinen ist die Lebensdauer dieser Anwendung selbst bei Verwendung der Standard-Windows-Firewall viel einfacher geworden. So viel besser, dass dieser Windows 10-Computer online blieb, nicht mehr so schutzlos wie zuvor.
Fazit
Die Standard-Windows-Firewall arbeitet standardmäßig in einem solchen Modus, dass jedes Programm Daten senden kann, über die der Benutzer nicht einmal informiert wird. Niemand versteckt es, aber nicht jeder weiß davon. Sie können natürlich eine Firewall eines Drittanbieters einrichten, aber es reicht völlig aus, die Standard-Windows-Firewall in den Modus "Verboten alles, was nicht erlaubt ist" zu schalten. Leider stellt sich heraus, dass es die Hölle ist, die Netzwerkleistung mit regulären Mitteln zu unterstützen. Ein offiziell kostenloses Windows Firewall Control-Programm eines Drittanbieters beseitigt diese Unannehmlichkeiten.
Ob Sie ein Bundle aus der regulären Firewall und diesem Programm verwenden oder eine Firewall eines Drittanbieters erhalten, ist die Frage offen. Die Tatsache, dass die Verwendung der Standard-Firewall im Standardmodus meiner Meinung nach etwas beängstigend ist, steht jedoch außer Zweifel.