Android

Hogyan lehet ellenőrizni a linuxos portok figyelését (a használt portok)

Python Web Apps with Flask by Ezra Zigmond

Python Web Apps with Flask by Ezra Zigmond

Tartalomjegyzék:

Anonim

A hálózati kapcsolat vagy az alkalmazás-specifikus problémák elhárításakor az elsőként ellenőrizendő, hogy melyik portot használják a rendszerében, és mely alkalmazás hallgat egy adott porton.

Ez a cikk elmagyarázza, hogyan lehet megtudni, mely szolgáltatások figyelik a portokat, amelyek a netstat , ss és lsof parancsokat használják. Az utasítások alkalmazandók minden Linux és Unix alapú operációs rendszerre, például a macOS-ra.

Mi az a Listening Port?

A hálózati portot azonosítja annak száma, a kapcsolódó IP-cím és a kommunikációs protokoll típusa, például TCP vagy UDP.

A figyelőport egy hálózati port, amelyen egy alkalmazás vagy folyamat figyel, és amely kommunikációs végpontként működik.

Minden figyelőport nyitható vagy zárható (szűrhető) tűzfal segítségével. Általánosságban elmondható, hogy a nyitott port egy hálózati port, amely távoli helyekről fogadja a bejövő csomagokat.

Nem lehet két szolgáltatás, amely ugyanazt a portot ugyanazon IP-címen hallgatja.

Például, ha olyan Apache webszervert fut, amely meghallgatja a 80 és 443 portot, és megpróbálja telepíteni az Nginxet, akkor a későbbi nem indul el, mert a HTTP és a HTTPS portok már használatban vannak.

Ellenőrizze a hallgatási portokat a netstat

netstat egy olyan parancssori eszköz, amely információkat szolgáltat a hálózati kapcsolatokról.

Az összes meghallgatott TCP vagy UDP port felsorolására, ideértve a portokat használó szolgáltatásokat és a socket állapotát is, használja a következő parancsot:

sudo netstat -tunlp

A parancsban használt opciók jelentése a következő:

  • -t - A TCP-portok megjelenítése. -u - UDP portok megjelenítése. -n - numerikus címek megjelenítése a gazdagépek feloldása helyett. -l - Csak a hallgatási portok megjelenítése. -p - Megjeleníti a hallgató folyamatának PID-jét és nevét. Ez az információ csak akkor jelenik meg, ha a parancsot root vagy sudo felhasználóként futtatja.

A kimenet így néz ki:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master tcp6 0 0:::3306:::* LISTEN 534/mysqld tcp6 0 0:::80:::* LISTEN 515/apache2 tcp6 0 0:::22:::* LISTEN 445/sshd tcp6 0 0:::25:::* LISTEN 929/master tcp6 0 0:::33060:::* LISTEN 534/mysqld udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient

Esetünkben a fontos oszlopok a következők:

  • Proto - A foglalat által használt protokoll. Local Address - Az az IP cím és portszám, amelyen a folyamat hallgat. PID/Program name - A PID és a folyamat neve.

sudo netstat -tnlp | grep:22

A kimenet azt mutatja, hogy ezen a gépen a 22. portot az SSH szerver használja:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0:::22:::* LISTEN 445/sshd

Ha a kimenet üres, az azt jelenti, hogy semmi sem hallgatja a portot.

Szűrheti a listát is kritériumok alapján, például PID, protokoll, állapot és így tovább.

netstat elavult, ss és ip helyett, de a leggyakrabban használt parancsok a hálózati kapcsolatok ellenőrzésére.

Ellenőrizze a Hallgatási Portokat az ss

ss új netstat . Hiányzik a netstat néhány funkciója, de több TCP állapotot tesz ki, és kissé gyorsabb. A parancs opciók többnyire megegyeznek, így a netstat ról az ss re való áttérés nem nehéz.

Az összes hallgató port listájának megtekintéséhez az ss írja be:

sudo ss -tunlp

A kimenet majdnem ugyanaz, mint amit a netstat jelentett:

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd", pid=445, fd=3)) LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master", pid=929, fd=13)) LISTEN 0 128 *:3306 *:* users:(("mysqld", pid=534, fd=30)) LISTEN 0 128 *:80 *:* users:(("apache2", pid=765, fd=4), ("apache2", pid=764, fd=4), ("apache2", pid=515, fd=4)) LISTEN 0 128:22:* users:(("sshd", pid=445, fd=4)) LISTEN 0 100:25:* users:(("master", pid=929, fd=14)) LISTEN 0 70 *:33060 *:* users:(("mysqld", pid=534, fd=33))

Ellenőrizze a hallgatási portokat az lsof

lsof egy hatalmas parancssori segédprogram, amely információkat nyújt a folyamatok által megnyitott fájlokról.

Linux alatt minden fájl. Gondolhat egy aljzatra, mint egy fájlra, amely a hálózatra ír.

Az összes hallgató TCP-port listájának lsof típusú:

sudo lsof -nP -iTCP -sTCP:LISTEN

Az alkalmazott lehetőségek a következők:

  • -n - Ne konvertálja a portszámokat portnevekre. -p - Ne oldja meg a gazdaneveket, mutassa meg a numerikus címeket. -iTCP -sTCP:LISTEN - Csak a LISTEN TCP állapotú hálózati fájlok megjelenítése.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN) sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN) apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN) mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN) mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN) apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN) master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)

A legtöbb kimeneti oszlop neve magától értetődő:

  • COMMAND , PID , USER - A név, a pid és a porthoz társított programot futtató felhasználó. NAME - A port száma.

Ahhoz, hogy megtudja, milyen folyamat hallgat egy adott porton, például a 3306 porton:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

A kimenet azt mutatja, hogy a 3306 portot a MySQL szerver használja:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)

További információkért látogasson el az lsof man oldalra, és olvassa el az eszköz összes többi hatékony opcióját.

Következtetés

Több parancsot mutattunk be, amelyek segítségével ellenőrizheti, hogy melyik port van használatban a rendszeren, és hogyan lehet megtalálni, hogy melyik folyamat figyel egy adott porton.

terminál