rsync cez VPN: port démona 873 verzus režim SSH
Port 873 je vnútorná služba, ktorú tunel prenáša, nie jej náhrada. Rozlíšte režim démona od režimu SSH a potom otvorte len tú cestu, ktorú skutočne používate.
Povolenie TCP 873 na rozhraní tunela nepretlačí rsync cez OpenVPN, ani nespôsobí, že protistrana prijme modul. Tunel prenáša vnútorné spojenie, ktorého pravidlá protokolu a cieľa zostávajú presne také, aké boli. Prvá otázka teda nie je, ktorý port otvoriť, ale aký druh spojenia rsync nadväzuje. Všetko nižšie predpokladá, že tunel už beží a sporná je iba vnútorná služba.
Určite, aké spojenie rsync skutočne nadväzuje
Vzdialený argument v príkaze zvyčajne odpovie na túto otázku skôr než akákoľvek zmena firewallu. Dvojitá dvojbodka alebo schéma URL vyberá démona, zatiaľ čo jediná dvojbodka za názvom hostiteľa vyberá vzdialený shell. Čítajte argument, ktorý skutočne spúšťate, nie ten z príkladu v dokumentácii.
Výslovná voľba vzdialeného shellu môže odpoveď znova zmeniť, pretože hovorí rsyncu, ktorý program má pre transport spustiť. Čítajte celý riadok príkazu vrátane zdedených obaľovacích skriptov, nielen časť s hostiteľom.
| Remote argument | What it opens |
|---|---|
rsync://vault.corp.internal/archive/ | rsync daemon, normally TCP 873 |
vault.corp.internal::archive/ | rsync daemon, normally TCP 873 |
[email protected]:/srv/archive/ | Remote shell, normally SSH on its configured port |
Režim démona: adresa pre viazanie, modul a port
V syntaxi démona segment cesty pomenúva nakonfigurovaný modul, nie adresár na disku. Heslo modulu sa kontroluje až po prijatí spojenia a modul môže byť navyše iba na čítanie alebo skrytý z výpisu. Toto poradie je dôležité pri čítaní chyby, pretože odmietnuté spojenie a odmietnutý modul sú zlyhania v dvoch rôznych fázach. Ani jedna správa vám nepovie nič o samotnom tuneli.
Samostatného démona možno v konfiguračnom súbore pripútať k adrese tunela, čo ho drží mimo verejného rozhrania bez akéhokoľvek pravidla firewallu. Hodnota musí existovať v okamihu, keď sa démon viaže, a poslucháč aktivovaný socketom alebo riadený inetd ju môže úplne ignorovať.
address = 10.44.0.1
port = 873
[archive]
path = /srv/archive
read only = yes
Potom testujte proti súkromnej adrese, nie proti verejnému menu. Verejné meno hostiteľa sa preloží na adresu WAN a ide inou cestou, aj keď jeden stroj odpovedá na obe.
rsync --list-only rsync://10.44.0.1/archive/
Režim vzdialeného shellu: prenos nesie SSH
S jedinou dvojbodkou rsync spustí program vzdialeného shellu a hovorí jeho protokolom cez tento kanál, takže jediná dostupná služba je SSH na tom porte, na ktorom server počúva. Démon rsync nikdy nebeží, port 873 je irelevantný a rozhodnutie o prístupe sa stáva rozhodnutím o účte SSH. Vzdialená cesta je potom skutočná cesta v súborovom systéme, ktorú interpretuje shell na druhej strane. Preto zmena firewallu zameraná na 873 pre tento režim nerobí vôbec nič.
Taký návrh potrebuje oprávnený účet a overenie kľúča hostiteľa, a dedí vlastnú politiku overovania SSH. Často je to lepšia voľba, keď prenos musí prejsť cez nedôveryhodnú sieť, pretože šifrovanie patrí protokolu, ktorý bol na to postavený. Démon s výzvou na heslo nie je to isté.
Otvorte len cestu, ktorú ste si vybrali
Keď je režim stanovený, povoľte jedinú vnútornú službu na jedinom rozhraní, ktoré nesie tunel. Zúžte pravidlo podľa rozhrania, fondu zdrojov a cieľovej adresy, aby ho neskoršia zmena predvoleného zamietnutia nemohla potichu rozšíriť. Potom skontrolujte poradie pravidiel, pretože povoľujúce pravidlo skôr v reťazci robí úzke pravidlo iba dekoratívnym.
Ak démon beží na stroji za bránou VPN a nie na samotnej bráne, brána potrebuje aj cestu pre preposielanie a cieľ potrebuje vlastné povolenie a spiatočnú trasu. Otvorenie portu len na bráne vytvorí spojenie, ktoré je prijaté a potom nikam nevedie.
Overte z klienta s rovnakým režimom a cieľom, ktoré hodláte používať v produkcii. Úspešný výpis dokazuje poslucháča, trasu a pravidlo spoločne; vypršanie času ukazuje na cestu a odmietnutie na poslucháča.
ufw allow in on tun0 from 10.44.0.0/24 to 10.44.0.1 port 873 proto tcp
ss -ltnp | grep 873