Si mund te hap nje porte nen 1024 dhe nga perdorues qe nuk jane root?

Al-Punk

Still here
Doja te hapja nje porte diku ne rendin e portave nen 1024 ne nje makine linux, por do doja ta beja jo nga useri Root.
Vura re qe te gjitha portat nen 1024 mund te hapen vetem nga root. Di njeri ku mund te ndryshohet ky konfigurim apo eshte dicka e built in ne kernel?
 

eklipsi

Forumium maestatis
Me sa lexova verdalle nuk eshte e keshillueshme per shkaqe sigurie...

Sdq nje "work around" propozohej diku, (Perveç CentOS 3/4/5 mangesi te kapacitetit te filesystems)!

Per te tjerat keshillohej kjo:

Mund ti japesh kapacitetin CAP_NET_BIND_SERVICE programit qe ka nevojen te hape ate porte. Root do i jape lejen file-t qe ekzekutohet (executable). Pastaj "çdo user" mund te beje run executable, dhe do kete te mundur perdorimin e portave nen 1024.


Per ti dhene kapacitetin file-t executable perdoret kjo komande:


Code:
setcap cap_net_bind_service=+ep /path/to/program
 

gurax

Pan ignoramus
Une do e beja me nje menyre tjeter.

Psh une kam nje sistem ku nuk ka webserver. Por ne kete sistem eshte nje aplikacion qe me duhet te perdor. Klientet qe lidhen me te kerkojne te lidhen ne tcp-port 80 per te komunikuar, pse-ja s'na intereson (psh per te mos u bllokuar nga firewall te ndryshem). Por ne sistemin ne fjale, aplikacioni nuk eshte i ekzekutuar me te drejta "root" dhe prandaj nuk mund te perdore porten 80.

Ajo qe do te beja eshte te konfiguroj aplikacionin te punoje ne nje porte tjeter me te madhe se 1024, psh le te themi 1380.
Me pas, si root, behet nje redireksionim i portes 80 qe eshte jashte mundesive te aplikacionit tone, ne porten 1380 qe eshte porta me te cilen punon aplikacioni.

Redireksionimi me ane te (linux. Nuk di te them per *BSD):
Code:
iptables -I PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 1380
Kjo komande duhet patur kujdes qe te aplikohet sa here qe sistemi behet restart.

Nderkohe aplikacioni eshte ne cdo rast i ekzekutuar si user normal dhe 'injorant' ndaj cfare ndodh pertej sferes se tij te influences. Gjithashu sistemi nuk e trajton kete aplikacion ne asnje menyre ndryshe nga cdo user application tjeter, ne kontrast me zgjidhjen me pcaps ku sistemi eshte koshient per kerkesat specifike te aplikacionit ne fjale (/path/to/user/program).
 

Al-Punk

Still here
Une do e beja me nje menyre tjeter.

Psh une kam nje sistem ku nuk ka webserver. Por nje aplikacion qe me duhet te perdor. Klientet qe lidhen me te kerkojne te lidhen ne tcp-port 80 per te komunikuar, pse-ja s'na intereson (psh per te mos u bllokuar nga firewall te ndryshem. Por ne sistemin ne fjale, aplikacioni nuk eshte i ekzekutuar me te drejta "root" dhe nuk mund te perdore porten 80.

Ajo qe do te beja eshte te konfiguroj aplikacionin te punoje ne nje porte tjeter me te madhe se 1024, psh le te themi 1380.
Me pas, si root, behet nje redireksionim i portes 80 qe eshte jashte mundesive te aplikacionit tone, ne porten 1380 qe eshte porta me te cilen punon aplikacioni.

Redireksionimi me ane te (linux. Nuk di te them per *BSD):
Code:
iptables -I PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 1380

Kjo komande duhet patur kujdes qe te aplikohet sa here qe sistemi behet restart.
Zgjidhja e @gurax me siper eshte me praktikja ne fakt.



Ajo qe kerkoja ne fillim eshte qe te lehtesoja usera jo-root te perdornin portat nen 1024.
Aktualisht ne porten 80 kisha Apache dhe po kerkoja te hapja nje porte tip 81 per nje tomcat si jo root.
Sdq zgjidhja ime per tu shtuar ne liste me te @eklipsi dhe @gurax ka te beje me Apache Proxies.

/etc/sysconfig/apache2
- Variable APACHE_MODULES suchen
- “proxy proxy_ajp proxy_http proxy_connect” shtohen modulet e proxy (mund te duhet re-kompilim ose thjesht shtim i tyre, varet sipas ambientit)

- vi /etc/apache2/default-server.conf
- Shtohet dicka si “ProxyPass /aliasname ajp://localhost:8080” ne fund te skedarit me siper

- Apache restart dhe
- GET http://lservername:80/aliasname/

Keto jane 'workarounds' dhe jo zgjidhje tamam. Ngelet prap pyetja, ku percaktohet qe vetem root mund te hape porta nen 1024
 

Al-Punk

Still here
Me sa lexova verdalle nuk eshte e keshillueshme per shkaqe sigurie...

Sdq nje "work around" propozohej diku, (Perveç CentOS 3/4/5 mangesi te kapacitetit te filesystems)!

Per te tjerat keshillohej kjo:

Mund ti japesh kapacitetin CAP_NET_BIND_SERVICE programit qe ka nevojen te hape ate porte. Root do i jape lejen file-t qe ekzekutohet (executable). Pastaj "çdo user" mund te beje run executable, dhe do kete te mundur perdorimin e portave nen 1024.


Per ti dhene kapacitetin file-t executable perdoret kjo komande:

Code:
setcap cap_net_bind_service=+ep /path/to/program
Kjo kerkonte nje librari qe nuk mund ta instaloj per arsye te ndryshme: libcap2-bin
 

SiL3nT

Super Moderator
Anëtar i Shtabit
Mesa lexova une e vetmja mundesi eshte qe te recompile kernel dhe te ndryshosh PROT_SOCK ne include/net/sock.h (#define PROT_SOCK 1024) por normalisht qe nuk eshte e keshillushme, dhe nuk ka asnje opsion ne asnje file qe mund thjesht te ndryshosh kete pa bere recompile.
 
D

doni21[ALV]

Guest
Zgjidhja e @gurax me siper eshte me praktikja ne fakt.



Ajo qe kerkoja ne fillim eshte qe te lehtesoja usera jo-root te perdornin portat nen 1024.
Aktualisht ne porten 80 kisha Apache dhe po kerkoja te hapja nje porte tip 81 per nje tomcat si jo root.
Sdq zgjidhja ime per tu shtuar ne liste me te @eklipsi dhe @gurax ka te beje me Apache Proxies.

/etc/sysconfig/apache2
- Variable APACHE_MODULES suchen
- “proxy proxy_ajp proxy_http proxy_connect” shtohen modulet e proxy (mund te duhet re-kompilim ose thjesht shtim i tyre, varet sipas ambientit)

- vi /etc/apache2/default-server.conf
- Shtohet dicka si “ProxyPass /aliasname ajp://localhost:8080” ne fund te skedarit me siper

- Apache restart dhe
- GET http://lservername:80/aliasname/

Keto jane 'workarounds' dhe jo zgjidhje tamam. Ngelet prap pyetja, ku percaktohet qe vetem root mund te hape porta nen 1024
 
Top