Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | Linux TCP Wrappers Kullanımı

TCP Wrappers, makinemiz ile aynı ağda bulunan istemcilerin hangi servislere erişebileceğini kontrol eden ve bu erişim ile ilgili kayıtları tutan bir pakettir. Bunu paket içerisinde bulunan libwrap kütüphanesi ile gerçekleştirir. Unix işletim sistemleri genellikle TCP Wrappers ile compile edilmiş olarak gelir. Sistemde firewall’den sonra ekstra bir güvenlik katmanı oluşturarak uygulanan kurallar sayesinde firewall aşıldığında dahi servislere erişimin network seviyesinde korunmasını sağlar. Ayrıca birden fazla server uygulamasının erişim kuralları için tek bir dosyanın kullanılması yönetimi merkezileştirir ve kolaylaştırır.

Linux’ta TCP Wrappers’ın bir servisi destekleyip desteklemediğini öğrenmek için ldd komutunu aşağıdaki gibi kullanabiliriz. Whereis komutu ile de servisin bulunduğu dizin öğrenilebilir.

tcpwrappers_ldd

Bu komut ile sshd (SSH daemon)’ın TCP Wrapper ile desteklendiğini görmüş olduk. Bununla birlikte yaygın olarak bilinen pop3, ftp, telnet gibi servisler de TCP Wrapper tarafından desteklenmektedir.

TCP Wrappers Nasıl Konfigüre Edilir?

TCP Wrappers için etc dizininin altında hosts.allow ve hosts.deny olmak üzere iki adet konfigürasyon dosyası bulunur. İstenen servislere erişime izin vermek için istemci hosts.allow dosyasına, erişimi engellemek için ise hosts.deny dosyasına yazılır.

Konfigürasyon dosyalarının çalışma mantığında ilk olarak hosts.allow dosyası kontrol edilir. Eğer bir kayıt varsa erişime izin verilir ve başka bir işlem yapılmaz. Hosts.allow dosyasında herhangi bir kayıt bulunmazsa deny dosyası kontrol edilir. Burada bir kayıt bulunursa erişim bu istemci için engellenir. Her iki dosyada da bir kural bulunmazsa default kurallar dahilinde istemciye erişim hakkı verilir. Dosya izinlerini yazarken bu sıra dikkate alınmalıdır; çünkü hosts.allow dosyasında izin verilmeyen bir istemci için hosts.deny dosyasında yazılan kuralların bir önemi yoktur.

Her iki dosya için de yazılan kural formatı aşağıdaki gibidir.

daemon : client [:option1:option2:...]

daemon (servis)  : Kural yazılmak istenen servisin adı yazılır. Birden fazla servis için kural yazılacaksa virgül ile ayrılır.

client (istemci)  : Kuralın uygulanacağı istemcinin adı veya IP adresi yazılır. Yine birden fazla istemci için kural yazılacaksa virgül ile ayrılır.

options (seçenekler)  : Kural uygulandığında isteğe bağlı eylemlerin gerçekleşmesi için kullanılır. Örneğin, bu kural işlendiğinde “mail gönder” veya “loglama yap” seçenekleri verilebilir.

192.168.10.0/24 ağında bulunan 192.168.10.21 adresi haricindeki tüm hostlardan gelen sshd isteklerine izin vermek için  /etc/hosts.allow ve /etc/hosts.deny dosyalarını aşağıdaki gibi düzenleyelim.

Minik Not : TCP Wrappers, IPv4 adresleri için CIDR gösterimini (192.168.10.0/24) desteklemez.

tcpwrappers_allow

sshd : 192.168.10.0/255.255.255.0 EXCEPT 192.168.10.21

tcpwrappers_allow1

tcpwrappers_deny

sshd : ALL

tcpwrappers_deny2

Dosyaları düzenleyip kaydettikten sonra ssh ile bağlanmayı denediğimizde yazdığımız kural 192.168.10.21 adresine bağlanmayı  engelleyecektir.

tcpwrappers

TCP Wrappers ile spawn ve twist seçeneklerini kullanarak shell komutu çalıştırabiliriz.

Spawn  : Bir shell komutunu child process olarak başlatır.

Örneğin, /etc/hosts.allow dosyasını aşağıdaki gibi düzenleyerek izin verilen kural dahilinde istemci ve process bilgilerini /var/log/audit_sshd dosyasına loglayabiliriz.

sshd : 192.168.10.0/255.255.255.0 EXCEPT 192.168.10.21
: spawn /bin/echo '/bin/date' SSHD connection from client %c to server %s pid %p >>/var/log/audit_sshd.log

%c  : Username ve hostname gibi istemci bilgilerini yazdırır.

%s  : IP adresi, host ve servis bilgileri gibi çeşitli server bilgilerini yazdırır.

%p  : Daemon process ID bilgisini yazdırır.

Twist  : İsteği özel bir komutla değiştirmek için kullanılır. Genellikle izin verilmek istenmeyen istemciler için bir tuzak gibi kullanılır ve bu şekilde istemciye mesaj da yollanabilir.

/etc/hosts.deny dosyası aşağıdaki gibi düzenlenirse 192.168.10.0/24 ağındaki bir istemci telnet servisine bağlanmak istediğinde TCP Wrappers erişimi engeller ve istemciye mesaj gönderir.

telnetd : 192.168.10.0/255.255.255.0
: twist /bin/echo "What are you doing %a!"

%a  : İstemcinin IP adresini yazdırır.


About CanYouPwnMe

Hero!

Follow Me