Mete kanpe BGP pou kontoune bloke, oswa "Kijan mwen te sispann pè e mwen te tonbe damou ak RKN"

Oke, oke, sou "renmen" se yon egzajerasyon. Olye de sa, "te kapab viv ansanm ak."

Kòm ou tout konnen, depi 16 avril 2018, Roskomnadzor te bloke aksè nan resous sou Entènèt la nan yon kou trè laj, ajoute nan "Rejis Inifye nan non domèn, endis paj nan sit sou entènèt la ak adrès rezo ki pèmèt idantifye sit. sou entènèt la,” ki gen enfòmasyon distribisyon ki entèdi nan Federasyon Larisi la” (nan tèks la - jis yon rejis) pa /10 pafwa. Kòm yon rezilta, sitwayen nan Federasyon Larisi ak biznis yo ap soufri, yo te pèdi aksè a resous yo konplètman legal yo bezwen.

Apre mwen te di nan kòmantè youn nan atik yo sou Habré ke mwen te pare pou ede viktim yo ak mete kanpe yon konplo bypass, plizyè moun vin jwenn mwen mande èd sa a. Lè tout bagay te travay pou yo, youn nan yo rekòmande dekri teknik la nan yon atik. Apre kèk reflechi, mwen deside kraze silans mwen sou sit la epi eseye pou yon fwa ekri yon bagay entèmedyè ant yon pwojè ak yon pòs Facebook, i.e. abrapost. Rezilta a se devan ou.

Avètisman

Piske li pa trè legal yo pibliye fason yo kontoune bloke aksè a enfòmasyon entèdi sou teritwa a nan Federasyon Larisi la, objektif la nan atik sa a pral pale sou yon metòd ki pèmèt ou otomatize jwenn aksè nan resous ki pèmèt sou la. teritwa nan Federasyon Larisi la, men akòz aksyon yon lòt moun yo pa dirèkteman aksesib nan founisè ou a. Ak aksè nan lòt resous jwenn kòm yon rezilta nan aksyon nan atik la se yon efè segondè malere epi li se nan okenn fason objektif la nan atik la.

Epitou, depi mwen se prensipalman yon achitèk rezo pa pwofesyon, vokasyon ak chemen lavi, pwogramasyon ak Linux se pa pwen fò mwen. Se poutèt sa, nan kou, scripts yo ka ekri pi byen, pwoblèm sekirite nan VPS ka travay plis pwofondman, elatriye. Sijesyon ou yo pral aksepte ak rekonesans, si yo ase detaye - mwen pral kontan ajoute yo nan tèks la nan atik la.

TL; DR

Nou otomatize aksè a resous atravè tinèl ou ki egziste deja lè l sèvi avèk yon kopi rejis la ak pwotokòl BGP la. Objektif la se retire tout trafik ki adrese resous bloke nan tinèl la. Eksplikasyon minimòm, sitou enstriksyon etap pa etap.

Kisa ou bezwen pou sa?

Malerezman, pòs sa a pa pou tout moun. Pou itilize teknik sa a, ou pral bezwen mete plizyè eleman ansanm:

  1. Ou dwe gen yon sèvè linux yon kote deyò jaden an bloke. Oswa omwen dezi a gen tankou yon sèvè - erezman li kounye a koute soti nan $ 9 / ane, epi pètèt mwens. Metòd la tou apwopriye si ou gen yon tinèl VPN separe, Lè sa a, sèvè a ka lokalize andedan jaden an bloke.
  2. Routeur ou ta dwe entelijan ase pou kapab
    • nenpòt kliyan VPN ou renmen (mwen prefere OpenVPN, men li ka PPTP, L2TP, GRE + IPSec oswa nenpòt lòt opsyon ki kreye yon koòdone tinèl);
    • BGPv4 pwotokòl. Ki vle di ke pou SOHO li ta ka Mikrotik oswa nenpòt routeur ak OpenWRT / LEDE / menm jan firmwèr koutim ki pèmèt ou enstale Quagga oswa Bird. Sèvi ak yon routeur PC tou pa entèdi. Nan ka yon antrepriz, gade pou sipò BGP nan dokiman an pou routeur fwontyè ou a.
  3. Ou ta dwe gen yon konpreyansyon sou itilizasyon Linux ak teknoloji rezo, ki gen ladan pwotokòl BGP la. Oswa omwen vle jwenn yon lide konsa. Depi mwen pa pare pou m anbwase imansite a fwa sa a, w ap oblije etidye kèk aspè ki pa konprann pou ou poukont ou. Sepandan, mwen pral, nan kou, reponn kesyon espesifik nan kòmantè yo epi mwen se fasil yo dwe youn nan sèlman reponn, kidonk pa ezite mande.

Ki sa ki itilize nan egzanp lan

  • Yon kopi rejis la - soti nan https://github.com/zapret-info/z-i 
  • VPS - Ubuntu 16.04
  • Sèvis routage - zwazo 1.6.3   
  • routeur - Mikrotik hAP ac
  • Dosye k ap travay - depi nou ap travay kòm rasin, pi fò nan tout bagay yo pral lokalize nan katab lakay rasin lan. respektivman:
    • /root/blacklist - katab k ap travay ak script konpilasyon an
    • /root/zi - kopi rejis la soti nan github
    • /etc/bird - katab estanda pou anviwònman sèvis zwazo
  • Adrès IP ekstèn VPS la ak sèvè routage ak pwen revokasyon tinèl la se 194.165.22.146, ASN 64998; adrès IP ekstèn nan routeur la - 81.177.103.94, ASN 64999
  • Adrès IP andedan tinèl la se 172.30.1.1 ak 172.30.1.2, respektivman.

Mete kanpe BGP pou kontoune bloke, oswa "Kijan mwen te sispann pè e mwen te tonbe damou ak RKN"

Natirèlman, ou ka itilize nenpòt lòt routeurs, sistèm opere ak pwodwi lojisyèl, ajiste solisyon an nan lojik yo.

Yon ti tan - lojik solisyon an

  1. Aksyon preparatwa
    1. Jwenn yon VPS
    2. Ogmante yon tinèl soti nan routeur a VPS la
  2. Nou resevwa epi mete ajou regilyèman yon kopi rejis la
  3. Enstale ak konfigirasyon sèvis routage
  4. Nou kreye yon lis wout estatik pou sèvis routage ki baze sou rejis la
  5. Nou konekte routeur la nan sèvis la ak konfigirasyon voye tout trafik nan tinèl la.

Solisyon aktyèl la

Aksyon preparatwa

Gen anpil sèvis sou entènèt la ki bay VPS pou pri trè rezonab. Jiskaprezan mwen te jwenn epi mwen itilize opsyon a pou $ 9 / ane, men menm si ou pa deranje twòp, gen anpil opsyon pou 1E / mwa nan chak kwen. Kesyon an nan chwazi yon VPS manti pi lwen pase sijè ki abòde lan atik sa a, kidonk si yon moun pa konprann yon bagay sou sa a, mande nan kòmantè yo.

Si ou itilize yon VPS pa sèlman pou sèvis routage, men tou pou mete fen nan yon tinèl sou li, ou bezwen ogmante tinèl sa a epi, prèske sètènman, konfigirasyon NAT pou li. Gen yon gwo kantite enstriksyon sou aksyon sa yo sou entènèt la, mwen pa pral repete yo isit la. Kondisyon prensipal la pou yon tinèl konsa se ke li dwe kreye yon koòdone separe sou routeur ou a ki sipòte tinèl la nan direksyon pou VPS la. Teknoloji VPN ki pi itilize yo satisfè kondisyon sa a - pou egzanp, OpenVPN nan mòd tun pafè.

Jwenn yon kopi rejis la

Jan Jabrail te di, "Moun ki anpeche nou an ap ede nou." Piske RKN ap kreye yon rejis resous entèdi, li ta yon peche pou nou pa sèvi ak rejis sa a pou rezoud pwoblèm nou an. Nou pral resevwa yon kopi rejis la nan men github.

Nou ale nan sèvè Linux ou a, tonbe nan kontèks rasin lan (sudo su -) epi enstale git si li pa deja enstale.

apt install git

Ale nan anyè lakay ou epi rale yon kopi rejis la.

cd ~ && git clone --depth=1 https://github.com/zapret-info/z-i 

Nou mete yon ajou cron (mwen fè li yon fwa chak 20 minit, men ou ka chwazi nenpòt entèval ki enterese w). Pou fè sa nou lanse crontab -e epi ajoute liy sa a nan li:

*/20 * * * * cd ~/z-i && git pull && git gc

Nou konekte yon zen ki pral kreye dosye pou sèvis la routage apre mete ajou rejis la. Pou fè sa, kreye yon dosye /root/zi/.git/hooks/post-merge ak kontni sa a:

#!/usr/bin/env bash
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
    echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
check_run dump.csv "/root/blacklist/makebgp"

epi pa bliye fè li ègzekutabl

chmod +x /root/z-i/.git/hooks/post-merge

Nou pral kreye makebgp script ke zen an refere a yon ti kras pita.

Enstale ak konfigirasyon yon sèvis routage

Enstale zwazo. Malerezman, vèsyon zwazo ki afiche kounye a nan depo Ubuntu yo konparab nan fraîcheur ak poupou Archeopteryx, kidonk nou bezwen premye ajoute PPA ofisyèl devlopè lojisyèl yo nan sistèm nan.

add-apt-repository ppa:cz.nic-labs/bird
apt update
apt install bird

Apre sa, nou imedyatman enfim zwazo pou IPv6 - nou pa pral bezwen li nan enstalasyon sa a.

systemctl stop bird6
systemctl disable bird6

Anba a se yon dosye konfigirasyon sèvis zwazo minimalist (/etc/bird/bird.conf), ki ase pou nou (e mwen raple ou yon lòt fwa ankò ke pèsonn pa entèdi devlope ak ajiste lide a pou adapte pwòp bezwen ou)

log syslog all;
router id 172.30.1.1;

protocol kernel {
        scan time 60;
        import none;
#       export all;   # Actually insert routes into the kernel routing table
}

protocol device {
        scan time 60;
}

protocol direct {
        interface "venet*", "tun*"; # Restrict network interfaces it works with
}

protocol static static_bgp {
        import all;
        include "pfxlist.txt";
        #include "iplist.txt";
}

protocol bgp OurRouter {
        description "Our Router";
        neighbor 81.177.103.94 as 64999;
        import none;
        export where proto = "static_bgp";
        local as 64998;
        passive off;
        multihop;
}

routeur id - idantifyan routeur, ki vizyèlman sanble yon adrès IPv4, men se pa youn. Nan ka nou an, li kapab nenpòt nimewo 32-bit nan fòma adrès IPv4 la, men li se yon bon fòm pou endike egzakteman adrès IPv4 aparèy ou an (nan ka sa a, VPS).

pwotokòl dirèk defini ki entèfas ki pral travay ak pwosesis routage. Egzanp la bay yon koup nan non egzanp, ou ka ajoute lòt moun. Ou ka senpleman efase liy lan nan ka sa a, sèvè a pral koute tout interfaces ki disponib ak yon adrès IPv4.

pwotokòl estatik se maji nou an ki chaje lis prefiks ak adrès IP (ki aktyèlman / 32 prefiks, nan kou) soti nan dosye pou anons ki vin apre. Ki kote lis sa yo soti yo pral diskite anba a. Tanpri sonje ke chaje adrès IP yo kòmantè pa default, rezon ki fè sa a se gwo volim nan uploading. Pou konparezon, nan moman ekri a, gen 78 liy nan lis la nan prefiks, ak 85898 nan lis la nan adrès IP mwen rekòmande pou kòmanse ak debogaj sèlman sou lis la nan prefiks, epi si wi ou non yo pèmèt IP loading nan. lavni an se jiska ou deside apre eksperyans ak routeur ou a. Se pa tout youn nan yo ki ka fasil dijere 85 mil antre nan tab la routage.

protocol bgp, an reyalite, mete kanpe bgp peering ak routeur ou. Adrès IP a se adrès koòdone ekstèn routeur la (oswa adrès koòdone tinèl la sou bò routeur), 64998 ak 64999 se nimewo sistèm otonòm yo. Nan ka sa a, yo ka bay yo nan fòm nenpòt nimewo 16-bit, men li se bon pratik yo sèvi ak nimewo AS ki soti nan seri prive defini nan RFC6996 - 64512-65534 enklizif (gen yon fòma pou ASN 32-bit, men nan ka nou an sa a se definitivman twòp). Konfigirasyon ki dekri a itilize eBGP peering, kote nimewo sistèm otonòm sèvis routage ak routeur la dwe diferan.

Kòm ou ka wè, sèvis la bezwen konnen adrès IP routeur la, kidonk si ou gen yon adrès prive (RFC1918) dinamik oswa ki pa routable oswa pataje (RFC6598), ou pa gen opsyon pou ogmante peering sou ekstèn lan. koòdone, men sèvis la ap toujou travay andedan tinèl la.

Li klè tou ke nan yon sèl sèvis ou ka bay wout pou plizyè routeurs diferan - jis kopi anviwònman yo pou yo lè w kopye seksyon bgp pwotokòl la epi chanje adrès IP vwazen an. Se poutèt sa egzanp lan montre anviwònman pou peering deyò tinèl la, kòm pi inivèsèl la. Li fasil pou retire yo nan tinèl la lè w chanje adrès IP yo nan paramèt yo kòmsadwa.

Pwosesis rejis la pou sèvis routage

Koulye a, nou bezwen, an reyalite, yo kreye lis prefiks ak adrès IP, ki te mansyone nan pwotokòl la estatik nan etap anvan an. Pou fè sa, nou pran fichye rejis la epi fè fichye nou bezwen yo nan li lè l sèvi avèk script sa a, mete nan /root/blacklist/makebgp

#!/bin/bash
cut -d";" -f1 /root/z-i/dump.csv| tr '|' 'n' |  tr -d ' ' > /root/blacklist/tmpaddr.txt
cat /root/blacklist/tmpaddr.txt | grep / | sed 's_.*_route & reject;_' > /etc/bird/pfxlist.txt
cat /root/blacklist/tmpaddr.txt | sort | uniq | grep -Eo "([0-9]{1,3}[.]){3}[0-9]{1,3}" | sed 's_.*_route &/32 reject;_' > /etc/bird/iplist.txt
/etc/init.d/bird reload
logger 'bgp list compiled'

Pa bliye fè li ègzekutabl

chmod +x /root/blacklist/makebgp

Koulye a, ou ka kouri li manyèlman epi obsève aparans nan dosye nan /etc/bird.

Gen plis chans, zwazo pa travay pou ou nan moman sa a, paske nan etap anvan an ou te mande li pou chèche dosye ki pa t egziste ankò. Se poutèt sa, nou lanse li epi tcheke si li te kòmanse:

systemctl start bird
birdc show route

Pwodiksyon dezyèm lòd la ta dwe montre apeprè 80 dosye (sa a se pou kounye a, men lè ou mete l kanpe, tout bagay pral depann de zèl RKN nan bloke rezo a) yon bagay tankou sa a:

54.160.0.0/12      unreachable [static_bgp 2018-04-19] * (200)

Ekip

birdc show protocol

pral montre estati pwotokòl yo nan sèvis la. Jiskaske ou te configuré routeur la (gade pwochen pwen an), pwotokòl OurRouter la pral nan eta a kòmanse (Konekte oswa aktif faz), epi apre yon koneksyon siksè li pral ale nan eta a moute (etabli faz). Pou egzanp, sou sistèm mwen an pwodiksyon an nan lòd sa a sanble tankou sa a:

BIRD 1.6.3 ready.
name     proto    table    state  since       info
kernel1  Kernel   master   up     2018-04-19
device1  Device   master   up     2018-04-19
static_bgp Static   master   up     2018-04-19
direct1  Direct   master   up     2018-04-19
RXXXXXx1 BGP      master   up     13:10:22    Established
RXXXXXx2 BGP      master   up     2018-04-24  Established
RXXXXXx3 BGP      master   start  2018-04-22  Connect       Socket: Connection timed out
RXXXXXx4 BGP      master   up     2018-04-24  Established
RXXXXXx5 BGP      master   start  2018-04-24  Passive

Konekte yon routeur

Tout moun se pwobableman fatige nan li footcloth sa a, men pran kè - fen a se toupre. Anplis, nan seksyon sa a mwen pa pral kapab bay enstriksyon etap pa etap - li pral diferan pou chak manifakti.

Sepandan, mwen ka montre w yon koup nan egzanp. Lojik prensipal la se ogmante BGP peering ak bay nexthop nan tout prefiks resevwa, lonje dwèt sou tinèl nou an (si nou bezwen voye trafik atravè yon koòdone p2p) oswa adrès IP nexthop la si trafik la pral ale nan Ethernet).

Pou egzanp, sou Mikrotik nan RouterOS sa a rezoud jan sa a

/routing bgp instance set default as=64999 ignore-as-path-len=yes router-id=172.30.1.2
/routing bgp peer add in-filter=dynamic-in multihop=yes name=VPS remote-address=194.165.22.146 remote-as=64998 ttl=default
/routing filter add action=accept chain=dynamic-in protocol=bgp comment="Set nexthop" set-in-nexthop=172.30.1.1

ak nan Cisco IOS - tankou sa a

router bgp 64999
  neighbor 194.165.22.146 remote-as 64998
  neighbor 194.165.22.146 route-map BGP_NEXT_HOP in
  neighbor 194.165.22.146 ebgp-multihop 250
!
route-map BGP_NEXT_HOP permit 10
  set ip next-hop 172.30.1.1

Si yo itilize menm tinèl la tou de pou BGP peering ak pou transmèt trafik itil, li pa nesesè yo mete nexthop li pral kòrèkteman lè l sèvi avèk pwotokòl la. Men, si ou mete li manyèlman, li pa pral vin pi mal tou.

Sou lòt platfòm, w ap oblije konnen konfigirasyon an tèt ou, men si w gen nenpòt difikilte, ekri nan kòmantè yo, mwen pral eseye ede.

Apre sesyon BGP ou a te kòmanse, wout nan gwo rezo yo te rive epi yo enstale nan tablo a, trafik te koule nan adrès yo nan men yo ak kontantman se fèmen, ou ka retounen nan sèvis la zwazo epi eseye dekomantè antre la ki konekte nan. lis adrès IP, egzekite apre sa

systemctl reload bird

epi gade kijan routeur ou transfere 85 mil wout sa yo. Prepare pou debranche epi reflechi sou sa pou w fè ak li :)

Nan total

Piman teyorikman, apre w fin ranpli etap sa yo dekri pi wo a, kounye a ou gen yon sèvis ki otomatikman redireksyon trafik nan adrès IP entèdi nan Federasyon Larisi la pase sistèm nan filtraj.

Li ka, nan kou, amelyore. Pou egzanp, li se byen fasil rezime yon lis adrès IP lè l sèvi avèk solisyon perl oswa python. Yon senp script Perl ki fè sa lè l sèvi avèk Net::CIDR::Lite vire 85 mil prefiks nan 60 (pa mil), men, nan kou, kouvri yon seri adrès ki pi gwo pase yo bloke.

Piske sèvis la fonksyone nan twazyèm nivo modèl ISO/OSI a, li p ap sove w nan bloke yon sit/paj si li rezoud nan move adrès la jan yo anrejistre nan rejis la. Men, ansanm ak rejis la, dosye nxdomain.txt a soti nan github, ki ak kèk kou nan script la fasil tounen yon sous adrès pou, pou egzanp, Plugin SwitchyOmega nan Chrome.

Li nesesè tou mansyone ke solisyon an mande plis rafineman si ou pa sèlman yon itilizatè entènèt, men tou, pibliye kèk resous poukont ou (pa egzanp, yon sit entènèt oswa yon sèvè lapòs kouri sou koneksyon sa a). Lè l sèvi avèk mwayen routeur a, li nesesè estrikteman mare trafik sortan nan sèvis sa a nan adrès piblik ou a, otreman ou pral pèdi koneksyon ak resous sa yo ki kouvri pa lis la nan prefiks resevwa pa routeur la.

Si ou gen nenpòt kesyon, mande, mwen pare pou reponn.

UPD. Mèsi navion и TerAnYu pou paramèt pou git ki pèmèt diminye kantite download yo.

UPD2. Kòlèg yo, li sanble ke mwen te fè yon erè lè mwen pa ajoute enstriksyon pou mete kanpe yon tinèl ant VPS la ak routeur la nan atik la. Anpil kesyon yo soulve pa sa.
Jis nan ka, mwen pral sonje yon lòt fwa ankò ke anvan ou kòmanse gid sa a, ou te deja konfigirasyon yon tinèl VPN nan direksyon ou bezwen an epi tcheke fonksyonalite li (pa egzanp, pa vire trafik la pa default oswa estatik). Si ou poko fini faz sa a, li pa fè anpil sans pou swiv etap sa yo nan atik la. Mwen poko gen pwòp tèks mwen sou sa a, men si w google "konfigirasyon yon sèvè OpenVPN" ansanm ak non sistèm operasyon an enstale sou VPS la, ak "mete kanpe yon kliyan OpenVPN" ak non routeur ou a. , ou pral gen plis chans jwenn yon kantite atik sou sijè sa a, enkli sou Habré.

UPD3. Pa sakrifye Mwen te ekri yon kòd ki vire dump.csv nan yon dosye ki kapab lakòz pou zwazo ak rezime si ou vle nan adrès IP. Se poutèt sa, seksyon "Trasesan rejis la pou sèvis la routage" ka ranplase lè w rele pwogram li yo. https://habr.com/post/354282/#comment_10782712

UPD4. Yon ti travay sou erè (mwen pa ajoute yo nan tèks la):
1) olye de sa systemctl rechaje zwazo li fè sans pou itilize kòmandman an birdc konfigirasyon.
2) nan routeur Mikrotik la, olye pou yo chanje nexthop la nan IP dezyèm bò tinèl la. /routing filter ajoute aksyon = aksepte chèn = pwotokòl dynamic-in = bgp kòmantè = »Set nexthop » set-in-nexthop = 172.30.1.1 li fè sans pou presize wout la dirèkteman nan koòdone tinèl la, san yo pa yon adrès /routing filter ajoute aksyon = aksepte chèn = pwotokòl dynamic-in = bgp kòmantè = »Set nexthop » set-in-nexthop-direct = <non koòdone>

UPD5. Yon nouvo sèvis te parèt https://antifilter.download, ki soti nan kote ou ka ranmase lis ki pare nan adrès IP. Mizajou chak demi èdtan. Sou bò kliyan, tout sa ki rete se ankadre dosye yo ak korespondan "wout... rejte".
Ak nan pwen sa a, pwobableman, li ase ranyon grann ou ak mete ajou atik la.

UPD6. Yon vèsyon revize nan atik la pou moun ki pa vle konnen li, men ki vle kòmanse - isit la.

Sous: www.habr.com

Add nouvo kòmantè