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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir