Rincian tak terduga dari Windows Firewall default. Dan percobaan untuk mengkonfigurasi ulang

Kadang-kadang ternyata selama pelaksanaan proyek berikutnya, saya tidak sengaja menemukan beberapa keadaan yang, tampaknya, tidak ada yang bersembunyi, Anda bahkan dapat menemukan dokumentasi yang menjelaskan esensi ... Tetapi banyak, termasuk saya, tertahan oleh delusi, sehingga mereka tidak mencari dokumentasi itu, mengandalkan gambaran yang sepenuhnya salah tentang dunia. Saya sudah memiliki seluruh rangkaian artikel yang direncanakan, di mana saya hanya melaporkan bahwa semuanya ternyata tidak seperti yang dipikirkan banyak orang (termasuk saya). Saya punya artikel tentang DMA , ada artikel tentang kinerja bus PCI Express . Artikel tentang konfigurasi ROM untuk FPGA Altera dapat dirujuk ke siklus yang sama .



Hari ini saya ingin memberi tahu Anda beberapa kata tentang cara kerja Windows Firewall, atau, seperti yang disebut di Russified OS, firewall. Secara umum, ini adalah hal yang sangat bagus, tetapi secara khusus ... Ternyata secara default ini berfungsi dalam mode yang agak menarik. Seperti kata pepatah: "Dan anak laki-laki tidak tahu." Jadi, kita mulai mencari tahu apa itu.









pengantar



Pertama, saya akan menjelaskan inti dari masalah yang saya pecahkan. Saya harus memeriksa bagaimana papan berikutnya bekerja dengan benar dengan layanan Semua Perangkat Keras kami. Tapi bukan yang saya periksa di salah satu artikel sebelumnya , tetapi lebih canggih, dengan Xilinx FPGA.



Apa itu layanan Semua Perangkat Keras. Ini adalah situs yang dikunjungi pengguna, masuk dan menerima daftar berbagai papan yang secara fisik terletak di server. Kenapa dia melakukan ini? Untuk bekerja dengan papan tanpa membelinya. Misalnya, lihat apakah itu berfungsi untuknya, atau hanya berlatih bekerja dengan pengontrol tertentu. Papan disediakan oleh pabrikan, dan layanan menyediakan sesi waktu terbatas dengan mereka. Pengguna memilih papan dari daftar dan mendapatkan tiga hal: alamat IP, nomor port dan video dari kamera yang melihat tata letak ini. Faktanya, Anda masih dapat meneruskan port melalui SSH di sana, tetapi saya bukan ahli di dalamnya. Di pihak saya - tepatnya alamat, port dan video.



Selanjutnya, pengguna di lingkungan pengembangan, yang ada di mesin lokalnya, harus memilih debugger jarak jauh (untuk sebagian besar lingkungan, ini adalah GDB lama yang baik, untuk Keil itu lebih buruk, tetapi jika Anda tertarik, Anda dapat membuat artikel terpisah tentang ini, ini tidak berlaku untuk firewall). IP dan port yang dikeluarkan didorong di sana, setelah itu Anda dapat memulai sesi debugging jarak jauh, dengan fokus pada apa yang terjadi dengan papan melalui gambar dari kamera dan oleh port yang diteruskan melalui SSH.



Dengan demikian, siapa pun dapat merasakan pekerjaan dengan berbagai papan pengembangan tanpa membelinya. Pada saat yang sama, seperti dalam kasus Redd, lingkungan pengembangan dan kode sumber dihosting di mesin lokal. Hanya kode biner yang masuk ke server. Tetapi setelah sesi berakhir, otomatisasi menghapus ROM, sehingga pengguna berikutnya tidak dapat lagi membaca kodenya.



Jadi, kembali ke topik artikel. Apa sisi firewall di sini? Itu mudah. Saya harus bekerja dengan FPGA Xilinx. Dan lingkungan pengembangan mereka secara resmi adalah WebTalk. Saya tidak ingin dia melaporkan tindakan saya "di tempat yang seharusnya", jadi lingkungan berada di komputer yang tidak terhubung ke jaringan. Bahkan jika dia benar-benar ingin - tangannya pendek. Tidak ada saluran fisik dan hanya itu! Namun konsep dari layanan All Hardware adalah harus ada jaringan. Untuk mengujinya, mobil harus disambungkan sementara ke kabel (sebenarnya, kurangnya jaringan lebih merupakan kebiasaan, masih tidak ada yang menarik pada mobil itu). Apa yang harus dilakukan? Menginjak tenggorokan paranoia Anda? Ya, saya tidak! Saya memutuskan untuk membatasi daftar alamat yang diizinkan ke lingkungan pengembangan sehingga hanya dapat bekerja dengan localhost dan server Semua Perangkat Keras. Saya tidak tahu apa yang akan terjadi selanjutnyadan sekarang server Semua Perangkat Keras memiliki alamat IP yang sama. Hanya saja pelabuhan baru dikeluarkan dari sesi ke sesi. Jadi, tujuannya jelas, mari kita turun ke implementasi.



Firewall mana yang harus diambil?



Pada Windows XP dan Windows 7, saya menggunakan Outpost Firewall. Ini adalah pembangunan dalam negeri. Sangat andal dan nyaman. Saya bahkan membeli lisensi seumur hidup untuk tiga mobil yang habis. Setelah firewall ini membantu saya mengidentifikasi Trojan yang belum pernah dilihat oleh antivirus. Ketika saya dapat mengambil file dengan badan virus, saya memasukkannya ke beberapa antivirus yang disediakan di LiveCD. Tidak ada yang memperhatikan sesuatu yang mencurigakan. Dan firewall saya hanya dalam mode paranoid, tempat saya mengetahui tentang aktivitas program yang mencurigakan.



Semuanya baik-baik saja sampai produsen firewall ini ditutup dalam keadaan yang aneh. Setelah itu, saya menjadi sangat sedih. Saya sangat sedih karena laptop utama saya masih memiliki 7 dengan Outpost, karena saya tidak mencari penggantinya. Tetapi Xilinx IDE menginginkan sepuluh besar! Sempurna! Jadi, sekarang saatnya mempelajari cara bekerja dengan firewall yang ada di dalam OS ini!



Kita semua tahu bahwa ketika suatu program mencoba mengakses jaringan, firewall standar ini menanyakan kepada kita apakah akan mengizinkannya bekerja dengan jaringan atau tidak. Kami dapat segera melarang, atau kami dapat menghapus centang pada kotak izin setelah, ada banyak panduan tentang ini di jaringan. Kotak centang ini adalah:







Semua orang tahu itu. Tapi apa nilai pengetahuan ini? Saya akan menghilangkan pikiran saya yang menguasai saya ketika membaca massa jenis artikel yang sama "bagaimana melarang aplikasi online", yang tidak memberi tahu bagaimana tidak melarangnya, tetapi hanya membatasinya. Saya lebih suka menunjukkan kesimpulan saya menggunakan contoh yang dibuat khusus untuk ini. Mari kita tulis dua aplikasi konsol yang paling sederhana.



Server



Aplikasi pertama akan berpura-pura menjadi server. Dibutuhkan paket UDP yang berisi string dan menampilkannya di layar. Agar kita bisa membicarakan hal yang sama, berikut adalah kode sumber C ++:

#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;
}


Kami meluncurkan program ini, meneruskan nomor port (katakanlah, 1234) sebagai argumen dan dapat diprediksi menerima permintaan dari firewall:







Biarkan dia aktivitas jaringan ... Biarkan dia menunggu sebentar, dan kami akan menulis bagian klien sebagai EXE lain.



Klien



Biarkan klien kami mengirim baris dengan tongkat pemintal ke server. Ini teksnya:

#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);
	}

}


Kami mulai dengan menentukan alamat server dan port yang dimiliki server (saya memilikinya 192.168.1.95 dan 1234), setelah itu yang sedikit berbeda mulai berjalan di jendela server dari yang saya inginkan, tetapi tetap saja:







Tapi yang mengkhawatirkan saya bukanlah simbolnya "\ R" tidak mengembalikan kereta ke awal baris, tetapi fakta bahwa klien adalah proses yang terpisah ... Diluncurkan dari file yang sepenuhnya terpisah! .. Dan firewall tidak meminta izin saya untuk aktivitas jaringan. Sebaliknya, dia menyelesaikannya sendiri, bahkan tanpa memberi tahu saya bahwa program itu akan pergi ke suatu tempat. Bagaimana?



Sedikit teori tentang mode operasi firewall



Di sini kita sampai pada inti dari artikel tersebut.

, Windows- , . , , - ( ), , , !


Sebenarnya, berikut adalah pengaturan firewall yang sesuai: Apa pun







yang tidak dilarang diperbolehkan. Aplikasi dapat secara eksplisit menolak aktivitas. Inilah yang dikhususkan untuk sejumlah besar artikel di Internet ... Tetapi Trojan akan naik ke mobil kita tanpa disadari, kita tidak akan menebak apa sebenarnya yang harus dimasukkan ke dalam aplikasi terlarang. Sekali lagi, ini tidak menyelesaikan masalah saya yang disajikan dalam pengantar artikel. Saya harus meninggalkan akses ke alamat-alamat yang saya izinkan dan menolak semua yang lain.



Untuk melakukan ini, Anda perlu mengalihkan firewall ke mode "dilarang semua yang tidak diizinkan" untuk koneksi keluar. Saya selalu bingung bagaimana cara memasukkan item menu yang sesuai ... Ya, saya menemukannya ...







Dan di sana kami pertama-tama memilih tab yang sesuai dengan profil aktif (di gambar saya itu adalah "Profil umum", dan kemudian alihkan daftar pilihan "Koneksi keluar" dari "Izinkan (default)" ke "Blokir."







Itu saja, bisakah kita tidur nyenyak? Aduh? , tidak. Jika sesederhana itu, saya yakin Microsoft akan segera memilih mode "Blokir" untuk semua orang. Sayang sekali, tetapi semuanya baru saja dimulai.



Sedikit tentang masokisme terapan



Begitu. Katakanlah Anda mengaktifkan mode pemblokiran untuk pesan keluar ... Semuanya langsung mati, termasuk browser. Secara umum, tidak ada yang mengganggu kapan pun untuk mengembalikan pilihan ke posisi lama dan memutar kembali ke versi asli. Tapi mari kita lihat apa yang diberikan rezim baru kepada kita secara umum. Kami mendapatkan daftar aturan. Dan untuk aturan ini, Anda bisa menyetel kondisi izin tanpa syarat, atau Anda bisa menyetel daftar port terbuka dan daftar alamat terbuka untuk aplikasi. Alamat dapat ditetapkan sebagai grup. Ini adalah jendela pengaturan port:







Ini adalah jendela pengaturan alamat:











Selain itu, tidak ada yang mau membuka port untuk program apa pun, membatasi daftar alamat yang valid untuk itu. Artinya, kami tidak mengatakan "Program ini dan itu untuk mengizinkan akses ke port ini dan itu", tetapi "Semua program yang bekerja melalui port ini dan itu, mengizinkan pekerjaan, membatasi alamat ke grup berikutnya."



Semuanya bagus kecuali satu hal. Jika daftar aturan untuk koneksi masuk dibuat oleh sistem, maka untuk koneksi keluar Anda perlu menambahkan semuanya sendiri. Seperti yang saya katakan, browser saya mati - saya harus menambahkannya sendiri ke kotak keluar yang diizinkan. Saya tidak akan menjelaskan bagaimana alamat dikonfigurasi, ini bukan artikelnya. Artikel tentang menetapkan aturan (untuk tujuan memblokir, bagaimanapun) adalah selusin sepeser pun. Secara umum, saya biasanya menemukan aturan yang cocok untuk masuk, menyalin nama file dari sana, dan kemudian - membuat aturan untuk keluar, menunjuk ke file yang sama. Nah, dan biarkan program ini aktif.



Ketika saya mengalami masalah dengan koneksi ke VPN di kantor, saya meneliti daftar aturan yang sudah jadi dan menemukan ini (saya tahu sebelumnya bahwa koneksi VPN kami dibuat menggunakan protokol L2TP):







Aturan dibuat untuk kami, tetapi tidak diaktifkan. Saya masuk ke propertinya, mengaktifkannya, setelah itu bola hijau dengan tanda centang muncul di sebelah kiri dalam daftar, dan koneksi VPN ke kantor berfungsi.



Tetapi dengan satu atau lain cara, tetapi secara umum, bekerja dengan firewall seperti itu merupakan pukulan masokisme. Anda harus memiliki kemauan yang kuat agar tidak berteriak: "Dan ini semua lelah" dan tidak kembali ke cara kerja yang lama. Saya hampir mencapai keadaan ini (untungnya, eksperimen dengan Xilinx untuk Semua Perangkat Keras telah selesai), tetapi salah satu teman saya menyarankan solusi yang bagus untuk saya.



Add-on melalui firewall standar



Ternyata ada program Windows Firewall Control gratis yang resmi.







Itu tidak melakukan apa-apa dengan sendirinya, itu hanya mengelola firewall yang dibangun ke dalam Windows, menyediakan antarmuka yang sangat ramah pengguna. Sekarang Anda tidak perlu menjalankan banyak menu untuk menyesuaikan sesuatu. Semua pengaturan dikumpulkan dengan nyaman dan kompak di beberapa tab. Saya tidak akan menjelaskan semua fungsi program ini. Tujuan artikel ini bukan untuk mendeskripsikannya, melainkan hanya untuk menandai keberadaannya. Lebih lanjut - setiap orang dapat menemukan artikel khusus, mengetahui nama Kontrol Firewall Windows.



Dan sekarang, ketika memulai bagian klien dari contoh di atas, saya akhirnya menerima pesan:







Saya dapat memberinya akses, setelah itu aturan akan dibuat secara otomatis, saya dapat menolak akses, saya dapat memblokir aplikasi sekali.



Demi kepentingan, saya menemukan aturan yang dibuat secara otomatis dalam daftar firewall standar dan membatasi daftar alamat yang tersedia untuknya:







Secara umum, hidup dengan aplikasi ini menjadi lebih mudah bahkan ketika menggunakan Windows Firewall standar. Jauh lebih baik bahwa mesin Windows 10 ini tetap online, bukannya tidak berdaya seperti sebelumnya.



Kesimpulan



Windows Firewall standar bekerja secara default dalam mode sedemikian rupa sehingga program apa pun dapat mulai mengirim data, yang bahkan tidak akan diberitahukan kepada pengguna. Tidak ada yang menyembunyikan ini, tapi tidak semua orang tahu tentang itu. Anda dapat, tentu saja, memasang firewall pihak ketiga, tetapi itu cukup untuk mengalihkan Windows Firewall standar ke mode "terlarang semua yang tidak diizinkan". Sayangnya, ternyata sangat mendukung kinerja jaringan dengan cara biasa. Tetapi pihak ketiga, secara resmi freeware Windows Firewall Control menghilangkan ketidaknyamanan ini.



Apakah Anda akan menggunakan bundel dari firewall biasa dan program ini, atau mendapatkan firewall pihak ketiga, pertanyaannya terbuka. Tetapi fakta bahwa menggunakan firewall standar dalam mode default agak menakutkan, menurut saya, tidak diragukan lagi.



All Articles