Nya erbjudanden i Webhallen Gamers Unite

Hur fixar jag ett password till min webbserver, som jag använder som moln?

Permalänk
Medlem

Hur fixar jag ett password till min webbserver, som jag använder som moln?

Jag satte upp en Raspberry Pi som webbserver med ett 256 GB-minneskort, o nu tänkte jag använda det som bl.a moln. Det funkar, men nu kommer vem som helst åt det. Jag skulle vilja ha en publik del, där alla kan ladda upp filer, så långt har jag kommit;
http://176.10.207.123/upload.html

Vem som helst kan se filerna också;
http://176.10.207.123/uploads/

Samt vill jag ha en privat del för min ekonomi o annat privat.

Jag har följt diverse guider jag hittat o försökt att göra en genom att använda .htaccess och .htpasswd T.ex: https://help.dreamhost.com/hc/en-us/articles/216363187-Passwo...
https://www.lcn.com/support/articles/how-to-password-protect-...
https://www.studytonight.com/post/using-htaccess-file-to-pass...

Men inget händer? Filerna lägger jag där det står att dom ska vara, men det kommer inte upp någon password-förfrågan...?

Permalänk
Hedersmedlem

Hej, länkarna du visar är rätt spår, d.v.s. att sätta upp en .htpasswd samt .htaccess-fil. Däremot så kan det vara så att htaccess-filter inte är aktiverade i Apache på den sökvägen.

https://webrewrite.com/enable-htaccess-file-apache2/

Alternativt kan du göra samma konfiguration i webbserverkonfigurationen istället för i en .htaccess-fil.

Kombinera gärna med SSL också, en .htaccess-fil utan SSL-kryptering är inte särskilt säkert, då dina lösenord skickas i klartext över Internet...

Permalänk
Medlem

Enklast är väl att göra en Owncloud-server.

Finns det någon anledning till att du fotar skyddsobjekt med fotoförbud?

Permalänk
Medlem
Skrivet av gothenburg:

Enklast är väl att göra en Owncloud-server.

Finns det någon anledning till att du fotar skyddsobjekt med fotoförbud?

Hehe, det där är faktiskt någon, ingen aning om vem, som laddade upp. Jag tyckte också det var lite märkligt...?

Permalänk
Sötast

Jag får erkänna att jag bytte ut din http://176.10.207.123/uploads/ mot en miniräknare.

Behöver nog se till så att den sidan inte öppnar index.html per automatik

Permalänk
Medlem

Har du funderat på att hosta en egen NextCloud istället för att skriva det själv? Eller handlar det om att du vill lära dig? Jag skulle starkt avråda dig ifrån att låta random folk ladda upp godtyckliga grejer till en hemmaserver.

Permalänk
Medlem

Jag skulle råda dig att genast plocka ner din server från internet och fundera på vad ditt mål är och hur du når det på ett säkert sätt. Internet är inte lika gulligt nu som för 15 år sedan och det är väl bara en tidsfråga innan du får sitta och granska otrevliga bilder som är olagliga att inneha.

Ska du ha ett eget moln så skulle jag köra en färdig lösning (OwnCloud / NextCloud?) och bara tillåta åtkomst via VPN och inte exponera någon webbtjänst till internet. Vill det sig illa så är det inte bara din Raspberry Pi som ryker utan din frys och TV blir del av botnät, dina windows-shares på lokala nätverket blir krypterade mot ransom etc.

Permalänk
Hedersmedlem
Skrivet av Allexz:

Jag får erkänna att jag bytte ut din http://176.10.207.123/uploads/ mot en miniräknare.

Behöver nog se till så att den sidan inte öppnar index.html per automatik https://i.pinimg.com/originals/b9/52/44/b952447538105d3369d309edfbd2a4f9.png

Det finns ju mer intressanta filtyper att ladda upp än HTML dock. (Mer än så här tänker jag inte skriva publikt innan TS stänger ner.)

Permalänk
Medlem
Skrivet av Allexz:

Jag får erkänna att jag bytte ut din http://176.10.207.123/uploads/ mot en miniräknare.

Behöver nog se till så att den sidan inte öppnar index.html per automatik https://i.pinimg.com/originals/b9/52/44/b952447538105d3369d309edfbd2a4f9.png

Det är lugnt!

Jag har kopplat ner den nu. Nån kan ju ladda upp värre grejer... Men ska läsa på mer om era tips!

Permalänk
Hedersmedlem
Skrivet av pv2b:

Det finns ju mer intressanta filtyper att ladda upp än HTML dock. (Mer än så här tänker jag inte skriva publikt innan TS stänger ner.)

Skrivet av Muppety:

Det är lugnt!

Jag har kopplat ner den nu. Nån kan ju ladda upp värre grejer... Men ska läsa på mer om era tips!

OK, nu när servern är nere så kan jag avslöja (för allmänbildningen skull) att jag lyckades ladda upp ett PHP-script på sidan, vilket hade gjort det möjligt att köra vilken kod som helst på servern i fråga. Nu gjorde jag inte mer än en enkel "hello world" som räknade ut 2+2.

Det är lite av ett minfält att tillåta uppladdning av filer i mappar som går att komma åt över nätet. En bra resurs för hur man hanterar detta är denna: https://owasp.org/www-community/vulnerabilities/Unrestricted_...

Rent generellt är jag dock benägen att hålla med ett tidigare inlägg, istället för att skriva en egen webapp för att dela några filer bör du fundera på en färdig lösning som NextCloud eller liknande. (Å andra sidan hade du kanske inte lärt dig om den här sortens säkerhetsbuggar om du hade gjort det...)

Permalänk
Medlem
Skrivet av Muppety:

Jag satte upp en Raspberry Pi som webbserver med ett 256 GB-minneskort, o nu tänkte jag använda det som bl.a moln. Det funkar, men nu kommer vem som helst åt det. Jag skulle vilja ha en publik del, där alla kan ladda upp filer, så långt har jag kommit;
http://176.10.207.123/upload.html

Vem som helst kan se filerna också;
http://176.10.207.123/uploads/

Samt vill jag ha en privat del för min ekonomi o annat privat.

Jag har följt diverse guider jag hittat o försökt att göra en genom att använda .htaccess och .htpasswd T.ex: https://help.dreamhost.com/hc/en-us/articles/216363187-Passwo...
https://www.lcn.com/support/articles/how-to-password-protect-...
https://www.studytonight.com/post/using-htaccess-file-to-pass...

Men inget händer? Filerna lägger jag där det står att dom ska vara, men det kommer inte upp någon password-förfrågan...?

Min första fråga är väl om det verkligen är en webbserver du vill ha?
Vad är syftet med den? Att ha en webbsida? För det är rätt lätt att uppnå, skillnaden blir markant större då det kommer till upp och nedladdning du just webbsevrar hör till de mest utsatta och lätt-hackade tjänster som finns.

Skulle nog rekommendera en riktig lösning likt Nextcloud i så fall så du slipper tänka på allt övrigt när det gäller "best practice".

För det låter ju nästan mer som att du är ute efter en (S)FTP-server om du tänker ha det som moln, om än väldigt simpelt.

Men framför allt, det simplaste enl. min åsikt är nog en SFTP-server om du syftar på att ha den till uppladdning samt nedladdning.
SFTP-tjänsten håller till på port 22 som standard. MEN för port forwarding av tjänsten mot Internet väljer du någon annan yttre port i din router t.ex. ett random tal mellan 1200-65535 för att slippa onödiga risker.
I ditt lokala nätverk är det troligtvis ingen fara med att använda port 22 men som sagt INTE standardporten (22) exponerad mot Internet, utan välj någon annan för det ändamålet.

Nu vet jag inte vilket OS du kör på Pi:en men är det något Linux-baserat ex. Ubuntu eller Debian system behöver du bara skriva:

sudo apt-get install openssh-server -y

-I terminalen för att ha en SSH-server installerad på 10 sekunder.

Det ger dig och andra (med ett fördefinerat konto) direkt möjligheten att krypterat logga in mot den och överföra filer, dock måste du öppna upp för den i brandväggen via ex. port forwarding mot din Pi, innan den kan nås, så du kan med fördel testa den lokalt först i ditt lokala nätverk.

Tror denna guide täcker det mesta som behövs för en simpel men säker filserver: (Du behöver dock bara utför stegen t.o.m. Step 5 i guiden)

https://qiita.com/alokrawat050/items/709d3c777407ab658aa9

Ytterligare säkerhet kan lätt uppnås genom att plocka bort möjligheten att använda lösenord och enbart logga in med certifikat, men det brukar vara lite överkurs för någon som nyss satt tänderna i att ha egen server. -Frågan du behöver ta ställning till då är om fler än du skall ha access, för det kan innebära ett par extra steg när någon ny skall ha access, använder du lösenord är det enbart ett kontonamn+lösenord som behöver förmedlas. Tipset är dock att ha ett rätt starkt lösenord dvs. tolv eller fler tecken.

Man kan även välja att installera en host-baserad brandvägg såsom UFW och enbart tillåta trafik på en viss port.

Edit:

Nedan är två äldre poster till en guide jag skrivit tidigare för samma ändamål:
-Lyckades göra några slarvfel i den första posten så 2:a posten nedan har rättningarna för de steg som blev fel.

Änvänd endast om du inte får den i ovan guide att lyckas.

Skrivet av krigelkorren:

Guide för SFTP-server med s.k. chroot-jail:
Guiden är skriven/testad på en Ubuntu server (16.04 LTS), men bör funka lika väl på en vanlig Ubuntu Desktop om man så vill.

**************
Noteringar:

Kom ihåg att Linux ÄR case-sensitive, dvs. systemet gör skillnad på versaler och gemener.
Så om guiden förklarar ett kommando ex. sudo apt install openssh-server måste det skrivas exakt så; t.ex. fungerar inte sudo apt install OpenSSH-Server -det sista kommer inte att fungera!

apt vs. apt-get
'apt' är ett front-end till 'apt-get' så du kan använda vilket som när du utför kommandona i Ubuntu Linux.

Guiden antar att användaren med sudo-rättigheter heter 'sudokonto' -du använder givetvis det konto som du själv skapat när du installerade servern.
'sudokonto' är bara ett namnexempel för denna guide.

Guiden antar att användaren som skall hamna i chroot-jailet är 'testkonto' -du väljer ett eget namn för användaren på ditt system.
'testkonto' är bara ett namnexempel för denna guide.

/sftp/users är bara ett exempel, du kan lägga mappen för jailet vart som helst, t.ex. annan disk, så länge endast root-kontot har exklusiv åtkomst till toppnivån av filsystemet. (Här kan man inte tänka helt i Windows banor)

**************

Installera openssh-server: (detta är nödvändigt för att kunna använda sig av ssh/sftp mot servern)

sudo apt install openssh-server

****************
Nedan steg, att byta ssh port, är frivilligt men helt klart rekommenderat om du skall ha servern exponerad mot internet:
-Främsta anledningen till att du vill göra detta är p.g.a. botnets och annat mög som skannar nät och ip-adresser efter default porten för ssh (22), om den ser att porten är öppen kan den påbörja lösenordsattacker mot porten, har något konto på servern ett riktigt enkelt lösenord så kan det bli knäckt relativt snabbt.

Byt standard SSH-port:

sudo nano /etc/ssh/sshd_config

-Byt portnummer där det står "Port 22" till det portnummer du vill använda för ssh (e.g. 2222)

-Kör sedan:

sudo service ssh restart

När du sedan ansluter mot servern via ssh/sftp kommer du att få utföra nedan kommando, då porten nu är bytt till '2222'.

ssh -p 2222 sudokonto@192.168.10.xxx
****************

Steg 1:

Skapa en serverfolder, ett användarkonto och ett 'chroot-jail' för användaren:

För att nedan instruktioner skall fungera måste root-kontot äga alla ovanliggande mappar/mappnivåer, du kan inte låta andra grupper/användare ha skrivrättigheter ovan själva mappen som är bas för jailet, om du har det resulterar det i en "broken pipe":

I nedan exempel måste alltså root vara ägaren samt vara det enda konto med 'write access' till /sftp/users

Skapa en folder-struktur som skall användas som chroot-jail:

sudo mkdir /sftp/

sudo mkdir /sftp/users/

sudo mkdir /sftp/users/testuser

Skapa en användare som skall ha sin hemkatalog (startpunkt) under ovan uppskapad mapp. Användaren kommer alltså vid SFTP-inloggning att hamna i mappen: /sftp/users/testuser

sudo useradd -d /sftp/users/testuser -M -N -g users testuser

Ge root ägandeskap över ovanliggande mappar/mappnivåer:

sudo chown root:root /sftp/users/testuser

Ge fulla rättigheter åt ägare (root) läs/skrivrättigheter till grupp (root) samt ge läs/skrivrättigheter till övriga i mappen 'testuser'

sudo chmod 755 /sftp/users/testuser

skapa ett lösenord för användaren (om det inte redan är gjort)

sudo passwd testuser

Steg 2:

Nästa steg är att konfigurera sshd_config filen för att göra ett chroot-jail:

Byt subsystem i /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Kommentera bort 'Subsystem sftp /usr/lib/openssh/sftp-server' likt nedan och lägg till 'Subsystem sftp internal-sftp'

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

...skapa en användarsektion för 'testuser' längst ned i filen: (kort beskrivning av vad nedan sektion gör är att den matchar användarkontot som försöker logga på och tvingar det att ansluta i sftp-läge i mappen som du definierar '/sftp/users/testuser' (vilket också är dess hemkatalog) server blockerar försök att ansluta via ssh (kommandotolk) för användarkontot samt blockerar grafisk tunnling via X11, vidare tillåter den inte att användaren går högre upp i filträdet än katalogen för sökvägen som definierats.

Match User testuser
ChrootDirectory /sftp/users/testuser
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no

Spara och stäng filen sshd_config genom tangentkombinationen: Ctrl+X
nano komer fråga dig om du vill spara ändringar gjorda till filen, svara Y
Bekräfta Y genom ett Enter-slag.

Starta om ssh-servertjänsten:

sudo service ssh restart

Servern skall nu vara igång med chroot-jail aktivt. Det skadar aldrig att vara säker så man kan försöka att ansluta till servern via ssh ex. putty eller via annan unix/linux terminal, detta skall inte gå alls.
Enbart SFTP anslutning skall beviljas från servern ex. via FileZilla eller Kodi.
Värt att nämna är att du i FileZilla behöver specificera sftp://<serveradress> om du bytt standardporten för ssh.

*Ytterligare värt att notera: användaren 'testuser' kan ej skapa mappar under /sftp/users/testuser så om du vill ge användar kontot rättigheter till det måste du skapa en mapp för användaren där ex. upload som i det fallet skulle bli: /sftp/users/testuser/upload

sudo mkdir /sftp/users/testuser/upload

Därefter måste du ge användaren ägandeskap till mappen:

sudo chown testuser:users

..samt rättighet att läsa/skriva i den t.ex:

sudo chmod 600 /sftp/users/testuser/upload

En bra chart för att se vad chmod kan åstadkomma finner du här:
http://wiki.kartbuilding.net/index.php/Chmod

Edit, har snyggat till guiden med lite markeringar och annat, samt rättat en tankevurpa gällande uppskapandet av chroot folder-strukturen.

Skrivet av krigelkorren:

Märkte för sent att jag lyckats med ett par ärkefel till i citatet ovan... nedan är rättad text*

*Ytterligare värt att notera: användaren 'testuser' kan ej skapa mappar under /sftp/users/testuser så om du vill ge användar kontot rättigheter till det måste du skapa en mapp för användaren där ex. upload som i det fallet skulle bli: /sftp/users/testuser/upload

sudo mkdir /sftp/users/testuser/upload

Därefter måste du ge användaren ägandeskap till mappen:

sudo chown testuser:users /sftp/users/testuser/upload

..samt rättighet att läsa/skriva i den t.ex:

sudo chmod 700 /sftp/users/testuser/upload