Πρακτικές συμβουλές, παραδείγματα και σήραγγες SSH

Πρακτικές συμβουλές, παραδείγματα και σήραγγες SSH
Πρακτικά παραδείγματα SSHπου θα οδηγήσει τις δεξιότητές σας ως απομακρυσμένου διαχειριστή συστήματος σε ένα νέο επίπεδο. Οι εντολές και οι συμβουλές θα βοηθήσουν όχι μόνο στη χρήση SSH, αλλά και να πλοηγηθείτε στο δίκτυο πιο έξυπνα.

Γνωρίζοντας μερικά κόλπα ssh χρήσιμο σε οποιονδήποτε διαχειριστή συστήματος, μηχανικό δικτύου ή επαγγελματία ασφαλείας.

Πρακτικά παραδείγματα SSH

  1. SSH socks proxy
  2. σήραγγα SSH (προώθηση θύρας)
  3. Σήραγγα SSH στον τρίτο κεντρικό υπολογιστή
  4. Αντίστροφη σήραγγα SSH
  5. SSH Reverse Proxy
  6. Εγκατάσταση VPN μέσω SSH
  7. Αντιγραφή κλειδιού SSH (ssh-copy-id)
  8. Απομακρυσμένη εκτέλεση εντολών (μη διαδραστική)
  9. Απομακρυσμένη λήψη και προβολή πακέτων με το Wireshark
  10. Αντιγραφή τοπικού φακέλου σε απομακρυσμένο διακομιστή μέσω SSH
  11. Απομακρυσμένες εφαρμογές GUI με SSH X11 Forwarding
  12. Απομακρυσμένη αντιγραφή αρχείων με rsync και SSH
  13. SSH μέσω του δικτύου Tor
  14. Περίπτωση SSH σε EC2
  15. Επεξεργασία αρχείων κειμένου με VIM μέσω ssh/scp
  16. Τοποθέτηση απομακρυσμένου SSH ως τοπικού φακέλου με SSHFS
  17. Πολυπλεξία SSH με ControlPath
  18. Ροή βίντεο μέσω SSH με VLC και SFTP
  19. Έλεγχος ταυτότητας δύο παραγόντων
  20. Host hopping με SSH και -J
  21. Αποκλεισμός προσπαθειών brute force SSH με iptables
  22. SSH Escape για αλλαγή της προώθησης θύρας

Πρώτα τα βασικά

Ανάλυση γραμμής εντολών SSH

Το παρακάτω παράδειγμα χρησιμοποιεί κοινές επιλογές που συναντώνται συχνά κατά τη σύνδεση σε έναν απομακρυσμένο διακομιστή SSH.

localhost:~$ ssh -v -p 22 -C neo@remoteserver

  • -v: Η έξοδος εντοπισμού σφαλμάτων είναι ιδιαίτερα χρήσιμη κατά την ανάλυση προβλημάτων ελέγχου ταυτότητας. Μπορεί να χρησιμοποιηθεί πολλές φορές για την εμφάνιση πρόσθετων πληροφοριών.
  • - p 22: θύρα σύνδεσης σε έναν απομακρυσμένο διακομιστή SSH. Το 22 δεν χρειάζεται να καθοριστεί, επειδή αυτή είναι η προεπιλεγμένη τιμή, αλλά εάν το πρωτόκολλο βρίσκεται σε κάποια άλλη θύρα, τότε το καθορίζουμε χρησιμοποιώντας την παράμετρο -p. Η θύρα ακρόασης καθορίζεται στο αρχείο sshd_config σε μορφή Port 2222.
  • -C: συμπίεση για σύνδεση. Εάν έχετε αργό κανάλι ή προβάλλετε πολύ κείμενο, αυτό μπορεί να επιταχύνει τη σύνδεση.
  • neo@: Η γραμμή πριν από το σύμβολο @ υποδεικνύει το όνομα χρήστη για έλεγχο ταυτότητας στον απομακρυσμένο διακομιστή. Εάν δεν το καθορίσετε, θα είναι από προεπιλογή το όνομα χρήστη του λογαριασμού στον οποίο είστε συνδεδεμένοι αυτήν τη στιγμή (~$ whoami). Ο χρήστης μπορεί επίσης να καθοριστεί με την παράμετρο -l.
  • remoteserver: όνομα του κεντρικού υπολογιστή στον οποίο θα συνδεθείτε ssh, μπορεί να είναι ένα πλήρως αναγνωρισμένο όνομα τομέα, μια διεύθυνση IP ή οποιοσδήποτε κεντρικός υπολογιστής στο αρχείο τοπικών κεντρικών υπολογιστών. Για να συνδεθείτε σε έναν κεντρικό υπολογιστή που υποστηρίζει και IPv4 και IPv6, μπορείτε να προσθέσετε την παράμετρο της γραμμής εντολών -4 ή -6 για σωστή ανάλυση.

Όλες οι παραπάνω παράμετροι είναι προαιρετικές εκτός remoteserver.

Χρήση αρχείου διαμόρφωσης

Αν και πολλοί είναι εξοικειωμένοι με το αρχείο sshd_config, υπάρχει επίσης ένα αρχείο ρυθμίσεων πελάτη για την εντολή ssh. Προεπιλεγμένη τιμή ~/.ssh/config, αλλά μπορεί να οριστεί ως παράμετρος σε μια επιλογή -F.

Host *
     Port 2222

Host remoteserver
     HostName remoteserver.thematrix.io
     User neo
     Port 2112
     IdentityFile /home/test/.ssh/remoteserver.private_key

Το παραπάνω παράδειγμα αρχείου διαμόρφωσης ssh έχει δύο καταχωρήσεις κεντρικού υπολογιστή. Το πρώτο δείχνει όλους τους κεντρικούς υπολογιστές, για όλους εφαρμόζεται η παράμετρος διαμόρφωσης Port 2222. Το δεύτερο λέει ότι για τον κεντρικό υπολογιστή απομακρυσμένο διακομιστή θα πρέπει να χρησιμοποιήσετε διαφορετικό όνομα χρήστη, θύρα, FQDN και IdentityFile.

Ένα αρχείο διαμόρφωσης μπορεί να εξοικονομήσει πολύ χρόνο πληκτρολόγησης χαρακτήρων επιτρέποντας την αυτόματη εφαρμογή σύνθετων ρυθμίσεων κατά τη σύνδεση σε συγκεκριμένους κεντρικούς υπολογιστές.

Αντιγραφή αρχείων μέσω SSH χρησιμοποιώντας SCP

Ο πελάτης SSH συνοδεύεται από δύο άλλα πολύ εύχρηστα εργαλεία για την αντιγραφή αρχείων κρυπτογραφημένη σύνδεση ssh. Παρακάτω είναι ένα παράδειγμα τυπικής χρήσης των εντολών scp και sftp. Σημειώστε ότι πολλές από τις επιλογές για το ssh ισχύουν και για αυτές τις εντολές.

localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png

Σε αυτό το παράδειγμα το αρχείο mypic.png αντιγράφηκε σε απομακρυσμένο διακομιστή σε ένα φάκελο /μέσα/δεδομένα και μετονομάστηκε σε mypic_2.png.

Μην ξεχνάτε τη διαφορά στην παράμετρο της θύρας. Σε αυτό συναντούν πολλούς που εκτοξεύουν scp από τη γραμμή εντολών. Εδώ είναι η παράμετρος της θύρας -Pαλλά όχι -pόπως στο ssh client! Θα ξεχάσεις, αλλά μην ανησυχείς, όλοι ξεχνάνε.

Για όσους γνωρίζουν την κονσόλα ftp, πολλές από τις εντολές είναι παρόμοιες στο sftp. Μπορείτε να κάνετε ώθηση, βάζω и lsόπως θέλει η καρδιά σου.

sftp neo@remoteserver

Πρακτικά παραδείγματα

Σε πολλά από αυτά τα παραδείγματα, το αποτέλεσμα μπορεί να επιτευχθεί με διαφορετικές μεθόδους. Όπως σε όλα μας σχολικά βιβλία και παραδείγματα, δίνεται προτίμηση σε πρακτικά παραδείγματα που απλώς κάνουν το κόλπο.

1. SSH socks proxy

Η δυνατότητα SSH Proxy είναι νούμερο 1 για καλό λόγο. Είναι πιο ισχυρό από όσο πιστεύουν οι περισσότεροι και σας δίνει πρόσβαση σε οποιοδήποτε σύστημα στο οποίο έχει πρόσβαση ένας απομακρυσμένος διακομιστής, χρησιμοποιώντας σχεδόν οποιαδήποτε εφαρμογή. Ένας πελάτης ssh μπορεί να διοχετεύσει την κυκλοφορία μέσω ενός διακομιστή μεσολάβησης SOCKS με μια απλή εντολή. Είναι σημαντικό να κατανοήσουμε ότι η κίνηση σε απομακρυσμένα συστήματα θα προέρχεται από έναν απομακρυσμένο διακομιστή, όπως θα υποδεικνύεται στα αρχεία καταγραφής του διακομιστή web.

localhost:~$ ssh -D 8888 user@remoteserver

localhost:~$ netstat -pan | grep 8888
tcp        0      0 127.0.0.1:8888       0.0.0.0:*               LISTEN      23880/ssh

Εδώ ξεκινάμε ένα socks proxy στη θύρα TCP 8888, η δεύτερη εντολή ελέγχει ότι η θύρα είναι ενεργή στη λειτουργία ακρόασης. 127.0.0.1 ορίζει ότι η υπηρεσία εκτελείται μόνο σε localhost. Μπορούμε να χρησιμοποιήσουμε μια ελαφρώς διαφορετική εντολή για ακρόαση σε όλες τις διεπαφές, συμπεριλαμβανομένου του ethernet ή του wifi, αυτό θα επιτρέψει σε άλλες εφαρμογές (προγράμματα περιήγησης κ.λπ.) στο δίκτυό μας να συνδεθούν στην υπηρεσία διακομιστή μεσολάβησης μέσω του διακομιστή μεσολάβησης ssh socks.

localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver

Τώρα μπορούμε να διαμορφώσουμε το πρόγραμμα περιήγησης ώστε να συνδέεται με το socks proxy. Στον Firefox επιλέξτε Ρυθμίσεις | Κύρια | Ρυθμίσεις δικτύου. Καθορίστε τη διεύθυνση IP και τη θύρα στην οποία θα συνδεθείτε.

Πρακτικές συμβουλές, παραδείγματα και σήραγγες SSH

Δώστε προσοχή στην επιλογή στο κάτω μέρος της φόρμας, ώστε τα ερωτήματα DNS του προγράμματος περιήγησης να περάσουν επίσης από τον διακομιστή μεσολάβησης SOCKS. Εάν χρησιμοποιείτε διακομιστή μεσολάβησης για την κρυπτογράφηση της κυκλοφορίας ιστού στο τοπικό σας δίκτυο, τότε πιθανότατα θα θέλετε να ορίσετε αυτήν την επιλογή έτσι ώστε τα ερωτήματα DNS να διοχετεύονται μέσω της σύνδεσης SSH.

Ενεργοποίηση διακομιστή μεσολάβησης κάλτσες στο Chrome

Η εκτέλεση του Chrome με ορισμένες επιλογές γραμμής εντολών θα ενεργοποιήσει τον διακομιστή μεσολάβησης κάλτσες καθώς και τη διοχέτευση αιτημάτων DNS από το πρόγραμμα περιήγησης. Εμπιστευτείτε αλλά ελέγξτε. Χρήση tcpdump για να ελέγξετε ότι τα αιτήματα DNS δεν είναι πλέον ορατά.

localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"

Χρήση άλλων εφαρμογών με διακομιστή μεσολάβησης

Λάβετε υπόψη ότι πολλές άλλες εφαρμογές μπορούν επίσης να χρησιμοποιούν socks proxies. Το πρόγραμμα περιήγησης ιστού είναι απλώς το πιο δημοφιλές από όλα. Ορισμένες εφαρμογές έχουν επιλογές διαμόρφωσης για την ενεργοποίηση ενός διακομιστή μεσολάβησης. Άλλοι χρειάζονται λίγη βοήθεια με ένα βοηθητικό πρόγραμμα. Για παράδειγμα, proxychains σας επιτρέπει να εκτελέσετε μέσω socks-proxy Microsoft RDP, κ.λπ.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

Οι παράμετροι διαμόρφωσης διακομιστή μεσολάβησης κάλτσες ορίζονται στο αρχείο διαμόρφωσης των αλυσίδων μεσολάβησης.

Συμβουλή: εάν χρησιμοποιείτε απομακρυσμένη επιφάνεια εργασίας από Linux σε Windows; Δοκιμάστε το Client FreeRDP. Αυτή είναι μια πιο σύγχρονη εφαρμογή από rdesktop, με πολύ πιο ομαλή αλληλεπίδραση.

Επιλογή χρήσης SSH μέσω διακομιστή μεσολάβησης κάλτσες

Κάθεστε σε ένα καφέ ή ξενοδοχείο - και αναγκάζεστε να χρησιμοποιήσετε μάλλον αναξιόπιστο WiFi. Από τον φορητό υπολογιστή, εκκινούμε έναν διακομιστή μεσολάβησης ssh τοπικά και ρυθμίζουμε μια σήραγγα ssh στο οικιακό δίκτυο στο τοπικό Rasberry Pi. Χρησιμοποιώντας ένα πρόγραμμα περιήγησης ή άλλες εφαρμογές που έχουν διαμορφωθεί για διακομιστή μεσολάβησης κάλτσες, μπορούμε να έχουμε πρόσβαση σε οποιεσδήποτε υπηρεσίες δικτύου στο οικιακό μας δίκτυο ή να συνδεθούμε στο διαδίκτυο μέσω της οικιακής μας σύνδεσης. Τα πάντα μεταξύ του φορητού υπολογιστή σας και του διακομιστή του σπιτιού σας (μέσω Wi-Fi και Διαδικτύου στο σπίτι σας) είναι κρυπτογραφημένα σε μια σήραγγα SSH.

2. σήραγγα SSH (προώθηση θύρας)

Στην απλούστερη μορφή του, μια σήραγγα SSH απλώς ανοίγει μια θύρα στο τοπικό σας σύστημα που συνδέεται με μια διαφορετική θύρα στο άλλο άκρο της σήραγγας.

localhost:~$ ssh  -L 9999:127.0.0.1:80 user@remoteserver

Ας αναλύσουμε την παράμετρο -L. Μπορεί να θεωρηθεί ως η τοπική πλευρά ακρόασης. Έτσι, στο παραπάνω παράδειγμα, η θύρα 9999 ακούει από την πλευρά του localhost και προωθείται στη θύρα 80 στον απομακρυσμένο διακομιστή. Σημειώστε ότι το 127.0.0.1 αναφέρεται σε localhost στον απομακρυσμένο διακομιστή!

Ας ανεβούμε τις σκάλες. Το ακόλουθο παράδειγμα συνδέει τις θύρες ακρόασης με άλλους κεντρικούς υπολογιστές στο τοπικό δίκτυο.

localhost:~$ ssh  -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver

Σε αυτά τα παραδείγματα, συνδέουμε μια θύρα του διακομιστή web, αλλά αυτή θα μπορούσε να είναι ένας διακομιστής μεσολάβησης ή οποιαδήποτε άλλη υπηρεσία TCP.

3. Σήραγγα SSH σε κεντρικό υπολογιστή τρίτου μέρους

Μπορούμε να χρησιμοποιήσουμε τις ίδιες επιλογές για τη διέλευση από έναν απομακρυσμένο διακομιστή σε μια άλλη υπηρεσία που εκτελείται σε ένα τρίτο σύστημα.

localhost:~$ ssh  -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver

Σε αυτό το παράδειγμα, προωθούμε μια σήραγγα από απομακρυσμένο διακομιστή σε διακομιστή ιστού που εκτελείται στις 10.10.10.10. Κυκλοφορία από απομακρυσμένο διακομιστή έως 10.10.10.10 όχι πλέον στη σήραγγα SSH. Ο διακομιστής ιστού στις 10.10.10.10 θα θεωρήσει ότι ο απομακρυσμένος διακομιστής είναι η πηγή των αιτημάτων Ιστού.

4. Αντίστροφη σήραγγα SSH

Εδώ θα ρυθμίσουμε μια θύρα ακρόασης στον απομακρυσμένο διακομιστή που θα συνδέεται ξανά σε μια τοπική θύρα του τοπικού μας κεντρικού υπολογιστή (ή άλλου συστήματος).

localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserver

Αυτή η συνεδρία SSH δημιουργεί μια σύνδεση από τη θύρα 1999 στον απομακρυσμένο διακομιστή στη θύρα 902 στον τοπικό πελάτη μας.

5. SSH Reverse Proxy

Σε αυτήν την περίπτωση, ρυθμίζουμε ένα socks proxy στη σύνδεσή μας ssh, ωστόσο ο διακομιστής μεσολάβησης ακούει στο απομακρυσμένο άκρο του διακομιστή. Οι συνδέσεις σε αυτόν τον απομακρυσμένο διακομιστή μεσολάβησης βγαίνουν τώρα από τη σήραγγα ως κίνηση από τον τοπικό μας κεντρικό υπολογιστή.

localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver

Αντιμετώπιση προβλημάτων απομακρυσμένων σηράγγων SSH

Εάν αντιμετωπίζετε προβλήματα με τη λειτουργία των επιλογών απομακρυσμένου SSH, επικοινωνήστε με netstat, σε ποιες άλλες διεπαφές είναι συνδεδεμένη η θύρα ακρόασης. Αν και υποδείξαμε 0.0.0.0 στα παραδείγματα, αλλά αν η τιμή GatewayPorts в sshd_config οριστεί σε Όχι., τότε ο ακροατής θα δεσμευτεί μόνο στον localhost (127.0.0.1).

Προειδοποίηση ασφαλείας

Λάβετε υπόψη ότι όταν ανοίγετε σήραγγες και κάλτσες μεσολάβησης, οι εσωτερικοί πόροι δικτύου ενδέχεται να είναι διαθέσιμοι σε αναξιόπιστα δίκτυα (για παράδειγμα, το Διαδίκτυο!). Αυτό μπορεί να είναι σοβαρός κίνδυνος για την ασφάλεια, επομένως βεβαιωθείτε ότι καταλαβαίνετε τι είναι ένας ακροατής και σε τι έχει πρόσβαση.

6. Εγκαταστήστε το VPN μέσω SSH

Ένας κοινός όρος μεταξύ των επιτιθέμενων (pentesters, κ.λπ.) είναι το "δίκτυο υπομόχλιο". Μόλις δημιουργηθεί μια σύνδεση σε ένα σύστημα, αυτό το σύστημα γίνεται η πύλη για περαιτέρω πρόσβαση στο δίκτυο. Ένα υπομόχλιο που σας επιτρέπει να κινηθείτε σε πλάτος.

Για μια τέτοια βάση, μπορούμε να χρησιμοποιήσουμε έναν διακομιστή μεσολάβησης SSH και proxychains, ωστόσο υπάρχουν κάποιοι περιορισμοί. Για παράδειγμα, δεν θα είναι δυνατή η απευθείας εργασία με πρίζες, επομένως δεν θα μπορούμε να σαρώνουμε θύρες εντός του δικτύου μέσω Nmap SYN.

Χρησιμοποιώντας αυτήν την πιο προηγμένη επιλογή VPN, η σύνδεση πέφτει σε επίπεδο 3. Στη συνέχεια, μπορούμε απλώς να δρομολογήσουμε την κυκλοφορία μέσω της σήραγγας χρησιμοποιώντας τυπική δρομολόγηση δικτύου.

Η μέθοδος χρησιμοποιεί ssh, iptables, tun interfaces και δρομολόγηση.

Πρώτα πρέπει να ορίσετε αυτές τις παραμέτρους sshd_config. Δεδομένου ότι πραγματοποιούμε αλλαγές στις διεπαφές τόσο του απομακρυσμένου συστήματος όσο και του συστήματος πελάτη, εμείς χρειάζονται δικαιώματα root και στις δύο πλευρές.

PermitRootLogin yes
PermitTunnel yes

Στη συνέχεια, θα δημιουργήσουμε μια σύνδεση ssh χρησιμοποιώντας την παράμετρο που ζητά την προετοιμασία των συσκευών tun.

localhost:~# ssh -v -w any root@remoteserver

Θα πρέπει τώρα να έχουμε μια συσκευή συντονισμού κατά την εμφάνιση διεπαφών (# ip a). Το επόμενο βήμα θα προσθέσει διευθύνσεις IP στις διεπαφές της σήραγγας.

Πλευρά πελάτη SSH:

localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up

Πλευρά διακομιστή SSH:

remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up

Τώρα έχουμε μια απευθείας διαδρομή προς έναν άλλο οικοδεσπότη (route -n и ping 10.10.10.10).

Είναι δυνατή η δρομολόγηση οποιουδήποτε υποδικτύου μέσω του κεντρικού υπολογιστή στην άλλη πλευρά.

localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0

Στην απομακρυσμένη πλευρά, ενεργοποιήστε ip_forward и iptables.

remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADE

Κεραία! VPN μέσω σήραγγας SSH στο επίπεδο δικτύου 3. Αυτό είναι ήδη μια νίκη.

Εάν υπάρχουν προβλήματα, χρησιμοποιήστε tcpdump и pingγια να προσδιοριστεί η αιτία. Δεδομένου ότι παίζουμε στο επίπεδο 3, τα πακέτα icmp μας θα περάσουν από αυτό το τούνελ.

7. Αντιγράψτε το κλειδί SSH (ssh-copy-id)

Υπάρχουν διάφοροι τρόποι για να γίνει αυτό, αλλά αυτή η εντολή εξοικονομεί χρόνο μη αντιγράφοντας τα αρχεία με μη αυτόματο τρόπο. Απλώς αντιγράφει το ~/.ssh/id_rsa.pub (ή το προεπιλεγμένο κλειδί) από το σύστημά σας στο ~/.ssh/authorized_keys σε έναν απομακρυσμένο διακομιστή.

localhost:~$ ssh-copy-id user@remoteserver

8. Απομακρυσμένη εκτέλεση εντολών (μη διαδραστική)

ομάδα ssh μπορεί να συνδεθεί με άλλες εντολές για τη συνηθισμένη φιλική προς το χρήστη διεπαφή. Απλώς προσθέστε την εντολή που θέλετε να εκτελέσετε στον απομακρυσμένο κεντρικό υπολογιστή ως τελευταία παράμετρο σε εισαγωγικά.

localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php

Σε αυτό το παράδειγμα grep εκτελείται στο τοπικό σύστημα μετά τη λήψη του αρχείου καταγραφής μέσω του καναλιού ssh. Εάν το αρχείο είναι μεγάλο, είναι πιο βολικό να εκτελεστεί grep στην απομακρυσμένη πλευρά, απλώς περικλείοντας και τις δύο εντολές σε διπλά εισαγωγικά.

Ένα άλλο παράδειγμα εκτελεί την ίδια λειτουργία με ssh-copy-id από το παράδειγμα 7.

localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'

9. Απομακρυσμένη λήψη πακέτων και προβολή Wireshark

Πήρα ένα δικό μας Παραδείγματα tcpdump. Χρησιμοποιήστε το για να καταγράψετε πακέτα εξ αποστάσεως και να επιστρέψετε το αποτέλεσμα απευθείας στο γραφικό περιβάλλον του τοπικού σας Wireshark.

:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -

10. Αντιγραφή τοπικού φακέλου σε απομακρυσμένο διακομιστή μέσω SSH

Ένα ωραίο κόλπο που συμπιέζει ένα φάκελο με bzip2 (αυτή είναι η επιλογή -j στην εντολή tar) και στη συνέχεια φέρνει τη ροή bzip2 στην άλλη πλευρά, δημιουργώντας έναν διπλότυπο φάκελο στον απομακρυσμένο διακομιστή.

localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"

11. Απομακρυσμένες εφαρμογές GUI με προώθηση SSH X11

Εάν τόσο ο πελάτης όσο και ο απομακρυσμένος διακομιστής έχουν εγκαταστήσει το "x", τότε μπορείτε να εκτελέσετε εξ αποστάσεως μια εντολή GUI, με ένα παράθυρο στην τοπική επιφάνεια εργασίας σας. Αυτή η δυνατότητα υπάρχει εδώ και πολύ καιρό, αλλά εξακολουθεί να είναι πολύ χρήσιμη. Εκκινήστε ένα απομακρυσμένο πρόγραμμα περιήγησης ιστού ή ακόμα και μια κονσόλα VMWawre Workstation όπως κάνω σε αυτό το παράδειγμα.

localhost:~$ ssh -X remoteserver vmware

Απαιτείται συμβολοσειρά X11Forwarding yes στο αρχείο sshd_config.

12. Απομακρυσμένη αντιγραφή αρχείων χρησιμοποιώντας rsync και SSH

rsync πολύ πιο βολικό scpεάν χρειάζεστε περιοδικό αντίγραφο ασφαλείας ενός καταλόγου, μεγάλου αριθμού αρχείων ή πολύ μεγάλων αρχείων. Υπάρχει μια λειτουργία για ανάκτηση από μια αποτυχία μεταφοράς και αντιγραφή μόνο αλλαγμένων αρχείων, η οποία εξοικονομεί κίνηση και χρόνο.

Αυτό το παράδειγμα χρησιμοποιεί συμπίεση gzip (-z) και λειτουργία αρχειοθέτησης (-a), η οποία επιτρέπει την αναδρομική αντιγραφή.

:~$ rsync -az /home/testuser/data remoteserver:backup/

13. SSH μέσω του δικτύου Tor

Το ανώνυμο δίκτυο Tor μπορεί να διοχετεύσει την κυκλοφορία SSH με την εντολή torsocks. Η ακόλουθη εντολή θα στείλει έναν διακομιστή μεσολάβησης ssh μέσω του Tor.

localhost:~$ torsocks ssh myuntracableuser@remoteserver

Κορμούς θα χρησιμοποιήσει τη θύρα 9050 στο localhost για τον διακομιστή μεσολάβησης. Όπως πάντα όταν χρησιμοποιείτε το Tor, πρέπει να ελέγχετε σοβαρά ποια κίνηση διοχετεύεται και άλλα ζητήματα λειτουργικής ασφάλειας (opsec). Πού πηγαίνουν τα αιτήματά σας DNS;

14. Περίπτωση SSH σε EC2

Απαιτείται ένα ιδιωτικό κλειδί για τη σύνδεση σε μια παρουσία EC2. Κατεβάστε το (επέκταση .pem) από τον πίνακα ελέγχου του Amazon EC2 και αλλάξτε τα δικαιώματα (chmod 400 my-ec2-ssh-key.pem). Κρατήστε το κλειδί σε ασφαλές μέρος ή βάλτε το στον φάκελό σας ~/.ssh/.

localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public

Παράμετρος -i απλά λέει στον πελάτη ssh να χρησιμοποιήσει αυτό το κλειδί. Αρχείο ~/.ssh/config ιδανικό για αυτόματη διαμόρφωση της χρήσης κλειδιού κατά τη σύνδεση σε έναν κεντρικό υπολογιστή ec2.

Host my-ec2-public
   Hostname ec2???.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/my-ec2-key.pem

15. Επεξεργαστείτε αρχεία κειμένου με VIM μέσω ssh/scp

Για όλους τους ερωτευμένους vim αυτή η συμβουλή θα σας εξοικονομήσει λίγο χρόνο. Με τη χρήση vim τα αρχεία επεξεργάζονται μέσω scp με μία εντολή. Αυτή η μέθοδος δημιουργεί απλώς το αρχείο τοπικά /tmp, και μετά το αντιγράφει ξανά μόλις το αποθηκεύσουμε από vim.

localhost:~$ vim scp://user@remoteserver//etc/hosts

Σημείωση: η μορφή είναι ελαφρώς διαφορετική από τη συνηθισμένη scp. Μετά τον οικοδεσπότη έχουμε διπλό //. Αυτή είναι μια απόλυτη αναφορά διαδρομής. Μια μεμονωμένη κάθετο θα σημαίνει ότι η διαδρομή είναι σχετική με τον αρχικό φάκελο users.

**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])

Εάν δείτε αυτό το σφάλμα, ελέγξτε ξανά τη μορφή της εντολής. Αυτό συνήθως σημαίνει συντακτικό σφάλμα.

16. Τοποθετήστε το απομακρυσμένο SSH ως τοπικό φάκελο με SSHFS

Μέσω sshfs - πελάτης συστήματος αρχείων ssh - μπορούμε να προσαρτήσουμε έναν τοπικό κατάλογο σε μια απομακρυσμένη τοποθεσία με όλες τις αλληλεπιδράσεις αρχείων σε μια κρυπτογραφημένη περίοδο λειτουργίας ssh.

localhost:~$ apt install sshfs

Εγκαταστήστε το πακέτο σε Ubuntu και Debian sshfsκαι, στη συνέχεια, απλώς προσαρτήστε την απομακρυσμένη τοποθεσία στο σύστημά μας.

localhost:~$ sshfs user@remoteserver:/media/data ~/data/

17. Πολυπλεξία SSH με ControlPath

Από προεπιλογή, εάν υπάρχει μια υπάρχουσα σύνδεση με έναν απομακρυσμένο διακομιστή χρησιμοποιώντας ssh δεύτερη σύνδεση με ssh ή scp δημιουργεί μια νέα περίοδο λειτουργίας με πρόσθετο έλεγχο ταυτότητας. Επιλογή ControlPath σας επιτρέπει να χρησιμοποιήσετε μια υπάρχουσα συνεδρία για όλες τις επόμενες συνδέσεις. Αυτό θα επιταχύνει σημαντικά τη διαδικασία: το αποτέλεσμα είναι αισθητό ακόμη και στο τοπικό δίκτυο, και ακόμη περισσότερο όταν συνδέεται σε απομακρυσμένους πόρους.

Host remoteserver
        HostName remoteserver.example.org
        ControlMaster auto
        ControlPath ~/.ssh/control/%r@%h:%p
        ControlPersist 10m

Το ControlPath καθορίζει την υποδοχή για νέες συνδέσεις για έλεγχο για ενεργή περίοδο λειτουργίας ssh. Η τελευταία επιλογή σημαίνει ότι ακόμα και μετά την αποσύνδεση από την κονσόλα, η υπάρχουσα συνεδρία θα παραμείνει ανοιχτή για 10 λεπτά, οπότε κατά τη διάρκεια αυτού του χρόνου μπορείτε να συνδεθείτε ξανά στην υπάρχουσα πρίζα. Δείτε τη βοήθεια για περισσότερες πληροφορίες. ssh_config man.

18. Ροή βίντεο μέσω SSH με VLC και SFTP

Ακόμα και μακροχρόνιοι χρήστες ssh и vlc (Video Lan Client) δεν γνωρίζουν πάντα αυτήν τη βολική επιλογή όταν χρειάζεται πραγματικά να παρακολουθήσετε βίντεο μέσω του δικτύου. Στις ρυθμίσεις αρχείο | Ανοίξτε τη ροή δικτύου προγράμματα vlc μπορείτε να εισαγάγετε την τοποθεσία ως sftp://. Εάν απαιτείται κωδικός πρόσβασης, θα σας ζητηθεί.

sftp://remoteserver//media/uploads/myvideo.mkv

19. Έλεγχος ταυτότητας δύο παραγόντων

Ο ίδιος έλεγχος ταυτότητας δύο παραγόντων με τον τραπεζικό λογαριασμό ή τον λογαριασμό σας Google ισχύει για την υπηρεσία SSH.

Φυσικά, ssh έχει αρχικά μια λειτουργία ελέγχου ταυτότητας δύο παραγόντων, που σημαίνει έναν κωδικό πρόσβασης και ένα κλειδί SSH. Το πλεονέκτημα ενός διακριτικού υλικού ή μιας εφαρμογής Google Authenticator είναι ότι είναι συνήθως μια διαφορετική φυσική συσκευή.

Δείτε τον 8λεπτο οδηγό μας για χρησιμοποιώντας το Google Authenticator και το SSH.

20. Πηδώντας οικοδεσπότες με ssh και -J

Εάν η τμηματοποίηση δικτύου απαιτεί να μεταβείτε σε πολλούς κεντρικούς υπολογιστές ssh για να φτάσετε στο τελικό δίκτυο προορισμού σας, η συντόμευση -J θα σας εξοικονομήσει χρόνο.

localhost:~$ ssh -J host1,host2,host3 [email protected]

Το κύριο πράγμα εδώ είναι να καταλάβουμε ότι αυτό δεν είναι παρόμοιο με την εντολή ssh host1τότε user@host1:~$ ssh host2 Η επιλογή -J χρησιμοποιεί έξυπνα την προώθηση για να έχει ο localhost να δημιουργήσει μια συνεδρία με τον επόμενο κεντρικό υπολογιστή στην αλυσίδα. Έτσι, στο παραπάνω παράδειγμα, ο localhost μας ελέγχει την ταυτότητα του host4. Δηλαδή, χρησιμοποιούνται τα κλειδιά localhost μας και η περίοδος σύνδεσης από τον localhost στον host4 είναι πλήρως κρυπτογραφημένη.

Για μια τέτοια ευκαιρία ssh_config καθορίστε την επιλογή διαμόρφωσης ProxyJump. Εάν πρέπει να περνάτε τακτικά από πολλούς κεντρικούς υπολογιστές, τότε η αυτοματοποίηση μέσω της διαμόρφωσης θα εξοικονομήσει πολύ χρόνο.

21. Αποκλεισμός προσπαθειών brute force SSH με iptables

Όποιος έχει διαχειριστεί μια υπηρεσία SSH και κοίταξε τα αρχεία καταγραφής γνωρίζει τον αριθμό των προσπαθειών ωμής βίας που συμβαίνουν κάθε ώρα της ημέρας. Ένας γρήγορος τρόπος για να μειώσετε το θόρυβο καταγραφής είναι να μετακινήσετε το SSH σε μια μη τυπική θύρα. Κάντε αλλαγές στο αρχείο sshd_config χρησιμοποιώντας μια επιλογή διαμόρφωσης Λιμάνι##.

Με iptables Μπορείτε επίσης να αποκλείσετε εύκολα τις προσπάθειες σύνδεσης σε μια θύρα όταν επιτευχθεί ένα συγκεκριμένο όριο. Ένας εύκολος τρόπος για να το κάνετε αυτό είναι να χρησιμοποιήσετε OSSEC, καθώς όχι μόνο αποκλείει το SSH, αλλά εκτελεί μια δέσμη άλλων μέτρων ανίχνευσης εισβολής βάσει ονόματος κεντρικού υπολογιστή (HIDS).

22. SSH Escape για αλλαγή θύρας προώθησης

Και το τελευταίο μας παράδειγμα ssh έχει σχεδιαστεί για να αλλάζει την προώθηση θύρας εν κινήσει μέσα σε μια υπάρχουσα συνεδρία ssh. Φανταστείτε ένα τέτοιο σενάριο. Είστε βαθιά στον Ιστό. πιθανώς ξεπέρασε μισή ντουζίνα κεντρικούς υπολογιστές και χρειάζεται μια τοπική θύρα στο σταθμό εργασίας που προωθείται στο Microsoft SMB ενός παλιού συστήματος Windows 2003 (θυμάται κανείς το ms08-67;).

Κάνοντας κλικ enter, δοκιμάστε να πληκτρολογήσετε στην κονσόλα ~C. Αυτή είναι μια ακολουθία διαφυγής περιόδου λειτουργίας που σας επιτρέπει να κάνετε αλλαγές σε μια υπάρχουσα σύνδεση.

localhost:~$ ~C
ssh> -h
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KL[bind_address:]port                 Cancel local forward
      -KR[bind_address:]port                 Cancel remote forward
      -KD[bind_address:]port                 Cancel dynamic forward
ssh> -L 1445:remote-win2k3:445
Forwarding port.

Εδώ μπορείτε να δείτε ότι έχουμε προωθήσει την τοπική μας θύρα 1445 σε έναν κεντρικό υπολογιστή των Windows 2003 που βρήκαμε στο εσωτερικό δίκτυο. Τώρα απλά τρέξε msfconsole, και είστε έτοιμοι (υποθέτοντας ότι σκοπεύετε να χρησιμοποιήσετε αυτόν τον κεντρικό υπολογιστή).

Ολοκλήρωση

Αυτά τα παραδείγματα, συμβουλές και εντολές ssh πρέπει να δώσει ένα σημείο εκκίνησης? Πρόσθετες πληροφορίες για καθεμία από τις εντολές και τις δυνατότητες είναι διαθέσιμες στις σελίδες man (man ssh, man ssh_config, man sshd_config).

Πάντα με γοήτευε η δυνατότητα πρόσβασης σε συστήματα και εκτέλεσης εντολών οπουδήποτε στον κόσμο. Αναπτύξτε τις δεξιότητές σας με εργαλεία όπως ssh θα γίνετε πιο αποτελεσματικοί σε όποιο παιχνίδι παίζετε.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο