Contoh praktis SSH, yang akan meningkatkan keterampilan Anda sebagai administrator sistem jarak jauh. Perintah dan tip akan membantu tidak hanya untuk digunakan SSH, tetapi juga menavigasi jaringan dengan lebih kompeten.
Mengetahui beberapa trik ssh berguna bagi administrator sistem, insinyur jaringan, atau spesialis keamanan mana pun.
Contoh berikut menggunakan parameter umum yang sering ditemui saat menyambung ke server jarak jauh SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v: Output debug sangat berguna saat menganalisis masalah autentikasi. Dapat digunakan berkali-kali untuk menampilkan informasi tambahan.
- p 22: pelabuhan koneksi ke server SSH jarak jauh. 22 tidak perlu ditentukan, karena ini adalah nilai default, tetapi jika protokol ada di port lain, maka kita tentukan menggunakan parameter -p. Port mendengarkan ditentukan dalam file sshd_config dalam format Port 2222.
-C: Kompresi untuk koneksi. Jika Anda memiliki koneksi yang lambat atau melihat banyak teks, ini dapat mempercepat koneksi.
neo@: Baris sebelum simbol @ menunjukkan nama pengguna untuk otentikasi pada server jauh. Jika Anda tidak menentukannya, nama pengguna akun yang saat ini Anda gunakan akan digunakan secara default (~$whoami). Pengguna juga dapat ditentukan menggunakan parameter -l.
remoteserver: nama host yang akan dihubungkan ssh, ini bisa berupa nama domain yang sepenuhnya memenuhi syarat, alamat IP, atau host apa pun di file host lokal. Untuk menyambung ke host yang mendukung IPv4 dan IPv6, Anda dapat menambahkan parameter ke baris perintah -4 ΠΈΠ»ΠΈ -6 untuk resolusi yang tepat.
Semua parameter di atas bersifat opsional, kecuali remoteserver.
Menggunakan file konfigurasi
Meski banyak yang familiar dengan file tersebut sshd_config, ada juga file konfigurasi klien untuk perintah tersebut ssh. Nilai bawaan ~/.ssh/config, tetapi dapat didefinisikan sebagai parameter untuk suatu opsi -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
Ada dua entri host dalam contoh file konfigurasi ssh di atas. Yang pertama berarti semua host, semuanya menggunakan parameter konfigurasi Port 2222. Yang kedua mengatakan itu untuk host server jarak jauh nama pengguna, port, FQDN, dan IdentityFile yang berbeda harus digunakan.
File konfigurasi dapat menghemat banyak waktu pengetikan dengan memungkinkan konfigurasi lanjutan diterapkan secara otomatis saat menyambung ke host tertentu.
Menyalin file melalui SSH menggunakan SCP
Klien SSH dilengkapi dengan dua alat lain yang sangat berguna untuk menyalin file koneksi ssh terenkripsi. Lihat di bawah untuk contoh penggunaan standar perintah scp dan sftp. Perhatikan bahwa banyak opsi ssh juga berlaku untuk perintah ini.
Dalam contoh ini file fotoku.png disalin ke server jarak jauh ke folder /media/data dan berganti nama menjadi mypic_2.png.
Jangan lupa tentang perbedaan parameter port. Di sinilah banyak orang terjebak ketika diluncurkan scp dari baris perintah. Inilah parameter portnya -PDan tidak -p, seperti di klien ssh! Anda akan lupa, tapi jangan khawatir, semua orang lupa.
Bagi yang familiar dengan konsol ftp, banyak perintah yang serupa sftp. Anda dapat melakukan mendorong, menempatkan ΠΈ lssesuai keinginan hati.
sftp neo@remoteserver
Contoh praktis
Dalam banyak contoh ini, hasil dapat dicapai dengan menggunakan metode yang berbeda. Seperti halnya kita semua buku teks dan contoh, preferensi diberikan pada contoh praktis yang cukup berhasil.
1. Proksi kaus kaki SSH
Fitur SSH Proxy adalah nomor 1 karena alasan yang bagus. Ini lebih kuat daripada yang disadari banyak orang dan memberi Anda akses ke sistem apa pun yang dapat diakses oleh server jarak jauh, menggunakan hampir semua aplikasi. Klien ssh dapat menyalurkan lalu lintas melalui proksi SOCKS dengan satu perintah sederhana. Penting untuk dipahami bahwa lalu lintas ke sistem jarak jauh akan datang dari server jarak jauh, ini akan ditunjukkan dalam log server web.
Di sini kita menjalankan proxy kaus kaki pada port TCP 8888, perintah kedua memeriksa apakah port tersebut aktif dalam mode mendengarkan. 127.0.0.1 menunjukkan bahwa layanan hanya berjalan di localhost. Kita dapat menggunakan perintah yang sedikit berbeda untuk mendengarkan di semua antarmuka, termasuk ethernet atau wifi, ini akan memungkinkan aplikasi lain (browser, dll.) di jaringan kita untuk terhubung ke layanan proxy melalui proxy ssh kaus kaki.
Sekarang kita dapat mengkonfigurasi browser untuk terhubung ke proxy kaus kaki. Di Firefox, pilih Pengaturan | Dasar | Pengaturan jaringan. Tentukan alamat IP dan port untuk terhubung.
Harap perhatikan opsi di bagian bawah formulir agar permintaan DNS browser Anda juga melalui proxy SOCKS. Jika Anda menggunakan server proxy untuk mengenkripsi lalu lintas web di jaringan lokal Anda, Anda mungkin ingin memilih opsi ini sehingga permintaan DNS disalurkan melalui koneksi SSH.
Mengaktifkan proksi kaus kaki di Chrome
Meluncurkan Chrome dengan parameter baris perintah tertentu akan mengaktifkan proxy kaus kaki, serta menyalurkan permintaan DNS dari browser. Percaya tapi periksa. Menggunakan tcpdump untuk memeriksa apakah kueri DNS tidak lagi terlihat.
Perlu diingat bahwa banyak aplikasi lain mungkin juga menggunakan proxy kaus kaki. Peramban web adalah yang paling populer dari semuanya. Beberapa aplikasi memiliki opsi konfigurasi untuk mengaktifkan server proxy. Yang lain memerlukan sedikit bantuan dengan program pembantu. Misalnya, rantai proxy memungkinkan Anda menjalankan melalui proxy kaus kaki Microsoft RDP, dll.
Parameter konfigurasi proxy Socks diatur dalam file konfigurasi proxychains.
Petunjuk: jika Anda menggunakan remote desktop dari Linux di Windows? Coba klien RDP gratis. Ini adalah implementasi yang lebih modern daripada rdesktop, dengan pengalaman yang jauh lebih lancar.
Pilihan untuk menggunakan SSH melalui proksi kaus kaki
Anda sedang duduk di kafe atau hotel - dan terpaksa menggunakan WiFi yang tidak dapat diandalkan. Kami meluncurkan proxy ssh secara lokal dari laptop dan memasang terowongan ssh ke jaringan rumah pada Rasberry Pi lokal. Dengan menggunakan browser atau aplikasi lain yang dikonfigurasi untuk proxy kaus kaki, kita dapat mengakses layanan jaringan apa pun di jaringan rumah kita atau mengakses Internet melalui koneksi rumah kita. Segala sesuatu antara laptop Anda dan server rumah Anda (melalui Wi-Fi dan internet ke rumah Anda) dienkripsi dalam terowongan SSH.
2. Terowongan SSH (penerusan port)
Dalam bentuknya yang paling sederhana, terowongan SSH hanya membuka port di sistem lokal Anda yang terhubung ke port lain di ujung lain terowongan.
Mari kita lihat parameternya -L. Hal ini dapat dianggap sebagai sisi lokal dari mendengarkan. Jadi pada contoh di atas, port 9999 mendengarkan di sisi localhost dan diteruskan melalui port 80 ke server jarak jauh. Harap dicatat bahwa 127.0.0.1 mengacu pada localhost di server jauh!
Ayo naik selangkah. Contoh berikut mengkomunikasikan port mendengarkan dengan host lain di jaringan lokal.
Dalam contoh ini, kami mengalihkan terowongan dari server jarak jauh ke server web yang berjalan pada 10.10.10.10. Lalu lintas dari server jarak jauh ke 10.10.10.10 tidak lagi berada di terowongan SSH. Server web pada 10.10.10.10 akan menganggap server jarak jauh sebagai sumber permintaan web.
4. Membalikkan terowongan SSH
Di sini kita akan mengkonfigurasi port pendengaran di server jarak jauh yang akan terhubung kembali ke port lokal di localhost kita (atau sistem lain).
Sesi SSH ini membuat koneksi dari port 1999 di server jarak jauh ke port 902 di klien lokal kami.
5. Proksi Terbalik SSH
Dalam hal ini, kami menyiapkan proxy kaus kaki pada koneksi ssh kami, tetapi proxy tersebut mendengarkan di ujung server yang jauh. Koneksi ke proxy jarak jauh ini sekarang muncul dari terowongan sebagai lalu lintas dari localhost kami.
Memecahkan masalah dengan terowongan SSH jarak jauh
Jika Anda memiliki masalah dengan opsi SSH jarak jauh yang berfungsi, hubungi netstat, antarmuka lain apa yang terhubung dengan port pendengaran. Meskipun kami menunjukkan 0.0.0.0 dalam contoh, tetapi jika nilainya Pelabuhan Gerbang Π² sshd_config mulai tidak, maka pendengar hanya akan terikat ke localhost (127.0.0.1).
Peringatan keamanan
Harap dicatat bahwa dengan membuka proxy terowongan dan kaus kaki, sumber daya jaringan internal mungkin dapat diakses oleh jaringan yang tidak tepercaya (seperti Internet!). Ini bisa menjadi risiko keamanan yang serius, jadi pastikan Anda memahami siapa pendengarnya dan apa saja yang bisa mereka akses.
6. Menginstal VPN melalui SSH
Istilah umum di kalangan spesialis metode serangan (pentester, dll.) adalah βtitik tumpu dalam jaringan.β Setelah koneksi dibuat pada satu sistem, sistem tersebut menjadi pintu gerbang untuk akses lebih lanjut ke jaringan. Titik tumpu yang memungkinkan Anda bergerak secara luas.
Untuk pijakan seperti itu kita bisa menggunakan proxy SSH dan rantai proxy, namun ada beberapa batasan. Misalnya, tidak mungkin bekerja secara langsung dengan soket, jadi kami tidak akan dapat memindai port dalam jaringan melalui NmapSYN.
Dengan menggunakan opsi VPN yang lebih canggih ini, koneksi dikurangi menjadi tingkat 3. Kami kemudian dapat merutekan lalu lintas melalui terowongan menggunakan perutean jaringan standar.
Metode yang digunakan ssh, iptables, tun interfaces dan perutean.
Pertama, Anda perlu mengatur parameter ini sshd_config. Karena kami membuat perubahan pada antarmuka sistem jarak jauh dan klien, kami membutuhkan hak root di kedua sisi.
PermitRootLogin yes
PermitTunnel yes
Kemudian kita akan membuat koneksi ssh menggunakan parameter yang meminta inisialisasi perangkat tun.
localhost:~# ssh -v -w any root@remoteserver
Kita sekarang harus memiliki perangkat tun ketika menampilkan antarmuka (# ip a). Langkah selanjutnya akan menambahkan alamat IP ke antarmuka terowongan.
Sisi klien SSH:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
Sisi Server SSH:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
Sekarang kita memiliki rute langsung ke host lain (route -n ΠΈ ping 10.10.10.10).
Anda dapat merutekan subnet apa pun melalui host di sisi lain.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
Di sisi jarak jauh Anda harus mengaktifkan ip_forward ΠΈ iptables.
Ledakan! VPN melalui terowongan SSH pada lapisan jaringan 3. Itu adalah sebuah kemenangan.
Jika terjadi masalah, gunakan tcpdump ΠΈ pinguntuk menentukan penyebabnya. Karena kita bermain di layer 3, paket icmp kita akan melewati terowongan ini.
7. Salin kunci SSH (ssh-copy-id)
Ada beberapa cara untuk melakukan ini, namun perintah ini menghemat waktu dengan tidak menyalin file secara manual. Itu hanya menyalin ~/.ssh/id_rsa.pub (atau kunci default) dari sistem Anda ke ~/.ssh/authorized_keys di server jarak jauh.
localhost:~$ ssh-copy-id user@remoteserver
8. Eksekusi perintah jarak jauh (non-interaktif)
Tim ssh Dapat dihubungkan ke perintah lain untuk antarmuka yang umum dan ramah pengguna. Cukup tambahkan perintah yang ingin Anda jalankan pada host jarak jauh sebagai parameter terakhir dalam tanda kutip.
Dalam contoh ini grep dieksekusi pada sistem lokal setelah log diunduh melalui saluran ssh. Jika filenya besar, akan lebih mudah untuk dijalankan grep di sisi jarak jauh hanya dengan mengapit kedua perintah dalam tanda kutip ganda.
Contoh lain melakukan fungsi yang sama seperti ssh-copy-id dari contoh 7.
9. Pengambilan dan tampilan paket jarak jauh di Wireshark
Saya mengambil salah satu milik kami contoh tcpdump. Gunakan untuk menangkap paket dari jarak jauh dan menampilkan hasilnya langsung di GUI Wireshark lokal.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Menyalin folder lokal ke server jauh melalui SSH
Trik bagus yang memampatkan folder menggunakan bzip2 (ini adalah opsi -j pada perintah tar), lalu mengambil alirannya bzip2 di sisi lain, membuat folder duplikat di server jauh.
11. Aplikasi GUI Jarak Jauh dengan SSH X11 Forwarding
Jika X diinstal pada klien dan server jarak jauh, maka Anda dapat menjalankan perintah GUI dari jarak jauh dengan jendela di desktop lokal Anda. Fitur ini sudah ada sejak lama, namun masih sangat berguna. Luncurkan browser web jarak jauh atau bahkan konsol VMWawre Workstation seperti yang saya lakukan dalam contoh ini.
localhost:~$ ssh -X remoteserver vmware
Tali yang diperlukan X11Forwarding yes dalam file sshd_config.
12. Penyalinan file jarak jauh menggunakan rsync dan SSH
rsync jauh lebih nyaman scp, jika Anda memerlukan pencadangan berkala pada suatu direktori, file dalam jumlah besar, atau file yang sangat besar. Ada fungsi untuk memulihkan dari kegagalan transfer dan hanya menyalin file yang diubah, yang menghemat lalu lintas dan waktu.
Contoh ini menggunakan kompresi gzip (-z) dan mode pengarsipan (-a), yang memungkinkan penyalinan rekursif.
kaus kaki akan menggunakan port 9050 di localhost untuk proxy. Seperti biasa, saat menggunakan Tor Anda perlu memeriksa dengan serius lalu lintas apa yang disalurkan dan masalah keamanan operasional (opsec) lainnya. Ke mana perginya pertanyaan DNS Anda?
14. SSH ke instans EC2
Untuk terhubung ke instans EC2, Anda memerlukan kunci pribadi. Unduh (ekstensi .pem) dari panel kontrol Amazon EC2 dan ubah izinnya (chmod 400 my-ec2-ssh-key.pem). Simpan kunci di tempat yang aman atau letakkan di folder Anda sendiri ~/.ssh/.
Parameter -i cukup memberitahu klien ssh untuk menggunakan kunci ini. Mengajukan ~/.ssh/config Ideal untuk mengonfigurasi penggunaan kunci secara otomatis saat menghubungkan ke host EC2.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Mengedit file teks menggunakan VIM melalui ssh/scp
Untuk semua pecinta vim Tip ini akan menghemat waktu. Dengan menggunakan vim file diedit melalui scp dengan satu perintah. Metode ini hanya membuat file secara lokal /tmplalu menyalinnya kembali setelah kita menyimpannya vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Catatan: formatnya sedikit berbeda dari biasanya scp. Setelah tuan rumah, kami punya dua kali lipat //. Ini adalah referensi jalur absolut. Satu garis miring akan menunjukkan jalur yang berhubungan dengan folder utama Anda users.
Jika Anda melihat kesalahan ini, periksa kembali format perintah. Ini biasanya berarti kesalahan sintaksis.
16. Memasang SSH jarak jauh sebagai folder lokal dengan SSHFS
Melalui sshfs - klien sistem file ssh - kita dapat menghubungkan direktori lokal ke lokasi jarak jauh dengan semua interaksi file dalam sesi terenkripsi ssh.
localhost:~$ apt install sshfs
Instal paket di Ubuntu dan Debian sshfs, lalu cukup pasang lokasi jarak jauh ke sistem kami.
Secara default, jika sudah ada koneksi ke server jarak jauh menggunakan ssh koneksi kedua menggunakan ssh ΠΈΠ»ΠΈ scp membuat sesi baru dengan otentikasi tambahan. Pilihan ControlPath memungkinkan sesi yang ada digunakan untuk semua koneksi berikutnya. Ini akan mempercepat proses secara signifikan: efeknya terlihat bahkan di jaringan lokal, dan terlebih lagi saat menghubungkan ke sumber daya jarak jauh.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath menentukan soket untuk memeriksa koneksi baru guna melihat apakah ada sesi aktif ssh. Opsi terakhir berarti bahkan setelah Anda keluar dari konsol, sesi yang ada akan tetap terbuka selama 10 menit, jadi selama waktu tersebut Anda dapat menyambungkan kembali ke soket yang ada. Untuk informasi lebih lanjut, lihat bantuan. ssh_config man.
18. Streaming video melalui SSH menggunakan VLC dan SFTP
Bahkan pengguna lama ssh ΠΈ vlc (Klien Video Lan) tidak selalu mengetahui opsi praktis ini ketika Anda benar-benar perlu menonton video melalui jaringan. Dalam pengaturan Berkas | Buka Aliran Jaringan program vlc Anda dapat memasukkan lokasi sebagai sftp://. Jika kata sandi diperlukan, prompt akan muncul.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Otentikasi dua faktor
Otentikasi dua faktor yang sama seperti rekening bank atau akun Google Anda berlaku untuk layanan SSH.
Tentu saja, ssh awalnya memiliki fungsi otentikasi dua faktor, yang berarti kata sandi dan kunci SSH. Keuntungan token perangkat keras atau aplikasi Google Authenticator adalah biasanya perangkat fisiknya berbeda.
Jika segmentasi jaringan berarti Anda harus berpindah melalui beberapa host ssh untuk sampai ke jaringan tujuan akhir, pintasan -J akan menghemat waktu Anda.
Hal utama yang perlu dipahami di sini adalah bahwa ini tidak sama dengan perintah ssh host1, lalu user@host1:~$ ssh host2 dll. Opsi -J secara cerdik menggunakan penerusan untuk memaksa localhost membuat sesi dengan host berikutnya dalam rantai. Jadi pada contoh di atas, localhost kita diautentikasi ke host4. Artinya, kunci localhost kami digunakan, dan sesi dari localhost ke host4 sepenuhnya dienkripsi.
Untuk kemungkinan seperti itu ssh_config tentukan opsi konfigurasi Proksi Lompat. Jika Anda sering harus melewati beberapa host, maka otomatisasi melalui konfigurasi akan menghemat banyak waktu.
21. Blokir upaya brute force SSH menggunakan iptables
Siapa pun yang telah mengelola layanan SSH dan melihat lognya mengetahui jumlah upaya brute force yang terjadi setiap jam setiap hari. Cara cepat untuk mengurangi gangguan pada log adalah dengan memindahkan SSH ke port non-standar. Buat perubahan pada file sshd_config melalui parameter konfigurasi Pelabuhan##.
Dengan iptables Anda juga dapat dengan mudah memblokir upaya untuk menyambung ke port setelah mencapai ambang batas tertentu. Cara mudah untuk melakukannya adalah dengan menggunakan OSSEC, karena tidak hanya memblokir SSH, tetapi juga melakukan sejumlah tindakan deteksi intrusi berbasis nama host (HIDS) lainnya.
22. SSH Escape untuk mengubah penerusan port
Dan contoh terakhir kami ssh dirancang untuk mengubah penerusan port dengan cepat dalam sesi yang ada ssh. Bayangkan skenario ini. Anda berada jauh di dalam jaringan; mungkin melompati lebih dari setengah lusin host dan memerlukan port lokal di workstation yang diteruskan ke Microsoft SMB dari sistem Windows 2003 yang lama (ada yang ingat ms08-67?).
Mengklik enter, coba masuk di konsol ~C. Ini adalah urutan kontrol sesi yang memungkinkan Anda membuat perubahan pada koneksi yang ada.
Di sini Anda dapat melihat bahwa kami telah meneruskan port lokal 1445 ke host Windows 2003 yang kami temukan di jaringan internal. Sekarang jalankan saja msfconsole, dan Anda dapat melanjutkan (dengan asumsi Anda berencana menggunakan host ini).
Penyelesaian
Ini contoh, tip dan perintah ssh harus memberikan titik awal; Informasi lebih lanjut tentang masing-masing perintah dan kemampuan tersedia di halaman manual (man ssh, man ssh_config, man sshd_config).
Saya selalu terpesona dengan kemampuan mengakses sistem dan menjalankan perintah di mana pun di dunia. Dengan mengembangkan keterampilan Anda dengan alat seperti ssh Anda akan menjadi lebih efektif dalam permainan apa pun yang Anda mainkan.