Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan SSH Tunneling sebagai Alternatif VPN

Menggunakan koneksi VPN adalah cara paling aman untuk mengakses jaringan jika Anda bekerja dari jarak jauh, tetapi karena konfigurasi ini mungkin memerlukan perangkat keras, waktu, dan pengetahuan, Anda mungkin ingin mengetahui alternatif untuk melakukannya . Menggunakan SSH juga merupakan cara yang aman untuk mengakses jaringan jarak jauh tanpa perangkat keras tambahan, lebih sedikit memakan waktu, dan lebih sedikit usaha daripada mengonfigurasi server VPN. Di blog ini, kita akan melihat cara mengonfigurasi SSH Tunneling untuk mengakses database Anda dengan cara yang aman.

Apa itu SSH?

SSH (Secure SHell), adalah program/protokol yang memungkinkan Anda mengakses host/jaringan jarak jauh, menjalankan perintah, atau berbagi informasi. Anda dapat mengonfigurasi metode autentikasi terenkripsi yang berbeda dan menggunakan port 22/TCP secara default, tetapi disarankan untuk mengubahnya demi alasan keamanan.

Bagaimana Cara Menggunakan SSH?

Cara paling aman untuk menggunakannya adalah dengan membuat Pasangan Kunci SSH. Dengan ini, Anda tidak hanya perlu memiliki kata sandi tetapi juga kunci pribadi untuk dapat mengakses host jarak jauh.

Selain itu, Anda harus memiliki host dengan hanya peran server SSH, dan menjaganya seisolasi mungkin, sehingga jika terjadi serangan eksternal, itu tidak akan memengaruhi server lokal Anda. Sesuatu seperti ini:

Mari kita lihat dulu, cara mengkonfigurasi server SSH.

Konfigurasi server

Sebagian besar Instalasi Linux memiliki Server SSH yang diinstal secara default, tetapi ada beberapa kasus di mana itu mungkin hilang (ISO minimal), jadi untuk menginstalnya, Anda hanya perlu menginstal paket-paket berikut:

OS berbasis RedHat

$ yum install openssh-clients openssh-server

OS berbasis Debian

$ apt update; apt install openssh-client openssh-server

Sekarang Anda telah menginstal Server SSH, Anda dapat mengonfigurasinya untuk hanya menerima koneksi menggunakan kunci.

vi /etc/ssh/sshd_config

PasswordAuthentication no

Pastikan Anda mengubahnya setelah memiliki kunci publik, jika tidak, Anda tidak akan dapat masuk.

Anda juga dapat mengubah port dan menolak akses root agar lebih aman:

Port 20022

PermitRootLogin no

Anda harus memeriksa apakah port yang dipilih terbuka dalam konfigurasi firewall untuk dapat mengaksesnya.

Ini adalah konfigurasi dasar. Ada parameter yang berbeda untuk diubah di sini untuk meningkatkan keamanan SSH, sehingga Anda dapat mengikuti dokumentasi untuk tugas ini.

Konfigurasi klien

Sekarang, mari buat pasangan kunci untuk "jarak jauh" pengguna lokal untuk mengakses Server SSH. Ada berbagai jenis kunci, dalam hal ini, kami akan membuat kunci RSA.

$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/remote/.ssh/id_rsa):

Created directory '/home/remote/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/remote/.ssh/id_rsa.

Your public key has been saved in /home/remote/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:hT/36miDBbRa3Povz2FktC/zNb8ehAsjNZOiX7eSO4w [email protected]

The key's randomart image is:

+---[RSA 3072]----+

|                 |

|        ..  .    |

|       o.+.=.    |

|        *o+.o..  |

|       +S+o+=o . |

|      . o +==o+  |

|         =oo=ooo.|

|        .E=*o* .+|

|         ..BB ooo|

+----[SHA256]-----+

Ini akan menghasilkan file berikut di direktori bernama “.ssh” di dalam direktori home pengguna:

$ whoami

remote

$ pwd

/home/remote/.ssh

$ ls -la

total 20

drwx------ 2 remote remote 4096 Apr 16 15:40 .

drwx------ 3 remote remote 4096 Apr 16 15:27 ..

-rw------- 1 remote remote 2655 Apr 16 15:26 id_rsa

-rw-r--r-- 1 remote remote  569 Apr 16 15:26 id_rsa.pub

File “id_rsa” adalah kunci pribadi (simpan seaman mungkin), dan “id_rsa.pub” adalah file publik yang harus disalin ke host jarak jauh untuk mengaksesnya. Untuk ini, jalankan perintah berikut sebagai pengguna yang sesuai:

$ whoami

remote

$ ssh-copy-id -p 20022 [email protected]

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/remote/.ssh/id_rsa.pub"

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

[email protected]'s password:



Number of key(s) added:        1



Now try logging into the machine, with:   "ssh -p '20022' '[email protected]"

and check to make sure that only the key(s) you wanted were added.

Dalam contoh ini, saya menggunakan port 20022 untuk SSH, dan host jarak jauh saya adalah 35.166.37.12. Saya juga memiliki pengguna yang sama (jarak jauh) yang dibuat di host lokal dan jarak jauh. Anda dapat menggunakan pengguna lain di host jarak jauh, jadi dalam hal ini, Anda harus mengubah pengguna ke yang benar dengan perintah ssh-copy-id:

$ ssh-copy-id -p 20022 [email protected]

Perintah ini akan menyalin kunci publik ke file otor_keys di direktori .ssh jarak jauh. Jadi, di Server SSH Anda seharusnya memiliki ini sekarang:

$ pwd

/home/remote/.ssh

$ ls -la

total 20

drwx------ 2 remote remote 4096 Apr 16 15:40 .

drwx------ 3 remote remote 4096 Apr 16 15:27 ..

-rw------- 1 remote remote  422 Apr 16 15:40 authorized_keys

-rw------- 1 remote remote 2655 Apr 16 15:26 id_rsa

-rw-r--r-- 1 remote remote  569 Apr 16 15:26 id_rsa.pub

Sekarang, Anda seharusnya dapat mengakses host jarak jauh:

$ ssh -p 20022 [email protected]

Tetapi ini tidak cukup untuk mengakses node database Anda, karena Anda masih berada di Server SSH.

Akses Basis Data SSH

Untuk mengakses node database Anda, Anda memiliki dua pilihan. Cara klasik adalah, jika Anda berada di Server SSH, Anda dapat mengaksesnya dari sana karena Anda berada di jaringan yang sama, tetapi untuk ini, Anda harus membuka dua atau tiga koneksi.

Pertama, koneksi SSH dibuat ke Server SSH:

$ ssh -p 20022 [email protected]

Kemudian, koneksi SSH ke Database Node:

$ ssh [email protected]

Dan terakhir, koneksi database, dalam kasus MySQL, adalah:

$ mysql -h localhost -P3306 -udbuser -p

Dan untuk PostgreSQL:

$ psql -h localhost -p 5432 -Udbuser postgres

Jika Anda memiliki klien database terinstal di Server SSH, Anda dapat menghindari koneksi SSH kedua dan hanya menjalankan koneksi database langsung dari Server SSH:

$ mysql -h 192.168.100.120 -P3306 -udbuser -p

atau:

$ psql -h 192.168.100.120 -p 5432 -Udbuser postgres

Tapi, ini bisa mengganggu karena Anda biasa menggunakan koneksi database langsung dari komputer Anda yang terhubung di kantor, jadi mari kita lihat cara menggunakan SSH Tunneling untuk ini.

Penerowongan SSH

Mengikuti contoh yang sama, kita mendapatkan:

  • Alamat IP Publik Server SSH:35.166.37.12
  • Port Server SSH:20022
  • Alamat IP Pribadi Node Basis Data:192.168.100.120
  • Port Basis Data:3306/5432
  • Pengguna SSH (lokal dan jarak jauh):jarak jauh
  • Pengguna basis data:dbuser

Baris Perintah

Jadi, jika Anda menjalankan perintah berikut di mesin lokal Anda:

$ ssh -L 8888:192.168.100.120:3306 [email protected] -p 20022 -N

Ini akan membuka port 8888 di mesin lokal Anda, yang akan mengakses node basis data jarak jauh, port 3306, melalui Server SSH, port 20022, menggunakan pengguna “jarak jauh”.

Jadi, untuk membuatnya lebih jelas, setelah menjalankan perintah ini, Anda dapat mengakses node basis data jarak jauh, menjalankan ini di mesin lokal Anda:

$ mysql -h localhost -P8888 -udbuser -p

Alat Grafis

Jika Anda menggunakan alat grafis untuk mengelola basis data, kemungkinan besar ia memiliki opsi untuk menggunakan SSH Tunneling untuk mengakses node basis data.

Mari kita lihat contoh menggunakan MySQL Workbench:

Dan sama untuk PgAdmin:

Seperti yang Anda lihat, informasi yang ditanyakan di sini cukup mirip dengan yang digunakan untuk koneksi SSH Tunneling baris perintah.

Kesimpulan

Keamanan penting bagi semua perusahaan, jadi jika Anda bekerja dari rumah, Anda harus menyimpan data seaman Anda saat bekerja di kantor. Seperti yang kami sebutkan, untuk ini, mungkin solusi terbaik adalah memiliki koneksi VPN untuk mengakses database, tetapi jika karena alasan tertentu tidak memungkinkan, Anda perlu memiliki alternatif untuk menghindari penanganan data melalui internet dengan cara yang tidak aman. Seperti yang Anda lihat, mengonfigurasi SSH Tunneling untuk mengakses database Anda bukanlah ilmu roket, dan mungkin merupakan alternatif terbaik dalam kasus ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis kesalahan sintaks tidak valid =MyISAM dalam DDL dihasilkan oleh Hibernate

  2. akses ditolak untuk pengguna @ 'localhost' ke database ''

  3. MySQL SEPERTI DI ()?

  4. Tampilkan nilai dari tabel database MySQL di dalam tabel HTML di halaman web

  5. SET NAMA utf8 di MySQL?