COVID-19 pandemiyası və bir çox ölkələrdə tətbiq olunan kütləvi karantin səbəbindən bir çox şirkətlərin işləməyə davam etməsinin yeganə yolu internet vasitəsilə iş yerlərinə uzaqdan girişdir. Uzaqdan çalışma üçün mütləq təhlükəsiz üsullar var, lakin problemin miqyası nəzərə alındıqda, istifadəçilər üçün sadə və əlavə qurğular, izahlar, yorucu məsləhətlər və uzun təlimatlar tələb etməyən bir uzaqdan ofis bağlantısı metodu vacibdir. Ən çox adminlər tərəfindən bəyənilən RDP (Uzaqdan Masaüstü Protokolu) bu məqsəd üçün mükəmməl bir seçimdir. RDP vasitəsilə birbaşa iş yerinə qoşulmaq, bu məsələni mükəmməl həll edir, lakin tək bir böyük problem var - RDP portunu internetə açıq saxlamaq çox təhlükəsiz deyil. Buna görə də, aşağıda sadə, lakin etibarlı bir qoruma metodunu təklif edirəm.
Mikrotik cihazları vasitəsilə internetə çıxış edən kiçik təşkilatlarla tez-tez qarşılaşdığım üçün, aşağıda bu həlli necə həyata keçirmək lazım olduğunu göstərəcəyəm, lakin Port Knocking qoruma metodu daha yüksək sinifdəki digər cihazlarda da bənzər konfiqurasiyalarda asanlıqla həyata keçirilə bilər.
Port Knocking haqqında qısa məlumat. İnternete qoşulmuş şəbəkə üçün ideal xarici qoruma, bütün resursların və portların xaricdən firewall tərəfindən bağlanmasıdır. Beləliklə, firewall ilə konfiqurasiya edilmiş bir router, xaricdən gələn paketlərə heç bir reaksiya verməsə də, onları dinləyir. Buna görə də, routeri, müəyyən (kod) paket ardıcıllığı aldıqda, girişi müəyyən resurslara (portlara, protokollara və s.) açacaq şəkildə qura bilərik.
İndi işə keçək. Mikrotikdə firewall-un konfiqurasiyası ilə bağlı geniş təsvir verməyəcəyəm - internetdə bunun üçün bir çox keyfiyyətli mənbələr mövcuddur. İdeal olaraq firewall, bütün gələn paketləri bloklamalıdır, lakin
/ip firewall filter
add action=accept chain=input comment="established and related accept" connection-state=established,relatedArtıq müəyyən edilmiş (established, related) bağlantılardan gələn trafikə icazə verir.
İndi Mikrotikdə Port Knocking-u qururuq:
/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
move [/ip firewall filter find comment=RemoteRules] 1
/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389İndi daha ətraflı:
ilk iki qayda
/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRulesport skanasında qar Siyahısına düşmüş IP ünvanlarından gələn paketləri qadağan edir;
Üçüncü qayda:
add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules bu, düzgün ilk 'knock'u (birinci siqnalı) düzgün porta (19000) edən IP-ni hostlar siyahısına əlavə edir;
Sonrakı dörd qayda:
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRuleskapıları tarayanlara karşı tuzaklar oluşturur ve bu tür girişimler tespit edildiğinde IP adreslerini 60 dakikalığına kara listeye alır; bu süre zarfında ilk iki kural, bu ana bilgisayarlara doğru portlara ulaşma fırsatı vermeyecektir;
Bir sonraki kural:
add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRulesIP'yi 1 dakika boyunca izin verilenler listesine ekler (bağlantının kurulması için yeterli), çünkü gereken porta (16000) ikinci doğru vuruş yapılmıştır;
Bir sonraki komut:
move [\/ip firewall filter find comment=RemoteRules] 1kurallarımızı güvenlik duvarı işleme zincirinde yukarı taşır; çünkü muhtemelen daha önce ayarlanmış çeşitli yasaklayıcı kurallarımız olacak ve bunlar yeni oluşturduğumuz kuralların çalışmasını engelleyecektir. MikroTik'teki en eski kural sıfırdan başlar, ama cihazımda sıfır, yerleşik kural tarafından meşguldü ve diğeri taşınamazdı — ben 1'e taşıdım. Bu nedenle ayarlarımızı kontrol ediyoruz — nereye taşımak gerektiğini belirliyoruz.
Bir sonraki ayar:
/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp_to_33" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389rastgele seçilen 33890 portunu standart RDP portu 3389'a ve istediğimiz bilgisayarın veya terminal sunucusunun IP'sine yönlendirir. Bu tür kuralları gerekli olan tüm iç kaynaklar için oluşturuyoruz; dış portları farklı ve standart dışı ayarlamak iyi bir fikirdir. Elbette, iç kaynakların IP'leri ya statik olmalı ya da DHCP üzerinde sabitlenmelidir. sunucusu.
Artık MikroTik'imiz ayarlandı ve iç RDP'mize bağlanmak için kullanıcı dostu bir prosedüre ihtiyacımız var. Çoğunlukla Windows kullanıcıları olduğu için, basit bir bat dosyası oluşturuyoruz ve adını StartRDP.bat koyuyoruz:
1.htm
1.rdpve 1.htm aşağıdaki kodu içerir:
<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
saytı yeniləmək üçün RDP üzrə yenidən daxil olun
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">burada my_router.sn.mynetname.net adresinde bulunan hayali iki resmin bağlantısı vardır — bu adresi MikroTik'in DDNS sisteminden alıyoruz; bunu MikroTik'imizde etkinleştiriyoruz: IP->Cloud menüsüne giriyoruz — DDNS Enabled seçeneğini işaretliyoruz, Uygula'ya tıklıyoruz ve router'ımızın DNS ismini kopyalıyoruz. Bu yalnızca router'ın dış IP'si dinamik olduğunda veya birden fazla internet sağlayıcısıyla yapılandırma kullanıldığında gereklidir.
İlk bağlantıdaki port:19000, erişeceğimiz ilk portu temsil eder; ikinci bağlantıda ise ikincisi. Bağlantılar arasında kısa bir talimat bulunmaktadır; bu talimat, eğer bizim bağlantımız kısa ağ sorunları nedeniyle kesilirse ne yapmamız gerektiğini gösterir — sayfayı yeniliyoruz, RDP portu yeniden 1 dakika süreyle açılır ve oturumumuz yeniden bağlanır. Ayrıca, img etiketleri arasındaki metin tarayıcı için küçük bir gecikme oluşturur ve bu da ilk paketin ikinci port (16000) üzerine ulaşma olasılığını azaltır — iki hafta boyunca (30 kişi) böyle bir durum yaşanmadı.
Sonra hər kəs üçün birini tənzimləyə biləcəyimiz 1.rdp faylı gəlir, ya da hər istifadəçi üçün ayrı-ayrılıqda (mən elə etdim - kimlərinsə başa düşməməsi üçün saatlarla məsləhət verməkdən daha asandır əlavə 15 dəqiqə sərf etmək).
screen mode id:i:2
use multimon:i:1
.....
connection type:i:6
networkautodetect:i:0
.....
disable wallpaper:i:1
.....
full address:s:my_router.sn.mynetname.net:33890
.....
username:s:myuserlogin
domain:s:mydomainBuradakı maraqlı parametrlərdən biri use multimon:i:1-dir — bu, bir neçə monitorun istifadəsini aktivləşdirir — bunun mütləq lazım olduğu bəzi insanlar var, amma bunu etməyi yəqin ki, düşünməyəcəklər.
connection type:i:6 və networkautodetect:i:0 — əksər insanların interneti 10 mbit-dən yuxarı olduğu üçün əlaqə növünü 6 (10Mbit-dən yuxarı yerli şəbəkə) aktivləşdiririk və networkautodetect-i deaktiv edirik, çünki əgər default (auto) olarsa, şəbəkədəki nadir bir kiçik gecikmə avtomatik olaraq bizim seansımız üçün aşağı sürət təyin edir, bu da nəzərəçarpan gecikmələrə səbəb ola bilər, xüsusilə qrafik proqramlarda.
disable wallpaper:i:1 — masaüstü yüklemesini söndürürük.
username:s:myuserlogin — istifadəçi adını göstəririk, çünki istifadəçilərin əhəmiyyətli bir hissəsi öz adını bilmir.
domain:s:mydomain — domaini və ya kompyuterin adını göstəririk.
Amma qoşulma prosedurunu asanlaşdırmaq istəyiriksə, PowerShell-dən istifadə edə bilərik — StartRDP.ps1.
Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 19000
Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 16000
mstsc /v:my_router.sn.mynetname.net:33890Windows-da RDP müştərisi haqqında - MS protokolu və onun server və müştəri hissəsini optimallaşdırmaqda uzun bir yol keçdi, çox faydalı xüsusiyyətlər həyata keçirdi - məsələn, hardware 3D ilə işləmə, ekranın həllini sizin monitorunuza uyğunlaşdırma, çox ekrannı və s. Amma, əlbəttə ki, hamısı geri uyğunluq modunda həyata keçirilir və əgər Windows 7 müştəridirsə, amma uzaq PK Windows 10-dursa, RDP 7.0 versiyasını istifadə edərək işləyəcək. Amma yaxşıdır ki, RDP versiyalarını daha yeni versiyalara qaldırmaq mümkündür - məsələn, 7.0 (Windows 7) versiyasını 8.1-ə yüksəltmək mümkündür. Beləliklə, müştərilər üçün rahatlığı artırmaq üçün serverin versiyalarını maksimum dərəcədə qaldırmaq lazımdır, həmçinin RDP protokolunun müştəri versiyalarını yeniləməyə dair bağlantılar vermək lazımdır.
Nəticədə, biz uzaq masaüstü və ya terminal serverə birbaşa qoşulma üçün sadə və nisbətən təhlükəsiz bir texnologiya əldə edirik. Amma daha təhlükəsiz qoşulma üçün Port Knocking metodumuzu bir neçə mərhələ artıraraq çətinləşdirə bilərik, bu da yoxlama üçün portların əlavə edilməsi ilə mümkündür - eyni məntiqlə 3,4,5,6... port əlavə edə bilərik və belə halda şəbəkənizə birbaşa hücum etmək demək olar ki, mümkün olmayacaq.
.
Mənbə: habr.com
