Przejdź do treści

Połączenia sieciowe w systemie Linux

Informacje o połączeniach sieciowych, nasłuchujących portach, tablicy ARP, regułach zapory sieciowej oraz routingu pochodzące z działającego systemu Linux, mogą pomóc między innymi w ustaleniu adresów IP infrastruktury wykorzystywanej przez atakującego.

NIE URUCHAMIAJ WYŁĄCZONEGO URZĄDZENIA

Jeżeli urządzenie było połączone z zaatakowaną domeną lub siecią, mogło zostać skompromitowane. W takim przypadku nie jest zalecane uruchomienie go przed ustaleniem zakresu incydentu. Należy uznać je za skompromitowane i poddać analizie. Uruchomienie takiego urządzenia może spowodować zaszyfrowanie danych przez szkodliwe oprogramowanie, nawet jeśli urządzenie jest odłączone od sieci wewnętrznej instytucji.

Jeżeli urządzenie nie jest objęte atakiem ransomware, samo uruchomienie systemu operacyjnego może nadpisać kluczowe dla analizy dane, takie jak dzienniki zdarzeń czy pliki usunięte przez atakującego.

Zalecanym rozwiązaniem jest przekazanie dysków z takiego urządzenia lub całego urządzenia do wyspecjalizowanej instytucji, która zabezpieczy dane znajdującie się na dyskach w sposób nie nadpisujący ich zawartości, bez uruchamiania systemu.

Wymagania

  • Uruchomione urządzenie
  • Dostęp do konta z uprawnieniami root

Wymagane narzędzia

Opis poleceń wykorzystanych w procedurze

Polecenie Opis
ss -tunap Wyświetla informacje o gniazdach sieciowych: połączeniach TCP (-t) i UDP (-u), wszystkie (-a), z numerami portów (-n), z powiązanymi procesami (-p).
netstat -peanut Alternatywa dla ss. Wyświetla wszystkie gniazda TCP (-t) i UDP (-u), nasłuchujące i połączone (-a), z rozszerzonymi danymi (-e), numerami portów bez rozwiązywania nazw (-n) oraz powiązanymi procesami (-p).
lsof -i -P -n -R +c 0 Wyświetla otwarte gniazda sieciowe (-i) z numerami portów (-P), bez tłumaczenia adresów na nazwy (-n), z identyfikatorem procesu nadrzędnego (-R) i pełną nazwą polecenia (+c 0).
ip neigh Wyświetla tablicę ARP, czyli odwzorowanie adresów IP na adresy MAC urządzeń w sieci lokalnej.
ip a / ifconfig -a Wyświetla adresy IP i stan interfejsów sieciowych, w tym interfejsów nieaktywnych.
iptables-save / ip6tables-save Zabezpiecza reguły zapory sieciowej iptables/ip6tables w formacie możliwym do ponownego załadowania poleceniem.
nft list ruleset Wyświetla pełny zestaw reguł nftables.
ufw status verbose Wyświetla status i wszystkie reguły zapory UFW.
firewall-cmd --list-all-zones Wyświetla konfigurację wszystkich stref zapory firewalld, w tym reguły, usługi i porty.
ip route / ip -6 route Wyświetla tablicę routingu IPv4 i IPv6, określającą sposób kierowania pakietów do ich celów.
ip rule / ip -6 rule Wyświetla reguły routingu, pozwalające na kierowanie ruchu różnymi trasami.
date -u +%Y%m%dT%H%M%S-UTC Generuje bieżący znacznik czasu w strefie UTC.
echo "..." >> $nosnik/error.log Dopisuje komunikat o rozpoczęciu i zakończeniu procedury do dziennika błędów na nośniku zewnętrznym.
2>> $nosnik/error.log Przekierowuje strumień błędów polecenia do dziennika błędów na nośniku zewnętrznym.

Procedura

Przed uruchomieniem polecenia należy spełnić poniższe warunki:

  • powłoka systemowa jest uruchomiona z uprawnieniami roota.
  • zmienna $nosnik wskazuje na katalog docelowy na zewnętrznym nośniku, w przeciwnym wypadku należy przypisać ją poniższym poleceniem
    export nosnik=<katalog docelowy na zewnętrznym nośniku>
    

Poniższe polecenia zabezpieczają informacje o aktualnej aktywności sieciowej badanego urządzenia oraz tablicę ARP.

Wykonanie jednego z trzech poniższych poleceń zapisze informacje o aktywnych połączeniach sieciowych.

Aktywne połączenia i nasłuchujące porty (ss)
echo "Rozpoczęcie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ss -tunap > "$nosnik/connections_ss_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Aktywne połączenia i nasłuchujące porty (netstat)
echo "Rozpoczęcie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
netstat -peanut > "$nosnik/connections_netstat_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Otwarte gniazda sieciowe (lsof)
echo "Rozpoczęcie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
lsof -i -P -n -R +c 0 > "$nosnik/connections_lsof_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"

Wykonanie poniższego polecenia zapisze informacje dotyczące tablicy ARP badanego urządzenia.

Tablica ARP
echo "Rozpoczęcie zabezpieczania informacji o tablicy ARP $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ip neigh > "$nosnik/arp_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o tablicy ARP $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"

Informacje o interfejsach sieciowych

Wykonanie jednego z dwóch poniższych poleceń zapisze informacje o aktualnym stanie interfejsów sieciowych badanego urządzenia.

Adresy interfejsów sieciowych (ip addr)
echo "Rozpoczęcie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ip a > "$nosnik/ip_addr_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Adresy interfejsów sieciowych (ifconfig)
echo "Rozpoczęcie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ifconfig -a > "$nosnik/ifconfig_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"

Zapora sieciowa

Reguły zapory sieciowej określają, który ruch jest dozwolony, blokowany czy przekierowywany. Atakujący może modyfikować te reguły, aby otworzyć porty dla komunikacji z serwerem C2, zezwolić na połączenia z określonych adresów IP lub wyłączyć mechanizmy obronne. Zabezpieczenie konfiguracji zapory pozwala wykryć takie modyfikacje.

Różne dystrybucje Linux korzystają z różnych mechanizmów zapory. Poniższe polecenie zabezpiecza reguły ze wszystkich popularnych rozwiązań: iptables/ip6tables, nftables, ufw oraz firewalld. Narzędzia nieobecne w systemie wygenerują jedynie wpis w dzienniku błędów.

Reguły zapory sieciowej
echo "Rozpoczęcie zabezpieczania informacji o zaporze sieciowej $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"

iptables-save   > "$nosnik/iptables_.txt"    2>>"$nosnik/error.log"
ip6tables-save  > "$nosnik/ip6tables_.txt"  2>>"$nosnik/error.log"
nft list ruleset > "$nosnik/nftables_.txt"  2>>"$nosnik/error.log"
ufw status verbose > "$nosnik/ufw_.txt"      2>>"$nosnik/error.log"
firewall-cmd --list-all-zones > "$nosnik/firewalld_.txt" 2>>"$nosnik/error.log"

echo "Zakończenie zabezpieczania informacji o zaporze sieciowej $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"

Routing

Tablica routingu określa, w jaki sposób pakiety sieciowe są kierowane do ich celów. Atakujący może modyfikować trasy routingu, aby przekierować ruch przez kontrolowany serwer.

Tablica routingu i reguły politykowego routingu
echo "Rozpoczęcie zabezpieczania informacji o routingu $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"

ip route    > "$nosnik/routes_.txt"    2>>"$nosnik/error.log"
ip -6 route > "$nosnik/routes6_.txt"   2>>"$nosnik/error.log"
ip rule     > "$nosnik/ip_rules_.txt"   2>>"$nosnik/error.log"
ip -6 rule  > "$nosnik/ip6_rules_.txt"  2>>"$nosnik/error.log"

echo "Zakończenie zabezpieczania informacji o routingu $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"

Ostatnia aktualizacja artykułu: 2026-09-02.