• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Auf Port kleiner 1024 binden

MuffiXXL

Well-Known Member
Themenstarter #1
Hi, ich versuch grade Tor auf Port 443 zu binden mit defaultuser _tor.
Ist
Code:
sysctl net.inet.ip.portrange.reservedhigh=0
das was ich will oder handle ich mir da Sicherheitsprobleme ein?
 

bananenBrot

Well-Known Member
#2
Ich hab das sowieso nie verstanden mit < 1024 und > 1024.
Klar, Ports unter 1024 werden häufiger mit Anfragen überschwemmt, weil sie halt generell per Default durchgescannt werden aber wo ist denn mein Sicherheitsgewinn, wenn ich meine Dienste anstatt auf Port 443 auf 13456 binde?
 

darktrym

Fahnenträger
#3
Eigentlich sollte nur der Root Ports < 1024 öffnen können und in der Regel sind die für irgendwelche (alten) Dienste reserviert.
 

Flex6

Well-Known Member
#4
Es gibt verschiedenen Port-Bereiche und jeder Bereich erfüllt einen anderen Zweck, ein Bereich/e ist für Dienste reserviert, ein Bereich für Netzwerkverkehr und es gibt auch tabu Breiche also Bereiche die gesperrt sind. Das kann man alles unter IANA, und in der Datei /etc/services nachlesen.Es gibt im Handbuch von FreeBSD, glaube "Tuning und Limits" paar Zeilen zu dem Thema.
Gruß
 

mark05

Well-Known Member
#5
Hi, ich versuch grade Tor auf Port 443 zu binden mit defaultuser _tor.
Ist
Code:
sysctl net.inet.ip.portrange.reservedhigh=0
das was ich will oder handle ich mir da Sicherheitsprobleme ein?

also tor zu binden auf einen anderen port sollte per parameter den
tor daemons oder clients gehen aber bestimmt nicht mit sysctl

holger
 

dettus

Bicycle User
#7
Ich hab das sowieso nie verstanden mit < 1024 und > 1024.
Klar, Ports unter 1024 werden häufiger mit Anfragen überschwemmt, weil sie halt generell per Default durchgescannt werden aber wo ist denn mein Sicherheitsgewinn, wenn ich meine Dienste anstatt auf Port 443 auf 13456 binde?
ganz einfach, weil die <1024 von root kommen, und >1024 von usern.
damit ist es moeglich "trusted" server aufzubauen, und sicherzustellen dass nicht irgendein subversiver user einen passwortsniffer auf port 22 startet. (soweit die idee)
 

mark05

Well-Known Member
#8
hi

naja technisch kann ich jeden dienst unter < 1023 listen lassen.

schau dir alleine mal bei openbsd die ganzen system dienste an die als nicht root
laufen und trozdem funktionieren .

z.b.
snmpd mit user _snmpd port udp 161
ftp-proxy user ftp-proxy port tcp 21
named user named port tcp / udp 53

holger
 

dettus

Bicycle User
#11
@mark05:
diese dienste laufen als smpd und so weiter. damit sie nicht durch einen bug den account von root kompromittieren.

aber dennoch werden sie nicht von "normalen" usern gestartet. :belehren:
du loggst dich nicht als sshd mit passwort ein um das zum laufen zu bringen, oder?
 
#13
Hi, ich versuch grade Tor auf Port 443 zu binden mit defaultuser _tor.
Ist
Code:
sysctl net.inet.ip.portrange.reservedhigh=0
das was ich will oder handle ich mir da Sicherheitsprobleme ein?
Ich persönlich würde drn net.inet.ip.portrange.reservedhigh sysctl *nicht* in der von dir vorgeschlagenen Form manipulieren.

pf/ipfw rdr ? oder Tor in einem Jail mit pf/ipfw rdr ?

oder eine noch andere Lösung :
man mac_portacl(4)
 

mark05

Well-Known Member
#14

mark05

Well-Known Member
#17
hi

toll und was soll mir das jetzt sagen mit dem nc
nur weil es nicht geht , was ja durchaus gewollt sein kann z.b. programm seitig ,
so bedeutet es nicht das es nicht gehen koennte per definition der rfcs her.

und wie schon gesagt ........ wenn es denn eine definition oder rfc gibt die genau
dieses verhalten beschreibt ist das ok , nur ich kenne sie nicht.

holger
 
#18
hi
toll und was soll mir das jetzt sagen mit dem nc
nur weil es nicht geht , was ja durchaus gewollt sein kann z.b. programm seitig
Es ist vom OS her nicht erlaubt, nicht vom Programm:

Code:
#!/usr/bin/perl -w

use strict;
use Socket;

socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
if(!bind(SOCK, sockaddr_in("80", INADDR_ANY)))
	{
	warn "bind: $!\n";
	}

close(SOCK);
exit(0);
Für das mal als user und als root aus.
Im ersten Fall wirst du eine Warnung bekommen.
Falls bei dir auf 80 schon was lauscht, nimm einfach ne andere Portnummer.

Rob
 

mark05

Well-Known Member
#19
hi

nur damit man mich nicht missversteht , ich weiss das es so ist und schon immer sowar
mit den port < 1023 und root und warum und weshalb und sowieso .

jedoch habe ich mich nie damit beschaeftigt wo das mal definiert wurde in form eines
drafts oder rfc .

von daher , und von den rfc die ich kenne die das thema beinhalten habe ich nix gefunden
was einen bezug auf den user root schliessen laesst.

holger
 
#20
jedoch habe ich mich nie damit beschaeftigt wo das mal definiert wurde in form eines drafts oder rfc .
Hmm, "root" ist auch zu betriebssystemlastig, als dass es in einen Standard einfließen kann. So wie ich das überblicke, wurde diese Einschränkung mit BSD eingeführt, insbesondere mit der BSD-Socket-API, die ja die Grundlage der TCP-APIs vieler Betriebssysteme stellt.

Heutzutage würde man sowas vielleicht nicht an root/uid 0 binden, sondern an etwas wie capabilities, vielleicht ist es auch schon so unter Linux.

Rob
 

mark05

Well-Known Member
#22
hi
also das ganze scheint ja eine lange history zu haben ....... habe mal nachgehackt .....

erstmals unter 4.2BSD ....... oh je ........ sowas kann man ja garnicht wissen so alt ist das ;)

holger
 

MuffiXXL

Well-Known Member
Themenstarter #23
@metro: Danke, sowas wie mac_portacl habe ich gesucht. Da werde ich mal etwas spielen.

@mark05: Danke fürs Hijacken des Threads ;-)
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#25
Das geht unter FreeBSD auch mit dem MAC-Framework und dem Modul mac_portacl. Allerdings ist MAC relativ kompliziert und für Heimnutzer sowie kleinere Firmen völlig überdimensioniert, weshalb es in der Praxis nur wenig genutzt wird.