SSD Nodes Learn Hosting plans →
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-31

Port ni nini na huduma za Linux husikiliza vipi?

Jifunze jinsi port hutenganisha traffic ya huduma, maana ya TCP na UDP, na jinsi ya kutumia ss kuona kinachosikiliza na kutofautisha port ya ndani na ya umma.

Port ni nini hasa

Port ni namba inayowezesha seva moja kuendesha huduma nyingi kwa wakati mmoja bila traffic zake kuchanganyika. VPS yako ina anwani moja ya IP, lakini inaweza kuendesha web server, SSH server na database kwa wakati mmoja. Packet inapowasili, mfumo wa uendeshaji unahitaji kujua inalengwa kwa huduma ipi. Namba ya port ndiyo jibu. Traffic ya web huenda kwenye port 443, na SSH kwenye port 22. Anwani ya IP huipeleka packet kwenye seva yako; port huipeleka kwenye programu sahihi iliyo kwenye seva hiyo.

Port ni namba ya bits 16: bits 16 hutoa thamani kuanzia 0 hadi 65535, na 0 imehifadhiwa, hivyo kwa matumizi ya kawaida ports huanzia 1 hadi 65535. Ports zilizo chini ya 1024 ni ports "well-known" na zinahitaji root ili kuzifungua. Ndiyo maana huduma za kawaida hutumia ports hizo: 22 kwa SSH, 80 kwa HTTP, 443 kwa HTTPS, na 53 kwa DNS. Programu za kawaida zinaweza kutumia port yoyote iliyo juu ya 1024.

Kuna aina mbili: TCP na UDP. Namba ya port katika aina moja ni tofauti na namba hiyo hiyo katika aina nyingine. TCP ni protocol inayotegemea connection ambayo huduma nyingi hutumia, kama SSH, HTTP na databases. UDP haina connection na hutumika kwa vitu kama DNS na baadhi ya VPNs. Unapofungua firewall, kwa kawaida hutaja aina ipi, kwa mfano 22/tcp.

Kusikiliza kunamaanisha programu inasubiri kwenye port

Programu inayotaka kupokea miunganisho huomba kernel "isikilize" kwenye port. Kuanzia wakati huo, port hiyo huwa wazi kwenye mashine na programu hujibu kila kitu kinachofika hapo, kwa kuzingatia firewall. Port ambayo hakuna kinachosikiliza hukataa miunganisho. Kwa hiyo, swali la kwanza katika ukaguzi wowote wa usalama ni: ni nini kinachosikiliza, na kiko wapi.

Amri ya kujibu swali hilo ni ss:

sudo ss -tlnp

Alama hizo zinamaanisha TCP (t), sockets zinazosikiliza pekee (l), port za namba (n, hivyo unaona 22 badala ya ssh), na mchakato unaomiliki (p). Matokeo ya kawaida:

State   Recv-Q  Local Address:Port   Process
LISTEN  0       0.0.0.0:22           sshd
LISTEN  0       127.0.0.1:5432       postgres
LISTEN  0       [::]:80              nginx

Safu ya Process inaonyesha ni programu gani inayomiliki kila port. Hivyo unaweza kufuatilia programu ambayo hukukusudia kuiacha ikiendelea.

Safu ya Local Address ndiyo muhimu

Soma kwa makini anwani iliyo mbele ya kila port, kwa sababu ndiyo huamua nani anaweza kufikia huduma. Kuna hali tatu utakazokutana nazo mara kwa mara.

0.0.0.0:22 inamaanisha “kusikiliza kwenye kila anwani ya IPv4 ambayo mashine hii inayo,” ikiwemo anwani yake ya umma. Huduma inaweza kufikiwa kutoka Internet kupitia IPv4, ikiwa firewall inaruhusu.

[::]:80 inamaanisha jambo lilelile kwa IPv6: kusikiliza kwenye kila anwani ya IPv6, ikiwemo anwani ya umma. Programu nyingi hujifunga hapa kwa chaguomsingi, na kwenye Linux socket ya :: mara nyingi hukubali IPv4 pia.

127.0.0.1:5432 inamaanisha “kusikiliza kwenye loopback pekee.” 127.0.0.1 ni anwani ambayo mashine hutumia kuwasiliana yenyewe, na haiwezi kufikishwa kupitia routing kutoka mahali pengine. Huduma iliyofungwa kwenye anwani hii inaweza kufikiwa tu kutoka kwenye seva hiyo hiyo, kamwe kutoka Internet, bila kujali firewall yako inasemaje. Mstari huo wa Postgres hapo juu ni salama kwa usanidi wake.

Kanuni ya vitendo inafuata moja kwa moja: database, cache au paneli ya usimamizi inayotumiwa na programu zako pekee inapaswa kufungwa kwenye 127.0.0.1, si 0.0.0.0. Ikiwa haisikilizi kamwe kwenye anwani ya umma, mshambulizi hana sehemu ya kuifikia.

Kusikiliza si sawa na kufikika

Tofauti nyingine huondoa mkanganyiko mwingi. Port ikiwa wazi kwenye mashine, yaani programu inaisikiliza, ni tofauti na port hiyo kufikika kutoka nje, yaani firewall inairuhusu. Hali zote mbili lazima zitimie ili mteja wa mbali aweze kuunganisha. Kushindwa huku kunaonekana kwa njia tofauti upande wa mteja: muunganisho unaokataliwa humaanisha hakuna kilichokuwa kinasikiliza, ilhali muunganisho unaokwama kisha kuisha kwa muda wa kusubiri kwa kawaida humaanisha firewall imetupa pakiti, jambo ambalo ndilo ujumbe wa makosa hayo mawili ya SSH unaonyesha.

Kwa hiyo, kuna tabaka mbili za udhibiti. Unaamua kitakachosikiliza kwa kuweka anwani ya bind ya kila huduma. Pia unaamua kile ambacho ulimwengu wa nje unaweza kufikia kwa kutumia firewall. Seva inayosimamiwa vizuri hutumia vyote viwili: huduma hufanya bind kwenye anwani wanazohitaji tu, na firewall hukataa kila kitu ambacho hukukiruhusu waziwazi. Kusoma kile kinachosikiliza kwa kutumia ss ni hatua ya kwanza; kuamua kile firewall inaruhusu ni hatua ya pili, inayoshughulikiwa kwenye misingi ya firewalls kwa UFW.

Kuna jambo la hila ambalo huwakwaza watu hapa. IPv4 na IPv6 ni tofauti, na firewall inayoshughulikia IPv4 pekee huacha huduma za [::] zikiwa wazi kwenye IPv6. Mtego huo maalum una chapisho lake: mtego wa firewall wa IPv6.

FAQ

Ninaonaje port zilizo wazi kwenye seva yangu ya Linux?

Tumia sudo ss -tlnp kwa TCP au sudo ss -ulnp kwa UDP. Hii huorodhesha kila socket inayosikiliza, port, anwani ya ndani ambayo imefungwa nayo, na mchakato unaomiliki. Soma safu ya Local Address: 0.0.0.0 au [::] inamaanisha huduma imefichuliwa kwenye mtandao, huku 127.0.0.1 ikimaanisha inasikiliza kwenye mashine yenyewe pekee.

Kuna tofauti gani kati ya 0.0.0.0 na 127.0.0.1?

0.0.0.0 inamaanisha "sikiliza kwenye anwani zote za IPv4," ikiwemo anwani ya umma, hivyo huduma inaweza kufikiwa kutoka kwenye mtandao. 127.0.0.1 ni loopback, yaani anwani ambayo mashine hutumia kuwasiliana yenyewe, na haiwezi ku-route kutoka mahali pengine. Kwa hiyo, huduma iliyofungwa kwenye anwani hii inaweza kufikiwa ndani ya mashine pekee. Funga huduma za ndani kwenye 127.0.0.1 ili zisifichuliwe kamwe.

Je, ninahitaji kufungua port kwenye firewall ili huduma ifanye kazi?

Ni kwa huduma zinazopaswa kufikiwa kutoka kwenye mashine nyingine pekee. Huduma iliyofungwa kwenye 127.0.0.1 haihitaji sheria ya firewall kwa sababu hakuna kitu cha nje kinachoweza kuifikia. Huduma iliyo kwenye 0.0.0.0 au [::] inahitaji sheria ya firewall kuruhusu traffic, na inapaswa kukataliwa kwa chaguo-msingi hadi uongeze sheria hiyo.

Kuna tofauti gani kati ya port ya TCP na port ya UDP?

TCP hutegemea muunganisho na hutumiwa na huduma nyingi, kama SSH, seva za web na database. UDP haina muunganisho wa kudumu na hutumiwa na DNS pamoja na baadhi ya VPN. Namba ileile kwenye TCP na UDP zinawakilisha port tofauti, kwa hiyo 53/tcp na 53/udp ni port tofauti. Unapoandika sheria za firewall, taja protocol, kwa mfano 22/tcp.