Konuyu Açan
#0
Port bind monitoring script oluşturmak, sistem yöneticilerinin en büyük yardımcılarından biri haline gelebilir. Linux tabanlı sistemlerde, özellikle de sunucu yönetiminde, portların durumu hakkında sürekli bilgi sahibi olmak kritik bir öneme sahiptir. Bu tür bir script, sunucunuzda hangi portların açık olduğunu, hangi servisin hangi portta çalıştığını ve bu portların durumu hakkında gerçek zamanlı bilgi sağlar. Örneğin, bir sunucuda çalışan bir web uygulaması için 80 ve 443 numaralı portların açık olması gerekir. Peki, bu portları izlemek için basit bir script nasıl yazılır?
Python, bu tür bir script yazmak için oldukça uygun bir dildir. `socket` modülü kullanarak portların durumunu kontrol edebiliriz. Aşağıdaki örnek kod, belirli bir IP adresi ve port numaralarını kontrol eden basit bir script oluşturmaktadır. Öncelikle, kontrol etmek istediğiniz port numaralarını ve IP adresini belirlemeniz gerekiyor. Sonrasında, aşağıdaki gibi bir yapı kurabilirsiniz:
```python
import socket
def check_port(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1) # 1 saniye içinde yanıt alınamazsa timeout
result = sock.connect_ex((ip, port))
sock.close()
return result == 0
ip_address = '127.0.0.1' # Yerel makine
ports = [22, 80, 443] # Kontrol edilecek portlar
for port in ports:
if check_port(ip_address, port):
print(f"{port} numaralı port açık.")
else:
print(f"{port} numaralı port kapalı.")
```
Bu kod, basit bir port kontrolü yapıyor; açık olan portları bildiriyor. Ancak, bu scripti daha işlevsel hale getirmek için bazı özellikler ekleyebilirsiniz. Örneğin, port durumu değiştiğinde bir uyarı gönderen bir yapı kurmak isteyebilirsiniz. Bu durumda, bir döngü içinde sürekli olarak portları kontrol edip, değişiklik tespit ettiğinizde email veya başka bir bildirim yöntemi ile haber verebilirsiniz. Bu bilgi akışını sağlamak için `smtplib` modülünü kullanarak e-posta gönderimi yapabilirsiniz.
Ayrıca, loglama işlemi de önemli bir detaydır. Portların durumunu kaydetmek, ilerideki sorunları analiz etmenize yardımcı olacaktır. Python'da `logging` modülünü kullanarak, port durumunu her kontrol ettiğinizde bir log dosyasına yazabilirsiniz. Bunun için şu yapıyı kullanabilirsiniz:
```python
import logging
logging.basicConfig(filename='port_monitor.log', level=logging.INFO)
# Port kontrolü ve loglama
for port in ports:
if check_port(ip_address, port):
logging.info(f"{port} numaralı port açık.")
else:
logging.info(f"{port} numaralı port kapalı.")
```
Tüm bu işlemler, port izleme scriptinizi daha kullanışlı hale getirebilir. Sisteminizi sürekli olarak izlemek, olası bir saldırı ya da sorun durumunda hızlıca müdahale etmenizi sağlar. Hatta, scriptinizi belirli aralıklarla çalıştırmak için bir cron job ayarlayarak otomatikleştirebilirsiniz. Bu sayede, portlarınızın durumu hakkında sürekli bilgi sahibi olursunuz. Örneğin, her 5 dakikada bir çalışacak şekilde ayarlamak, sisteminizdeki değişiklikleri hızlıca tespit etmenize olanak tanır.
Son olarak, bu tür bir script yazarken, güvenlik açıklarına dikkat etmek de önemlidir. Özellikle, açık portların ve hizmetlerin hangi kullanıcılar tarafından kullanılabileceğini bilmek, siber güvenlik açısından kritik öneme sahiptir. Port izleme, sadece bir başlangıç. Belirli bir düzeyde güvenlik sağlamak için izleme sistemini daha derinlemesine incelemek, ek güvenlik önlemleri almak gerekecektir...
Python, bu tür bir script yazmak için oldukça uygun bir dildir. `socket` modülü kullanarak portların durumunu kontrol edebiliriz. Aşağıdaki örnek kod, belirli bir IP adresi ve port numaralarını kontrol eden basit bir script oluşturmaktadır. Öncelikle, kontrol etmek istediğiniz port numaralarını ve IP adresini belirlemeniz gerekiyor. Sonrasında, aşağıdaki gibi bir yapı kurabilirsiniz:
```python
import socket
def check_port(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1) # 1 saniye içinde yanıt alınamazsa timeout
result = sock.connect_ex((ip, port))
sock.close()
return result == 0
ip_address = '127.0.0.1' # Yerel makine
ports = [22, 80, 443] # Kontrol edilecek portlar
for port in ports:
if check_port(ip_address, port):
print(f"{port} numaralı port açık.")
else:
print(f"{port} numaralı port kapalı.")
```
Bu kod, basit bir port kontrolü yapıyor; açık olan portları bildiriyor. Ancak, bu scripti daha işlevsel hale getirmek için bazı özellikler ekleyebilirsiniz. Örneğin, port durumu değiştiğinde bir uyarı gönderen bir yapı kurmak isteyebilirsiniz. Bu durumda, bir döngü içinde sürekli olarak portları kontrol edip, değişiklik tespit ettiğinizde email veya başka bir bildirim yöntemi ile haber verebilirsiniz. Bu bilgi akışını sağlamak için `smtplib` modülünü kullanarak e-posta gönderimi yapabilirsiniz.
Ayrıca, loglama işlemi de önemli bir detaydır. Portların durumunu kaydetmek, ilerideki sorunları analiz etmenize yardımcı olacaktır. Python'da `logging` modülünü kullanarak, port durumunu her kontrol ettiğinizde bir log dosyasına yazabilirsiniz. Bunun için şu yapıyı kullanabilirsiniz:
```python
import logging
logging.basicConfig(filename='port_monitor.log', level=logging.INFO)
# Port kontrolü ve loglama
for port in ports:
if check_port(ip_address, port):
logging.info(f"{port} numaralı port açık.")
else:
logging.info(f"{port} numaralı port kapalı.")
```
Tüm bu işlemler, port izleme scriptinizi daha kullanışlı hale getirebilir. Sisteminizi sürekli olarak izlemek, olası bir saldırı ya da sorun durumunda hızlıca müdahale etmenizi sağlar. Hatta, scriptinizi belirli aralıklarla çalıştırmak için bir cron job ayarlayarak otomatikleştirebilirsiniz. Bu sayede, portlarınızın durumu hakkında sürekli bilgi sahibi olursunuz. Örneğin, her 5 dakikada bir çalışacak şekilde ayarlamak, sisteminizdeki değişiklikleri hızlıca tespit etmenize olanak tanır.
Son olarak, bu tür bir script yazarken, güvenlik açıklarına dikkat etmek de önemlidir. Özellikle, açık portların ve hizmetlerin hangi kullanıcılar tarafından kullanılabileceğini bilmek, siber güvenlik açısından kritik öneme sahiptir. Port izleme, sadece bir başlangıç. Belirli bir düzeyde güvenlik sağlamak için izleme sistemini daha derinlemesine incelemek, ek güvenlik önlemleri almak gerekecektir...