GNU/Linux >> Belajar Linux >  >> Linux

Membatasi akses syscall untuk aplikasi Linux

Apakah aplikasi ditautkan secara statis?

Jika tidak, Anda dapat mengganti beberapa simbol, misalnya, mari kita definisikan ulang socket :

int socket(int domain, int type, int protocol)
{
        write(1,"Error\n",6);
        return -1;
}

Kemudian buat perpustakaan bersama:

gcc -fPIC -shared test.c -o libtest.so

Ayo lari:

nc -l -p 6000

Oke.

Dan sekarang:

$ LD_PRELOAD=./libtest.so nc -l -p 6000
Error
Can't get socket

Apa yang terjadi ketika Anda menjalankan dengan variabel LD_PRELOAD=./libtest.so ? Simbol ini menggantikan simbol yang ditentukan di libtest.so daripada yang ditentukan di pustaka C.


Tampaknya systrace melakukan apa yang Anda butuhkan. Dari halaman Wikipedia:

Aplikasi hanya diizinkan untuk membuat panggilan sistem yang ditentukan sebagaimana diizinkan dalam kebijakan. Jika aplikasi mencoba mengeksekusi panggilan sistem yang tidak diizinkan secara eksplisit, alarm akan dibunyikan.


Ini adalah salah satu kemungkinan penerapan kotak pasir (khususnya, Eksekusi Berbasis Aturan). Salah satu implementasi yang populer adalah SELinux.

Anda harus menulis kebijakan yang sesuai dengan apa yang ingin Anda izinkan untuk dilakukan proses tersebut.


Linux
  1. Linux – Aplikasi Mana yang Digunakan Untuk Kalender?

  2. Bagaimana Cara Menemukan Aplikasi Untuk Tipe Mime Di Linux?

  3. Linux – Aplikasi Tangkapan Layar Untuk Rhel6.5?

  1. Gnome Pie – Peluncur Aplikasi Edaran (Menu) untuk Linux

  2. 10 Peluncur Aplikasi Terbaik untuk Desktop Linux

  3. Apa cara terbaik untuk mendistribusikan aplikasi biner untuk Linux?

  1. Pengantar firewall aplikasi web untuk sysadmin Linux

  2. Pembuatan profil aplikasi Linux

  3. akses bersamaan ke file linux