Uptime süresini öğrenme ve engelleme

Eğer engellemediyseniz uzaktaki kişiler sunucunuzun uptime süresini öğrenebilirler.Uptime sürenizi öğrenmek isteyen kişi ,sisteme herhangi bir TCP paketi yollayarak sizin sisteminizden cevap bekler.Sistemimizde "timestamps" engellenmemişse bizim cevap göndereceğimiz TCP paketlerinin başlıklarında "timestamps"ler ( zaman imzamız ) bulunmakta.Buradaki "timestamps"leri okuyarak   sistemimizin uptime süresini öğrenebilirler.

Uptime süresini öğrenmek için bir çok uygulama mevcut : nmap,hping  gibi.Hping ile hedef sistem üzerinde  istediğimiz porta istediğimiz paketi gönderebildiğimiz için onu kullanarak test yapacağım.Bilgisayarınızda "hping" yazılımı yüklü değilse ,ilk olarak kuralım.

# emerge -av hping ( Gentoo )
# apt-get install hping3 (Ubuntu )

Centos'a yüklemek için "EPEL" deposunu eklemiş olmanız lazım.Eğer bu depoyu eklemediysen buradan yardım alabilirsiniz.

# yum install hping3

Hping yazılımını yükledikten sonra herhangi bir sunucunun uptime süresini öğrenmek bize cevap verecek herhangi bir TCP portuna bir istek gönderip,cevap alalım.Şimdi herhangi bir sunucunun uptime süresini öğrenelim:

# hping --tcp-timestamp www.examples.com -p 80 -c 2 -S
HPING www.examples.com (eth0 00.00.00.00): S set, 40 headers + 0 data bytes
len=56 ip=00.00.00.00 ttl=55 DF id=0 sport=80 flags=SA seq=0 win=5792 rtt=20.0 ms
 TCP timestamp: tcpts=966942747

len=56 ip=00.00.00.00 ttl=55 DF id=0 sport=80 flags=SA seq=1 win=5792 rtt=19.8 ms
 TCP timestamp: tcpts=966942997
 HZ seems hz=100
 System uptime seems: 111 days, 21 hours, 57 minutes, 9 seconds

--- www.examples.com hping statistic ---
2 packets tramitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 19.8/19.9/20.0 ms

Yukardaki örnekte de görüldüğü gibi "www.examples.com" sunucusunun 111 gündür vs vs detaylı uptime süresini öğrenebiliyoruz.Uzaktaki sistemin "uptime" süresini öğrenmeye değindik,şimdi  "kendi sunucumuzun uptime süresini vermesini istemiyorsak ne yapmalıyız?" ona biraz değinelim.

Eğer sunucumuzun "timestamps" gönderip göndermediğini bilmiyorsak ona bakalım:

# /sbin/sysctl -a |grep tcp_timestamps 
net.ipv4.tcp_timestamps = 1

Yukardaki komutun çıktısına "net.ipv4.tcp_timestamps = 1" değeri alıyorsanız , uptime süre bilginiz öğrenebilinir demektir.Bu bilgiyi dışarıya vermemek için "1" değerini "0" yapalım.

I .Yöntem :

#  echo 0 > /proc/sys/net/ipv4/tcp_timestamps

II.Yöntem :

Bu yöntemde ise "sysctl.conf" dosyasına "net.ipv4.tcp_timestamps = 0" satırını ekleyelerek yapabiliriz.

# vi /etc/sysctl.conf

Aşağıdaki satırı ekleyin:

net.ipv4.tcp_timestamps = 0

Satırı ekledikten sonra dosyayı kaydedip,kapatın.Ayarların aktif olabilmesi için bilgisayarı yeniden başlatın ya da aşağıdaki komutu verin .

# sysctl -p

Yeni ayarlarımız aktif olduktan sonra uptime bilgimizin gönderilip,gönderilmediğini test edelim.

# hping --tcp-timestamp www.examples.com -p 80 -c 2 -S
HPING www.examples.com (eth0 00.00.00.00): S set, 40 headers + 0 data bytes
len=44 ip=00.00.00.00 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=32792 rtt=0.1 ms
 TCP timestamp: tcpts=0

len=44 ip=00.00.00.00 ttl=64 DF id=0 sport=80 flags=SA seq=1 win=32792 rtt=0.1 ms
 TCP timestamp: tcpts=0
--- www.examples.com hping statistic ---
2 packets tramitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.1 ms

Artık sunucumuz dışarıya uptime bilgisi vermiyor.Birde şuna değinmek istiyorum.Eğer "icmp" isteklerini engellememişseniz bu yolla da "timestamps" bilginiz öğrenilebilinir."icmp" ile dışarıya "timestamps" göndermek istemiyorsanız özetle iptables ile bunu engelleyebilirsiniz.Örnek olarak :

   ipchains -A input -p icmp --icmp-type timestamp-request -j DROP
   ipchains -A output -p icmp --icmp-type timestamp-reply -j DROP

Comments