Hogyan figyeljük a hálózati tevékenységet egy Linux rendszerben

Egy Linux rendszer hálózati tevékenységét számos okból érdemes figyelni. Lehet, hogy egy hálózati problémát kell elhárítania, ellenőrizni szeretné, hogy nincsenek-e gyanús hálózati tevékenységet létrehozó rosszindulatú alkalmazások, vagy egyszerűen csak tudni szeretné, hogy valamelyik folyamat nem telefonál-e haza. Bármi legyen is az oka, íme néhány módszer, amellyel megnézheti, hogy a rendszerén mely folyamatok végeznek hálózati tevékenységet, és kivel kommunikálnak.

Ezzel a bemutatóval megtanulhatja:

  • Hogyan figyelje a hálózati kapcsolatokat és a figyelő szolgáltatásokat a netstat
  • Hogyan figyelje a hálózati kapcsolatokat és a figyelő szolgáltatásokat az lsof
  • Hogyan figyelje a hálózati kapcsolatokat és a figyelő szolgáltatásokat az ifconfig
  • Milyen eszközökkel vizsgálhatja a készülő adatokat. a hálózaton keresztül küldött adatokat

Hogyan figyelje a hálózati tevékenységet egy Linux rendszerben

Szoftverkövetelmények és használt konvenciók

Szoftverkövetelmények és Linux parancssori konvenciók
Kategória Követelmények, Konvenciók vagy használt szoftververzió
Rendszer Disztribúciófüggetlen
szoftver netstat, lsof, ifconfig, wireshark, tcpdump
Más Privileged hozzáférés a Linux rendszerhez rootként vagy a sudo paranccsal.
Eljárások # – megköveteli, hogy az adott linux parancsokat root jogosultságokkal futtassa, akár közvetlenül root felhasználóként, akár a sudo parancs használatával
$ – megköveteli, hogy az adott linux parancsokat normál, nem privilegizált felhasználóként futtassa

Netstat

Netstat egy hatékony segédprogram, amely képes a hálózati kapcsolatok kinyomtatására, útválasztási táblákat, interfészstatisztikákat, maszkoló kapcsolatokat és multicast tagságokat. Mi az előbbi feladat elvégzésére fogjuk használni.

Netstat telepítése

Debian és Debian alapú rendszereken, mint például az Ubuntu, használjuk az apt.

# apt install net-tools

Red Hat Enterprise Linux és Red Hat alapú rendszereken a yum,

# yum install net-tools

Arch alapú rendszereken a pacman.

# pacman -S net-tools
Linux rendszerelemzőt keres !
A UAF Geofizikai Intézet, tapasztalt Linux rendszerelemzőt keres, hogy csatlakozzon a kutatási kiberinfrastruktúra elemzői és mérnökei csapatához. HELYSZÍN: Fairbanks, Alaszka, USA
JELENTKEZÉS
MEGJEGYZÉS
A következő példákban a VirtualBoxban futó RHEL 8 friss telepítését használjuk, telepített vendég kiegészítésekkel

Váró folyamatok megtekintése

Először nézzük meg a kapcsolatra váró folyamatokat. Ehhez írjuk be a következő parancsot.

$ sudo netstat -tulpen

A parancsban a t a TCP kapcsolatokat jeleníti meg, a u az UDP kapcsolatokat, a l csak a figyelő aljzatokat, a p a programot, amelyhez a kapcsolat tartozik,a e a kiterjesztett információkat, a n pedig a címeket, felhasználókat és portokat ábrázolja számszerűen.

netstat -tulpen output

A legtöbb hálózati szoftver alapjául szolgáló kliens-kiszolgáló modellt tekintve a figyelő folyamatokat “szerver” üzemmódban lévő szoftvereknek tekinthetjük. A mi beállításunkat tekintve semmi meglepő nincs a kimenetben. Ezek mind olyan folyamatok, amelyekről elvárható, hogy egy friss RHEL 8 telepítésű,VirtualBox-ben futó RHEL 8-on hálózati kapcsolatokra figyelnek.
Minden egyes figyelő folyamat esetében láthatjuk a használt protokollt, a helyi címet és portot, amelyen hallgat, a felhasználót, aki alatt fut, és a PID/program nevét. Itt egy fontos különbségre kell felhívni a figyelmet. Atcp4/udp4kapcsolatok esetében (egyszerűentcpésudpnéven szerepel), ahol aLocal Address0.0.0.0néven szerepel, a folyamat minden olyan gép kapcsolataira figyel, amely képes csatlakozni hozzá a hálózaton keresztül, míg ha127.0.0.1néven szerepel, akkor csak a localhost (a gép, amelyen fut, vagy saját maga) kapcsolataira figyel, és a hálózaton lévő más számítógépek nem tudnak csatlakozni hozzá. Ugyanez a megkülönböztetés igaz atcp6/udp6esetében is, amikor aLocal Address::(hálózattal szemben) és a::1(csak localhost) összehasonlítjuk.

Minden hálózati kapcsolat megtekintése

Most nézzük meg az összes jelenlegi hálózati kapcsolatot. Ehhez adjuk meg a következő parancsot, amely hasonló az előzőhöz, kivéve, hogy a -a parancsot használjuk az összes aljzat megtekintéséhez a -l helyett, hogy csak a figyelő aljzatokat nézzük meg.

$ sudo netstat -atupen

Amellett, hogy megmutatja nekünk, hogy milyen szoftverek várják a kapcsolatokat “szerverként”, ez a parancs megmutatja a jelenleg létrehozott kapcsolatokat is az adott szoftverhez, valamint minden létrehozott hálózati kapcsolatot, amelyet “ügyfélként” működő szoftverrel, például webböngészővel létesítünk.

netstat -atupen output

A képernyőképen 2 kapcsolat láthatóESTABLISHEDállapotban. Itt megint csak nincsenek meglepetések. Az egyik a NetworkManager-hez tartozik, és DHCP kliensként működik, hogy engedélyezze a hálózatépítést az átjáró szerverről(Jelen esetben a gazdagépről). A másik egy SSH kapcsolat a géphez, amit az ssh szolgáltatás VirtualBox-szal történő porttovábbítása után hoztunk létre. Ha itt bármi váratlant látnánk, akkor az további vizsgálatra adhat okot.

Megállapított kapcsolatok megtekintése

Elképzelhető, hogy olyan helyzetbe kerülünk, amikor csak a ESTABLISHED kapcsolatokat szeretnénk megtekinteni. Ez olyan egyszerű, mintha a netstat kimenetét a grep-be vezetnénk, így:

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED output

A fenti parancsot a wikipedia.com-ra navigálás után a firefox-ban adtuk meg, és a képernyőkép a firefox által létrehozott kapcsolatokat rögzíti az oldal elérésekor. Mint látható, négy szerverhez csatlakozott a firefox; 91.198.174.192, 172.217.23.100, 216.58.215.67 és 104.111.215.142. Ahhoz, hogy megnézzük, hogy ezek a szerverek kihez tartoznak, lekérdezhetjük az ip-címeket a whois segítségével a következőképpen:

$ whois 91.198.174.192| less

Az egyes szerverek esetében ezt megtéve kiderül, hogy a Wikimedia, a Google, a Google és az Akamai szerverekhez tartoznak. Ennek van értelme, figyelembe véve, hogy a Wikimedia tulajdonában van a Wikipédia, és a Wikipédia tárhelye, és nagyon gyakori, hogy a webhelyek olyan erőforrásokat töltenek be, amelyeket a Google és az Akamai tulajdonában lévő szervereken tárolnak. Valójában a wikipedia honlapjának forráskódját megvizsgálva kiderül, hogy a Google Play Store app-badge-t a google.com-ról, az Apple AppStore app-badge-t pedig az apple.com-ról tölti be.
Ezeknek a két app-badge-nek az url-jeire külön-külön navigálva és a fenti netstat parancsot kiadva valóban igazolható, hogy a Google és az Akamai tulajdonában lévő szervereken tárolják őket.

Ha ez felkeltette az érdeklődését a netstat iránt, akkor van egy cikkünk, amit elolvashat, hogy többet tudjon meg a netstat parancs használatáról

ss

A netstat parancs régóta a rendszergazdák egyik kedvence, azonban nemrég felváltotta a ss parancs, amely azzal büszkélkedhet, hogy gyorsabb, egyszerűbb és emberibb, mint a netstat. Lássuk, hogyan lehet a fentiekben végrehajtott műveleteket a ss használatával elvégezni. A Ss parancsnak van egy -e opciója is a bővített információk megtekintéséhez, de ezt az opciót kihagytuk az alábbi példákból, mert további információkat produkál, ami kevésbé olvasható kimenetet eredményezhet.

View listening processes

Az összes figyelő folyamat megtekintéséhez írja be a következőt.

$ sudo ss -tlunp

Ebben a parancsban a t TCP kapcsolatot jelenít meg, a l csak a figyelő aljzatokat, a u az UDP-kapcsolatokat, a n a címeket, felhasználókat és portokat számszerűen mutatja, a p pedig a programot, amelyhez a kapcsolat tartozik.

Minden hálózati kapcsolat megtekintése

Az összes hálózati kapcsolat megtekintéséhez írja be a következőt, ahol a l helyett a a jeleníti meg az összes hálózati aljzatot, nem csak a figyelő aljzatokat.

$ sudo ss -taunp

Fennálló kapcsolatok megtekintése

Ha a -a vagy -l nem szerepel, akkor a ss csak a fennálló kapcsolatokat mutatja. Ha csak a létrehozott kapcsolatokat szeretné megtekinteni, írja be a következőt.

$ sudo ss -tunp

lsof

Ha a netstat és a ss nem lenne elég, bemutatjuk a lsof-et. A Lsof a megnyitott fájlok listázására szolgál. A GNU/Linux örökölte a UNIX tervezési elvét, miszerint minden egy fájl; ez a hálózati kapcsolatokat is magában foglalja. Ennek eredményeképpen a lsof a fent említett parancsokhoz hasonlóan használható a hálózati tevékenység megtekintésére.

Minden hálózati kapcsolat megtekintése

Az összes hálózati kapcsolat megtekintéséhez írja be a következőt.

$ sudo lsof -nP -i

Ebben a parancsban a n a címeket numerikusan, a P a portokat numerikusan jelöli, a i pedig elnyomja a nem hálózati fájlnak minősülő nyitott fájlok listázását.

Fennálló kapcsolatok megtekintése

Kizárólag a fennálló kapcsolatok megtekintéséhez adja meg a következőt, ahol a kiegészítő kapcsolók az összes fennálló TCP kapcsolatot listázzák.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Váró folyamatok megtekintése

A váró folyamatok lsof használatával történő megtekintéséhez írja be a következőt.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

Ez kihagy minden olyan folyamatot, amely UDP-n keresztül hallgat, ezért kívánatos lehet, ha helyette a következőt írja be, hogy ezeket is tartalmazza.

$ sudo lsof -nP -i | grep 'LISTEN\|UDP'

Hálózaton keresztül küldött adatok figyelése

Láttuk, hogy a netstat, ss és ifconfig segítségével hogyan lehet figyelni, hogy milyen hálózati kapcsolatokat létesítenek és kihez, de gyakran kívánatos látni, hogy pontosan milyen adatokat küldenek a hálózaton keresztül. Ennek a célnak az eléréséhez olyan alkalmazásokra van szükségünk, amelyek képesek csomagok szimatolására. Két, erre a területre specializálódott program a tcpdump és a wireshark.
Már korábban írtunk útmutatókat a Wireshark telepítéséről RHEL 8-ra, A Wireshark hálózati protokollelemző alapjai Linuxon, Csomagok szűrése a Wiresharkban Kali Linuxon, és a Network Monitoring Linux rendszer- és hardverfelügyeletet hatékonyabbá tettük című részben a tcpdump szép bemutatása található.

Következtetés

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.