Saturday, April 12, 2014

Linux'de Tek Bir Programın, İstenildiği Zaman İnternet Bağlantısını Engellemek

Bazen bir uygulamanın internet erişimini engellemek isteriz, bunun için tüm interneti kaldırmak yerine o uygulamanın internet erişimini sınırlamakta fayda vardır. Dahası, o uygulamayı sadece istediğimiz zaman “internet erişimi engelli” olarak çalıştırmak isteyebiliriz. Konuyla ilgili bir çok forumda değişik anlatımlar var. Ben biraz daha basitleştirmeye çalışacağım.

Kısaca yapacağımız:
- “no-internet” diye bir grup oluşturup, programları sg komutu ile bu “no-internet” grubu ayarlarına göre çalıştıracağız. 
- ama “no-internet” grubunun da internet bağlantısını iptables ile koparacağız 
- ayrıca kendi kullanıcı adımızı da “no-internet” grubuna ekleyeceğiz ki, programları “no-internet” grubu ile çalıştırdığımızda bize şifre sormasın


Adım 1 – Bir “no-internet” grubu oluşturup kendi kullanıcı adımızı (Benim durumumda “baris”'i) bu gruba ekliyoruz.

sudo groupadd no-internet
sudo usermod -a -G no-internet baris

Şimdi logout olup çıkmanız gerekiyor ki, değişiklikler etkili olsun, ya da Adım 5'i bekleyin.


Adım 2 – Önce “Ana Kodu”muzu (“script”) yazacağız. Kodun ismi “ni” olacak. Komut satırında:

sudo nano /usr/bin/ni

yazıyoruz. Nano bir text editörü, açılan text editöründe

#!/bin/bash
sg no-internet “$1”

yazıyoruz. Ctrl-X ile save edip çıkıyoruz. Yukarıdaki komut ile ni 'den sonra gelecek ilk komutu ($1) no-internet grubu kimlik bilgileri ile çalıştıracağımızı belirtiyoruz.

Adım 3 - Şimdi de “ni” programını çalıştırılabilir (executable) bir hale getirelim:

sudo chmod +x /usr/bin/ni


Dikkat aşağıdakilerden bir tanesini uygulayın, ikisini de uygulamanız zarar vermez ama sonra ne yaptığınızı bir yere yazın. Ben (4.2)'yi tavsiye ediyorum.

Adım 4.1- Şimdi de “no-internet” grubumuz için kuralları oluşturalım:

sudo nano /etc/network/if-pre-up.d/iptables_no-internet_rule

Bu dosyanın içine :

#!/bin/bash
iptables -A OUTPUT -m owner –gid-owner no-internet -j DROP

yazıp save edip çıkıyoruz. Ardından bu dosyayı da çalıştırılabilir-executable yapıyoruz.

sudo chmod +x /etc/network/if-pre-up.d/iptables_no-internet_rule

Adım 4.2- ben yukarıdaki işlemin işlemediğini gördüm. Kullandığım distrodan dolayı herhalde

sudo nano /etc/network/if-up.d/iptables_no-internet_rule

Bu dosyanın için de

#!/bin/bash
iptables -I OUTPUT 1 -m owner –gid-owner no-internet -j DROP

yazıp save edip çıkıyoruz. Ardından bu dosyayı da çalıştırılabilir-executable yapıyoruz.

sudo chmod +x /etc/network/if-up.d/iptables_no-internet_rule


Adım 5 – Komutu çalıştırın

ni firefox
ni “komut 1 komut2”
ni komut


Referanslar: http://ubuntuforums.org/showthread.php?t=1188099