Seperti yang Anda ketahui dari dua artikel saya sebelumnya, pemecahan masalah Linux:Menyiapkan pendengar TCP dengan ncat dan Perintah ncat adalah alat keamanan bermasalah untuk sysadmin Linux, netcat
adalah perintah yang merupakan sahabat dan musuh terburuk Anda. Dan artikel ini lebih lanjut mengabadikan fakta ini dengan melihat bagaimana ncat
memberikan opsi yang berguna, tetapi berpotensi berbahaya, untuk membuat tautan pengalihan port. Saya tunjukkan cara menyiapkan port atau tautan penerusan situs sehingga Anda dapat melakukan pemeliharaan di situs sambil tetap melayani pelanggan.
Skenario
Anda perlu melakukan pemeliharaan pada instalasi Apache di server1 , tetapi Anda tidak ingin layanan tampil offline untuk pelanggan Anda, yang dalam skenario ini adalah pengguna korporat internal dari portal tenaga kerja yang mencatat jam kerja untuk pengguna jarak jauh Anda. Daripada memberi tahu mereka bahwa portal akan offline selama enam hingga delapan jam, Anda telah memutuskan untuk membuat layanan penerusan ke sistem lain, server2 , sementara Anda mengurus server1 kebutuhan.
Metode ini adalah cara mudah untuk menjaga layanan tertentu tetap hidup tanpa mengutak-atik DNS atau setelan NAT firewall perusahaan.
Server1:Port 8088
Server2:Port 80
Langkah-langkah
Untuk menyiapkan penerusan situs/layanan ini, Anda harus memenuhi prasyarat berikut:
ncat-nmap
paket (harus diinstal secara default)- Duplikat fungsional server1 portal di server2
- Akar atau
sudo
akses ke server 1 dan 2 untuk perubahan firewall
Jika Anda telah melewati rintangan ini, inilah saatnya untuk mewujudkan perubahan ini.
Pelaksanaan
Mengonfigurasi ncat
dengan cara ini menggunakan pipa bernama, yang merupakan cara efisien untuk membuat tautan komunikasi dua arah ini dengan menulis ke dan membaca dari file di direktori home Anda. Ada beberapa cara untuk melakukannya, tetapi saya akan menggunakan salah satu yang paling sesuai untuk jenis penerusan port ini.
Buat pipa bernama
Membuat pipa bernama mudah menggunakan mkfifo
perintah.
$ mkfifo svr1_to_svr2
$ file svr1_to_svr2
svr1_to_svr2: fifo (named pipe)
Saya menggunakan file
perintah untuk menunjukkan bahwa file ada di sana dan itu adalah pipa bernama. Perintah ini tidak diperlukan agar layanan berfungsi. Saya menamai file tersebut svr1_to_svr2
, tetapi Anda dapat menggunakan nama apa pun yang Anda inginkan. Saya memilih nama ini karena saya meneruskan dari server1 ke server2 .
Buat layanan penerusan
Secara formal, ini disebut menyiapkan relai Pendengar-ke-Klien , tetapi akan sedikit lebih masuk akal jika Anda memikirkan hal ini dalam istilah firewall, oleh karena itu nama dan deskripsi "teruskan" saya.
$ ncat -k -l 8088 < svr1_to_svr2 | ncat 192.168.1.60 80 > svr1_to_svr2 &
Mengeluarkan perintah ini mengembalikan Anda ke prompt karena Anda meletakkan layanan di latar belakang dengan &
. Seperti yang Anda lihat, pipa bernama dan layanan keduanya dibuat sebagai pengguna standar. Saya membahas alasan pembatasan ini di artikel saya sebelumnya, Perintah ncat adalah alat keamanan yang bermasalah untuk sysadmin Linux.
Perincian perintah
Bagian pertama dari perintah, ncat -k -l 8088
, menyiapkan listener untuk koneksi yang biasanya akan dijawab oleh layanan Apache di server1 . Layanan itu offline, jadi Anda membuat pendengar untuk menjawab permintaan tersebut. -k
option adalah fitur keep-alive, artinya dapat melayani banyak permintaan. -l
adalah opsi mendengarkan. Port 8088
adalah port yang ingin Anda tiru, yang merupakan portal pelanggan.
Bagian kedua, di sebelah kanan operator pipa (|
), menerima dan menyampaikan permintaan ke 192.168.1.60 pada port 80. Pipa bernama (svr1_to_svr2
) menangani data masuk dan keluar.
Penggunaan
Sekarang setelah Anda mengatur relai, itu mudah digunakan. Arahkan browser Anda ke host asli dan portal pelanggan, yaitu http://server1:8088
. Ini secara otomatis mengalihkan browser Anda ke server2 pada port 80. Browser Anda masih menampilkan URL dan port asli.
Saya menemukan bahwa terlalu banyak permintaan berulang dapat menyebabkan layanan ini gagal dengan pesan pipa yang rusak di server1 . Ini tidak selalu mematikan layanan, tetapi bisa. Saran saya adalah menyiapkan skrip untuk memeriksa forward
perintah, dan jika tidak ada, mulai ulang. Anda tidak dapat memeriksa keberadaan svr1_to_svr2
file karena selalu ada. Ingat, Anda membuatnya dengan mkfifo
perintah.
Peringatan
Kelemahan dari ncat
. ini kemampuannya adalah bahwa pengguna dapat meneruskan lalu lintas ke situs duplikat mereka sendiri dan mengumpulkan nama pengguna dan kata sandi. Aktor jahat harus mematikan pendengar port/layanan web saat ini untuk membuatnya berfungsi, tetapi dimungkinkan untuk melakukan ini bahkan tanpa akses root. Sysadmin harus menjaga kewaspadaan melalui pemantauan dan peringatan untuk menghindari jenis celah keamanan ini.
Penutup
ncat
perintah memiliki begitu banyak kegunaan sehingga memerlukan satu artikel per fitur untuk menjelaskan masing-masing. Artikel ini memperkenalkan Anda pada konsep relai Listener-to-Client, atau penerusan layanan, seperti yang saya sebut. Ini berguna untuk periode pemeliharaan singkat tetapi tidak boleh digunakan untuk pengalihan permanen. Untuk itu, Anda harus mengedit DNS dan aturan NAT firewall perusahaan untuk mengirim permintaan ke tujuan baru mereka. Anda harus mengingatkan diri sendiri untuk mematikan ncat
pendengar ketika Anda selesai dengan mereka saat mereka membuka sistem untuk kompromi. Jangan pernah membuat layanan ini dengan akun pengguna root.
[ Jadikan pengelolaan jaringan Anda lebih mudah dari sebelumnya dengan Otomatisasi jaringan untuk semua orang, buku gratis dari Red Hat. ]