Linux Üzerinde Honeypot Kurulumu ve Yapılandırması
Ağınıza giren saldırganları tespit etmek, onların yöntemlerini anlamak ve savunmanızı güçlendirmek istiyorsanız, honeypot tam size göre bir araç. Tuzak sistemi olarak da bilinen honeypot, gerçek sistemleri taklit eden ama aslında saldırganları izlemek için kurulmuş sahte bir ortamdır. Bu yazıda Linux üzerinde pratik bir honeypot ortamı kuracağız, yaygın araçları inceleyeceğiz ve gerçek dünya senaryolarında nasıl kullanacağımızı göreceğiz.
Honeypot Nedir ve Neden Kurmalısınız?
Honeypot, saldırganları çekmek için kasıtlı olarak zafiyetli bırakılmış ya da öyle görünen bir sistemdir. Temel amacı saldırı tespiti, saldırgan davranışlarının analizi ve erken uyarı mekanizması oluşturmaktır. Üretim ortamınıza hiç dokunmadan saldırganların ne yaptığını izleyebilirsiniz.
Bir örnek verelim: Şirkette IT güvenliğinden sorumlusunuz. Ağınızda garip tarama aktiviteleri görüyorsunuz ama kaynak tespit edilemiyor. Honeypot kurduğunuzda, bu taramaları yapan kaynağın aslında iç ağdan bir makine olduğunu ve o makinenin de ele geçirilmiş olduğunu anlıyorsunuz. İşte honeypot bu tür senaryolarda hayat kurtarıcı oluyor.
Honeypot türleri genel olarak şöyle ayrılır:
- Low-interaction honeypot: Sınırlı servis simülasyonu yapar, kurulumu kolaydır, risk düşüktür
- High-interaction honeypot: Gerçek işletim sistemi üzerinde çalışır, daha fazla bilgi toplar ama risk de artar
- Research honeypot: Saldırgan davranışlarını araştırmak için kullanılır
- Production honeypot: Canlı ortamda erken uyarı amaçlı kullanılır
Ortam Hazırlığı ve Güvenlik Önlemleri
Honeypot kurmadan önce bazı kritik noktalara dikkat etmelisiniz. Honeypot sistemi her zaman izole bir ağ segmentinde çalışmalıdır. Aksi halde tuzağa düşürdüğünüz saldırgan, oradan gerçek sistemlerinize sıçrayabilir.
Temel gereksinimler:
- Ayrı bir sanal makine veya fiziksel makine
- İzole edilmiş ağ segmenti (VLAN önerilir)
- Merkezi log sunucusu
- İzleme ve alarm sistemi
Önce sistemi güncelleyelim ve gerekli araçları kuralım:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3 python3-pip curl wget net-tools ufw fail2ban
Güvenlik duvarını temel düzeyde yapılandıralım. Honeypot’un dışarıya bağlantı kurmasını engellemek kritik önem taşır:
# Varsayılan politikaları belirle
sudo ufw default deny outgoing
sudo ufw default deny incoming
# Yönetim için SSH portunu sadece güvenli IP'den aç
sudo ufw allow from 192.168.1.100 to any port 22
# Honeypot servislerini dışarıya aç
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 21/tcp
sudo ufw allow 23/tcp
sudo ufw enable
Cowrie SSH/Telnet Honeypot Kurulumu
Cowrie, en popüler SSH ve Telnet honeypot araçlarından biridir. Saldırganların girdiği komutları, indirmeye çalıştıkları dosyaları ve yaptıkları her hareketi kaydeder.
Önce Cowrie için ayrı bir kullanıcı oluşturalım:
sudo adduser --disabled-password cowrie
sudo su - cowrie
Cowrie’yi kuralım:
git clone https://github.com/cowrie/cowrie
cd cowrie
python3 -m venv cowrie-env
source cowrie-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Yapılandırma dosyasını düzenleyelim:
cp etc/cowrie.cfg.dist etc/cowrie.cfg
nano etc/cowrie.cfg
Önemli yapılandırma parametreleri:
- hostname: Sahte sistem hostname’i, gerçekçi bir isim verin
- listen_endpoints: Hangi port üzerinden dinleyeceği, varsayılan 2222
- download_limit_size: İndirilen dosyaların maksimum boyutu
- ttylog: Terminal oturumlarının kaydedilip kaydedilmeyeceği
# cowrie.cfg içinde değiştirin
[honeypot]
hostname = webserver01
listen_endpoints = tcp:2222:interface=0.0.0.0
[output_jsonlog]
enabled = true
logfile = ${honeypot:log_path}/cowrie.json
Gerçek SSH portunu 2222’ye taşıyıp, 22 portunu Cowrie’ye bırakalım:
# /etc/ssh/sshd_config dosyasında
sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
sudo systemctl restart sshd
# Port yönlendirmesi
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
sudo apt install iptables-persistent
sudo netfilter-persistent save
Cowrie’yi başlatalım:
bin/cowrie start
bin/cowrie status
HoneyPy ile Çoklu Servis Simülasyonu
HoneyPy, farklı servisleri aynı anda simüle edebilen esnek bir araçtır. HTTP, FTP, DNS gibi pek çok protokolü destekler.
cd /opt
sudo git clone https://github.com/foospidy/HoneyPy
sudo chown -R cowrie:cowrie HoneyPy
cd HoneyPy
pip3 install -r requirements.txt
Yapılandırma dosyasını düzenleyelim:
cp honeypy.cfg.example honeypy.cfg
nano honeypy.cfg
[honeypy]
# Log dosyası konumu
log_file = /var/log/honeypy/honeypy.log
[ftp]
enabled = true
port = 21
plugin = Ftp
[http]
enabled = true
port = 80
plugin = Http
[telnet]
enabled = true
port = 23
plugin = Telnet
OpenCanary ile Kapsamlı Honeypot Ağı
OpenCanary, Thinkst Canary’nin açık kaynak versiyonudur ve kurumsal ortamlar için oldukça güçlü bir seçenektir. Birden fazla servisi destekler ve entegrasyon imkanları geniştir.
sudo pip3 install opencanary
opencanaryd --copyconfig
# Yapılandırma dosyası oluşturulur
# /etc/opencanaryd/opencanary.conf
# opencanary.conf temel yapılandırması
{
"device.node_id": "opencanary-1",
"git.enabled": false,
"ftp.enabled": true,
"ftp.port": 21,
"http.enabled": true,
"http.port": 80,
"http.banner": "Apache/2.2.22 (Ubuntu)",
"mysql.enabled": true,
"mysql.port": 3306,
"ssh.enabled": true,
"ssh.port": 22,
"telnet.enabled": true,
"telnet.port": 23,
"smb.enabled": true,
"logger": {
"class": "PyLogger",
"kwargs": {
"formatters": {
"plain": {"format": "%(message)s"}
},
"handlers": {
"file": {
"class": "logging.FileHandler",
"filename": "/var/log/opencanary/opencanary.log"
}
}
}
}
}
OpenCanary’yi servis olarak çalıştıralım:
sudo mkdir -p /var/log/opencanary
sudo opencanaryd --start
sudo opencanaryd --status
Log Analizi ve İzleme
Honeypot’un işe yaraması için logları düzgün analiz etmeniz şart. Önce Cowrie loglarını inceleyelim:
# Son bağlantıları listele
tail -f /home/cowrie/cowrie/var/log/cowrie/cowrie.log
# JSON loglardan IP adreslerini çek
cat /home/cowrie/cowrie/var/log/cowrie/cowrie.json | python3 -c "
import sys, json
for line in sys.stdin:
try:
entry = json.loads(line)
if entry.get('eventid') == 'cowrie.login.failed':
print(f"IP: {entry['src_ip']} - User: {entry['username']} - Pass: {entry['password']}")
except:
pass
"
En çok denenen kullanıcı adı ve şifreler için basit bir analiz scripti yazalım:
#!/bin/bash
# honeypot_analyze.sh
LOG_FILE="/home/cowrie/cowrie/var/log/cowrie/cowrie.json"
REPORT_DIR="/var/log/honeypot_reports"
DATE=$(date +%Y%m%d)
mkdir -p $REPORT_DIR
echo "=== HONEYPOT GUNLUK RAPORU - $DATE ===" > $REPORT_DIR/report_$DATE.txt
echo "" >> $REPORT_DIR/report_$DATE.txt
echo "Top 10 Saldirgan IP:" >> $REPORT_DIR/report_$DATE.txt
grep "login" $LOG_FILE | python3 -c "
import sys, json, collections
ips = []
for line in sys.stdin:
try:
d = json.loads(line)
if 'src_ip' in d:
ips.append(d['src_ip'])
except: pass
counter = collections.Counter(ips)
for ip, count in counter.most_common(10):
print(f' {ip}: {count} deneme')
" >> $REPORT_DIR/report_$DATE.txt
echo "" >> $REPORT_DIR/report_$DATE.txt
echo "En Cok Denenen Kullanici Adlari:" >> $REPORT_DIR/report_$DATE.txt
grep "login.failed" $LOG_FILE | python3 -c "
import sys, json, collections
users = []
for line in sys.stdin:
try:
d = json.loads(line)
if 'username' in d:
users.append(d['username'])
except: pass
counter = collections.Counter(users)
for user, count in counter.most_common(10):
print(f' {user}: {count} kez')
" >> $REPORT_DIR/report_$DATE.txt
cat $REPORT_DIR/report_$DATE.txt
Scripti çalıştırılabilir yapalım ve cronjob ekleyelim:
chmod +x /opt/honeypot_analyze.sh
echo "0 8 * * * root /opt/honeypot_analyze.sh | mail -s 'Honeypot Raporu' [email protected]" | sudo tee -a /etc/crontab
Tehdit İstihbaratı ile Entegrasyon
Honeypot’tan gelen IP’leri otomatik olarak tehdit istihbaratı servisleriyle karşılaştırabilirsiniz. Basit bir Python scripti yazalım:
#!/usr/bin/env python3
# threat_intel_check.py
import json
import requests
import sys
from datetime import datetime
def check_ip_abuseipdb(ip, api_key):
url = "https://api.abuseipdb.com/api/v2/check"
headers = {
"Accept": "application/json",
"Key": api_key
}
params = {
"ipAddress": ip,
"maxAgeInDays": 90
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()["data"]
return data["abuseConfidenceScore"], data["totalReports"]
return None, None
def parse_cowrie_ips(log_file):
ips = set()
with open(log_file, 'r') as f:
for line in f:
try:
entry = json.loads(line)
if 'src_ip' in entry:
ips.add(entry['src_ip'])
except:
pass
return ips
if __name__ == "__main__":
API_KEY = "ABUSEIPDB_API_KEYINIZ"
LOG_FILE = "/home/cowrie/cowrie/var/log/cowrie/cowrie.json"
print(f"Analiz zamani: {datetime.now()}")
print("-" * 50)
ips = parse_cowrie_ips(LOG_FILE)
for ip in list(ips)[:10]: # API limiti icin 10 ile sinirla
score, reports = check_ip_abuseipdb(ip, API_KEY)
if score is not None:
risk = "YUKSEK RISK" if score > 50 else "DUSUK RISK"
print(f"IP: {ip} | Skor: {score} | Rapor: {reports} | Durum: {risk}")
Gerçek Dünya Senaryosu: İç Ağ Tehdidi Tespiti
Geçen yıl bir müşteride ilginç bir olayla karşılaştım. Şirket ağında kimin brute force yaptığını tespit edemiyorlardı. OpenCanary’yi iç ağa kurduk, SMB ve RDP servislerini aktif ettik.
İki gün içinde şunu gördük: 192.168.10.45 IP’li bir makine sürekli olarak honeypot’taki RDP portuna bağlanmaya çalışıyordu. O makine muhasebe departmanındaki bir bilgisayardı ve daha önce şüpheli bir e-posta ekini açmıştı. Makine lateral movement yapan bir zararlıyla enfekte olmuştu.
Bu tespiti yapmak için OpenCanary loglarını şöyle izliyorduk:
# Anlık log takibi ve alarm
tail -f /var/log/opencanary/opencanary.log | while read line; do
if echo "$line" | grep -q "rdp|smb|ftp"; then
IP=$(echo "$line" | grep -oP '"src_host":"K[^"]+')
SUBNET="192.168.10."
if [[ $IP == $SUBNET* ]]; then
echo "KRITIK: Ic agdan saldiri! IP: $IP"
echo "Detay: $line" | mail -s "HONEYPOT ALARM - IC AG" [email protected]
fi
fi
done
Honeypot Güvenliğini Sağlamlaştırma
Honeypot sistemi doğru yapılandırılmazsa saldırganların pivot noktasına dönebilir. Şu adımları mutlaka uygulayın:
Sistem sıkılaştırma için:
- Outbound trafiği engelleyin: Saldırganın sistemi dışarıya bağlantı için kullanmasını önleyin
- Ayrı kullanıcı hesapları: Honeypot servislerini root ile çalıştırmayın
- Düzenli yedekleme: Log dosyalarını uzak bir sisteme gönderin
- Sistem kaynaklarını sınırlayın: cgroups ile CPU ve bellek limitlerini belirleyin
# Honeypot kullanicisini izole et
sudo systemctl set-property cowrie.service MemoryLimit=512M
sudo systemctl set-property cowrie.service CPUQuota=25%
# AppArmor profili aktif et
sudo apt install apparmor-utils
sudo aa-enforce /usr/bin/python3
# Log dosyalarini uzak sunucuya gonder
echo "*.* @192.168.1.200:514" | sudo tee -a /etc/rsyslog.conf
sudo systemctl restart rsyslog
Honeypot ortamını düzenli olarak gözden geçirin. Sistem güncellemelerini yapmayı unutmayın ama dikkatli olun; bazen güncellemeler honeypot servislerini etkileyebilir.
Verileri Görselleştirme
Toplanan verileri görselleştirmek hem raporlama hem de anomali tespiti açısından çok değerlidir. Elastic Stack veya Grafana entegrasyonu yapabilirsiniz. Daha basit bir başlangıç için Filebeat ile Cowrie loglarını aktarabiliriz:
# Filebeat kurulumu
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.5.0-amd64.deb
sudo dpkg -i filebeat-8.5.0-amd64.deb
# /etc/filebeat/filebeat.yml
sudo nano /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/cowrie/cowrie/var/log/cowrie/cowrie.json
json.keys_under_root: true
json.add_error_key: true
output.elasticsearch:
hosts: ["elasticsearch:9200"]
index: "honeypot-%{+yyyy.MM.dd}"
sudo systemctl enable filebeat
sudo systemctl start filebeat
Sonuç
Honeypot kurulumu, ağ güvenliği stratejinizin önemli ama çoğu zaman ihmal edilen bir parçasıdır. Doğru yapılandırıldığında size şu avantajları sağlar: saldırganların kullandığı araç ve yöntemleri anlama, iç ağ tehditlerini erken tespit etme ve saldırı örüntülerini analiz ederek savunmanızı güçlendirme imkanı.
Başlangıç için Cowrie ile küçük bir kurulum yapın ve logları takip edin. İlk birkaç günde ağınızın ne kadar ilgi gördüğüne şaşıracaksınız. Zamanla OpenCanary gibi daha kapsamlı araçlara geçip, Elastic Stack entegrasyonu ile verileri görselleştirebilirsiniz.
Son olarak şunu hatırlatayım: Honeypot bir güvenlik çözümü değil, güvenlik araçlarından biridir. Güçlü firewall, güncel yazılımlar ve kullanıcı eğitimi olmadan honeypot tek başına yeterli olmaz. Ama doğru konumlandırıldığında güvenlik mimarinize ciddi bir derinlik katar. Şimdi gidin, bir sanal makine açın ve ilk honeypot’unuzu kurun; söz veriyorum, birkaç saat içinde ilginç veriler toplamaya başlayacaksınız.
