Forumi


Povratak   PC Ekspert Forum > Računala > DIY i Tinkering
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 11.02.2024., 21:00   #1
Neo-ST
Buying Bitcoin
Moj komp
 
Neo-ST's Avatar
 
Datum registracije: Feb 2007
Lokacija: Croatia
Postovi: 7,976
Lightbulb [GUIDE] Kako jeftino hostati website kod sebe doma na Raspberry Pi-ju

Napomena 1:
Iako sam se trudio ovaj tutorial napisati da bi ga većina mogla pratiti, neka predznanja o kompjuterima, operativnim sustavima (posebno Linux) i mrežama su ipak potrebna.
Ako ste potpuni početnik, ovo će vam biti komplicirano, no nije neizvedivo. Samo je potrebno dosta volje i vremena.


Napomena 2:
Ovaj guide ne obuhvaća sve sigurnosne aspekte zaštite web servera, iako ima dosta dobrih savjeta u replyjevima ispod ovog posta za to.
Ja sam neke od tih savjeta sažeo na dnu ovog posta.





Uvod

Već neko vrijeme mi se mota ideja po glavi da dignem neki vlastiti website ili blog, međutim sva gotova rješenja traže kontinuirane troškove u vidu plaćanja hostinga, samog website buildera (npr. Wix), itd.
Iako sam mogao ići tim putem, namjerno sam izabrao teži put, tako da se usput malo zabavim, a i naučim nešto.

S obzirom da sam kući imao jedan Raspberry PI model 4 i jedan stari SSD disk od 128GB, i s obzirom da je vani kišno vrijeme, sve se poklopilo da krenem u tu avanturu.

Imajte na umu da sa Linuxom nisam znao baš raditi (osim ako je neki idiot-proof GUI u pitanju sličan Windowsima), pa me ovaj proces gurnuo u višednevnu maniju učenja Linuxa, i to najtežim (ali najboljim) putem, preko CLI-ja, jer moj RPI nema HDMI port, pa mu se jedino može pristupiti preko mreže, odnosno preko SSH.

Tokom tog procesa sam naišao na malih milijun problema, koji su se rješavali mukotrpnim googlanjem i isprobavanjem raznih solucija, koje većinom naravno, ne bi radile, ali tu i tamo bi se našao neki lik u nekom kutku interneta koji je točno znao kako riješiti problem i ponudio soluciju koja bi baš meni radila. Bog ih blagoslovio

Pa da vas poštedim te muke (iako je meni bilo zabavno, a mislim i krucijalno, ako kasnije mislite održavati taj sustav), sastavio sam ovaj Guide for dummies, pa da i vi možete za male novce dignuti svoj website na RPI-ju.




Preduvjeti i moj setup

Ja sam odabrao svoj stari SSD disk da bude jedini disk na kojem će biti sve, RPI OS i Wordpress.
Nekako mi je bilo neozbiljno da sve bude na SD kartici, ipak SSD disk nudi puno više prostora i nemjerljivo veće brzine, dugotrajnost, itd.
Također ću napraviti „headless“ setup, odnosno RPI će se koristiti bez monitora, isključivo sa SSH pristupom. Sve će se raditi iz Windowsa.
Dakle, ako ćete pratiti točno moj setup u korak, onda vam je…

Potrebno:
1. Raspberry PI
2. MicroSD kartica
3. Čitač za MicroSD karticu
4. Vanjski SSD disk u eksternom kućištu da se može spojiti na USB od RPI
5. https://www.advanced-ip-scanner.com/
6. https://www.putty.org/

Prvo ćemo dignuti RPI OS na MicroSD karticu (iz više razloga).
Trebamo updateati firmware i bootloader, te namjestiti neke opcije da RPI može bootat sa USB-a, jer defaultno neće htjet.




Izrada bootabilnog diska pomoću RPI Imager

Program skinuti sa https://www.raspberrypi.com/software/

Kada pokrenete RPI Imager:

1. Odabrati svoj model (moj je model 4)
2. Odabrati RPI OS bez desktopa
a. Pod Choose OS odabrati RPI OS (Other)
b. Odabrati prvi na vrhu (RPI OS Lite 64bit no desktop)
3. Pod choose storage odabrati SD karticu iz čitača
4. Next
5. U sljedećem izborniku kliknit na Edit Settings
6. Odabrati vaš username i ostalo prema slikama dolje:



7. Kliknit YES, YES
8. Pričekati da se kartica formatira i na nju instalira RPI OS Lite
9. Kada proces završi, ubaciti karticu u RPI, upaliti ga i pričekati
10. Pokrenuti Advanced IP Scanner iz Windowsa i nakon 30-60ak sekundi preskenirati svoju lokalnu mrežu da vidite koju je IP adresu vaš DHCP server dodijelio RPI-ju.
11. Kada se pojavi, na popisu uređaja biti će pod „raspberrypi“
12. Zapišite njegovu IP adresu




Promjena boot ordera

Otvorite Putty.
Pod Hostname upišite tu IP adresu, Port ostaje na 22. Kliknuti Open dolje.
Iskočiti će vam novi prozor, kliknit na Accept.
Sada ste u SSH modu u kojem ćete provesti sljedeće desetljeće, pa se naviknite na to.

Username: onaj koji ste odabrali u RPI Imager programu
Password: isto koji ste odabrali

Sada biste trebali biti u RPI OS-u, prompt bi trebao izgledati nešto poput:

vaseime@raspberrypi:~ $

Sada ćemo updateat sustav.
Utipkajte:

Code:
sudo apt update && sudo apt upgrade -y
Pričekati. Kad proces završi:

Code:
sudo reboot
RPI će se rebootat. Ponovo se spojite na njega sa Putty-jem.


Sljedeće ćemo updateat bootloader:

Code:
sudo rpi-eeprom-update -d -a
Opet reboot, opet se spojite.

Sada ćemo promijeniti boot order tako da vam više ne treba SD kartica nego da vam boota sa SSD diska.

Napravite to pomoću ovih uputstava: https://linuxhint.com/how_to_boot_ra..._from_usb_ssd/

Preskočite početak jer smo update sustava već napravili i počnite od:

"Once your Raspberry Pi 4 boots, open a Terminal and run raspi-config Raspberry Pi configuration tool as follows:"

Do:

"Cloning the microSD Card to USB HDD/SDD/Thumb Drive:"


Utipkajte sljedeću komandu:

Code:
vcgencmd bootloader_config
Ako vam ona izbaci da vam je "BOOT_ORDER=0xF14", onda ste sve ispravno napravili.

Sada možete ugasiti RPI i izvaditi SD karticu. RPI bi sada trebao biti spreman bootati sa USB SSD diska.





Priprema SSD diska

Sada na SSD disk dignite RPI OS na isti način kako ste ga digli na SD karticu.

Odabrat model, odabrat RPI OS Lite no desktop, odabrat SSD disk, Next, pričekati da ga flasha. Proces bi trebao biti kratak jer RPI OS Lite je svega ~400MB.

Kada proces završi, uštekajte USB SSD disk u USB 2.0 port, NE plavi USB 3.0 port jer neće raditi.

Upalite RPI, počekajte da se pojavi na mreži, skenirajte mrežu. Velika je vjerojatnost da je ostao isti IP.
Spojite se sa Putty na njega.





Osposobljavanje USB3.0 porta da može bootati USB SSD disk

Zahvaljujući rješenjima sa:
1. https://www.treshna.com/how-to-find-...ems/index.html
2. https://forums.raspberrypi.com/viewt...?f=28&t=245931


Prije svega, ponovo radimo full update sustava:

Code:
sudo apt update && sudo apt upgrade -y
Pričekati.
Code:
sudo reboot
kad proces završi. Opet se spajamo na njega.

Nakon reboota:

Code:
lsusb
Ova komanda će vam izbaciti sve uređaje koji su spojeni na vaš RPI, među njima i SSD disk.
Konkretno u mom slučaju, to je izgledalo ovako:

Citiraj:
Bus 002 Device 002: ID 152d:1576 JMicron Technology Corp. / JMicron USA Technology Corp. External Disk 3.0
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


Ovaj prvi device gore (JMicron) je moj SSD disk. Vaš će se zvati drugačije. Ono šta je bitno je da ga pronađete na ovoj listi i zapišete ova dva broja: 152d:1576.
To su njegovi VID i PID koji će nam trebati.

Sada to trebamo dodati u cmdline.txt fajl:

Code:
sudo nano /boot/firmware/cmdline.txt
Otvorit će vam se Linuxov text editor (Nano) i cmdline.txt.

Sada samo dodajte sljedeći text:

Code:
usb-storage.quirks=aaaa:bbbb:u
u istu kolonu ispred postojećeg texta. „aaaa“ i „bbbb“ izmijenite sa svojim VID:PID koje ste gore zapisali i odvojite to sa razmakom od ostatka texta.
Na kraju vam to mora ovako izgledati (moj primjer):



Stisnite CTRL+X, pitat će vas hoćete spremiti izmjenu, upisati "y" i potvrditi isto ime fajla sa Enter.

Ugasite RPI.
Premjestite USB SSD disk sa porta 2.0 na port 3.0.
Upalite RPI.

Ako se možete spojiti na njega preko Putty, čestitam, uspjeli ste.
RPI OS sada radi punom parom sa vašeg SSD diska spojenog na USB3.0 port.

Sada još jednom provjerite jesu li "quirks" uspješno prihvaćene sa komandom:

Code:
dmesg | grep usb-storage
Trebalo bi izgledati ovako:








Postavljanje statične IP adrese

Zahvaljujući rješenju sa: https://www.reddit.com/r/Intelligent...on_a_headless/


Sljedeći korak je postaviti RPI na statičnu IP adresu, tako da uvijek znate gdje se nalazi na vašoj mreži.
Ako vam je DHCP postavljen da dodjeljuje adrese od npr. 192.168.1.100-254, to znači da ga možete postaviti bilo gdje ispod 192.168.1.100.

Za ovaj primjer, reći ćemo da ga postavljamo na 192.168.1.10.

Upisati:

Code:
ifconfig
Dobit ćete popis vaših network adaptera.
Ako ste spojeni kabelom na router, adapter je obično eth0, a ako ste spojeni wirelessom, onda je wlan0.

Odlučite koji adapter želite postaviti na statičnu adresu. Ja u svom primjeru postavljam eth0, jer sam kabelom spojen na router.

Sada u interfejse kreiramo "eth0" fajl pomoću Nano programa.
Upisati:

Code:
sudo nano /etc/network/interfaces.d/eth0
Kada se Nano otvori, upisati unutra:

Citiraj:
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10
network 192.168.1.0
netmask 255.255.255.0
gateway 192.168.1.1


„gateway“ je IP adresa vašeg routera. Ako je on na nekoj drugoj adresi, onda se sve mijenja.
Npr. ako je router na adresi 192.168.20.1, onda bi vam ovako izgledao taj text:

Citiraj:
allow-hotplug eth0
iface eth0 inet static
address 192.168.20.10
network 192.168.20.0
netmask 255.255.255.0
gateway 192.168.20.1



Nakon šta snimite promjene i izađete iz Nano, ide opet:

Code:
sudo reboot
Sada se spajate na RPI na njegovu novo postavljenu IP adresu, 192.168.1.10 ili koju ste god izabrali.
Ako ste ušli s Puttyjem unutra znači da je sve dobro postavljeno.





Priprema i instaliranje Wordpressa

Zahvaljujući Chris Titusu:
https://www.youtube.com/watch?v=BPcficy9ji0
https://christitus.com/pi-website/



U principu, samo pažljivo pratite njegov Youtube video i imajte otvorena tekstualna uputstva, tako da možete copy/pastat naredbe u Putty.

Naredbe u Putty se pastaju tako da prvo CTRL+C naredbu sa njegovog websitea, i onda u Putty samo kliknete desnu tipku miša (to je Paste tamo, nema CTRL+V).

Važno: Nakon instalacije Apache webservera, provjerite da li vam service dobro radi ili izbacuje koju grešku!

Naredba za provjeru je:

Code:
sudo systemctl status apache2
U mom slučaju, izbacivao mi je grešku "apachectl[863]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name".

Rješenje je jednostavno, trebate editirati sljedeći fajl:

Code:
sudo nano /etc/apache2/apache2.conf
i skroz na dno fajla samo dodajte:

Code:
ServerName localhost
Restartajte service:

Code:
sudo systemctl restart apache2
Pa ponovite provjeru servicea, da li je greška nestala:

Code:
sudo systemctl status apache2

Ako je, nastavite pratiti proces iz videa do kraja i na kraju ako ste sve uspješno obavili, to bi trebalo biti to.

Sada imate funkcionalan Wordpress na svom kućnom RPI pomoću kojeg možete raditi web stranice, međutim, ostaje još jedan bitan dio, a to je:




Dostupnost van lokalne mreže

Trenutno vašem web siteu možete pristupiti jedino uređajima spojenim na vaš router.
Adresa vašeg websitea je IP adresa vašeg RPI-ja.

Da bi bio dostupan iz vani, a bez da bacate novce na statičnu javnu IP adresu, trebat će vam DDNS servis i neka domena koju trebate zakupiti.

Većina boljih routera danas ima u sebi nekoliko DDNS servisa (npr. Asus routeri) koje možete besplatno koristiti bez ikakve registracije, međutim dobit ćete neku tupavu adresu tipa
Code:
mojawebstranica.asuscomm.com
Moj savjet vam je da napravite account na Cloudflare.com (besplatno je) i tamo kupite domenu po svojoj želji (Add Site). Domene su jeftine, cca. $9/godišnje i ako je uzmete preko Cloudflare, automatski u nju možete dodavati DNS recordse, zaštitit je, itd. (imaju dosta opcija).

Ako ćete ići tom rutom, onda je moj savjet da pogledate ovaj video od NetworkChuck-a i pratite sve u korak:

https://www.youtube.com/watch?v=rI-XxnyWFnM


Na kraju ne zaboravite u svom routeru otvoriti port 80 za lokalnu IP adresu vašeg RPI (ako ne znate kako, Googlajte "port forwarding" sa imenom vašeg routera).
Napomena: ako ćete implementirati sigurnosne postavke objavljene niže u ovom postu, onda ćete trebati otvoriti port 443 umjesto 80!

Na kraju biste sa kupljenom domenom trebali imati pristup vašoj Wordpress stranici koja se nalazi na vašem SSD-u koji je uštekan u vaš RPI.
Bacite sve skupa negdje da ga ne čujete i ne vidite, samo da ima dovoljno zraka za hlađenje.



Trošak u mojoj konfiguraciji (vi možete uzeti i slabiji RPI):

RPI Model 4:
€70-100

SSD 128GB noname:
€15

Kućište za SSD:
€15

SD card reader:
€15

SD card 32GB:
€3.5

Domena:
€8

Sve skupa za ~€130 imate vlastiti website kod sebe doma, a od pretplata vam ostaje jedino plaćanje domene cca. €8/godišnje i to je to.

Sretno!






SIGURNOSNE POSTAVKE



Ovdje ću napisati neke sigurnosne postavke koje sam ja osobno implementirao, zahvaljujući savjetima članova foruma iz ovog threada.

Imajte na umu da su ovo samo moje postavke, za nebitan blog-like website koji ne sadrži osjetljive niti privatne informacije.
Za išta iole bitno, ne preporučam da pokušavate išta sami, pogotovo ne na amaterskom kućnom setupu


Prvo šta je bitno naglasiti za moj slučaj su dva bitna detalja:

1. Koristim Asus router koji u sebi već ima dosta sigurnosnih solucija, a uz malo tweakanja postane još bolji
2. Koristim Cloudflare na kojem sam kupio domenu, a koji također ima dosta alata za zaštitu websitea/domene


Popis implementiranih solucija:

1. Instalacija Merlin firmwarea na Asusu, nakon čega sam instalirao Skynet firewall
2. Podešavanje nekih opcija u Cloudflareu
3. Instalacija SSL certifikata na RPI
4. Instalacija DDOS protekcije za Apache webserver
5. Instalacija Fail2Ban alata za protekciju SSH DDOS-a
6. Restrikcija pristupa WordPress adminu iz vani i samo sa jedne, lokalne IP adrese
7. Omogućavanje pristupa SSH-u preko keya, gašenje passworda, setupiranje 2FA zaštite
8. Generiranje keya i pristup RPI-ju preko Putty-ja
9. SSH i Sysctl hardening po Tomekovim preporukama


Bonus:

Naredba s kojom možete, kada poželite, backupirati kompletan sustav na neki eksterni disk




[Ako nemate Asus router koji podržava Merlin firmware, sljedeća dva koraka možete preskočiti]
Instalacija Merlin firmwarea na Asus router

Samo pratite uputstva sa službenog Wikija, a i na Youtubeu ih ima u izobilju.
https://www.asuswrt-merlin.net/
https://github.com/RMerl/asuswrt-merlin.ng/wiki
https://www.youtube.com/watch?v=oPDba0SZYR8



Instalacija Skynet firewalla na Asus Merlin router

Samo pratiti uputstva ovdje:
https://www.youtube.com/watch?v=vYoDfIoeqOQ



[Ako ne koristite Cloudflare, ovaj korak možete preskočiti]
Cloudflare postavke (moje)

1. "Always use HTTPS": nalazi se pod SSL/TLS, Edge Certificates
2. "Geoblock": nalazi se pod Security, WAF, morate kreirati rule sa odabirom kontinenata koje želite blokirati, u mom slučaju Afrika i Azija (iako ako netko koristi VPN, od ovoga nema koristi)
3. "Full (Strict) SSL": nalazi se pod SSL/TLS, Overview. Da bi ovo funkcioniralo, na RPI-ju treba imati instaliran SSL certifikat (dolje objašnjeno)
4. "Bot Fight Mode": nalazi se pod Security, Bots. Uključiti zaštitu od botova.




Instalacija SSL certifikata na RPI

Prvo instalirajte snapd i certbot po ovim uputstvima:
https://certbot.eff.org/instructions...s=debianbuster


Onda pratiti uputstva ovdje:
https://youtu.be/WPPBO-QpiJ0&t=84

Preskočiti na 1:24 jer lik koristi Linode kao svoj server, ali princip je isti. On se preko SSH spaja na udaljeni Linode server, vi se spajate na svoj RPI.




Instalacija DDOS protekcije za Apache webserver


Pratiti uputstva ovdje:
https://phoenixnap.com/kb/apache-mod-evasive


Savjet: dodajte IP kompjutera s kojeg ćete pristupati RPI-ju na whitelistu, da vas modevasive iz nekog razloga ne blokira.

Kada budete pratili gore navedena uputstva i dođete do koraka gdje editirate "evasive.conf" fajl, dodajte unutra još sljedeće:

Code:
DOSWhitelist x.x.x.x
gdje je x.x.x.x naravno ta IP adresa vašeg kompjutera.




Instalacija Fail2Ban alata za protekciju SSH DDOS-a


Time bookmark na Youtubu od lika koji objašnjava kako: https://youtu.be/sO-afVsDJOA&t=772
(Preskočiti na 12:52)

S obzirom da smo mi na Debianu, neke stvari još treba promijeniti da bi ovo radilo:

Prvo editirati ovaj fajl:

Code:
sudo nano /etc/fail2ban/jail.conf
Stiskati PGDOWN dok ne dođete do:

Citiraj:
backend = auto
promijeniti u:

Citiraj:
backend = systemd
Kada ste već tu, preporučam i dodati lokalni IP kompjutera s kojeg ćete pristupati RPI-ju u "ignoreip" polje, čisto da vam se ne desi iz nekog razloga da vam Fail2Ban banira vaš kompjuter:

Naći polje "ignoreip" i dodati vaš IP.
Detaljnije upute ovdje.

Snimit promjene, napravit:

Code:
sudo service fail2ban restart
Provjeriti jel sve radi sa:

Code:
systemctl status fail2ban.service



Restrikcija pristupa WordPress adminu iz vani i samo sa jedne, lokalne IP adrese


Editiramo fajl koji je zadužen za pristup wp-adminu:

Code:
sudo nano /var/www/html/.htaccess

Dodati u taj fajl sljedeće:


(Morao sam stavit sliku jer mi forum iz nekog razloga ne prikazuje cijeli code)

Bitno:
Kompjuter s kojeg mislite pristupati WP admin sučelju mora biti na statičnoj lokalnoj IP adresi, koja se upisuje gore pod "vasa.lokalna.ip.adresa" !




Omogućavanje pristupa SSH-u preko keya, gašenje passworda, setupiranje 2FA zaštite


Pratiti uputstva sa:

https://youtu.be/sO-afVsDJOA&t=542
(Preskočiti na 9:00)

Setup 2FA kreće od 16:00.




Generiranje keya i pristup RPI-ju preko Putty-ja


Pratiti uputstva sa:

https://www.techtarget.com/searchsec...authentication




SSH i Sysctl hardening po Tomekovim preporukama


Pratiti uputstva ovdje, editirati sshd_config i sysctl.conf fajlove:

http://forum.pcekspert.com/showthrea...93#post3728193



Bonus: backup sustava


Kada ste već ovoliko truda uložili u setup kućnog web servera, bila bi šteta da nešto pođe po zlu, pa naiđete na problem zbog kojeg vam sustav više ili uopće ne radi ili ne radi kako bi trebao.

Zato preporučam redoviti backup sustava na neki, npr. eksterni USB stick ili HDD.

Da biste to mogli, prvo morate mountati taj USB stick u neku destinaciju, jer u Linuxu se stickovi ne pojave sami od sebe kao u Windowsima.

Prvo kada ga uključite u RPI, morate saznati koje mu je ime dodijeljeno.

Upisujemo:

Code:
lsblk

U mom slučaju, dobijem:




S obzirom da sam uštekao USB stick od 16GB, on se ovdje pojavio kao "sdb1".

Trenutno s njim ne možemo ništa, jer ga prvo moramo mountati negdje.
Gdje - to odabirete sami.
Npr. ja sam odabrao da ću ga mountati u /media/usbstick, pa upisujem:

Code:
sudo mount /dev/sdb1 /media/usbstick
Tek sada možemo s njim raditi šta hoćemo.
USB stick je sada "/media/usbstick". Ako uđemo u taj direktorij:

Code:
cd /media/usbstick
možemo izlistati fajlove koji se nalaze na njemu (ako ih uopće imate):

Code:
ls -al
I ako sada npr. izbrišete neki od fajlova sa naredbom

Code:
sudo rm izmisljeni_fajl.txt
Njega ste izbrisali sa sticka, ne iz "direktorija" /media/usbstick.


Pretpostavimo da je taj USB stick pun smeća kojeg treba pobrisati i tako ga pripremiti za backupiranje sustava.

To radimo na sljedeći način:

Prvo ga moramo un-mountati:

Code:
cd /
sudo umount /media/usbstick
Onda:

Code:
sudo mkfs -t ext4 /dev/sdb1
Stisnit "y", pa Enter.

Ova naredba kaže Linuxu da formatira "sdb1" uređaj (moj stick) u ext4 file system (nativni za Linux).

Sada je stick spreman za backup, a proces backupa i restore-a možete vidjeti ovdje (lik koristi Arch linux ali su naredbe iste):

https://www.youtube.com/watch?v=oS5uH0mzMTg


U mom slučaju, to bi izgledalo ovako:

Code:
cd /
sudo rsync -aAXvh --progress --delete --exclude={".cache","/dev/","/proc/","/sys/","/tmp/","/run/","/mnt/","/media/*","/lost+found"} / /media/usbstick

Zadnje izmijenjeno od: Neo-ST. 24.02.2024. u 18:34.
Neo-ST je offline   Reply With Quote
Staro 12.02.2024., 13:03   #2
Mirkopoter
Mirko, a ne Harry
Moj komp
 
Mirkopoter's Avatar
 
Datum registracije: Nov 2009
Lokacija: Zagreb
Postovi: 4,892
Svaka čast
__________________
Hala Madrid!
Mirkopoter je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 12.02.2024., 13:08   #3
Libertus
Premium
Moj komp
 
Libertus's Avatar
 
Datum registracije: Jul 2017
Lokacija: Ramura
Postovi: 2,480
Super! Mene je uvijek patio ovaj dio:

Citiraj:
Autor Neo-ST Pregled postova
Na kraju ne zaboravite u svom routeru otvoriti port 80 za lokalnu IP adresu vašeg RPI
Znam ga napraviti, ali ne želim.
Libertus je offline   Reply With Quote
Staro 12.02.2024., 13:35   #4
dbL
Premium
 
dbL's Avatar
 
Datum registracije: Mar 2020
Lokacija: Osijek
Postovi: 243
Citiraj:
Autor Libertus Pregled postova
Super! Mene je uvijek patio ovaj dio:



Znam ga napraviti, ali ne želim.



mozes uzet besplatnu domenu od "from.hr" i prebacit dns na cloudflare i dignes si cloudflared "tunnel" konektor u dockeru i virtualci i hostas nginx ili ko kolega apache za djabe


nema portova ni nikake patnje...


inace pohvale kolegi na trudu
dbL je offline   Reply With Quote
Staro 12.02.2024., 13:35   #5
xlr
49%winner
Moj komp
 
xlr's Avatar
 
Datum registracije: Sep 2007
Lokacija: PU
Postovi: 8,789
@Libertus
Ako si kroz cloudflare slozio end to end ssl, port 80 ti i ne treba, dosta bude samo 443. Na cloudflareu forsiras redirectanje http prometa na https te blokiras sve forsirane http zahtjeve kroz cloudflare firewall.

Jednom kada na cloudflareu podesis firewall grube filtere (geoblock itd) onda si dosta suzio pristup svom sajtu/serveru. Ali to dosta ovisi sto zelis postici. Nekada nije idealno ako hostas sajt za cijeli svijet, ali je korisno ako selfhostas neke stvari za sebe.

Ako zelis ici korak dalje i imas bolju opremu na svojoj strani (ruter, firewall) mozes potpuno blokirati sav internet promet prema tvom wan-u i portovima 80/443 osim cloudflare proxy adresa:
https://www.cloudflare.com/en-gb/ips/
Na taj nacin samo promet koji ide preko proxyja moze doci k tebi, a on je onda enkriptiran i prolazi kroz cf firewall i sve one bot fight featureove...

Jos malo naprednija metoda zastite je da hardver koji vrti tvoj sajt stavis u vlan/dmz i potpuno ga odvojis od svoje kucne mreze. Ako si dobro podesio svoj firewall i sto se smije a sto ne smije raditi izmedju vlan-ova, mozes se malo vise opustiti. Ovo trazi malo vise znanja/ucenja i hardver koji to moze isporuciti.
__________________
Keep calm and fastboot oem unlock.
xlr je offline   Reply With Quote
Staro 12.02.2024., 14:04   #6
tomek@vz
Premium
Moj komp
 
tomek@vz's Avatar
 
Datum registracije: May 2006
Lokacija: München/Varaždin
Postovi: 3,348
Samo mali disclaimer - ovo je odlicna startna tocka ali nikad ovakav konstrukt pustat na Internet ako su vama bitni podaci gore. Za offline je sasvim dovoljno. Za pustanje prema van ima tu malo vise posla (port forwarding, implementacija baznih sigurnosnih aspekata sa Linux strane kao SSH hardening, baznog IDS (Intrusion Detection System) i IPS (Intrusion Prevention System), implementacija valjanog certifikata za domenu i DNS hosting, aktivni Log monitoring i mozda Geo blocker, implementacija modsecurity modula u Apache - su samo neki od osnovnih koraka bez kojih nebih vlastiti websajt pustao prema van). Internet je opasno mjesto i bazno razumijevanje sigurnosnog aspekta je nuzno. Samo zato sto je Linux gore ne znaci da je sustav siguran.
tomek@vz je offline   Reply With Quote
Staro 12.02.2024., 15:26   #7
Neo-ST
Buying Bitcoin
Moj komp
 
Neo-ST's Avatar
 
Datum registracije: Feb 2007
Lokacija: Croatia
Postovi: 7,976
Citiraj:
Autor xlr Pregled postova
@Libertus
Ako si kroz cloudflare slozio end to end ssl, port 80 ti i ne treba, dosta bude samo 443. Na cloudflareu forsiras redirectanje http prometa na https te blokiras sve forsirane http zahtjeve kroz cloudflare firewall.

Jednom kada na cloudflareu podesis firewall grube filtere (geoblock itd) onda si dosta suzio pristup svom sajtu/serveru. Ali to dosta ovisi sto zelis postici. Nekada nije idealno ako hostas sajt za cijeli svijet, ali je korisno ako selfhostas neke stvari za sebe.

Ako zelis ici korak dalje i imas bolju opremu na svojoj strani (ruter, firewall) mozes potpuno blokirati sav internet promet prema tvom wan-u i portovima 80/443 osim cloudflare proxy adresa:
https://www.cloudflare.com/en-gb/ips/
Na taj nacin samo promet koji ide preko proxyja moze doci k tebi, a on je onda enkriptiran i prolazi kroz cf firewall i sve one bot fight featureove...

Jos malo naprednija metoda zastite je da hardver koji vrti tvoj sajt stavis u vlan/dmz i potpuno ga odvojis od svoje kucne mreze. Ako si dobro podesio svoj firewall i sto se smije a sto ne smije raditi izmedju vlan-ova, mozes se malo vise opustiti. Ovo trazi malo vise znanja/ucenja i hardver koji to moze isporuciti.
Citiraj:
Autor tomek@vz Pregled postova
Samo mali disclaimer - ovo je odlicna startna tocka ali nikad ovakav konstrukt pustat na Internet ako su vama bitni podaci gore. Za offline je sasvim dovoljno. Za pustanje prema van ima tu malo vise posla (port forwarding, implementacija baznih sigurnosnih aspekata sa Linux strane kao SSH hardening, baznog IDS (Intrusion Detection System) i IPS (Intrusion Prevention System), implementacija valjanog certifikata za domenu i DNS hosting, aktivni Log monitoring i mozda Geo blocker, implementacija modsecurity modula u Apache - su samo neki od osnovnih koraka bez kojih nebih vlastiti websajt pustao prema van). Internet je opasno mjesto i bazno razumijevanje sigurnosnog aspekta je nuzno. Samo zato sto je Linux gore ne znaci da je sustav siguran.
Sad ste mi dali misliti.
Odakle uopće da počnem ?
Da bih napravio sve ovo šta ste napisali, morao bih upisati neki fakultet.
Neo-ST je offline   Reply With Quote
Staro 12.02.2024., 15:57   #8
strikoo
Premium
 
strikoo's Avatar
 
Datum registracije: Nov 2004
Lokacija: HR
Postovi: 746
a neš to na vakultetu naučiti
strikoo je offline   Reply With Quote
Staro 12.02.2024., 16:24   #9
kopija
DIY DILETANT
 
kopija's Avatar
 
Datum registracije: Jan 2009
Lokacija: Čistilište
Postovi: 3,060
Citiraj:
Autor Neo-ST Pregled postova
Sad ste mi dali misliti.
Odakle uopće da počnem ?
Da bih napravio sve ovo šta ste napisali, morao bih upisati neki fakultet.

Da nije onaj User1 iz drugog threada kroz taj otvoreni port 80 ušetao pa se naselio preko lokalne mreže na windows mašinu?
kopija je offline   Reply With Quote