Cara Mengamankan Layanan Jaringan Menggunakan TCP Wrappers di Linux


Pada artikel ini kami akan menjelaskan apa itu pembungkus TCP dan cara mengkonfigurasinya untuk membatasi akses ke layanan jaringan yang berjalan di server Linux. Namun sebelum kita mulai, kita harus memperjelas bahwa penggunaan pembungkus TCP tidak menghilangkan kebutuhan akan firewall yang dikonfigurasi dengan benar.

Dalam hal ini, Anda dapat menganggap alat ini sebagai daftar kontrol akses berbasis host, dan bukan sebagai tindakan keamanan utama untuk sistem Anda. Dengan menggunakan firewall dan pembungkus TCP, alih-alih memilih salah satunya, Anda akan memastikan bahwa server Anda tidak mengalami satu titik kegagalan pun.

Memahami host.allow dan host.deny

Saat permintaan jaringan mencapai server Anda, pembungkus TCP menggunakan hosts.allow dan hosts.deny (dalam urutan itu) untuk menentukan apakah klien harus diizinkan menggunakan layanan tertentu .

Secara default, file-file ini kosong, semua dikomentari, atau tidak ada. Dengan demikian, semuanya diizinkan melalui lapisan pembungkus TCP dan sistem Anda bergantung pada firewall untuk perlindungan penuh. Karena ini tidak diinginkan, karena alasan yang kami nyatakan di bagian pendahuluan, pastikan kedua file ada:

ls -l /etc/hosts.allow /etc/hosts.deny

Sintaks kedua file tersebut sama:

<services> : <clients> [: <option1> : <option2> : ...]

Di mana,

  1. layanan adalah daftar layanan yang dipisahkan koma tempat aturan saat ini harus diterapkan.
  2. klien mewakili daftar nama host atau alamat IP yang dipisahkan koma yang terpengaruh oleh aturan tersebut. Wildcard berikut diterima:

    1. SEMUA cocok dengan semuanya. Berlaku untuk klien dan layanan.
    2. LOCAL cocok dengan host tanpa titik di FQDN-nya, seperti localhost.
    3. DIKENAL menunjukkan situasi di mana nama host, alamat host, atau pengguna diketahui.
    4. TIDAK DIKETAHUI adalah kebalikan dari DIKETAHUI.
    5. PARANOID menyebabkan koneksi terputus jika pencarian DNS terbalik (pertama pada alamat IP untuk menentukan nama host, lalu pada nama host untuk mendapatkan alamat IP) menghasilkan alamat yang berbeda dalam setiap kasus.
  3. Terakhir, daftar opsional tindakan yang dipisahkan titik dua menunjukkan apa yang harus terjadi ketika aturan tertentu dipicu.

Anda mungkin ingin mengingat bahwa aturan yang mengizinkan akses ke layanan tertentu di /etc/hosts.allow lebih diutamakan daripada aturan di /etc/hosts.deny yang melarang dia. Selain itu, jika dua aturan berlaku pada layanan yang sama, hanya aturan pertama yang akan diperhitungkan.

Sayangnya, tidak semua layanan jaringan mendukung penggunaan pembungkus TCP. Untuk menentukan apakah layanan tertentu mendukungnya, lakukan:

ldd /path/to/binary | grep libwrap

Jika perintah di atas mengembalikan output, itu bisa dibungkus dengan TCP. Contohnya adalah sshd dan vsftpd, seperti yang ditunjukkan di sini:

Cara Menggunakan TCP Wrapper untuk Membatasi Akses ke Layanan

Saat Anda mengedit /etc/hosts.allow dan /etc/hosts.deny, pastikan Anda menambahkan baris baru dengan menekan Enter setelah yang terakhir baris yang tidak kosong.

Untuk mengizinkan akses SSH dan FTP hanya ke 192.168.0.102 dan localhost dan menolak yang lainnya, tambahkan dua baris ini di /etc/hosts.deny :

sshd,vsftpd : ALL
ALL : ALL

dan baris berikut di /etc/hosts.allow:

sshd,vsftpd : 192.168.0.102,LOCAL
#
hosts.deny	This file contains access rules which are used to
#		deny connections to network services that either use
#		the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		The rules in this file can also be set up in
#		/etc/hosts.allow with a 'deny' option instead.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : ALL
ALL : ALL
#
hosts.allow	This file contains access rules which are used to
#		allow or deny connections to network services that
#		either use the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : 192.168.0.102,LOCAL

Perubahan ini terjadi segera tanpa perlu restart.

Pada gambar berikut Anda dapat melihat efek penghapusan kata LOCAL dari baris terakhir: server FTP tidak akan tersedia untuk localhost. Setelah kami menambahkan kembali wildcard, layanan tersedia kembali.

Untuk mengizinkan semua layanan ke host yang namanya mengandung example.com, tambahkan baris ini di hosts.allow:

ALL : .example.com

dan untuk menolak akses vsftpd ke mesin di 10.0.1.0/24, tambahkan baris ini di hosts.deny:

vsftpd : 10.0.1.

Pada dua contoh terakhir, perhatikan titik di awal dan akhir daftar klien. Ini digunakan untuk menunjukkan “SEMUA host dan/atau klien yang nama atau IP-nya berisi string tersebut”.

Apakah artikel ini bermanfaat bagi Anda? Apakah Anda memiliki pertanyaan atau komentar? Jangan ragu untuk mengirimi kami catatan menggunakan formulir komentar di bawah.