SSD Nodes Learn
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-07-24

Port ni nini na huduma za Linux zinavyosikiliza

Jifunze maana ya port na jinsi ya kutumia amri ya ss kuona huduma zinazofanya kazi kwenye Linux. Elewa tofauti kati ya port za TCP na UDP kwa urahisi.

Maana halisi ya port

Port ni namba inayoruhusu seva moja kuendesha huduma nyingi kwa wakati mmoja bila trafiki yao kuchanganyika. VPS yako ina anwani moja ya IP, lakini inaweza kuendesha web server, SSH server, na database kwa wakati mmoja. Paketi inapofika, mfumo wa uendeshaji unahitaji kujua ni paketi ya huduma gani. Namba ya port ndiyo jibu. Trafiki ya web inaenda kwenye port 443, SSH inaenda kwenye port 22. Anwani ya IP inafikisha paketi kwenye seva yako; port inafikisha kwenye programu sahihi kwenye hiyo seva.

Port ni namba ya biti 16: biti 16 zinatoa 0 hadi 65535, na 0 imehifadhiwa, hivyo port zinatumika kuanzia 1 hadi 65535 kwa vitendo. Port zilizo chini ya 1024 ni port "zinazojulikana" (well-known) na zinahitaji ruhusa ya root ili kufunguliwa, ndiyo sababu huduma za kawaida zipo hapo: 22 kwa SSH, 80 kwa HTTP, 443 kwa HTTPS, 53 kwa DNS. Chochote kilicho juu ya 1024 kinaweza kutumiwa na programu za kawaida.

Kuna aina mbili, TCP na UDP, na namba ya port katika moja ni tofauti na namba hiyo hiyo katika nyingine. TCP ni itifaki inayozingatia muunganisho (connection-based) inayotumiwa na huduma nyingi, kama vile SSH, HTTP, na databases. UDP haina muunganisho (connectionless) na hutumiwa kwa vitu kama DNS na baadhi ya VPNs. Unapofungua firewall kwa kawaida unataja ipi, kwa mfano 22/tcp.

Kusikiliza (Listening) inamaanisha programu inasubiri kwenye port

Programu inayotaka kupokea muunganisho huomba kernel "kusikiliza" (listen) kwenye port. Kuanzia wakati huo, port inakuwa wazi kwenye mashine na programu hiyo hujibu chochote kinachofika hapo, kulingana na firewall. Port ambayo haina kitu kinachosikiliza hupiga chini muunganisho. Kwa hivyo swali la kwanza katika ukaguzi wowote wa usalama ni: nini kinasikiliza, na wapi.

Amri ya kujibu hilo ni ss:

sudo ss -tlnp

Flags zina maana ya TCP (t), sockets zinazosikiliza tu (l), namba za port (n, hivyo utaona 22 badala ya ssh), na mchakato (process) 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 inakuambia ni programu gani inayomiliki kila port, ambayo ndiyo njia ya kutambua kitu ambacho hukukusudia kukiacha kikiwa kimefunguliwa.

Safu ya Local Address ndiyo sehemu muhimu zaidi

Soma anwani iliyo mbele ya kila port kwa uangalifu, kwa sababu inaamua nani anaweza kufikia huduma hiyo. Kuna mazingira matatu utayoyaona mara kwa mara.

0.0.0.0:22 inamaanisha "sikiliza kwenye kila anwani ya IPv4 ambayo mashine hii ina," ikiwa ni pamoja na anwani yake ya umma. Huduma inaweza kufikiwa kutoka internet kupitia IPv4, ikiwa firewall itaruhusu.

[::]:80 inamaanisha kitu kilekile kwa IPv6: sikiliza kwenye kila anwani ya IPv6, ikiwa ni pamoja na ya umma. Programu nyingi hufungua hapa kwa kimawazo (default), na kwenye Linux socket ya :: mara nyingi hukubali IPv4 pia.

127.0.0.1:5432 inamaanisha "sikiliza kwenye loopback pekee." 127.0.0.1 ni anwani ambayo mashine hutumia kuzungumza na yenyewe, na haiwezi kufikiwa kutoka mahali popote pengine. Huduma iliyofunguliwa hapa 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 muundo wake.

Sheria ya kivitendo inatokea hapa: database, cache, au jopo la admin ambalo programu zako tu ndizo zinazotumia linapaswa kufunguliwa kwenye 127.0.0.1, si 0.0.0.0. Ikiwa haitasikiliza kamwe kwenye anwani ya umma, hakuna kitu ambacho mshambuliaji anaweza kukifikia.

Kusikiliza si sawa na kufikiwa

Tofauti nyingine moja huokoa mkanganyiko mkubwa. Port kuwa wazi kwenye mashine, ikimaanisha programu inasikiliza, ni tofauti na port hiyo kufikiwa kutoka nje, ikimaanisha firewall inaruhusu. Zote mbili lazima ziwe kweli ili mteja wa mbali aweze kuunganishwa.

Hivyo kuna ngazi mbili za udhibiti. Unachagua nini kinasikiliza, kwa kuweka anwani ya bind ya kila huduma. Na unachagua nini dunia ya nje inaweza kufikia, kwa kutumia firewall. Seva inayojiendesha vizuri hutumia zote mbili: huduma hufunguliwa pale tu zinapohitaji, na firewall hukataa kila kitu ambacho hukukiruhusu waziwazi. Kusoma kinachosikiliza kwa kutumia ss ni hatua ya kwanza; kuamua nini firewall inaruhusu ni hatua ya pili, inayofundishwa kwenye firewalls 101 with UFW.

Kuna mambo madogo yanayowapata watu hapa. IPv4 na IPv6 ni tofauti, na firewall inayofunika IPv4 pekee huacha huduma za [::] zikiwa wazi kwenye IPv6. Mtego huo mahususi una chapisho lake: the IPv6 firewall trap.

FAQ

Je, nawezaje kuona ni port zipi ziko wazi kwenye seva yangu ya Linux?

Tumia sudo ss -tlnp kwa TCP au sudo ss -ulnp kwa UDP. Hiyo itaorodhesha kila socket inayosikiliza, port, anwani ya ndani (local address) inayofunguliwa, na mchakato unaoimiliki. Soma safu ya Local Address: 0.0.0.0 au [::] inamaanisha huduma imewekwa wazi kwenye mtandao, wakati 127.0.0.1 inamaanisha inasikiliza kwenye mashine yenyewe tu.

Ni tofauti gani kati ya 0.0.0.0 na 127.0.0.1?

0.0.0.0 inamaanisha "sikiliza kwenye zote za IPv4," ikiwa ni pamoja na anwani ya umma, hivyo huduma inaweza kufikiwa kutoka kwenye mtandao. 127.0.0.1 ni loopback, anwani ambayo mashine hutumia kuzungumza na yenyewe, na haiwezi kufikiwa kutoka mahali popote pengine, hivyo huduma iliyofunguliwa hapo inaweza kufikiwa ndani tu. Fungua huduma za ndani kwenye 127.0.0.1 ili zisifunguliwe wazi.

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

Ni kwa ajili ya huduma ambazo lazima zifikiwe kutoka kwenye mashine nyingine. Huduma iliyofunguliwa kwenye 127.0.0.1 haihitaji sheria ya firewall kwa sababu hakuna kitu cha nje kinachoweza kukifikia anyway. Huduma kwenye 0.0.0.0 au [::] inahitaji sheria ya firewall kuruhusu trafiki, na inapaswa kukataliwa kwa kimawazo hadi uongeze moja.

Ni tofauti gani kati ya TCP port na UDP port?

TCP inategemea muunganisho na hutumiwa na huduma nyingi, kama vile SSH, web servers, na databases. UDP haina muunganisho na hutumiwa na DNS na baadhi ya VPNs. Namba ile ile katika TCP na UDP ni port tofauti, hivyo 53/tcp na 53/udp ni tofauti. Unapoandika sheria za firewall unataja itifaki, kwa mfano 22/tcp.