Hayu urang ngitung agén "Inspektur"

Ieu aya rusiah yén kontrol blocking dina daptar informasi dilarang di Rusia diawaskeun ku sistem otomatis "Inspektur". Kumaha gawéna ditulis ogé di dieu di ieu artikel ngeunaan Habr, gambar ti tempat anu sarua:

Hayu urang ngitung agén "Inspektur"

Dipasang langsung di panyadia modul "Agén Inspektur":

Modul "Agen Inspektur" mangrupikeun unsur struktural tina sistem otomatis "Inspektur" (AS "Inspektur"). Sistem ieu dirancang pikeun ngawas pamatuhan operator telekomunikasi sareng syarat larangan aksés dina kerangka katangtuan anu ditetepkeun ku Pasal 15.1-15.4 Hukum Federal 27 Juli 2006 No. 149-FZ "Dina Émbaran, Téknologi Informasi sareng Perlindungan Émbaran. ”

Tujuan utama nyiptakeun AS "Revizor" nyaéta pikeun mastikeun ngawaskeun patuh operator telekomunikasi sareng sarat anu ditetepkeun ku Artikel 15.1-15.4 tina Hukum Féderal 27 Juli 2006 No. 149-FZ "Ngeunaan Émbaran, Téknologi Informasi sareng Perlindungan Émbaran. "Dina hal ngaidentipikasi kanyataan aksés kana inpormasi anu dilarang sareng kéngingkeun bahan pendukung (data) ngeunaan palanggaran pikeun ngawatesan aksés kana inpormasi anu dilarang.

Nyandak kanyataan yén, upami henteu sadayana, maka seueur panyadia parantos dipasang alat ieu, kedahna aya jaringan panyilidikan lantera anu ageung sapertos RIPE Atlas komo deui, tapi kalawan aksés katutup. Nanging, lantera mangrupikeun lantera pikeun ngirim sinyal ka sadaya arah, tapi kumaha upami urang nyekel aranjeunna sareng ningali naon anu urang tangkap sareng sabaraha?

Sateuacan urang ngitung, hayu urang tingali naha ieu tiasa waé.

Bit téori

Agén pariksa kasadiaan sumber daya, kalebet ngalangkungan pamundut HTTP(S), sapertos kieu:

TCP, 14678  >  80, "[SYN] Seq=0"
TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

HTTP, "GET /somepage HTTP/1.1"
TCP, 80  >  14678, "[ACK] Seq=1 Ack=71"
HTTP, "HTTP/1.1 302 Found"

TCP, 14678  >  80, "[FIN, ACK] Seq=71 Ack=479"
TCP, 80  >  14678, "[FIN, ACK] Seq=479 Ack=72"
TCP, 14678  >  80, "[ACK] Seq=72 Ack=480"

Salian payload, pamundut ogé diwangun ku fase ngadegkeun sambungan: bursa SYN и SYN-ACK, sareng fase parantosan sambungan: FIN-ACK.

Daptar inpormasi anu dilarang ngandung sababaraha jinis pameungpeuk. Jelas, upami sumberdaya diblokir ku alamat IP atanapi nami domain, maka urang moal ningali pamundut naon waé. Ieu mangrupikeun jinis pameungpeuk anu paling ngaruksak, anu nyababkeun teu tiasa diakses sadaya sumber dina hiji alamat IP atanapi sadaya inpormasi dina domain. Aya ogé "ku URL" tipe blocking. Dina hal ieu, sistem nyaring kudu parse lulugu pamundut HTTP pikeun nangtukeun kahayang pikeun meungpeuk. Sareng sateuacanna, sapertos anu tiasa ditingali di luhur, kedah aya fase ngadegkeun sambungan anu anjeun tiasa nyobian ngalacak, sabab paling dipikaresep saringan bakal sono.

Jang ngalampahkeun ieu, anjeun kudu milih hiji domain bébas cocog jeung "URL" jeung tipe blocking HTTP pikeun mempermudah karya sistem nyaring, preferably lila ditinggalkeun, pikeun ngaleutikan asupna lalulintas extraneous iwal ti Agen. Tugas ieu tétéla henteu sesah, aya cukup seueur domain gratis dina daptar inpormasi anu dilarang sareng pikeun unggal rasa. Ku alatan éta, domain ieu dibeuli na numbu ka alamat IP dina VPS ngajalankeun tcpdump sarta cacah dimimitian.

Audit "Auditor"

Kuring diperkirakeun ningali bursts périodik tina requests, nu dina pamadegan mah bakal nunjukkeun aksi dikawasa. Teu mungkin mun disebutkeun yen kuring teu ningali eta pisan, tapi aya pasti euweuh gambar jelas:

Hayu urang ngitung agén "Inspektur"

Nu teu héran, sanajan dina domain nu teu saurang ogé merlukeun sarta dina IP pernah-dipaké, ngan bakal aya ton informasi unsolicited, misalna Internet modern. Tapi untungna, kuring ngan diperlukeun requests pikeun URL husus, jadi sagala scanner na crackers sandi gancang kapanggih. Ogé, éta rada gampang ngartos dimana caah ieu dumasar kana massa requests sarupa. Salajengna, kuring nyusun frékuénsi lumangsungna alamat IP sareng ngalangkungan sadayana luhur sacara manual, misahkeun jalma anu sono dina tahap sateuacana. Salaku tambahan, kuring motong sadaya sumber anu dikirim dina hiji pakét, henteu seueur deui. Sareng ieu anu kajantenan:

Hayu urang ngitung agén "Inspektur"

A digression liris leutik. Sakedap langkung ti sadinten, panyadia hosting kuring ngirim surat kalayan eusi anu rada ramping, nyatakeun yén fasilitas anjeun ngandung sumber tina daptar larangan RKN, ku kituna diblokir. Mimitina kuring ngira yén akun kuring diblokir, ieu sanés masalahna. Teras kuring ngira yén aranjeunna ngan ukur ngingetkeun kuring ngeunaan hal anu kuring parantos terang. Tapi tétéla yén hoster dihurungkeun filter na di hareup domain kuring jeung salaku hasilna kuring datang dina saringan ganda: ti panyadia jeung ti hoster nu. Saringan ngan ukur ngalangkungan tungtung pamundut: FIN-ACK и RST motong kaluar kabeh HTTP dina URL dilarang. Sakumaha anjeun tiasa tingali tina grafik di luhur, sanggeus poé kahiji kuring mimiti nampi kirang data, tapi kuring masih narima eta, nu éta cukup keur tugas cacah sumber pamundut.

Meunang ka titik. Dina pamanggih kuring, dua bursts jelas katempo unggal poe, kahiji leutik, sanggeus tengah wengi waktos Moscow, kadua ngadeukeutan ka 6 am kalawan buntut nepi ka 12 beurang. Puncak henteu lumangsung dina waktos anu sami. Mimitina, kuring hoyong milih alamat IP anu murag ngan dina période ieu sareng masing-masing dina sadaya période, dumasar kana anggapan yén pamariksaan ku Agén dilaksanakeun sacara périodik. Tapi nalika ditinjau sacara ati-ati, kuring gancang mendakan période ragrag kana interval anu sanés, kalayan frékuénsi anu sanés, dugi ka hiji pamundut unggal jam. Teras kuring mikir ngeunaan zona waktos sareng panginten éta aya hubunganana sareng aranjeunna, teras kuring ngira yén sacara umum sistem éta henteu tiasa disingkronkeun sacara global. Salaku tambahan, NAT sigana bakal maénkeun peran sareng Agén anu sami tiasa ngadamel pamundut ti IP umum anu béda.

Kusabab tujuan awal kuring henteu persis, kuring ngitung sadaya alamat anu kuring datang dina saminggu sareng ngagaduhan - 2791. Jumlah sesi TCP ngadegkeun ti hiji alamat rata-rata 4, kalawan median 2. sesi Top per alamat: 464, 231, 149, 83, 77. Maksimum ti 95% tina sampel nyaéta 8 sesi per alamat. Median teu pisan tinggi, hayu atuh ngingetan yén grafik nembongkeun periodicity poean jelas, jadi hiji bisa ngaharepkeun hal sabudeureun 4 ka 8 dina 7 poé. Lamun urang buang kaluar kabeh sesi anu lumangsung sakali, urang bakal meunang median sarua jeung 5. Tapi kuring teu bisa ngaluarkeun aranjeunna dumasar kana kriteria jelas. Sabalikna, cek acak nunjukkeun yén aranjeunna aya hubunganana sareng paménta sumber anu dilarang.

Alamat nyaéta alamat, tapi dina Internét, sistem otonom - AS, anu tétéla langkung penting 1510, rata-rata 2 alamat per AS kalawan median 1. Top alamat per AS: 288, 77, 66, 39, 27. Maksimum 95% sampel nyaéta 4 alamat per AS. Di dieu median diperkirakeun - hiji Agen per panyadia. Kami ogé ngarepkeun anu luhur - aya pamaén gedé di jerona. Dina jaringan anu ageung, Agén sigana kedah aya di unggal daérah ayana operator, sareng ulah hilap ngeunaan NAT. Upami urang nyandak ku nagara, maksimalna bakal: 1409 - RU, 42 - UA, 23 - CZ, 36 ti daérah sanés, sanés RIPE NCC. Requests ti luar Rusia narik perhatian. Ieu sigana tiasa dijelaskeun ku kasalahan geolokasi atanapi kasalahan registrar nalika ngeusian data. Atawa kanyataan yén hiji parusahaan Rusia bisa jadi teu boga akar Rusia, atawa boga kantor perwakilan asing sabab leuwih gampang, nu lumrah lamun kaayaan hiji organisasi asing RIPE NCC. Sababaraha bagian anu undoubtedly superfluous, tapi reliably hésé pikeun misahkeun eta, saprak sumberdaya nu aya dina blocking, sarta ti dinten kadua dina blocking ganda, sarta lolobana sesi téh ngan hiji bursa sababaraha pakét jasa. Hayu urang satuju yén ieu bagian leutik.

Angka ieu parantos tiasa dibandingkeun sareng jumlah panyadia di Rusia. Numutkeun RKN lisénsi pikeun "Layanan komunikasi pikeun pangiriman data, teu kaasup sora" - 6387, tapi ieu téh estimasi pisan tinggi ti luhur, teu sakabéh lisénsi ieu dilarapkeun husus ka panyadia Internet anu kudu masang Agen. Dina zona RIPE NCC aya sajumlah AS anu kadaptar di Rusia - 6230, anu henteu sadayana panyadia. UserSide ngalakukeun itungan anu langkung ketat sarta narima 3940 pausahaan di 2017, sarta ieu rada estimasi ti luhur. Bisi wae, urang boga dua satengah kali jumlah ASs cahayana. Tapi di dieu eta sia ngarti yén AS teu mastikeun sarua jeung panyadia nu. Sababaraha panyadia teu gaduh AS sorangan, sababaraha gaduh leuwih ti hiji. Lamun urang nganggap yén dulur masih boga Agén, mangka batur nyaring leuwih kuat batan batur, ku kituna requests maranéhanana teu bisa dibédakeun tina sampah, lamun aranjeunna ngahontal eta pisan. Tapi pikeun penilaian kasar éta lumayan lumayan, sanaos aya anu leungit kusabab pangawasan kuring.

Ngeunaan DPI

Sanaos kanyataan yén panyadia hosting kuring dihurungkeun saringanna ti dinten kadua, dumasar kana inpormasi ti dinten kahiji urang tiasa nyimpulkeun yén pameungpeukna parantos suksés. Ngan 4 sumber anu tiasa ngalangkungan sareng parantos réngsé sési HTTP sareng TCP (sapertos dina conto di luhur). 460 deui tiasa dikirim GET, tapi sési langsung ditungtungan ku RST. Nengetan TTL:

TTL 50, TCP, 14678  >  80, "[SYN] Seq=0"
TTL 64, TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TTL 50, TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

HTTP, "GET /filteredpage HTTP/1.1"
TTL 64, TCP, 80  >  14678, "[ACK] Seq=1 Ack=294"

#Вот это прислал фильтр
TTL 53, TCP, 14678  >  80, "[RST] Seq=3458729893"
TTL 53, TCP, 14678  >  80, "[RST] Seq=3458729893"

HTTP, "HTTP/1.1 302 Found"

#А это попытка исходного узла получить потерю
TTL 50, TCP ACKed unseen segment, 14678 > 80, "[ACK] Seq=294 Ack=145"

TTL 50, TCP, 14678  >  80, "[FIN, ACK] Seq=294 Ack=145"
TTL 64, TCP, 80  >  14678, "[FIN, ACK] Seq=171 Ack=295"

TTL 50, TCP Dup ACK 14678 > 80 "[ACK] Seq=295 Ack=145"

#Исходный узел понимает что сессия разрушена
TTL 50, TCP, 14678  >  80, "[RST] Seq=294"
TTL 50, TCP, 14678  >  80, "[RST] Seq=295"

Variasi ieu tiasa béda: kirang RST atawa leuwih retransmits - ogé gumantung kana naon filter nu ngirimkeun ka titik sumber. Dina naon waé, ieu mangrupikeun template anu paling dipercaya, anu jelas yén éta mangrupikeun sumber anu dilarang anu dipénta. Ditambah sok aya jawaban nu nembongan dina sési kalawan TTL leuwih gede ti dina bungkusan saméméhna jeung saterusna.

Anjeun malah teu bisa ningali eta ti sésana GET:

TTL 50, TCP, 14678  >  80, "[SYN] Seq=0"
TTL 64, TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"

#Вот это прислал фильтр
TTL 53, TCP, 14678  >  80, "[RST] Seq=1"

Atanapi kitu:

TTL 50, TCP, 14678  >  80, "[SYN] Seq=0"
TTL 64, TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TTL 50, TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

#Вот это прислал фильтр
TTL 53, TCP, 14678  >  80, "[RST, PSH] Seq=1"

TTL 50, TCP ACKed unseen segment, 14678 > 80, "[FIN, ACK] Seq=89 Ack=172"
TTL 50, TCP ACKed unseen segment, 14678 > 80, "[FIN, ACK] Seq=89 Ack=172"

#Опять фильтр, много раз
TTL 53, TCP, 14678  >  80, "[RST, PSH] Seq=1"
...

Bédana pasti katingali TTL lamun aya anu asalna tina saringan. Tapi sering teu aya anu tiasa sumping:

TCP, 14678  >  80, "[SYN] Seq=0"
TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TCP Retransmission, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
...

Atanapi kitu:

TCP, 14678  >  80, "[SYN] Seq=0"
TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

#Прошло несколько секунд без трафика

TCP, 80  >  14678, "[FIN, ACK] Seq=1 Ack=1"
TCP Retransmission, 80 > 14678, "[FIN, ACK] Seq=1 Ack=1"
...

Sareng sadaya ieu diulang sareng diulang sareng diulang, sapertos anu tiasa ditingali dina grafik, langkung ti sakali, unggal dinten.

Ngeunaan IPv6

Warta alus nyaéta yén éta aya. Kuring reliably bisa disebutkeun yen requests periodik ka sumberdaya dilarang lumangsung ti 5 alamat IPv6 béda, nu persis paripolah Agén nu kuring ekspektasi. Sumawona, salah sahiji alamat IPv6 henteu digolongkeun saringan sareng kuring ningali sési pinuh. Ti dua deui kuring nempo ngan hiji sési tacan beres, salah sahiji nu interrupted ku RST ti saringan, kadua dina waktosna. Jumlah total 7.

Kusabab aya sababaraha alamat, kuring diajar sadayana sacara rinci sareng tétéla aya ngan ukur 3 panyadia di dinya, aranjeunna tiasa dipasihan standing ovation! Alamat anu sanés nyaéta cloud hosting di Rusia (henteu nyaring), sanés mangrupikeun pusat riset di Jerman (aya saringan, dimana?). Tapi naha maranéhna pariksa kasadiaan sumberdaya dilarang dina jadwal hiji patarosan alus. Dua sésana dijieun hiji pamundut sarta lokasina di luar Rusia, sarta salah sahijina disaring (dina transit, sanggeus kabeh?).

Meungpeuk sareng Agén mangrupikeun halangan ageung pikeun IPv6, palaksanaan anu henteu gancang pisan. Sedih. Jalma anu ngajawab masalah ieu bisa pinuh reueus sorangan.

dina kacindekan

Kuring henteu narékahan pikeun akurasi 100%, punten ngahampura kuring pikeun ieu, kuring ngarepkeun aya anu hoyong ngulang karya ieu kalayan akurasi anu langkung ageung. Éta penting pikeun kuring ngartos naha pendekatan ieu bakal dianggo prinsipna. Jawabna enya. Angka anu diala, salaku perkiraan anu munggaran, kuring nyangka, cukup dipercaya.

Naon deui anu tiasa dilakukeun sareng naon anu kuring teu puguh nyaéta ngitung pamundut DNS. Aranjeunna teu disaring, tapi maranéhna ogé teu nyadiakeun loba akurasi saprak maranéhna ngan dianggo pikeun domain, sarta henteu pikeun sakabéh URL. Frékuénsina kedah katingali. Upami anjeun ngagabung sareng anu katingali langsung dina patarosan, ieu bakal ngamungkinkeun anjeun pikeun misahkeun anu teu perlu sareng nampi inpormasi anu langkung seueur. Malah mungkin pikeun nangtukeun pamekar DNS anu dianggo ku panyadia sareng seueur deui.

Kuring leres-leres henteu nyangka yén hoster ogé bakal ngalebetkeun saringan sorangan pikeun VPS kuring. Meureun ieu prakték umum. Tungtungna, RKN ngirimkeun pamundut pikeun ngahapus sumber daya ka hoster. Tapi ieu teu kaget kuring sarta dina sababaraha cara malah digawé pikeun kaunggulan kuring. Saringan digawé sacara efektif, motong sadaya pamundut HTTP anu leres ka URL anu dilarang, tapi henteu leres anu sateuacana ngalangkungan saringan panyadia ngahontal aranjeunna, sanaos dina bentuk tungtung: FIN-ACK и RST - minus pikeun dikurangan sareng ampir janten tambah. Ku jalan kitu, IPv6 henteu disaring ku hoster. Tangtosna, ieu mangaruhan kualitas bahan dikumpulkeun, tapi masih ngamungkinkeun pikeun nempo frékuénsi. Tétéla yén ieu mangrupikeun titik anu penting nalika milih situs pikeun nempatkeun sumber daya; ulah hilap nyandak minat kana masalah pangatur padamelan sareng daptar situs anu dilarang sareng pamundut ti RKN.

Dina awalna, kuring dibandingkeun AS "Inspektur" kalawan RIPE Atlas. Perbandingan ieu cukup diyakinkeun sareng jaringan Agen anu ageung tiasa aya mangpaatna. Contona, nangtukeun kualitas kasadiaan sumberdaya ti panyadia béda di bagian béda nagara. Anjeun tiasa ngitung telat, anjeun tiasa ngawangun grafik, anjeun tiasa nganalisis sadayana sareng ningali parobihan anu lumangsung sacara lokal sareng global. Ieu sanés cara anu paling langsung, tapi para astronom nganggo "lilin standar", naha henteu nganggo Agen? Nyaho (sanggeus kapanggih) kabiasaan baku maranéhanana, anjeun bisa nangtukeun parobahan anu lumangsung di sabudeureun éta sarta kumaha ieu mangaruhan kualitas jasa disadiakeun. Sareng dina waktos anu sami, anjeun henteu kedah nempatkeun panyilidikan dina jaringan sacara mandiri; Roskomnadzor parantos dipasang.

titik sejen Abdi hoyong noél dina éta unggal alat bisa jadi pakarang. AS "Inspektur" mangrupakeun jaringan katutup, tapi Agen nyerah dulur ku ngirim requests pikeun sakabéh sumber tina daptar dilarang. Ngagaduhan sumberdaya sapertos kitu henteu aya masalah. Dina total, panyadia liwat Agén, tanpa disadari, nyarios langkung seueur ngeunaan jaringanna tibatan anu sigana patut: DPI sareng jinis DNS, lokasi Agen (titik pusat sareng jaringan jasa?), spidol jaringan telat sareng karugian - sareng ieu. ngan nu paling atra. Sapertos aya anu tiasa ngawas tindakan Agén pikeun ningkatkeun kasadiaan sumber dayana, batur tiasa ngalakukeun ieu pikeun tujuan anu sanés sareng teu aya halangan pikeun ieu. Hasilna mangrupikeun alat dua sisi sareng multifaceted, saha waé tiasa ningali ieu.

sumber: www.habr.com

Tambahkeun komentar