Każdy web developer powinien rozumieć podstawy bezpieczeństwa systemów, na których działają jego aplikacje. Historia, którą chcę Ci dzisiaj opowiedzieć, pochodzi z rzeczywistej nauki cyberbezpieczeństwa — opowiadania o tym, jak prosty skrypt w Pythonie odkrył faktyczne ataki na lokalnym systemie Linux. To nie jest fikcja, a konkretny projekt, który każdy z nas może stworzyć.
Jak wszystko się zaczęło — analiza logów auth.log
W drugiej połowie pierwszego tygodnia nauki cyberbezpieczeństwa pojawił się pomysł: a co jeśli napiszę narzędzie, które przeanalizuje plik /var/log/auth.log na moim systemie Linux? Ten plik to skarbnica informacji o każdej próbie zalogowania — udanej i nieudanej.
Logika była prosta, ale potężna:
- Przeczytaj plik auth.log
- Znajdź każdą nieudaną próbę SSH
- Wyciągnij adres IP atakującego
- Policz, ile razy każdy IP próbował się zalogować
Wynik? Szok i zadziwiająca lekcja o tym, że Twój serwer jest rzeczywiście celem ataków.
Kod analizatora — od teorii do praktyki
Oto serce całego rozwiązania — użycie biblioteki Counter z modułu collections:
from collections import Counter
failed_ips = []
with open("/var/log/auth.log", "r") as log_file:
for line in log_file:
if "Failed password" in line or "Invalid user" in line:
# Linie zawierają adres IP w formacie: ...from 192.168.1.100...
parts = line.split("from ")
if len(parts) > 1:
ip = parts[1].split()[0]
failed_ips.append(ip)
# Zlicz wystąpienia każdego IP
ip_counts = Counter(failed_ips)
# Wyświetl wyniki posortowane
for ip, count in ip_counts.most_common(10):
print(f"{ip}: {count} nieudanych prób")
Co tutaj się dzieje? Iterujemy przez każdą linię pliku logów, szukamy wzorców wskazujących na nieudaną próbę logowania, wyciągamy IP i zliczamy je. Counter.most_common() zwraca nam Top 10 najczęstszych atakujących — to jest dokładnie to, co chcemy widzieć.
Co odkryłem — rzeczywiste ataki
Gdy uruchomiłem ten skrypt na swoim systemie, rezultat był zaskakujący. Znalazłem dziesiątki prób logowania z różnych adresów IP z całego świata. Niektóre adresy miały po kilkadziesiąt nieudanych prób w ciągu jednej nocy.
To była lekcja, którą każdy administrator systemu Linux powinien zapamiętać:
- SSH na domyślnym porcie 22 jest ciągle skanowany
- Ataki to nie abstrakcja — to rzeczywistość każdego publicznego serwera
- Logi zawierają cenną informację o bezpieczeństwie
- Proste narzędzia mogą odkrywać złożone problemy
Jeśli masz serwer Linux dostępny z internetu, uruchom ten analizator. Rezultaty mogą Cię zaskakać. A następnie rozważ zmianę portu SSH, dodanie fail2ban lub wdrożenie autentykacji klucz publiczny-prywatny zamiast haseł.
Podsumowanie
Budowanie własnych narzędzi do analizy bezpieczeństwa to jeden z najlepszych sposobów na naukę. Prosty skrypt Python pokazał mi, że teoria bezpieczeństwa ma bardzo realnych zastosowań. Nie potrzebujesz zaawansowanego oprogramowania do analizy logów — czasami wystarczy kilkanaście linii kodu i ciekawość.
Jeśli jesteś web developerem, który nigdy nie zagłębiał się w bezpieczeństwo systemów Linux, to jest doskonały punkt wyjścia. Zacznij od analityki logów, a dowiesz się więcej o tym, jak naprawdę działają rzeczywiste ataki na serwery.