Linux sunucularında yapılan güvenlik taramaları veya penetrasyon testleri sonucunda sık karşılaşılan bulgulardan biri ICMP Timestamp Request/Reply paketlerinin açık olmasıdır. Bu bulgu genellikle “ICMP Timestamp Request Remote Date Disclosure” veya benzeri bir başlıkla raporlanır.
İlk bakışta kritik bir zafiyet gibi görünmese de, özellikle kurumsal sistemlerde, güvenlik sıkılaştırma standartları ve pentest uyumluluğu açısından bu paketlerin filtrelenmesi önerilir. Çünkü ICMP Timestamp mekanizması, uzak bir sistemin zaman bilgisi hakkında ipucu verebilir. Bu bilgi tek başına büyük bir risk oluşturmasa da, saldırganların sistem keşfi, zaman senkronizasyon analizi veya farklı saldırı adımlarını planlaması için yardımcı veri sağlayabilir.
ICMP protokolünde Type 13, Timestamp Request; Type 14 ise Timestamp Reply olarak tanımlanır. Bu değerler ICMP Type Numbers listesinde resmi olarak yer alır.
Bu makalede Ubuntu sunucularda ICMP Timestamp paketlerinin nasıl engelleneceğini, verilen otomasyon scriptinin ne yaptığını, systemd ile neden kalıcı hale getirildiğini ve işlem sonrası nasıl kontrol edileceğini detaylı şekilde ele alacağız.
ICMP Timestamp Nedir?
ICMP, yani Internet Control Message Protocol, ağ cihazları ve işletim sistemleri arasında hata bildirimleri ve bazı kontrol mesajları için kullanılan temel protokollerden biridir. Ping komutunda kullanılan Echo Request ve Echo Reply mesajları da ICMP ailesinin en bilinen örnekleridir.
ICMP Timestamp ise eski sistemlerde uzak bir cihazın zaman bilgisini sorgulamak için kullanılan bir mekanizmadır. Bu yapı günümüzde çoğu ortamda gerekli değildir. Modern sistemlerde zaman senkronizasyonu için genellikle NTP veya daha güvenli zaman servisleri kullanılır.
ICMP Timestamp paketleri iki temel tip üzerinden çalışır:
- ICMP Type 13: Timestamp Request
- ICMP Type 14: Timestamp Reply
Bir istemci hedef sunucuya Type 13 paketi gönderdiğinde, hedef sistem buna Type 14 paketiyle yanıt verebilir. Bu yanıt, sistem zamanı hakkında bilgi sızdırabileceği için güvenlik tarama araçları tarafından bulgu olarak raporlanabilir.
Bu Bulguyu Neden Kapatmalıyız?
ICMP Timestamp yanıtlarının açık olması çoğu zaman doğrudan sistem ele geçirilmesine neden olmaz. Ancak güvenlikte temel yaklaşım, gereksiz bilgi sızıntılarını ve kullanılmayan protokol davranışlarını azaltmaktır.
Bu paketlerin filtrelenmesi özellikle şu nedenlerle önemlidir:
Pentest raporlarında gereksiz bulgu oluşmasını engeller.
Sunucunun zaman bilgisi hakkında dışarıya veri vermesini önler.
Sistem keşfi sırasında saldırgana verilen yan bilgileri azaltır.
Hardening, compliance ve kurum içi güvenlik standartlarına uyumu artırır.
Sunucu üzerinde kullanılmayan eski ICMP davranışlarını devre dışı bırakır.
Özellikle internete açık Ubuntu sunucularda, DNS, web, mail, VPN veya yönetim servisleri çalışıyorsa, gereksiz ICMP tiplerinin filtrelenmesi doğru bir güvenlik sıkılaştırma adımıdır.
Çözüm Yaklaşımı
Bu işlem için temel hedefimiz, Ubuntu üzerinde gelen ve giden ICMP Timestamp paketlerini engellemektir.
Bunun için aşağıdaki ICMP tipleri filtrelenir:
ICMP Type 13 - Timestamp Request
ICMP Type 14 - Timestamp Reply
Verilen otomasyon scripti, bu paketleri hem INPUT hem de OUTPUT zincirlerinde engeller.
Yani sunucu:
Dışarıdan gelen ICMP Timestamp Request paketlerini kabul etmez.
ICMP Timestamp Reply paketi göndermez.
Kendi üzerinden ICMP Timestamp Request çıkışı yapmaz.
Gelen ICMP Timestamp Reply paketlerini de kabul etmez.
Bu yaklaşım daha sıkı bir güvenlik politikası sağlar.
Otomasyon Scripti
Aşağıdaki script, Ubuntu sunucularda ICMP Timestamp paketlerini engellemek için kullanılabilir. Script, gerekli iptables kurallarını oluşturur ve bu kuralların reboot sonrasında da uygulanabilmesi için systemd servisi tanımlar.
sudo bash -c '
echo ">>> ICMP Timestamp (13/14) Mitigation Script Başlatılıyor..."
# 1. Kural Scriptinin Oluşturulması
cat << "EOF" > /usr/local/bin/block-icmp-timestamp.sh
#!/bin/bash
iptables -C INPUT -p icmp --icmp-type 13 -j DROP 2>/dev/null || iptables -I INPUT -p icmp --icmp-type 13 -j DROP
iptables -C INPUT -p icmp --icmp-type 14 -j DROP 2>/dev/null || iptables -I INPUT -p icmp --icmp-type 14 -j DROP
iptables -C OUTPUT -p icmp --icmp-type 13 -j DROP 2>/dev/null || iptables -I OUTPUT -p icmp --icmp-type 13 -j DROP
iptables -C OUTPUT -p icmp --icmp-type 14 -j DROP 2>/dev/null || iptables -I OUTPUT -p icmp --icmp-type 14 -j DROP
EOF
chmod +x /usr/local/bin/block-icmp-timestamp.sh
# 2. Systemd Daemon Konfigürasyonu
cat << "EOF" > /etc/systemd/system/icmp-timestamp-block.service
[Unit]
Description=Block ICMP Timestamp (Type 13/14) for Pentest Compliance
After=network.target ufw.service iptables.service firewalld.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/block-icmp-timestamp.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
# 3. Servis Aktivasyonu ve Uygulama
systemctl daemon-reload
systemctl enable icmp-timestamp-block.service
systemctl restart icmp-timestamp-block.service
echo ">>> [OK] Kurulum Tamamlandı. Aktif netfilter kuralları:"
iptables -nvL INPUT | grep -E "icmptype 13|icmptype 14"
iptables -nvL OUTPUT | grep -E "icmptype 13|icmptype 14"
'
Script Ne Yapıyor?
Script üç ana bölümden oluşur.
İlk bölümde /usr/local/bin/block-icmp-timestamp.sh adında ayrı bir bash scripti oluşturulur. Bu script, iptables üzerinde gerekli DROP kurallarını ekler.
Burada dikkat edilmesi gereken önemli nokta şudur:
iptables -C ...
komutu, ilgili kuralın sistemde daha önce var olup olmadığını kontrol eder. Eğer kural zaten varsa tekrar eklenmez. Eğer yoksa:
iptables -I ...
komutu ile kural zincirin başına eklenir.
Bu sayede script birden fazla kez çalıştırılsa bile aynı kural tekrar tekrar eklenmez. Bu yapı scripti daha güvenli ve idempotent hale getirir.
INPUT ve OUTPUT Zincirleri Neden Birlikte Kullanılıyor?
Sadece INPUT tarafında ICMP Type 13 paketlerini engellemek çoğu durumda yeterli gibi görünebilir. Çünkü sunucu gelen Timestamp Request paketini almazsa zaten cevap üretmez.
Ancak daha sıkı bir güvenlik yaklaşımı için OUTPUT tarafında da Type 13 ve Type 14 paketlerinin engellenmesi tercih edilir.
Bu yapı sayesinde:
Sunucu dışarıdan gelen Timestamp Request paketlerini düşürür.
Sunucu dışarıya Timestamp Reply gönderemez.
Sunucu kendi üzerinden Timestamp Request başlatamaz.
Sunucuya gelen Timestamp Reply paketleri de kabul edilmez.
Özellikle güvenlik taramalarında “tam kapalı” sonuç almak için hem INPUT hem OUTPUT tarafında filtreleme yapılması daha temiz bir yaklaşımdır.
Systemd Servisi Neden Oluşturuluyor?
iptables ile elle eklenen kurallar bazı sistemlerde yeniden başlatma sonrası kaybolabilir. Bu nedenle kuralların kalıcı hale getirilmesi gerekir.
Bu script, iptables kurallarını her açılışta tekrar uygulamak için özel bir systemd servisi oluşturur:
[Unit]
Description=Block ICMP Timestamp (Type 13/14) for Pentest Compliance
After=network.target ufw.service iptables.service firewalld.service
Bu bölüm, servisin ağ servislerinden sonra çalışmasını sağlar.
[Service]
Type=oneshot
ExecStart=/usr/local/bin/block-icmp-timestamp.sh
RemainAfterExit=yes
Type=oneshot, servisin tek seferlik bir işlem çalıştıracağını belirtir. Bu tip servisler genellikle sistem başlangıcında bir komut çalıştırmak veya belirli bir yapılandırmayı uygulamak için kullanılır. RemainAfterExit=yes ise komut tamamlandıktan sonra servisin systemd tarafında aktif kabul edilmesini sağlar. systemd dokümantasyonunda RemainAfterExit= seçeneğinin bu tür servisler için özellikle faydalı olduğu belirtilir.
Son bölüm ise servisin sistem açılışında otomatik çalışmasını sağlar:
[Install]
WantedBy=multi-user.target
Kurulumdan Sonra Kontrol
Script çalıştırıldıktan sonra aşağıdaki komutlarla servis durumu kontrol edilebilir:
systemctl status icmp-timestamp-block.service
Beklenen çıktı, servisin başarılı şekilde çalıştığını göstermelidir.
iptables kurallarını görmek için:
iptables -nvL INPUT | grep -E "icmptype 13|icmptype 14"
iptables -nvL OUTPUT | grep -E "icmptype 13|icmptype 14"
Daha sade kontrol için şu komut da kullanılabilir:
iptables -S | grep icmp
Beklenen kurallar şu mantıkta görünmelidir:
-A INPUT -p icmp -m icmp --icmp-type 13 -j DROP
-A INPUT -p icmp -m icmp --icmp-type 14 -j DROP
-A OUTPUT -p icmp -m icmp --icmp-type 13 -j DROP
-A OUTPUT -p icmp -m icmp --icmp-type 14 -j DROP
Ubuntu 22.04 ve 24.04 İçin Not
Yeni Ubuntu sürümlerinde iptables komutları çoğu zaman nftables altyapısı üzerinden çalışabilir. Ubuntu güvenlik dokümantasyonunda nftables’ın Linux Netfilter altyapısını yönetmek için kullanılan modern araç olduğu ve iptables’a göre daha sade/performanslı bir yapı sunduğu belirtilir.
Bu nedenle bazı sistemlerde iptables komutları çalışsa bile arka planda nftables backend kullanılabilir. Bu normaldir.
Aktif backend kontrolü için şu komutlar kullanılabilir:
iptables --version
Çıktıda şu ifade görülebilir:
iptables v1.x.x (nf_tables)
Bu, iptables komutlarının nftables backend üzerinden çalıştığını gösterir.
nftables kurallarını görmek için ayrıca şu komut kullanılabilir:
sudo nft list ruleset
Eğer kurum standardı doğrudan nftables kullanımı üzerine kuruluysa, aynı işlem nftables kural setiyle de yapılabilir. Ancak mevcut script, pratik ve hızlı uygulanabilir olması nedeniyle iptables komutları üzerinden hazırlanmıştır.
UFW Kullanılan Sistemlerde Dikkat Edilmesi Gerekenler
Ubuntu sunucularda UFW aktifse, iptables kurallarının UFW ile birlikte nasıl çalıştığı kontrol edilmelidir.
UFW durumu için:
sudo ufw status verbose
UFW aktif olsa bile bu script tarafından eklenen iptables kuralları çalışabilir. Ancak çok sıkı yönetilen sistemlerde firewall kurallarının tek merkezden yönetilmesi daha doğru olur.
Kurumsal ortamlarda önerilen yaklaşım şudur:
Firewall politikaları tek bir yöntemle yönetilmelidir.
UFW, firewalld, iptables ve nftables aynı anda kontrolsüz şekilde kullanılmamalıdır.
Otomasyon scriptleri dokümante edilmelidir.
Pentest sonrası yapılan değişiklikler change kaydıyla takip edilmelidir.
Ping Trafiği Etkilenir mi?
Bu script yalnızca ICMP Type 13 ve Type 14 paketlerini engeller.
Normal ping trafiği ICMP Echo Request ve Echo Reply üzerinden çalışır. Bunlar farklı ICMP tipleridir:
ICMP Type 8 - Echo Request
ICMP Type 0 - Echo Reply
Bu nedenle script doğrudan ping trafiğini engellemez.
Yani aşağıdaki komut normal şekilde çalışmaya devam edebilir:
ping 8.8.8.8
Ancak sunucuda farklı genel ICMP engelleme kuralları varsa, ping davranışı ayrıca etkilenebilir.
Scripti Geri Almak İsterseniz
Kuralları kaldırmak için aşağıdaki komutlar kullanılabilir:
sudo iptables -D INPUT -p icmp --icmp-type 13 -j DROP
sudo iptables -D INPUT -p icmp --icmp-type 14 -j DROP
sudo iptables -D OUTPUT -p icmp --icmp-type 13 -j DROP
sudo iptables -D OUTPUT -p icmp --icmp-type 14 -j DROP
Systemd servisini devre dışı bırakmak için:
sudo systemctl disable icmp-timestamp-block.service
sudo systemctl stop icmp-timestamp-block.service
Oluşturulan dosyaları tamamen silmek için:
sudo rm -f /usr/local/bin/block-icmp-timestamp.sh
sudo rm -f /etc/systemd/system/icmp-timestamp-block.service
sudo systemctl daemon-reload
Güvenlik ve Operasyonel Tavsiyeler
Bu tür hardening işlemleri production sistemlerde uygulanmadan önce mutlaka test ortamında denenmelidir.
Özellikle firewall kurallarıyla çalışırken aşağıdaki noktalara dikkat edilmelidir:
SSH erişiminin kesilmediğinden emin olunmalıdır.
Uygulama trafiği kontrol edilmelidir.
UFW, firewalld, iptables veya nftables kullanım standardı netleştirilmelidir.
Kurallar reboot sonrası tekrar kontrol edilmelidir.
Pentest ekibiyle doğrulama taraması yapılmalıdır.
Yapılan değişiklikler sistem dokümantasyonuna eklenmelidir.
Bu script doğrudan ICMP Timestamp paketlerini hedef aldığı için düşük riskli bir değişikliktir. Ancak yine de her firewall değişikliği gibi dikkatli uygulanmalıdır.
Ubuntu sunucularda ICMP Timestamp Request ve Timestamp Reply paketlerinin açık olması, güvenlik taramalarında sık karşılaşılan ve genellikle kolayca giderilebilen bir bulgudur.
Bu makaledeki otomasyon scripti ile ICMP Type 13 ve Type 14 paketleri hem gelen hem de giden trafik yönünde engellenir. Ayrıca systemd servisi sayesinde bu kurallar sistem yeniden başlatılsa bile otomatik olarak tekrar uygulanır.
Özetle bu çalışma sayesinde:
ICMP Timestamp bulgusu giderilir.
Pentest uyumluluğu artırılır.
Sunucunun gereksiz zaman bilgisi paylaşması engellenir.
Firewall hardening seviyesi yükseltilir.
Kurallar reboot sonrasında da korunur.
Küçük gibi görünen bu tür sıkılaştırmalar, özellikle internete açık Linux sunucularda güvenlik yüzeyini azaltmak için önemli ve pratik adımlardır.
![[TR] Ubuntu’da ICMP Timestamp Paketlerini Filtreleme: Pentest Bulgularına Karşı Pratik Mitigation Yöntemi](https://kadirkozan.com/wp-content/uploads/2026/03/27ce25e0-1b0e-475e-9233-d088f6756076-1024x683.png)
![[EN] Filtering ICMP Timestamp Packets on Ubuntu: A Practical Mitigation Method for Pentest Findings](https://kadirkozan.com/wp-content/uploads/2026/03/27ce25e0-1b0e-475e-9233-d088f6756076-150x150.png)