This shows you the differences between two versions of the page.
rl:labs:08:contents:09 [2013/11/29 10:10] razvan.deaconescu [9. [5p] Conectare SSH folosind cheie publică] |
rl:labs:08:contents:09 [2023/11/05 12:57] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 9. [5p] Conectare SSH folosind cheie publică ==== | + | ==== 09. [10p] Configurare persistentă rutare și NAT ==== |
- | Dorim să realizăm o sesiune securizată shell la distanță (//remote shell//). | + | Configurările realizate până în acest moment sunt temporare. La repornirea stației ''host'' regulile de NAT se pierd. Dorim să configurăm în mod persistent rutarea și regulile NAT. |
- | <spoiler Sumar exerciții conectare SSH (dați click)> | + | Pentru a configura în mod persistent rutarea pe stația ''host'', edităm fișierul ''/etc/sysctl.conf'' și decomentăm linia<code> |
- | Pentru exercițiile de conectare SSH, vom urma pașii: | + | net.ipv4.ip_forward=1 |
- | - Conectare folosind SSH cu chei. Totul este configurat și vedem că merge. (exercițiul [[:rl:labs:08:contents:09]]) | + | </code> Astfel la fiecarea pornire a sistemului, rutarea va fi activată. |
- | - Copiere cheie pentru conectare SSH. Cheia există și vom face apoi conectare ca mai sus. (exercițiul [[:rl:labs:08:contents:11]]) | + | |
- | - Crearea cheie, copiere și conectare SSH. (exercițiul [[:rl:labs:08:contents:12]]) | + | |
- | Urmăm pașii în acest fel pentru a urmări întâi comenzile de conectare, sintaxa SSH și rolul său și apoi să investigăm cum se întâmplă lucrurile în spate. | + | <note important> |
+ | Rutarea nu se va activa în mod automat după ce decomentați linia din fișier. Trebuie să resetați sistemul sau să rulați comanda<code bash> | ||
+ | sysctl -p | ||
+ | </code> pentru a aplica modificările din fișierul de configurare ''/etc/sysctl.conf''. | ||
+ | </note> | ||
- | În cazul în care veți avea un cont pe un server și veți dori conectare SSH cu chei, veți urma doar pasul 3. | + | Pentru a salva toate regulile ''iptables'' introduse în sistem se poate folosi comanda ''iptables-save''. În mod implicit aceste reguli sunt afișate pe consolă. Noi le vom salva în ''/etc/iptables-rules'' folosind comanda:<code bash> |
- | </spoiler> | + | root@host:~# iptables-save > /etc/iptables-rules |
+ | </code> | ||
- | Din contul ''student'' de pe stația ''red'' conectați-vă la stația ''host'' prin SSH prin rularea comenzii<code bash> | + | Regulile pot fi restaurate folosind comanda ''iptables-restore < /etc/iptables-rules''. Așadar trebuie să configurăm sistemul să execute această comanda la pornire. Modul cel mai uzual pentru a face acest lucru este adăugarea acestei comenzi în fișierul de configurare al interfeței:<code bash> |
- | student@red:~$ ssh student@host | + | root@host:~# cat /etc/network/interfaces |
[...] | [...] | ||
- | student@host:~$ | + | # The primary network interface |
- | </code> Observați faptul că v-ați conectat direct, fără parolă, întrucât autentificarea s-a realizat folosind cheie publică. Folosiți combinația de taste ''Ctrl+d'' sau comanda ''exit'' pentru a închide sesiunea de shell la distanță. | + | auto eth0 |
- | + | iface eth0 inet dhcp | |
- | Cheia publică folosită la conectare este disponibilă în fișierul ''~/.ssh/id_rsa.pub''. Pentru vizualizarea cheii rulați, pe stația ''red'' din contul utilizatorului ''student'', comanda<code bash> | + | up iptables-restore < /etc/iptables-rules |
- | student@red:~$ cat ~/.ssh/id_rsa.pub | + | |
- | ssh-rsa AAAAB3NzaC1[...] student@red | + | |
</code> | </code> | ||
- | Un alt format de comandă SSH de conectare este cel de mai jos. Pe stația ''red'' rulați comanda<code bash> | + | După ce ați făcut toate configurările, reporniți stația ''host'': |
- | student@red:~$ ssh -l student host | + | |
- | [...] | + | |
- | student@host:~$ | + | |
- | </code> La fel, închideți sesiunea de shell la distanță prin folosirea combinației de taste ''Ctrl+d''. | + | |
- | La distanță, cheia publică este stocată, împreună cu alte chei publice folosite pentru conectare, în fișierul ''~/.ssh/authorized_keys''. Rulați comanda de mai jos pentru a confirma prezența cheii publice la distanță<code bash> | + | |
- | student@red:~$ ssh -l student host "cat ~/.ssh/authorized_keys" | + | <code bash> |
- | ssh-rsa AAAAB3N[...] student@blue | + | Dashboard -> Drop Down in dreptul masinii virtuale -> Soft Reboot Instance |
- | ssh-rsa AAAAB3N[...] student@green | + | |
- | ssh-rsa AAAAB3N[...] student@red | + | |
- | ssh-rsa AAAAB3N[...] student@host | + | |
</code> | </code> | ||
- | Se observă că există cheia ''student@red'' în fișierul de la distanță de pe stația ''host'', deci se poate realiza autentificarea SSH pe bază de chei. | + | |
+ | În urma repornirii stației ''host'', va trebui sa rerulam scripturile de pregatire a infrastructurii pentru a recrea containerele. Vom vedea aplicată rutarea și regulile de NAT: (in cazul in care rutarea nu este activata, inseamna ca a fost suprascrisa de catre scripturile de pregatire a infrastructurii si va trebui s-o activati din nou)<code bash> | ||
+ | root@host:~# sysctl net.ipv4.ip_forward | ||
+ | net.ipv4.ip_forward = 1 | ||
+ | root@host:~# iptables -t nat -L -n -v | ||
+ | Chain PREROUTING (policy ACCEPT 30 packets, 5694 bytes) | ||
+ | pkts bytes target prot opt in out source destination | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 to:192.168.1.2:22 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 to:192.168.2.2:22 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 to:192.168.3.2:22 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10023 to:192.168.1.2:23 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20023 to:192.168.2.2:23 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30023 to:192.168.3.2:23 | ||
+ | |||
+ | Chain INPUT (policy ACCEPT 2 packets, 534 bytes) | ||
+ | pkts bytes target prot opt in out source destination | ||
+ | |||
+ | Chain OUTPUT (policy ACCEPT 16 packets, 958 bytes) | ||
+ | pkts bytes target prot opt in out source destination | ||
+ | |||
+ | Chain POSTROUTING (policy ACCEPT 15 packets, 918 bytes) | ||
+ | pkts bytes target prot opt in out source destination | ||
+ | 1 40 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 | ||
+ | </code> |