Mövzunu Açan
#0
Ağ güvenliği, günümüz dijital dünyasında oldukça kritik bir konu. Özellikle port tarama, yani port scan, siber saldırılar için sıkça kullanılan bir teknik. Saldırganlar, hedef sistemin açık portlarını tespit ederek, bu portlar aracılığıyla sisteme sızmaya çalışır. İşte bu noktada, port scan algılama scriptleri devreye giriyor. Peki, bir port scan algılama scripti nasıl yazılır? Hadi birlikte inceleyelim.
Python, bu tür scriptler yazmak için oldukça uygun bir dil. Neden mi? Çünkü hem kolay öğrenilebilir hem de kütüphane desteği sayesinde hızlı bir şekilde işinizi görebiliyor. İlk adımda, `socket` kütüphanesini kullanarak hedef IP adresine bağlanmaya çalışacağız. Bir portun açık olup olmadığını tespit etmek için, o porta bağlantı isteği gönderiyoruz. Eğer bağlantı gerçekleşirse, o port açık demektir. Yani, basit bir kod bloğu yazmak yeterli; mesela şu şekilde:
```python
import socket
def check_port(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((ip, port))
return result == 0
```
Burada `check_port` fonksiyonu, belirli bir IP adresi ve port için bağlantı denemesi yapıyor. Eğer bağlantı başarılıysa, `True` dönecek. Tabi ki, bu sadece bir başlangıç. Port tarama işlemi yaparken, birden fazla portu kontrol etmek isteyebilirsiniz. İşte burada bir döngüye ihtiyacımız var. Portları bir liste olarak tanımlayıp, tek tek kontrol edebiliriz.
```python
ip_address = '192.168.1.1'
ports = [22, 80, 443, 8080]
for port in ports:
if check_port(ip_address, port):
print(f'Port {port} açık.')
else:
print(f'Port {port} kapalı.')
```
Bu şekilde, belirli portları tarayarak hangi portların açık, hangilerinin kapalı olduğunu öğrenebilirsiniz. Ancak dikkat! Sadece bir port tarayıcı yazmak yeterli değil. Port scan algılamasını güçlendirmek için, tarama işlemlerini kaydedip analiz etmemiz gerekiyor. Burada, log dosyalarına yönelmek faydalı olabilir. Her tarama denemesi sonrasında, hangi IP adresinin hangi portları taradığını kaydetmek, olası saldırıları tespit etmekte büyük önem taşıyor.
Log dosyalarını oluşturmak için, tarama sonuçlarını bir dosyaya yazdırabilirsiniz. Örneğin:
```python
with open('scan_results.txt', 'a') as f:
f.write(f'{ip_address} - Port {port} açık.\n')
```
Bu, tarama sonuçlarınızı düzenli bir şekilde saklamanıza olanak tanır. Her tarama sonrasında, bu dosyayı inceleyerek hangi IP’lerin hangi portlara erişim sağladığını gözlemleyebilirsiniz. Bu bilgiler, gelecekteki saldırıları önlemek adına son derece kritik.
Ayrıca, daha gelişmiş bir sistem isterseniz, belirli bir zaman aralığında port tarama işlemi yapacak bir döngü oluşturabilirsiniz. Yani, belirli aralıklarla aynı IP'yi tarayıp, portların durumunu güncelleyebilirsiniz. Örneğin:
```python
import time
while True:
for port in ports:
if check_port(ip_address, port):
print(f'Port {port} açık.')
time.sleep(60) # 60 saniye bekle
```
Bu sayede, sürekli olarak bir IP adresini izleyebilir ve port durumlarındaki değişiklikleri anlık olarak takip edebilirsiniz.
Sonuç olarak, port scan algılama scriptleri, ağ güvenliğini sağlamak için önemli bir araçtır. Ancak, bu scriptleri yazarken etik kurallara dikkat etmeyi unutmayın. Başka sistemlere izinsiz olarak port taraması yapmak, hukuki sorunlara yol açabilir. Unutmayın ki, siber güvenlik bilincini artırmak için etik bir yaklaşım sergilemek şart.
Python, bu tür scriptler yazmak için oldukça uygun bir dil. Neden mi? Çünkü hem kolay öğrenilebilir hem de kütüphane desteği sayesinde hızlı bir şekilde işinizi görebiliyor. İlk adımda, `socket` kütüphanesini kullanarak hedef IP adresine bağlanmaya çalışacağız. Bir portun açık olup olmadığını tespit etmek için, o porta bağlantı isteği gönderiyoruz. Eğer bağlantı gerçekleşirse, o port açık demektir. Yani, basit bir kod bloğu yazmak yeterli; mesela şu şekilde:
```python
import socket
def check_port(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((ip, port))
return result == 0
```
Burada `check_port` fonksiyonu, belirli bir IP adresi ve port için bağlantı denemesi yapıyor. Eğer bağlantı başarılıysa, `True` dönecek. Tabi ki, bu sadece bir başlangıç. Port tarama işlemi yaparken, birden fazla portu kontrol etmek isteyebilirsiniz. İşte burada bir döngüye ihtiyacımız var. Portları bir liste olarak tanımlayıp, tek tek kontrol edebiliriz.
```python
ip_address = '192.168.1.1'
ports = [22, 80, 443, 8080]
for port in ports:
if check_port(ip_address, port):
print(f'Port {port} açık.')
else:
print(f'Port {port} kapalı.')
```
Bu şekilde, belirli portları tarayarak hangi portların açık, hangilerinin kapalı olduğunu öğrenebilirsiniz. Ancak dikkat! Sadece bir port tarayıcı yazmak yeterli değil. Port scan algılamasını güçlendirmek için, tarama işlemlerini kaydedip analiz etmemiz gerekiyor. Burada, log dosyalarına yönelmek faydalı olabilir. Her tarama denemesi sonrasında, hangi IP adresinin hangi portları taradığını kaydetmek, olası saldırıları tespit etmekte büyük önem taşıyor.
Log dosyalarını oluşturmak için, tarama sonuçlarını bir dosyaya yazdırabilirsiniz. Örneğin:
```python
with open('scan_results.txt', 'a') as f:
f.write(f'{ip_address} - Port {port} açık.\n')
```
Bu, tarama sonuçlarınızı düzenli bir şekilde saklamanıza olanak tanır. Her tarama sonrasında, bu dosyayı inceleyerek hangi IP’lerin hangi portlara erişim sağladığını gözlemleyebilirsiniz. Bu bilgiler, gelecekteki saldırıları önlemek adına son derece kritik.
Ayrıca, daha gelişmiş bir sistem isterseniz, belirli bir zaman aralığında port tarama işlemi yapacak bir döngü oluşturabilirsiniz. Yani, belirli aralıklarla aynı IP'yi tarayıp, portların durumunu güncelleyebilirsiniz. Örneğin:
```python
import time
while True:
for port in ports:
if check_port(ip_address, port):
print(f'Port {port} açık.')
time.sleep(60) # 60 saniye bekle
```
Bu sayede, sürekli olarak bir IP adresini izleyebilir ve port durumlarındaki değişiklikleri anlık olarak takip edebilirsiniz.
Sonuç olarak, port scan algılama scriptleri, ağ güvenliğini sağlamak için önemli bir araçtır. Ancak, bu scriptleri yazarken etik kurallara dikkat etmeyi unutmayın. Başka sistemlere izinsiz olarak port taraması yapmak, hukuki sorunlara yol açabilir. Unutmayın ki, siber güvenlik bilincini artırmak için etik bir yaklaşım sergilemek şart.