|
| Webserver på port 8080 kontra 80 Fra : Rune Zimmermann |
Dato : 26-09-02 10:24 |
|
Man kan jo med fordel køre sin webserver på port 8080 på en Linux-maskine,
men er der de samme fordele ved at gøre det på en Win2k?
Mvh.
--
Rune Zimmermann
http://www.spiffer.dk
| |
Max Andersen (26-09-2002)
| Kommentar Fra : Max Andersen |
Dato : 26-09-02 10:33 |
|
"Rune Zimmermann" <rune@spiffer.dk> wrote in message
news:amujnm$rdc$1@sunsite.dk...
> Man kan jo med fordel køre sin webserver på port 8080 på en Linux-maskine,
> men er der de samme fordele ved at gøre det på en Win2k?
>
Hvad er 'fordelen' ved at køre en webserver på port 8080 istedet for 80?
Det er der nærmere en bagdel at man skal skrive ' http://webserver:8080' i
sin browser eller?
Tænker du på orme, eller andre der scanner port 80, og prøve at undgå dette?
Max
| |
Rune Zimmermann (26-09-2002)
| Kommentar Fra : Rune Zimmermann |
Dato : 26-09-02 10:39 |
|
"Max Andersen" <max@militant.dk> wrote in message
> Hvad er 'fordelen' ved at køre en webserver på port 8080 istedet for 80?
Porte under 1024 på Linux-maskiner er mig bekendt forbeholdt brugeren root.
En Cracker der kommer ind igennem port 80 skulle derfor, efter sigende, få
root privilegier.
> Det er der nærmere en bagdel at man skal skrive ' http://webserver:8080' i
> sin browser eller?
>
Jo det kunne man tro, men nu står den bag en firewall, som blot sættes til
at forwarde til port 8080 på webserveren.
Mvh.
Rune Z.
| |
Jesper Louis Anderse~ (26-09-2002)
| Kommentar Fra : Jesper Louis Anderse~ |
Dato : 26-09-02 10:51 |
|
On Thu, 26 Sep 2002 11:38:33 +0200, Rune Zimmermann <rune@spiffer.dk> wrote:
> Porte under 1024 på Linux-maskiner er mig bekendt forbeholdt brugeren root.
> En Cracker der kommer ind igennem port 80 skulle derfor, efter sigende, få
> root privilegier.
Ikke altid:
http://www.hldp.org/HOWTO/Secure-Programs-HOWTO/minimize-privileges[tml
> Jo det kunne man tro, men nu står den bag en firewall, som blot sættes til
> at forwarde til port 8080 på webserveren.
Aha. Så kunne der som sådan være mening i det. Jeg vil dog stadigt tro
mere på et chroot() til dyret (der kan give et par hovedpiner og mavesår,
so beware).
--
Jesper
| |
Rune Zimmermann (26-09-2002)
| Kommentar Fra : Rune Zimmermann |
Dato : 26-09-02 12:34 |
| | |
Peder Vendelbo Mikke~ (26-09-2002)
| Kommentar Fra : Peder Vendelbo Mikke~ |
Dato : 26-09-02 20:32 |
| | |
Klaus Ellegaard (26-09-2002)
| Kommentar Fra : Klaus Ellegaard |
Dato : 26-09-02 10:59 |
|
"Rune Zimmermann" <rune@spiffer.dk> writes:
>Porte under 1024 på Linux-maskiner er mig bekendt forbeholdt brugeren root.
>En Cracker der kommer ind igennem port 80 skulle derfor, efter sigende, få
>root privilegier.
Et program kan fratage sig sine egne privilegier, og det gør langt
de fleste webservere, når de har bundet sig til port 80. På mange
"standard" Linux-fætre kører den herefter som www- eller nobody-
brugeren.
Microsoft har ikke implementeret filosofien om porte over og under
1024, så der er ingen fordele ved at binde til en anden port.
>Jo det kunne man tro, men nu står den bag en firewall, som blot sættes til
>at forwarde til port 8080 på webserveren.
Men hvis den står bag en firewall, er der jo heller ikke noget, der
kan komme ind til port 80... hvorfor så ikke bare forwarde fra port
80 til port 80?
Man kan selvfølgelig få en minimal ekstra sikkerhed ud af, at man
på Unix-platforme ikke skal bruge en root-proces til at starte
serveren. Men så længe processen smider sine privilegier, er det
nok en ret teoretisk fordel. Spørgsmålet er, om man vil acceptere
den større administrative (menneskelige) kompleksitet med en non-
standard port eller man vil reducere den lidt teoretiske risiko.
Det kommer i sidste ende an på sikkerhedspolitikken og miljøet:
hvis der er to administratorer, der kender installationen i alle
detaljer, er 8080-stuntet næppe et problem.
Mvh.
Klaus.
| |
Rune Zimmermann (26-09-2002)
| Kommentar Fra : Rune Zimmermann |
Dato : 26-09-02 11:13 |
|
"Klaus Ellegaard" <klaus@ellegaard.dk> wrote in message
> Men hvis den står bag en firewall, er der jo heller ikke noget, der
> kan komme ind til port 80... hvorfor så ikke bare forwarde fra port
> 80 til port 80?
>
Nu er port-problemet med privilegier så åbenbart ikke et problem på Win, men
lad os forestille og et tilfælde hvor en "ondsindet" sender en af de mange
ulovlige forespørgsler til webserveren og får eksekveret et program. F.eks.
en variant af cmd.exe eller en eller anden bagdør. Havde privilegierne så
ikke fulgt med porten og ikke med programmet, som ligeledes kørte på porten?
Mvh.
Rune Z.
| |
Klaus Ellegaard (26-09-2002)
| Kommentar Fra : Klaus Ellegaard |
Dato : 26-09-02 11:32 |
|
"Rune Zimmermann" <rune@spiffer.dk> writes:
>Nu er port-problemet med privilegier så åbenbart ikke et problem på Win, men
>lad os forestille og et tilfælde hvor en "ondsindet" sender en af de mange
>ulovlige forespørgsler til webserveren og får eksekveret et program. F.eks.
>en variant af cmd.exe eller en eller anden bagdør. Havde privilegierne så
>ikke fulgt med porten og ikke med programmet, som ligeledes kørte på porten?
Privilegierne følger med at blive startet som root (det er næsten
det samme med SUID-programmer men ikke helt). Hvis så webserveren,
efter at have bundet sig til port 80, beslutter SELV at smide sine
privilegier, er de væk fra den proces for evigt.
Porten blev bundet, da programmet kørte som root, og bindingen er
nedarvet, så programmet stadig har porten, selvom den ikke er root
mere. Det betyder også, at programmer eksekveres som "nobody" eller
hvad den nu kører som. Også selvom trafikken er kommet ind på port
80.
Programmet kan på ingen måde højne privilegierne igen. Medmindre det
kører et SUID-program eller lignende, men så er det underprogrammet,
der har privilegier - ikke webserveren. Og hvis SUID-programmet er
nogenlunde velskrevet, kan det ikke udføre slemme ting alligevel. Men
selv om det kan, er det jo et helt separat sikkerhedsproblem.
Mvh.
Klaus.
| |
Max Andersen (26-09-2002)
| Kommentar Fra : Max Andersen |
Dato : 26-09-02 12:46 |
|
"Rune Zimmermann" <rune@spiffer.dk> wrote in message
news:amukii$1r6$1@sunsite.dk...
> Porte under 1024 på Linux-maskiner er mig bekendt forbeholdt brugeren
root.
> En Cracker der kommer ind igennem port 80 skulle derfor, efter sigende, få
> root privilegier.
Jaeh, på noget Sun/Solaris dims, har det vist været sådan en gang, men jeg
har ikke hørt om moderne distributioner, hvor der ikke er en specifik
apache, nobody eller anden bruger uden særlige rettigheder. Men hvis din
> Jo det kunne man tro, men nu står den bag en firewall, som blot sættes til
> at forwarde til port 8080 på webserveren.
Okay, så er det bare at gøre det i IIS manager. :
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q190008
Max
| |
Stig Meyer Jensen (26-09-2002)
| Kommentar Fra : Stig Meyer Jensen |
Dato : 26-09-02 10:43 |
|
"Rune Zimmermann" <rune@spiffer.dk> skrev i en meddelelse
news:amujnm$rdc$1@sunsite.dk...
> Man kan jo med fordel køre sin webserver på port 8080 på en Linux-maskine,
> men er der de samme fordele ved at gøre det på en Win2k?
Det kommer an på hvilke "fordele" det er du tænker på. Men ja, en IIS eller en
Apache kan godt køre på andre porte end 80 på en W2K maskine.
--
Stig Meyer Jensen
stig@mine_3_initialer.dk (Ja, erstat selv...du kan godt)
| |
Jonathan Stein (26-09-2002)
| Kommentar Fra : Jonathan Stein |
Dato : 26-09-02 13:49 |
|
Rune Zimmermann wrote:
> Man kan jo med fordel køre sin webserver på port 8080 på en Linux-maskine,
> men er der de samme fordele ved at gøre det på en Win2k?
Hvis en hacker kommer ind på maskinen uden at opnå root-rettigheder, har
denne alligevel mulighed for at bruge port 8080 - men ikke port 80.
Alt andet lige må vi antage, at hackeren har nemmere ved at opnå rettigheder
som en anden bruger end root. - I den situation vil de fleste foretrække, at
hackeren _ikke_ har mulighed for at bruge den port, man kører sine eksterne
services på - derfor vil det ofte være en fordel at køre servicen på en port,
som kun root kan binde sig til. (Naturligvis bør servicen ændre sine egne
rettigheder så hurtigt som muligt).
M.v.h.
Jonathan
--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/
| |
Rune Zimmermann (26-09-2002)
| Kommentar Fra : Rune Zimmermann |
Dato : 26-09-02 16:15 |
|
"Jonathan Stein" <jstein@image.dk> wrote in message
> Hvis en hacker kommer ind på maskinen uden at opnå root-rettigheder, har
> denne alligevel mulighed for at bruge port 8080 - men ikke port 80.
> Alt andet lige må vi antage, at hackeren har nemmere ved at opnå
rettigheder
> som en anden bruger end root.....
Det må du gerne uddybe, for der stod jeg af..
Lad os sige at en hacker/cracker får succes med at starte en kommandolinie
gennem en webserver på port 80. Lad os så sige at webserveren i kraft af sit
portnummer kører som root. Dermed har personen mulighed for at fyre
kommandoer af med roots rettigheder.
Havde webserveren derimod kørt på 8080 som brugeren "Naiv", havde personen
mulighed for at fyre kommandoer af med rettigheder som brugeren "Naiv".
Er vi enige?
Du mener så at det er forkert at gøre sådan fordi det er nemmere at cracke
brugerkontoen "naiv" en brugerkontoen "root"?
Mvh.
Rune Z.
| |
Kent Friis (26-09-2002)
| Kommentar Fra : Kent Friis |
Dato : 26-09-02 17:09 |
|
Den Thu, 26 Sep 2002 17:14:41 +0200 skrev Rune Zimmermann:
>"Jonathan Stein" <jstein@image.dk> wrote in message
>> Hvis en hacker kommer ind på maskinen uden at opnå root-rettigheder, har
>> denne alligevel mulighed for at bruge port 8080 - men ikke port 80.
>> Alt andet lige må vi antage, at hackeren har nemmere ved at opnå
>rettigheder
>> som en anden bruger end root.....
>
>Det må du gerne uddybe, for der stod jeg af..
>Lad os sige at en hacker/cracker får succes med at starte en kommandolinie
>gennem en webserver på port 80. Lad os så sige at webserveren i kraft af sit
>portnummer kører som root.
Jeg tror du misforstår.
Port 80 giver ikke root-rettigheder, den *kræver* root-rettigheder.
At webserveren lytter på port 80 giver den altså ikke root-rettigheder,
men man skal være root for at kunne *starte* webserveren.
>Dermed har personen mulighed for at fyre
>kommandoer af med roots rettigheder.
Nej, ikke hvis man benytter en af de gængse webservere, der ikke
kører som root.
>Havde webserveren derimod kørt på 8080 som brugeren "Naiv", havde personen
>mulighed for at fyre kommandoer af med rettigheder som brugeren "Naiv".
>Er vi enige?
>Du mener så at det er forkert at gøre sådan fordi det er nemmere at cracke
>brugerkontoen "naiv" en brugerkontoen "root"?
Brugeren "Naiv", kan lytte på port 8080. Angriberen kan altså - efter
at han er kommet ind - starte sit eget program der lytter på port 8080,
i stedet for web-serveren. Og da du forwarder port 80 til port 8080, er
der fuld adgang til maskinen.
Havde du kun forwardet til port 80, ville det ikke være muligt for
brugeren "Naiv" at starte sin egen service på denne port.
Mvh
Kent
--
"A computer is a state machine.
Threads are for people who can't program state machines."
- Alan Cox
| |
Christian Andersen (26-09-2002)
| Kommentar Fra : Christian Andersen |
Dato : 26-09-02 18:10 |
|
Kent Friis wrote:
> Brugeren "Naiv", kan lytte på port 8080.
Ja.
> Angriberen kan altså - efter at han er kommet ind - starte sit eget
> program der lytter på port 8080, i stedet for web-serveren.
Ja.
> Og da du forwarder port 80 til port 8080, er der fuld adgang til maskinen.
Nej. Der er vel kun adgang til angriberens program, der kører med "Naivs"
rettigheder.
Så er der selvfølgelig åbnet for at lave man-in-the-middle angreb, men
det er ikke "fuld adgang" i den forstand jeg forstår det.
--
..signature
| |
Kent Friis (26-09-2002)
| Kommentar Fra : Kent Friis |
Dato : 26-09-02 19:16 |
|
Den Thu, 26 Sep 2002 17:10:06 +0000 (UTC) skrev Christian Andersen:
>Kent Friis wrote:
>
>> Brugeren "Naiv", kan lytte på port 8080.
>
>Ja.
>
>> Angriberen kan altså - efter at han er kommet ind - starte sit eget
>> program der lytter på port 8080, i stedet for web-serveren.
>
>Ja.
>
>> Og da du forwarder port 80 til port 8080, er der fuld adgang til maskinen.
>
>Nej. Der er vel kun adgang til angriberens program, der kører med "Naivs"
>rettigheder.
Damn, nogen gange får jeg ikke skrevet helt det jeg mener. Men kan
han få en telnet-agtig ting til at lytte på 8080, er det jo noget
nemmere, end at sidde og sende hver kommando i en buffer-overflow
med håndkodet assembler
>Så er der selvfølgelig åbnet for at lave man-in-the-middle angreb, men
>det er ikke "fuld adgang" i den forstand jeg forstår det.
Der er stadig et stykke vej til root, men man har (måske) gjort livet
lidt nemmere for angriberen.
Mvh
Kent
--
Desuden kan jeg ikke se nogen grund til at springe over hvor gærdet er
lavest, når man kan vente på at det alligevel bliver revet ned fordi
der skal bygges en omfartsvej...
- Claus Frørup og Asbjørn Christensen i dk.snak.
| |
Christian Andersen (26-09-2002)
| Kommentar Fra : Christian Andersen |
Dato : 26-09-02 19:29 |
|
Kent Friis wrote:
>>> Og da du forwarder port 80 til port 8080, er der fuld adgang til maskinen.
>> Nej. Der er vel kun adgang til angriberens program, der kører med "Naivs"
>> rettigheder.
> Damn, nogen gange får jeg ikke skrevet helt det jeg mener. Men kan
> han få en telnet-agtig ting til at lytte på 8080, er det jo noget
> nemmere, end at sidde og sende hver kommando i en buffer-overflow
> med håndkodet assembler
Godt, så er vi enige
--
..signature
| |
Rune Zimmermann (26-09-2002)
| Kommentar Fra : Rune Zimmermann |
Dato : 26-09-02 22:36 |
|
"Kent Friis" <leeloo@phreaker.net> wrote in message
> >> Og da du forwarder port 80 til port 8080, er der fuld adgang til
maskinen.
> >
> >Nej. Der er vel kun adgang til angriberens program, der kører med "Naivs"
> >rettigheder.
>
> Damn, nogen gange får jeg ikke skrevet helt det jeg mener. Men kan
> han få en telnet-agtig ting til at lytte på 8080, er det jo noget
> nemmere, end at sidde og sende hver kommando i en buffer-overflow
> med håndkodet assembler
>
Jeg tror der er en fundamental ting jeg er gået glip af her, for jeg har
lidt svært ved at følge jer...sorry!
Hvis jeg skal prøve at summere op:
Når du knækker en service på en port og får startet din egen service, kører
den med de rettigheder den oprindelige service kørte med. Ik'?
Knækker du en service på port 80 der kører med alm. brugerrettigheder, kan
du ikke starte en ny service op før du har fået ændret dine rettigheder til
root, eller du vælger at starte på en port over 1024. Ik'?
Alt dette er kun relevant når vi snakker Linux, *BSD osv. da de er de eneste
der kræver root-rettigheder på porte under 1024, samt at vi snakker nyere
servertyper, der er istand til at frigive sin root-status efter opstart.
Ik'?
På en Windose er det fløjtende ligegyldigt hvilken port du kører på. Du
skaber bare mere administration for dig selv, når du vælger
"ikke-standard"-porte. Ik'?
Så er der den buffer-overflow i "Håndkodet assembler". Kan du lige forklare
den?
Tak for de fine forklaringer..
Mvh.
Rune Z.
| |
Christian Andersen (26-09-2002)
| Kommentar Fra : Christian Andersen |
Dato : 26-09-02 23:16 |
|
Rune Zimmermann wrote:
>>> Nej. Der er vel kun adgang til angriberens program, der kører med "Naivs"
>>> rettigheder.
>> Damn, nogen gange får jeg ikke skrevet helt det jeg mener. Men kan
>> han få en telnet-agtig ting til at lytte på 8080, er det jo noget
>> nemmere, end at sidde og sende hver kommando i en buffer-overflow
>> med håndkodet assembler
> Jeg tror der er en fundamental ting jeg er gået glip af her, for jeg har
> lidt svært ved at følge jer...sorry!
> Hvis jeg skal prøve at summere op:
> Når du knækker en service på en port og får startet din egen service, kører
> den med de rettigheder den oprindelige service kørte med. Ik'?
Nu siger du lige "knækker". Det giver ikke så forfærdelig meget mening i
den her sammenhæng, fordi portnummeret i sig selv har ikke noget at gøre
med hvor mange rettigheder et program har (det vil sige, det har det så
alligevel, men læs videre).
(Vildt gætteri følger)
Jeg gætter på at portene under port 1024 kaldes de "priviligerede porte"
fordi de originale designere af *nix-systemer mente at folk der forbandt sig
til systemer de ikke kendte, skulle have i det mindste en lille
forsikring om at det var et "ok" program de forbandt sig til. Man kunne
altså stole på et program der lyttede på en port under 1024, fordi det
var root der havde startet det.
> Knækker du en service på port 80 der kører med alm. brugerrettigheder, kan
> du ikke starte en ny service op før du har fået ændret dine rettigheder til
> root, eller du vælger at starte på en port over 1024. Ik'?
Jo. På *nix kan du kun starte serverprogrammer under port 1024 hvis du er
root.
> På en Windose er det fløjtende ligegyldigt hvilken port du kører på. Du
> skaber bare mere administration for dig selv, når du vælger
> "ikke-standard"-porte. Ik'?
Jo.
> Tak for de fine forklaringer..
Jooeh ... Jeg forsøgte da
--
..signature
| |
Kent Friis (27-09-2002)
| Kommentar Fra : Kent Friis |
Dato : 27-09-02 16:08 |
|
Den Thu, 26 Sep 2002 23:35:49 +0200 skrev Rune Zimmermann:
>"Kent Friis" <leeloo@phreaker.net> wrote in message
>
>> >> Og da du forwarder port 80 til port 8080, er der fuld adgang til
>maskinen.
>> >
>> >Nej. Der er vel kun adgang til angriberens program, der kører med "Naivs"
>> >rettigheder.
>>
>> Damn, nogen gange får jeg ikke skrevet helt det jeg mener. Men kan
>> han få en telnet-agtig ting til at lytte på 8080, er det jo noget
>> nemmere, end at sidde og sende hver kommando i en buffer-overflow
>> med håndkodet assembler
>>
>Jeg tror der er en fundamental ting jeg er gået glip af her, for jeg har
>lidt svært ved at følge jer...sorry!
>Hvis jeg skal prøve at summere op:
>Når du knækker en service på en port og får startet din egen service, kører
>den med de rettigheder den oprindelige service kørte med. Ik'?
>Knækker du en service på port 80 der kører med alm. brugerrettigheder, kan
>du ikke starte en ny service op før du har fået ændret dine rettigheder til
>root, eller du vælger at starte på en port over 1024. Ik'?
Korrekt, men hvis firewall'en kun har åbent for port 80, hjælper det jo
ikke noget at starte en service på 1030.
>Alt dette er kun relevant når vi snakker Linux, *BSD osv. da de er de eneste
>der kræver root-rettigheder på porte under 1024, samt at vi snakker nyere
>servertyper, der er istand til at frigive sin root-status efter opstart.
>Ik'?
"nyere" i den sammenhæng antyder at du er _meget_ gammel - den
funktionalitet har unix-maskiner haft lige siden "su" blev til "switch
user".
>På en Windose er det fløjtende ligegyldigt hvilken port du kører på. Du
>skaber bare mere administration for dig selv, når du vælger
>"ikke-standard"-porte. Ik'?
Hvis det er korrekt at windows ikke har nogen begrænsning, så ja, så er
det fløjtende ligegyldigt.
>Så er der den buffer-overflow i "Håndkodet assembler". Kan du lige forklare
>den?
En buffer-overflow går ud på at man sender en mængde data der er større
end en buffer kan håndtere, for derved at overskrive andre ting. Typisk
en buffer på stack'en, da man så har mulighed for at overskrive retur-
adressen, som CPU'en vil returnere til når den afslutter den funktion
der kører på det tidspunkt buffer-overflowet sker.
Hvis man bare overskriver retur-adressen med tilfældige data, vil
programmet med 99% sandsynlighed crashe, og det vil højst blive et
DOS-angreb - programmer som Apache, der bruger flere processer vil blot
miste en enkelt process, der vil blive startet op igen, og ingen opdager
noget som helst. Ikke noget sjovt der.
Hvis man i stedet overskriver returadressen, med en adresse på stack'en,
kan man jo "bare" (da man alligevel er ved at overskrive stack'en)
skrive sin egen kode, og så lade CPU'en returnere dertil. Men det kræver
at man ved præcis hvor i RAM'en stack'en er placeret, hvor bufferen
ligger, og hvor retur-adressen ligger. Altså ret lowlevel, hardcore
nørderi.
Mvh
Kent
--
Object orientation: the idea, that humans find it easier to understand
"you.car.engine.start" than "start your car engine".
| |
Christian E. Lysel (27-09-2002)
| Kommentar Fra : Christian E. Lysel |
Dato : 27-09-02 08:48 |
|
Rune Zimmermann wrote:
> Man kan jo med fordel køre sin webserver på port 8080 på en Linux-maskine,
> men er der de samme fordele ved at gøre det på en Win2k?
En IIS forsætter typisk med at lytte på port 80, selvom du i
grænsefladen fortæller den noget andet.
--
Christian E. Lysel, http://www.spindelnet.dk/
| |
|
|