Puncte:0

Linux: Rezervarea unui port loopback unui utilizator fără autentificare. Este posibil?

drapel nl

Vreau ca utilizatorul care începe procesul de ascultare pe portul de pe interfața loopback să fie singurul utilizator care se poate conecta la acest port. Rezervarea portului. Fără autentificare.

Vreau ca alți utilizatori să poată face același lucru pe orice porturi de loopback disponibile.

Există vreun mecanism, cum ar fi selinux sau apparmor, capabil să realizeze acest lucru?

[EDITAȚI | ×] Doar pentru a clarifica, scenariul este cntlm pe o mașină multi-utilizator. Fiecare utilizator folosește cntlm pentru a se autentifica împotriva unui proxy cu propriile acreditări la un port unic de pe interfața loopback. Încerc să găsesc o modalitate de a izola acest lucru, astfel încât utilizatorii să nu se poată conecta folosind conexiunile proxy reciproc.

drapel mx
Tocmai am descoperit că acest lucru se poate face cu iptables https://unix.stackexchange.com/questions/486945/restrict-local-port-access-to-a-specific-user
A.B avatar
drapel cl
A.B
Dacă editarea dvs. s-a schimbat de la un port arbitrar de la orice utilizator la o listă fixă ​​de porturi care corespund unei liste fixe de utilizatori, atunci problema a simplificat foarte mult.
Puncte:2
drapel cn

Dacă prin loopback vă referiți la o conexiune de rețea doar la localhost, luați în considerare Prize AF_UNIX. AKA socket-uri de domeniu UNIX. AKA mod non-IP prin care vă puteți conecta la baze de date PostgreSQL sau MySQL.

Pe Linux, acest lucru are avantajul de a respecta permisiunile pentru fișiere. Fără să scrieți în socket ca utilizator, nu va funcționa. Probabil, acest comportament nu este standardizat.

Rețelele IP nu poartă ID-ul utilizatorului sistemului de operare al celui care a făcut pachetul. Poate că într-o regulă de firewall nftables puteți filtra pe uid, dar numai într-un firewall gazdă, pentru socket-uri locale. Mai bine ar fi un protocol de autentificare.

A.B avatar
drapel cl
A.B
Dacă comportamentul este descris în POSIX (https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html vezi EACCES) este un comportament destul de standardizat.
John Mahowald avatar
drapel cn
man 7 unix pe Linux avertizează că „pe unele sisteme (de exemplu, BSD-uri mai vechi), permisiunile socketului sunt ignorate”. Poate fi un lucru moștenit, dar merită investigat dacă aceasta este o aplicație portabilă fără autentificare.
Puncte:0
drapel mx

Iptables face exact ce am vrut să fac. Iată un exemplu iptables pe care l-am testat și funcționează. Trebuie doar să scriu un wrapper pentru a sandwich comanda cntlm în comenzile iptables. L-aș putea numi prânz.sh

# Pentru a rezerva portul 7777 la un utilizator „foo”
iptables -I OUTPUT -o lo -p tcp --dport 7777 -j DROP
iptables -I OUTPUT -o lo -p tcp --dport 7777 --match-owner --uid-owner foo -j ACCEPT

# Pentru a elibera portul 
iptables -D OUTPUT -o lo -p tcp --dport 7777 -j DROP
iptables -D OUTPUT -o lo -p tcp --dport 7777 --match-owner --uid-owner foo -j ACCEPT

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.