Kako si postavimo doma ali na sedežu vašega podjetja mini strežnik Raspberry PI4 spletna predstavitev podjetja preko CMS WordPress za najmanj denarja in najmanjši stroški poslovanja oz. obratovanja vašega spletnega mesta.

Kako v vašem podjetju zmanjšati strošek za obratovanje vaše predstavitvene spletne strani z uporabo Micro Serverja Raspberry PI4

Rezervirajte na vašem usmerjevalniku oz. routerju za vašo napravo PI-3-4 Raspberry – Če imate TPLink router in dinamični internet (javno) v meniju Dynamic DNS nastavite še noip.com. Za ostale, kateri nimate v routerju te opcije lahko namestite v vaš raspberry PI mini server aplikacijo za linux noip.

Registrirajte račun pri noip.com te pristopne podatke vnesete ob namestitve noip za linux DUC intervalno gledanje vašega IPja in morebitne spremembe, za dinamični internet, statika oz. statični internet ne rabi, ker boste vezali vaš ip naslov na domeno, ki jo generirate pri noip.com + brezplačno velja domena 1 mesec po ene mesecu boste mogli podaljšat, če ne se ukine dokler jo ne obnovite v nadzorni plošči noip.com. Priporočam, da si zakupite premium račun ali prenesete vašo .com, .net, .org,…. domeno in upravljate vse preko noip.com nadzorne plošče.

Ko boste namestili celoten rasbian linux minimal install obvezno postopek kako namestit na PI4 noip.com DUC aplikacijo.

admin@mojhost :~ $

cd /usr/local/src/
sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
sudo rm noip-duc-linux.tar.gz
cd noip-2.1.9-1/
sudo make install

Your username is: noip.com uporabniško ime
Your password is: noip.com pristopno geslo

cd /etc/
sudo nano rc.local

# kopijaj to zraven direktive oz. dodaj spodaj sudo nano noip2
# rc.local
#sudo ufw enable
# auto start noip.com za dinamične ip naslove domena 
sudo noip2
# SHRANI IN PONOVNI ZAGON PI

sudo shutdown -r now


sudo noip2 -S

01) Potrebna strojna oprema za spletni strežnik Raspberry Pi
potrebovali boste:

  1. Raspberry Pi seveda. Potrebovali boste tudi napajalno enoto in etui.
  2. Tipkovnica USB, miška USB, monitor s povezavo HDMI in kabel HDMI.
  3. Čitalnik kartic SD.
  4. USB ključek za shranjevanje podatkov, čeprav to ni obvezno, saj lahko za shranjevanje podatkov uporabite kartico SD. Zdaj na novih PI4 namesto SD kartice lahko kupite tudi USB3 plavi priključek od raspberry SSD Disk nrp. 2-TeraBajta – 2048 KB (namesto sd kartice zapečete OS Rasbian na USB Disk)
  5. Ethernetni kabel za povezavo RPi z usmerjevalnikom / brezžično dostopno točko ali Ethernet stikalom.

02) Operacijski sistem

Namestite operacijski sistem – PRENOS RASBIAN LINUX 32BIT TUKAJ
Ta stran opisuje prenos in namestitev operacijskega sistema, potrebnega za vaš Raspberry Pi. https://www.raspberrypi.org/
Za Raspberry Pi boste potrebovali kartico MicroSD z operacijskim sistemom. Kartico MicroSD lahko kupite na različnih komercialnih spletnih mestih z že nameščenim operacijskim sistemom, vendar je ni težko naložiti in namestiti sami, če ima vaš domači računalnik bralnik SD.
Če želite sami namestiti operacijski sistem, prenesite najnovejšo datoteko Raspbian iz: https://www.raspberrypi.org/downloads/raspberry-pi-os/
Lahko prenesete NOOBS in ga namestite na kartico SD. NOOBS je namestitveni program operacijskega sistema, ki nekoliko olajša postopek namestitve. Lahko pa prenesete sliko Raspbian in jo namestite na kartico SD kar je po mojem najbolje minimal install = image Rasbian lite!!!!!

Oblikovanje kartice SD
Če je bila kartica SD uporabljena že prej, jo boste morali formatirati, preden boste kar koli drugega storili. Če želite formatirati kartico SD v računalniku z operacijskim sistemom Windows, lahko uporabite format pomnilniške kartice SD, ki ga lahko prenesete od tukaj:
https://www.sdcard.org/downloads/formatter/ ali po moje je najbolje Rufus!!!!
Opomba: Pri uporabi tega pripomočka bodite previdni, saj lahko v računalniku formatirate napačen pogon.
Nameščanje NOOBS
Razširite datoteko za prenos, da dobite datoteke za kartico SD, nato pa jih s pomočjo raziskovalca datotek kopirajte na kartico SD. Izvlečene datoteke so lahko znotraj mape, v tem primeru kopirajte obrazec datotek znotraj mape in ne same mape.
Izvlecite kartico SD in jo vstavite v Raspberry Pi.
Ko vstavite kartico SD, pritrdite napajalnik, tipkovnico, miško in monitor – Raspberry Pi se bo zagnal. Izberite operacijski sistem Raspbian. Popeljal vas bo skozi vrsto nastavitvenih faz, ki bodo posodobile programsko opremo na najnovejšo različico, in vam zastavile različna vprašanja o zahtevani konfiguraciji za jezikovne nastavitve, vrsto tipkovnice itd.
Namestitev Raspbian iz prenosa
Raspbian lahko namestite neposredno na vaš Raspberry Pi, namesto da namestite prek NOOBS.
Za kartico SD potrebujete programsko opremo za slikanje.
Win32DiskImager je običajna izbira za osebni računalnik z operacijskim sistemom Windows in ga lahko prenesete iz:
http://sourceforge.net/projects/win32diskimager/
ali bolje
https://rufus.ie/ – Ali pa originalni program rpi-imager

Prenesite npr. Win32DiskImager in razpakirajte datoteko ali bolje je Rufus po moje. Datoteko exe lahko zaženete celo iz pogona USB ali naložite Rufus in jo odprete.
Prenesite Raspbian in za dostop do slike razpakirajte preneseno datoteko.
Morda boste morali najprej formatirati kartico SD. Ko je formatiran, lahko z Win32DiskImager zapišete sliko Raspbian na kartico SD.
Izberite slikovno datoteko, ki ste jo izvlekli, in v polju naprave izberite črko pogona kartice SD.
Prepričajte se, da ste izbrali pravilno črko pogona.
Kliknite Write in počakajte, da se slika zapiše na kartico SD.
Zaprite programsko opremo za preslikovanje, odstranite kartico SD in jo vstavite v Raspberry Pi.

03) V računalniku ali Macu nastavite povezavo z oddaljenim namizjem (ni nujen program po želji)

Ta stran oz. poglavje opisuje, kako namestite in nastavite oddaljeno namizje na Raspberry Pi, tako da lahko dostopate do svojega Pi, ne da bi ga povezali z monitorjem, tipkovnico ali miško.
Zaženite svoj Pi
Priključite tipkovnico USB, miško USB in s kablom HDMI povežite monitor z Raspberry Pi.
Napajalnik priključite na Raspberry Pi in se prepričajte, da je kartica MicroSD na mestu.
Priključite svoj Ethernet kabel na Raspberry Pi.
Vklopite Raspberry Pi.
Nato se Raspberry Pi zažene.
Privzeto uporabniško ime in geslo je uporabniško ime pi z geslom raspberry.
Nastavite povezavo z oddaljenim namizjem
Povezava z oddaljenim namizjem vam omogoča nadzor vašega Pi-ja iz osebnega računalnika, kot da bi bil fizično povezan z računalnikom. To pomeni, da lahko odpravite povezave monitorja HDMI, miške in tipkovnice.
Xrdp se mi zdi dober način za to, čeprav se nekateri uporabniki raje odločijo za brezglavo in popolnoma odstranijo grafični uporabniški vmesnik po mojem najbvoljši način. Nato se povežite v Pi s pomočjo SSH. Neuporaba grafičnega uporabniškega vmesnika ima lahko prednosti, ker bi lahko imeli potem dostop do več pomnilnika. Vendar se mi zdi uporaba GUI veliko bolj priročna. Jaz bi se odločil po moje, če bi nameščal Scado na PI vsekakor minimal install, in ob prvem zagonu povezava SSH ter v nastavitvah raspi-config bi za GPU v advance nastavitvah dal 16 Rama!!! Ne pozavite ob prvem zagonu localization odkljukajte poleg GB utf8 še SL_SI_UTF8 in uni spodnji SL_SI…….
Če se želite povezati z Raspberry Pi iz oddaljenega računalnika, lahko na Pi namestimo xrdp in se nato iz računalnika samo povežemo z njegovim naslovom ip.
Najprej namestite xrdp z uporabo naslednjega, ko ste v terminalu:

sudo apt install xrdp

Poiščite ip naslov vašega Raspberry Pi z naslednjim ukazom v terminalu:

ifconfig

Poiščite eth0, ob predpostavki, da ste z lokalnim omrežjem povezani z eth0, in videli bi naslov IP, ki bo v obliki lahko pa tudi wlan oz. wifi po želji:

192.168.1.82

Zdaj lahko v sistemu Windows/MacBook ali PC nastavite novo povezavo z oddaljenim namizjem.
Na namizju ustvarite novo datoteko z razširitvijo .rdp.
Ustvarjanje datoteke rdp v računalniku
Z desno miškino tipko kliknite novo ustvarjeno datoteko .rdp in izberite Uredi.

V polje za vnos računalnika vnesite ip naslov vašega Raspberry Pi in vnesite tudi uporabniško ime, ki je v tem primeru pi.
Če to shranite in nato dvokliknete datoteko .rdp, vam bo omogočila povezavo z vašim Raspberry Pi in prijavo z uporabniškim imenom pi in geslom raspberry.

 

Raspberry Pi bo zdaj šel skozi vrsto zaslonov za konfiguracijo, ki so precej naravnost naprej.
Ko končate z nastavitvijo in namestitvijo najnovejših posodobitev, lahko odpravite priključke tipkovnice, miške in HDMI na Raspberry Pi in do Pi boste lahko dostopali od koder koli v lokalnem omrežju.

04) Konfigurirajte Raspberry Pi

 

Obstaja nekaj stvari, ki jih moramo nastaviti kot del osnovne konfiguracije Raspberry Pi. Za to raje uporabljam vmesnik GUI, ki je na daljavo povezan z računalnikom Pi.
Na zaslonu menija bi morali videti Nastavitve -> Konfiguracija Raspberry Pi. Kliknite na to, da se prikaže zaslon konfiguracije.
Druga metoda je uporaba pripomočka za konfiguracijo Raspberry Pi iz terminala z vnosom:

sudo raspi-config

Ta ima nekoliko naprednejše funkcije, ki jih boste morda želeli spremeniti.
Spremenite geslo Pi npr. v pi to samo začasno dokler ne uštimamo vse!!! Jaz rajši osebno delam preko terminala program putty oz. jaz uporabljam SMARTFTP – TA PROGRAM BOSTE DOBIL V DDL ENIGMA (DOŽIVLJENSKA LICENCA!!!)
Spremenite gesloPassword za privzeto uporabniško ime pi v nekaj drugega, da izboljšate raven varnosti, če boste uporabljali račun pi, ma jaz vam to odsvetujem, samo za začetek za lažje delo spremenite geslo za uporabnika pi namesto raspberry geslo dajte v pi.

Vpišite vaše WiFi podatke, če je PI4 priklopljen preko WiFi dostop do spleta. Menjajte geslo pi v pi in hostname v karkoli npr. mojepodjetje. Glavno za skonfigurirat vam je samo Vklop SSH, menjat pi geslo v pi in hostname ter GPU RAM zmanjšat na 16 vrednost ter lokacija, tipkovnica, UTF.8 Si-SL in lokacija čas EU/Ljubljana

Spremenite ime gostitelja – hostname – raspberry v vaše karkoli npr. mojepodjetjekoper
Preklopite na nekaj bolj primernega, kot je npr. v tem primeru za raspberry v “mojserver” ali “mojepodjetjekoper” po vaši izbiri. Pripravite v naprej vse potrebno za postavitev vašega predstavitvenega mesta za najmanjše letne stroške poslovanja in vzdrževanja serverja.


Preverite nastavitve vmesnikovInterfaces settings
Pojdite na zavihek vmesnika “interface” in preverite, ali so vsi vmesniki onemogočeni se pravi enable SSH!!!
Običajno uporabljamo povezavo z oddaljenim namizjem, če pa uporabljate SSH, se prepričajte, da je SSH omogočen – po mojem je to najboljša varianta, po želji sami se odločite ali boste delali preko terminala SSH ali Oddaljenega Namizja xrdp.

V meniju določite GPU vrednost na 16 in če uporabljate ventilator vklopite še njega ponavadi GPIO 14

Posodobite svoje lokalne nastavitve – Se pravi Jazik ne pozabit odkljukat sl_si_UTF8 in še tistega spodaj ali važno je ta je ta sl si utf 8 odkljukan!
Poskrbite, da bosta vaša lokacija in časovni pas pravilno nastavljeni.

Shranite konfiguracijo in znova zaženite
Prepričajte se, da so spremembe shranjene, in znova zaženite Raspberry Pi.
Raspberry Pi lahko znova zaženete s terminala z uporabo:

sudo shutdown -r now

ali znova zaženite z uporabo:

sudo reboot

ali samo zaustavitev sistema z uporabo:

sudo shutdown -h now

05) Raspberry Pi povežite z omrežjem in usmerjevalnikom

Zdaj, ko smo namestili Raspbian in končali osnovno konfiguracijo, lahko zdaj končamo s povezovanjem z vašim usmerjevalnikom nastavitev DHCP.
Najprej povežite omrežje z Raspberry Pi in posodobite tako, da vnesete v terminalu (npr. putty ali SmartFTP):

sudo apt-get update

Nato nadgradite tako:

sudo apt-get upgrade

Zdaj lahko omrežje nastavimo tako, da Raspberry Pi uporablja fiksni naslov IP, ki se ob ponovnem zagonu usmerjevalnika ne spremeni (To obvezno v usmerjevalniku razervirajte oz. v vašem routerju).
Najprej poiščite naslov MAC in naslov IP vašega Raspberry Pi z ukazom:

ifconfig

Naslov MAC je enolična številka, dodeljena omrežnim vmesnikom – to je omrežni naslov, ki ga lahko uporabimo za povezavo z naslovom IP.
Naslov MAC bo videti nekako tako: b8:27:eb:ad:31:3c
Naslov IP bo videti nekako takole: 192.168.1.75
Ko dobite naslov MAC in IP, se morate prijaviti v usmerjevalnik. Nekje v menijskem sistemu bi morali najti naprave v svojem omrežju. To je seveda odvisno od vašega usmerjevalnika in morda boste morali poiskati dokumentacijo zanj. Vaš usmerjevalnik naj prikaže Raspberry Pi z imenom gostitelja, naslovom IP in MAC.
Če se na Raspberry Pi vedno sklicujete z imenom gostitelja, ne bo pomembno, ali se bo naslov IP spremenil.

Vklopite v usmerjevalniku DHCP IN ŠE REZERVIRAJTE LOKALNI IP NA BAZ MAC NASLOVA OD RASPBERRY PI!!! TAKO, ČE SE VAM UGASNE ROUTER OZ. USMERJEVALNIK NE BOSTE DOBILI NEK NOV IP ZA RASPBERRY ŠE POSEBEJ ČE STE POVEZANI PREKO WIFI NA RASPBERRY!!! POGLEJTE SI NASTAVITVE VAŠEGA USMERJEVALNIKA VSAK IMA MALO DRUGAČNE MENIJE MA FUNKCIONALNOSTI SO PRI VSEH USMERJEVALNIKIH ENAKE!
REZERVIRAJTE NA USMERJEVALNIKU OZ. VAŠEM ROUTERJU ZA VAŠ PI 4-3-2

ZDAJ LAHKO ŠE REZERVIRAMO V RASPBERRY PI ZVA VAŠ RASPBIAN LINUX IP, NPR. ČE GA IMATE Z KABLOM POVEZANEGA, ALI WIFI TAKO:

sudo nano /etc/dhcpcd.conf 

ČE JE PI 4-2-3 POVEZAN S KABLOM KOPIRAJTE SPODNJE DIREKTIVE ČISTO NA KONCU, SE PRAVI 192.168.1.1 JE IP ROUTERJA VI LAHKO IMATE TUDI 192.168.0.1 ODVISNO OD ROUTERJA OZ. USMERJEVALNIKA IN NPR. MOJ PI4 JE NA IPJU 192.168.1.82 – Kopirajte take direktive moj primer:

interface eth0
static ip_address=192.168.1.82/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8  

Zdaj, če imate vaš PI preko WiFi povezave pa vpišete tako:

interface wlan0
static ip_address=192.168.1.110/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8  

Često na koncu tam kjer je DNS od Google lahko s presledkom ločite še vaš DNS vašega ISP ponudnika npr. t-2.net ima ta dva IP DNS: 84.255.209.79 , 84.255.210.79 medtem, ko za telekom slovenije oz. siol vpišete 193.189.160.13 , 193.189.160.23 in ostali poglejte za vašega ISP!!!

Primer za t-2.net če imate vaš PI preko kabla povezan:

interface eth0
static ip_address=192.168.1.82/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 84.255.209.79 84.255.210.79 8.8.8.8 1.1.1.1

Za Google DNS sta ta dva 8.8.8.8 in 8.8.4.4 ter za CloudFlare sta ta dva 1.1.1.1 in 1.0.0.1 in poglejte še za Comodo, itd……

06) Ustvari novega uporabnika in izbriši uporabnika pi

V celoti moramo izbrisati obstoječega uporabnika »pi«, ker gre za varnostno težavo. Vsi vemo, da ima Raspberry Pi privzeto uporabniško ime “pi”, zato ga moramo nadomestiti – ZDAJ DOKLER NASTAVLJAMO JE OK PUSTITE AMAPK, NABOLJE JE DA GA IZBRIŠETE.
Če želite ustvariti novega uporabnika, uporabimo ukaz adduser, vendar moramo zagotoviti, da je novi uporabnik v isti skupini kot obstoječi uporabnik pi.
V terminal vnesite:

groups pi

ki bo seznam vseh skupin, v katerih je ta uporabnik se pravi PI. Rezultat bo videti približno tako:

pi adm dialout cdrom sudo audio video plugdev games users netdev input

We need to create a new user with the same group allocation.

Ustvariti moramo novega uporabnika z enakimi dodelitvami skupin.
Če želite ustvariti novega uporabnika, uporabite ukaz useradd s seznamom vseh kopiranih skupin z zgornjega seznama, skupina pi. V mojem primeru je videti tako, toda vaš bo videti nekoliko drugače:

sudo useradd -m -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input <uporabnik>

npr. da generiramo uporabnika webscada naredite tako v terminalu:

sudo adduser admin

Izpolnite Geslo, v terminal geslo kopirate z desnim miškinim kazalcem, pripravite si v namrej dokument oz. TXT datoteko z vašimi gesli in vsemi komandami, ki jih boste potrebovali ali iz te objave kopirajte vse potrebne kode!!!!!

sudo adduser admin

# MENJAVA GESLA Z:
sudo passwd admin

#npr. geslo:   mojpass1234koda
# VEDNO KADAR NPR. IZ TXT DATOTEKE IZ VAŠEGA RAČUNALNIKA KOPIRATE KARKOLI KODO NPT. CTRL+C JO PRILEPITE V TERMINAL Z LEVIM MIŠKINIM KAZALCEM KO KLIKNETE NA TERMINAL NPR. PUTTY ALI SMARTFTP IPD. SSH PROGRAMI OZ. SSH KLIJENT PROGRAMI!!!

dodeli webscada previce v terminalu tako, da zažete to komando:

sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio,www-data admin

# LAHKO TUDI ZA VEČJE ŠTEVILO ADMIN OZ. UPORABNIKOV ČE STE JIH USTVARILI ZA VSAKEGA DAJTE PO ŽELJI DODELITEV PRAVIC, PREMER:

sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio uporabnik1

sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio uporabnik2

sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio uporabnik3

Zdaj gremo še določit v tem primeru uporabniku webscada, da je s-admin, da vam ne rabi pri komandi sudo su vpisovati gesla ponovno npr. v terminal kopirat kodo z desnim miškinim kazalcem:

sudo nano /etc/sudoers.d/010_pi-nopasswd

Zdaj vi zamenjajte pi v vaš račun ki ste ga ustvarli kot S-Admin:

admin ALL=(ALL) NOPASSWD: ALL

Zdaj če ste ustvarili večje število uporabnikov in bi želeli, da v terminalu pri izvajanju kode sudo su ne potrebujete vpisati ponovno kode to storite tako:

sudo visudo

root    ALL=(ALL) ALL
## na koncu kopirajte npr. tako direktive:
admin    ALL=(ALL) ALL
admin    ALL = NOPASSWD: ALL

uporabnik1    ALL=(ALL) ALL
uporabnik1    ALL = NOPASSWD: ALL

uporabnik2    ALL=(ALL) ALL
uporabnik2    ALL = NOPASSWD: ALL

uporabnik3    ALL=(ALL) ALL
uporabnik3    ALL = NOPASSWD: ALL

# shrani in izhod

Ponovni zagon in prijava ne več v pi ampak z uporabniškim imenom webscada – Se pravi v putty ali SmartFTP ali vaš program SSH server, tako da uporabniško ime webscada in vaše geslo:

sudo reboot

# Ali s komando ma zgorjna je lažja:
sudo shutdown -r now

Brisanje privzetega uporabnika »pi«
Zdaj lahko uporabnika pi izbrišemo z eno od teh komand sredinska je čisto dovolj zbriše vse datoteke od uporabnika pi:

sudo deluser pi

sudo userdel -r -f pi

sudo deluser -remove-home pi

Izvirnega uporabnika pi in z njim povezane datoteke je treba zdaj izbrisati.
Spremenite podrobnosti o povezavi z oddaljenim namizjem
Ne pozabite spremeniti podrobnosti o povezavi z oddaljenim namizjem, tako da se bo poskušalo prijaviti v novo ime gostitelja in geslo uporabniškega imena se pravi webscada uporabnik in vaše ime gostitelja, ki ste ga spremenili iz raspberry v karkoli.

admin@hostname-ime-gostitelja-original-je-bilo-raspberry

nrp. zdaj ko ste prijavljeni z uporabnikom webscada in npr. ime gostitelja mojascada izgleda tako vaša prijava v terminal:

admin@mojhost :~ $

ZDAJ BI LAHKO NAMESTILI ŠE NPR. CERTIFIKAT SSH IN GA SKONFIGURIRALI, MA NE RABI, KER NE BOMO POSREDOVALI PORTOV SSH OZ. PORTA 22:

sudo nano /etc/ssh/sshd_config

NA KONCU KOPIRAJTE NPR. TAKO:

AllowUsers  admin uporabnik1 uporabnik2 uporabnik3

Medtem ko boste SSH ključ generirali če ste terminal zavarovali z SSH certifikatom tako (nastavitve sshd_config) samo za info:

sudo su - admin
ssh-keygen

sudo su - uporabnik1

sudo su - uporabnik2
ssh-keygen

sudo su - uporabnik3
ssh-keygen

 

07) Nastavite požarni zid – FireWall linux

sudo apt install iptables ipset

Na tej strani oz. poglavju je opisano, kako nastaviti pravila požarnega zidu za blokiranje neželenega prometa na Raspberry Pi.
iptables je krmilnik za netfilter in iptables je vključen v distribucijo Raspberry Pi – Rasbian Linux je derivat Debian Linux.
Obstaja več konfiguracijskih sistemov, s katerimi lahko lažje delate z iptables, vendar ne bomo ustvarili veliko pravil, zato bomo lahko ustvarili nabor pravil in nato uvozili nabor pravil v iptables. Pravila, ki jih opisujemo, so posebej za spletni strežnik in vaše zahteve se lahko razlikujejo od tega primera.
Trenutna pravila lahko prikažete z naslednjimi ukazi:
IPv4:

sudo iptables -L

IPv6:

sudo ip6tables -L

iptables privzeto nima pravil za IPv4 in IPv6, zato boste sprva videli brez pravil požarnega zidu. To pomeni, da je dovoljen ves dohodni, posredovani in odhodni promet – vse je odklenjeno. Dohodni in preusmerjeni promet moramo omejiti le na tisto, kar je potrebno.

Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Ustvarjanje nabora pravil požarnega zidu
Kot primer, naslednje ustvarja nabor pravil za IPV4 in IPV6. Primeri so osnovni nabor pravil, ki ga bo morda treba spremeniti glede na vaše posebne sistemske zahteve.

Navodila in razlaga primer postavitve požarnega zidu – To je direkt kopija mojih nastavitev lokalnega omrežja. Vi zdaj preden boste ustvarili tmp/v4 in tmp/v6 ter jih priklicali in nameslipi pol modul iptables persistent, spremenite spodnje ip direktive za vaš iptables nastavitve – Razlaga IP localnet:

IP Router: 192.168.1.1

Na router so priklopljeni štiri računalniki in sicer:

  1. Server IP: 192.168.1.10
  2. Server IP: 192.168.1.20
  3. Server IP: 192.168.1.30
  4. Server IP: 192.168.1.82
  5. WindowsPC: 192.168.1.100 (računalnik, ki ima SSH dostop neomejen)
  6. Vi spremenite vse ipnaslove v vaše interne računalnike, ki imajo full dostop do microserverja

Razlaga parametrov iptables katere sem uporabil:

Zaščita root dostop iz zunanjega omrežja, odpru web, ftp, ssh, sql, webmin, mail porte in zaščitu dostop samo na en pc za full ssh dostop. Uporabljena je koda andi DDoS napad oz. skeniranja preko porta 80. V kolikor elektronske pošte ne potrebujete in ftp serverja lahko izpustite v požarnem zidu vse te porte. V KOLIKOR STE PREHITELI IN NAMESTILI BREZ PREKLICA VAŠIH DIREKTIV IPTABLES-PERSISTENT MODUL, LAHKO VAŠE DIREKTIVE VSTAVITE DIKEKTNO V MAPO /etc/iptales/ dve datoteke ena za ipv4 in druga za ipv6.

Ustvari novo datoteko v npr. mapi tmp, ki sem jo imenoval V4:

sudo nano /tmp/v4

# Pripravil sem vam tudi že narejeno datoteko za iptables:
/etc/iptables.up.rules PRENESITE IZ TEGA STREŽNIKA IN LAHKO NAMESTO GENERIRAT PRAVILA UPORABITE MOJA SEM VAM VSE ŽE PRIPRAVIL!

Kopirajte naslednje oz. spodnje direktive v to datoteko in jo shranite npr. z CTRL+O ali CTRL+X in Shranite Yes – DA za datoteko /tmp/v4!!!.

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
**filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -d 127.0.0.0/8 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT ! -i eth0 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 8338 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 10000 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
-A INPUT -s 192.168.1.10/32 -j ACCEPT
-A INPUT -s 192.168.1.20/32 -j ACCEPT
-A INPUT -s 192.168.1.30/32 -j ACCEPT
-A INPUT -s 192.168.1.82/32 -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport --dports 21,22,80,443,25,110,143,587,993,995,8338,10000 -j ACCEPT
-A INPUT -i wlan0 -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
-A INPUT -s 192.168.1.100/32 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8338 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -p udp -m state --state NEW,ESTABLISHED -m udp --dport 53 -j ACCEPT
#-A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.1.10/32 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.1.20/32 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.1.30/32 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.1.82/32 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 3306 -j ACCEPT
-A INPUT -i eth0 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 5432 -j ACCEPT
-A INPUT -i eth0 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 5432 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3142 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.1.100/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
#-A INPUT -p tcp -m state --state NEW -m recent --set --name ssh --mask 255.255.255.255 --rsource -m tcp --dport 22 
#-A INPUT -p tcp -m state --state NEW -m recent ! --rcheck --seconds 90 --hitcount 6 --name ssh --mask 255.255.255.255 --rsource -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 873 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 5353 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 113 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2049:2050 -j DROP
-A INPUT -p tcp -m tcp --dport 6000:6063 -j DROP
-A INPUT -p tcp -m tcp --dport 7000:7010 -j DROP
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable
#-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -m state --state INVALID -j DROP
-A FORWARD -j REJECT
-A FORWARD -j DROP
-A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 8.8.8.8/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 8.8.4.4/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 84.255.209.79/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 84.255.210.79/32 -p udp -m udp --dport 53 -j ACCEPT
#-A OUTPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -j ACCEPT
-A OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 443 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 21 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 25 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 143 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 993 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 110 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 995 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 3306 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 8338 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 10000 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 3306 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 5432 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 5432 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate NEW,ESTABLISHED -m tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -m tcp --sport 873 -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -j ACCEPT
-A OUTPUT -d 192.168.1.82/32 -j ACCEPT
-A OUTPUT -d 192.168.1.10/32 -j ACCEPT
-A OUTPUT -d 192.168.1.20/32 -j ACCEPT
-A OUTPUT -d 192.168.1.30/32 -j ACCEPT
-A OUTPUT -p tcp -s 192.168.1.100/32 --dport 22 -j ACCEPT
-A OUTPUT -p tcp --dport 22 -j DROP
-N block-scan
-A block-scan -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
-A block-scan -j DROP
COMMIT

Ustvari novo datoteko v mapi tmp, ki sem jo imenoval v6:

sudo nano /tmp/v6

Kopirajte naslednje v to datoteko in jo shranite:

# Generated for iptables-webmin-custom-settings by homecraftsoft.com on Mon jul 29 12:55:21 2020
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*filter
:FORWARD ACCEPT [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
# Dissalow input - connections from outsite localhost
-A INPUT -s ::1/128 ! -i lo -j REJECT
# Accept traffic from internal interfaces
-A INPUT ! -i eth0 -j ACCEPT
# Accept traffic with the ACK flag set
-A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT
# Allow incoming data that is part of a connection we established
-A INPUT -m state --state ESTABLISHED -j ACCEPT
# Allow data that is related to existing connections
-A INPUT -m state --state RELATED -j ACCEPT
# Accept responses to DNS queries UPD connedtion port ipv4 53 open all ports from 1024 to 65535
-A INPUT -p udp -m udp --dport 53:65535 --sport 53 -j ACCEPT
#-A INPUT -p udp -m udp --dport 1024:65535 --sport 8442 -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport -j ACCEPT --dports ftp,ssh,www,https,pop3,smtp,imap,imaps,pop3s,8338,10000
## Allow connections to our IDENT server
-A INPUT -p tcp -m tcp --dport auth -j ACCEPT
# Respond to pings -A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT Protect our NFS server
-A INPUT -p tcp -m tcp --dport 2049:2050 -j DROP
# Protect our X11 display server
-A INPUT -p tcp -m tcp --dport 6000:6063 -j DROP
# Protect our X font server
-A INPUT -p tcp -m tcp --dport 7000:7010 -j DROP
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
# Completed IPTables Custom Config

Naložite iptable pravila
Za nalaganje iptable uporabljamo ukaze:

sudo iptables-restore < /tmp/v4

sudo ip6tables-restore < /tmp/v6

Potrebujemo način, da zagotovimo, da so pravila iptable na voljo po ponovnem zagonu, zato moramo namestiti iptables-persistent z uporabo:

sudo apt-get install iptables-persistent

Vprašani boste, ali želite shraniti trenutna pravila IPv4 in IPv6. Na vsak poziv odgovorite z da – YES!!!.
Zdaj ko ste namestili sudo reboot oz. ponovni zagon sistema in preverite.
Pravila požarnega zidu lahko ponovno preverimo z uporabo komande:

sudo iptables -vL

sudo ip6tables -vL

To so osnovna pravila požarnega zidu. Vendar boste morda morali ta pravila urediti, če se namestitev na primer spremeni v datoteki strežnika.

VSE GLEDE IPTABLES SE PRAVI LINUX POŽARNEGA ZIDU BOSTE DOBILI NA STRANI DEBIAN VSE DIREKTIVE VELJAJO TUDI ZA RASBIAN!!!

https://www.debian.org/

PS: SORRY AMPAK JAZ PIŠEM VSE MOJE PROGRAME V ANGLEŠČINI IN TO VELJA TUDI ZA RAZLAGE TAKO DA BREZ ZAMERE – PRI RAZVOJU LASTNIH SPLETNIH APLIKACIJ MI POMAGAJO PRIJATELJI IZ TUJINE TAKO DA NE MOREM PISATI V SLOVENŠČINI NOBENE RAZLAGE, KONEC KONCEV JE STANDARDNI JEZIK ZA ITS ZAME ANGLEŠČINA, ŠE WINDOWSA IN NOBENEGA PROGRAMA NIMAM V SL-SI SLOVENSKEM JEZIKU STVAR NAVADE.

Kopirajte direktive iz moje datoteke za ip6tables.up.rules in namestite tako sjo vsi potrebni porti odobreni 21, 22, 80, 443,10000 – Za priklicat nastavitve izvedite v terminalu spodnje komande:

sudo iptables-restore < /etc/iptables.up.rules

sudo ip6tables-restore < /etc/ip6tables.up.rules

sudo apt-get install iptables-persistent -y

sudo reboot

sudo iptables -vL

sudo ip6tables -vL

8) Namestite Apache2 na Raspberry Pi

Namestitev spletnega strežnika Apache na Raspberry Pi mora biti neposredna. To predpostavlja, da ste za Raspberry Pi nastavili ime gostitelja in da je povezani z vašim lokalnim omrežjem.
Prijavite se na Raspberry Pi s pomočjo terminala in vnesite:

sudo apt update

# ali kar to spodaj direktivo kopirajte v terminal:

sudo apt update && sudo apt upgrade -y

Namestitev Apache 2 strežnika:

sudo apt-get install apache2 -y

# ali s to komando še za pripomočke:
sudo apt-get install apache2 apache2-utils -y

Preizkusite spletni strežnik
Apache privzeto postavi preskusno datoteko HTML v spletno mapo, ki si jo boste lahko ogledali iz svojega Pi ali iz drugega računalnika v omrežju.
Odprite privzeto spletno stran Apache na Raspberry Pi s pomočjo spletnega brskalnika na Raspberry Pi in vnesite http://mojserver oz. vaše ime gostitelja ki ste ga določili (raspberry npr. admin@mojserver :~ $)
Videti bi morali privzeto stran Apache2 Debian.
Poskusite namesto localhost PI, ki ste ga določiti uporabiti kar IP za Raspberry Pi vaše lokalno omrežje. Na primer, moje ime gostitelja je mojascada, zato namesto tega bom uporabil http://ipraspberry v mojem primeru je http://192.168.1.82.
Lahko v vaše spletnem brskalniku uporabite ali eno ali drugo po želji.
Če želite poiskati naslov IP vašega Raspberry Pi, v terminal vnesite naslednje:

hostname -I

Spreminjanje privzete spletne strani
Privzeta spletna stran je samo datoteka HTML v datotečnem sistemu. Nahaja se na /var/www/html/index.html.
Če želite spremeniti to datoteko:

sudo nano /var/www/html/index.html

Vendar mi tega ne potrebujemo zato jo lahko kar izbrišemo tako:

cd /var/www/html/

admin@mojhost:/var/www/html $

## in za ibris te datoteke ali vse zažkite to komando:
# IZBRIS INDEX.HTML APACHE
sudo rm *

Če želite kadar koli znova zagnati Apache, vnesite:

Zdaj gremo skonfigurirat Apache2 za WEBScado tako da v terminalu zažegmo to direktivo:

sudo nano /etc/apache2/apache2.conf

in dodajte pod alineje do 174:

<Directory /var/www/html/>
	Options Indexes FollowSymLinks
	AllowOverride All
	Require all granted
</Directory>

ZA PREVERIT ČE DELA APACHE ODPRI V BRSKALNIKU URL:

http://IPLocalPI4/

Če ne deluje v terminalu uporabi kodo:

sudo chown -R www-data:www-data /var/www/html/

Zdaj primer konfiguracije Apache za noip.com oz. Dinamične Domene:

Naredite virtualni host za vašo domeno npr. mojepodjetje.ddns.net – www.noip.com

sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request’s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

# ServerAlias pcsnet.tk

ServerName podjetje.ddns.net

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

DirectoryIndex index.html index.php index.htm
# Available loglevels: trace8, …, trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g. NO Log = custom env=!dontlog
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with “a2disconf”.
#Include conf-available/serve-cgi-bin.conf

RewriteEngine On
# Block .svn, .git
RewriteRule \.(svn|git)(/)?$ – [F]

RewriteCond %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* – [F]

</VirtualHost>

 

Reboot apache in aplicirajte CertBot SSL certifikat za zaščito vašega mesta ter namestite WordPress…..

9) Namestite php 7.4 PI 4-3-2

Zdaj bomo namestili in dali v repository oz. bazo podatkov za nadgradno skriptov php različica 7.4 nekaj direktiv.
V putty oz. terminalu vnesite spodnje direktive:

sudo apt update

sudo apt -y install lsb-release apt-transport-https ca-certificates

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

sudo apt update

sudo apt -y install php7.4  libapache2-mod-php7.4

# preverite različico s to komando:
php -v

## urejanje direktiv php
webscada@mojascada:~ $ sudo nano /etc/php/7.4/apache2/php.ini

sudo nano /etc/php/7.4/apache2/php.ini
# vpišite po želji vrednosti se pravi:
max_execution_time = 180
memory_limit = 128M 
post_max_size = 128M
upload_max_filesize = 128M
max_execution_time = 120 
max_input_vars = 3000 
max_input_time = 1000
log_errors = On
error_log = /var/log/php/error.log

Zdaj moramo še ustvarit mapo za napake, v terminalu zažgete spodnji komandi:

sudo mkdir -p /var/log/php

sudo chown www-data /var/log/php

Zdaj module za php 7.4 namestite tako:

sudo apt install php7.4-{common,mysql,cgi,xml,xmlrpc,curl,gd,imagick,cli,dev,imap,mbstring,opcache,soap,zip,intl,bcmath} -y

# ali tako:
sudo apt install -y php7.4-fpm php7.4-mysql php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml php7.4-xmlreader php7.4-curl  php7.4-exif  php7.4-ftp php7.4-gd  php7.4-iconv php7.4-imagick php7.4-json php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenizer

Zdaj za WEBMin če želite gledati slike namestite še to:

sudo apt-get install imagemagick php-imagick libmagickcore-dev -y

10) Namestite SQL server

Namestitev SQL sever zdaj ta najnovejši se imenuje MariaDB
V putty oz. terminalu vnesite spodnje direktive:

sudo apt-get install mariadb-client mariadb-server -y PRIMER SSL:

Skonfiguriraj MariaDB na SSL: sudo su cd /etc/mysql sudo mkdir ssl cd ssl ali / or - 2048 je ok sudo openssl genrsa 4096 > ca-key.pem
Naredimo SSL za Admin MySQL:
sudo openssl req -new -x509 -nodes -days 999000 -key ca-key.pem -out ca-cert.pem
Izpolni SI, itd in za Common Name daj to:
Common Name (e.g. server FQDN or YOUR name) []: MariaDB admin
Naredimo SSL za Server MySQL:
sudo openssl req -newkey rsa:2048 -days 999000 -nodes -keyout server-key.pem -out server-req.pem
Izpolni SI, itd in za Common Name daj to:
Common Name (e.g. server FQDN or YOUR name) []: MariaDB server
Naredimo SSL za Server MySQL:
sudo openssl req -newkey rsa:2048 -days 999000 -nodes -keyout client-key.pem -out client-req.pem
Izpolni SI, itd in za Common Name daj to: Common Name (e.g. server FQDN or YOUR name) []: MariaDB client
Zdaj preveri če so vsi certifikati ok:
sudo openssl rsa -in server-key.pem -out server-key.pem
sudo openssl x509 -req -in server-req.pem -days 999000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
sudo openssl rsa -in client-key.pem -out client-key.pem
sudo openssl x509 -req -in client-req.pem -days 999000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

Aktiviraj v SQL SSL: sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
## Dodaj v sekciji [mysqld] spodnje direktive: ## mariadb will use TLSv1.0 or better. ##
ssl = on
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Dodeli pooblastila:
sudo chown -Rv mysql:root /etc/mysql/ssl/
sudo systemctl restart mysql

ZDAJ ŠE V MYSQL CLIENTS DODAJ V SEKCIJI [mysql] SPODNJE DIREKTIVE TE DIREKTIVE OZ. POT SSL LAHKO DASTE POL V PHPMYADMIN config.inc.php – NI POTREBNO:

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

## MySQL Client Configuration ##
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/client-cert.pem
ssl-key=/etc/mysql/ssl/client-key.pem

zDAJ KOPIRAJTE VSAKEMU KLIJENTU VAŠ SSL CERTIFIKAT OZ. VAŠIM RAČUNOM:

{admin@mojserver}: rsync /etc/mysql/ssl/ca-cert.pem /etc/mysql/ssl/client-cert.pem /etc/mysql/ssl/client-key.pem \
admin@localhost:/etc/mysql/ssl

Vpiši svojo kodo in tako naredi za vsak račun npr.

rsync /etc/mysql/ssl/ca-cert.pem /etc/mysql/ssl/client-cert.pem /etc/mysql/ssl/client-key.pem \
webscada@localhost:/etc/mysql/ssl

pojdi preverit če vse dela sudo su in mariadb:

mariadb

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 30
Server version: 10.5.15-MariaDB-0+deb11u1 Raspbian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
+---------------------+--------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/mysql/ssl/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/ssl/server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /etc/mysql/ssl/server-key.pem |
| version_ssl_library | OpenSSL 1.1.1n 15 Mar 2022 |
+---------------------+--------------------------------+
10 rows in set (0.006 sec)

MariaDB [(none)]> status;
--------------
mariadb Ver 15.1 Distrib 10.5.15-MariaDB, for debian-linux-gnueabihf (armv8l) using EditLine wrapper

Connection id: 30
Current database:
Current user: root@localhost
SSL: Cipher in use is TLS_AES_256_GCM_SHA384
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 10.5.15-MariaDB-0+deb11u1 Raspbian 11
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /run/mysqld/mysqld.sock
Uptime: 3 min 43 sec

Threads: 1 Questions: 60 Slow queries: 0 Opens: 32 Open tables: 25 Queries per second avg: 0.269
--------------

MariaDB [(none)]> quit
Bye

11) Namestite phpmyadmin

Namestitev phpmyadmin, bomo potrebovali ta program za lažji uvoz SQL baz podatkov ali pa redne varnostne kopije SQL baze podatkov ma vse to vam bo delal WEBMin!!! PhpMyAdmin potrebuje webscada pridemo do tega še….
V putty oz. terminalu vnesite spodnje direktive:

sudo apt-get install phpmyadmin -y

Zdaj vas vpraša ko se namešča program za uporabniško ime phpmyadmin da določite eno kodo, dajte npr. nekaj hard oz. težjo kodo vse to si zapišite!

Npr. pri namestitvi phpmyadmin vas vpraša za kodo uporabnik:
phpmyadmin

npr. koda dajte kaj tazga, to velja vedno tudi za sql bazo ali pa še posebej npr. za uporabnika webscada naj bo kompleksna koda!!!

Koda za phpmyadmin: 4R4pESMaZbkcvN79kR3K4BeK
Ni pa nujno po želji določite eno kodo!!!

Zdaj se lahko prijavimo v phpmyadmin tako, da odpremo v brskalniku:

http://192.168.1.82/phpmyadmin/

### se pravi vaš ip raspberry!!!

POZOR: Odvistno katero zarličico Raspbiana namestite pri 10 Buster je treba php nadgradit na npr. 5.0.4 na Raspbian 11 oz. Bullseye ne rabi!!!

Ne pozabit ko ste namestili npr. za Raspbian 10 Buster popravek oz. razhroščevanje ali kot mu rečem jaz debugizacija:

NAMESTITEV PHPMYADMIN 5.0.4

cd /usr/share/phpmyadmin/
sudo su
wget https://perc.ddns.net/downloads/phpmyadmin504.zip
unzip phpmyadmin504.zip
rm phpmyadmin504.zip

Odgovori z A pomeni prepiši vse obvezno ko odpakiraš!!!!


sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
sudo nano /usr/share/phpmyadmin/config.inc.php

$cfg[‘blowfish_secret’] = ‘VPIŠI-SVOJO-KODO-ZAKODIRAT-COOKY’; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
/* User used to manipulate with storage */
// $cfg[‘Servers’][$i][‘controlhost’] = ”;
// $cfg[‘Servers’][$i][‘controlport’] = ”;
$cfg[‘Servers’][$i][‘controluser’] = ‘pma’;
$cfg[‘Servers’][$i][‘controlpass’] = ‘MOJSERVER123456789’;
/* Storage database and tables */
$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
$cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma__bookmark’;
$cfg[‘Servers’][$i][‘relation’] = ‘pma__relation’;
$cfg[‘Servers’][$i][‘table_info’] = ‘pma__table_info’;
$cfg[‘Servers’][$i][‘table_coords’] = ‘pma__table_coords’;
$cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma__pdf_pages’;
$cfg[‘Servers’][$i][‘column_info’] = ‘pma__column_info’;
$cfg[‘Servers’][$i][‘history’] = ‘pma__history’;
$cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma__table_uiprefs’;
$cfg[‘Servers’][$i][‘tracking’] = ‘pma__tracking’;
$cfg[‘Servers’][$i][‘userconfig’] = ‘pma__userconfig’;
$cfg[‘Servers’][$i][‘recent’] = ‘pma__recent’;
$cfg[‘Servers’][$i][‘favorite’] = ‘pma__favorite’;
$cfg[‘Servers’][$i][‘users’] = ‘pma__users’;
$cfg[‘Servers’][$i][‘usergroups’] = ‘pma__usergroups’;
$cfg[‘Servers’][$i][‘navigationhiding’] = ‘pma__navigationhiding’;
$cfg[‘Servers’][$i][‘savedsearches’] = ‘pma__savedsearches’;
$cfg[‘Servers’][$i][‘central_columns’] = ‘pma__central_columns’;
$cfg[‘Servers’][$i][‘designer_settings’] = ‘pma__designer_settings’;
$cfg[‘Servers’][$i][‘export_templates’] = ‘pma__export_templates’;

$cfg[‘TempDir’] = ‘/var/lib/phpmyadmin/tmp’;
$cfg[‘SaveDir’] = ‘/var/lib/phpmyadmin/sv’;
$cfg[‘UploadDir’] = ‘/var/lib/phpmyadmin/up’;

EXIT IN USTVARITE ŠE TE MAPE TMP JE ŽE USTVARJENA:

sudo mkdir /var/lib/phpmyadmin/tmp
sudo mkdir /var/lib/phpmyadmin/sv
sudo mkdir /var/lib/phpmyadmin/up

sudo chown -R www-data:www-data /var/lib/phpmyadmin/tmp
sudo chown -R www-data:www-data /var/lib/phpmyadmin/sv
sudo chown -R www-data:www-data /var/lib/phpmyadmin/up

phpmyadmin upgrade – update new version: Gremo dalje ko si uno gor naredu zdaj obvezno tako ko ste uštimali to gor iz terminala bomo ustvarli za phpmyadmin ustrezne baze in pooblastila za oporabnika:

cd /usr/share/phpmyadmin/
sudo mariadb < /usr/share/phpmyadmin/sql/create_tables.sql
sudo mariadb

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'MOJSERVER123456789';

GRANT SELECT, INSERT, UPDATE, DELETE ON pma_db.* TO 'pma'@'localhost' IDENTIFIED BY 'MOJSERVER123456789';

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'MOJEGESLOSADMIN' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;

EXIT

 

Popravki določite takoj ko namestite v phpmyadmin iz unicode_ci v general_ci utf8mb4, če uporabljate starejšo verzijo phpmyadmin od 5.0.4 naredite ta popravek:

Če so neki hrošči za popravit poglejte npr. google.com in napišite oz. kopirajte uno napako št. tukaj vam pokažem kako odpravit en hrošč, vendar boste ni pa potrebno mogli še za neke fonte oz pisavo popravit hrošče oz. bugs jaz pravim, boste mogli DEBUGIZIRAT oz. RAZHROŠČIT SKRIŠTE TAKO: NE RABI VEČ POPRAVLJAT V RASBIAN LINX 11 !!!!! SE UPORABLJA PO DEFAULTU POPRAVLJENA VERZIJA 5.0.4

sudo nano +551 /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

Popravite alinejo ki se glasi tako:

if ($options != null && count($options) > 0) {

spremenite tako, da izgleda tako:

if ($options != null && count((array)$options) > 0) {

Pol so še hrošči kot sem reku za neke fonte oz. pisave, ma ni to pomembo, glejte github.com spletno mesto so vsi popravki hroščev za phpmyadmin, ni težko mislim če se pravilno spomnim da je za popravit v mapi, /usr/share/php/tcpdf/tcpdf.php v alineji 1963:

sudo nano +1963 /usr/share/php/tcpdf/tcpdf.php
TCPDF_FONTS::utf8Bidi(array(''), '', false, $this->isunicode, $this->CurrentFont);

popravite tako oz. debugizirate odpravite hrošča z:

TCPDF_FONTS::utf8Bidi(array(), '', false, $this->isunicode, $this->CurrentFont);

TO VELJA SAMO ČE NAMESTITE PO DEFAULTU MINIMAL INSTALL RASPBIAN 10 LINUX LEGACY VERZIJA

12) Namestimo oz. Generiramo SQL bazo in uporabnika

Zdaj prvo zaženete spodnjo komando in odgovorite tako prvi odgovor je Y oz. yes (DA) in vsi ostali odgovori so N oz. no (NE):

sudo mysql_secure_installation

Zdaj se prijavite v SQL v.10.xx oz. Maria DB tako da vpišete vašo kodo za uporabnika webscada ali če boste namestili na drugega uporabnika pol vse direktive kjer je pri meni moj primer webscada spremenite z uporabnikom, ki ste ga generirali za WEB Scado:

sudo mysql --user=root --password=mojpass1234koda

## Se pravi kot je moja koda za test PI4 se pravi mojpass1234koda vi to samo zamenjate z vašo kdo, ki ste jo dali za uporabnika admin oz. tistega uporabnika, ki je super admin

V mariaDB kopirajte spodnje direktive vse in kar z desnim miškinim kazalcem kliknite v terminal, ne pozabit spremenit vašo kodo lahko tudi ime baze in uporabnika po želji:

Te kode uporabite za vaš wordpress:

create database wordpress;
create user 'wpuser'@'localhost' identified by 'MojaKodaSQL12345KarkoliWP';
grant all privileges on wordpress.* to 'wpuser'@'localhost';
flush privileges;
exit;


CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

# Ali krajše samo:
create database wordpress;

# Za menjat kodo root SQL !!! NE RABITE TEGA !!!
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('mojanovakoda1234koda');

SET PASSWORD FOR 'root'@'::1' = PASSWORD('mojanovakoda1234koda');

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mojanovakoda1234koda');


# Ustvarit uporabnika SQL za wordpress:
create user 'wpuser'@'localhost' identified by 'MojaKodaSQL12345KarkoliWP' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

# Sprosti vse privilegije za bazo in uporabnika:
GRANT ALL PRIVILEGES ON `wordpress` . * TO 'wpuser'@'localhost';

# Ali krajše sprosti privilegije:
grant all privileges on wordpress.* to 'wpuser'@'localhost';

# Za konec še to in izhod....
flush privileges;

exit;

POSREDUJTE PORTE IN ČE ŽELITE NAMESTITE SI SSL CERTBOT FREE SSL

LAHKO NAMESTITE PREKO SNAP ALI PYTHON:
sudo apt update
sudo apt install snapd -y
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --apache --agree-tos --redirect -m mojmail@email.com -d mojadomena.com -d www.mojadomena.com

## Renovirat SSL test
sudo certbot renew --dry-run

ali lahko namesitte tako:
sudo apt-get install certbot python3-certbot-apache -y
sudo certbot --apache

## Zahteva za certifikat in obnova komanda:
sudo certbot --apache certonly
sudo certbot renew


13) Namestite wordpress

Prenesite in odpakirajte datoteko wordpress.zip v vašo mapo var/www/html

https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress

https://www.makeuseof.com/tag/host-wordpress-raspberry-pi/

14) WEBMin – webmin.com – Jaz vam svetujem namestitve tega programa za lažje delo z strežnikom rasbian

Kaj je WEBmin ne bom razlagal to si poglejte na njihovi strani https://webmin.com/ PRAKTIČNO VAM BO OLAJŠALO DELO Z VAŠIM RASPBIAN SERVERJEM OZ. STREŽNIKOM, NE BOSTE POTREBOVALI VEČ TERMINALA OZ. PUTTY SAMO ŠE ZA SSL CERTIFIKATE IN GLAVNE NASTAVITVE BOSTE RABILI TERMINAL DRUGAČE VSE LAHKO NASTAVLJATE V WEBMIN ČISTO ENOSTAVNO – NE POTREBUJETE FTP SERVERJA, KER BOSTE VSE DELALI PREKO WEBMIN IN FILE MANAGER, BOLJ POENOSTAVLJENO, KOT BI IMELI WINDOWS SERVER, S TO RAZLIKO DA SE LINUX NIČ SAM NE NASTAVI!!!!

GREMO NAMESTIT WEBMIN TAKO DA V TERMINALU ZAŽGETE TO KOMANDO OZ. DIREKTIVO:

sudo nano /etc/apt/sources.list

Čiso na koncu kopirajte to direktivo:

deb https://download.webmin.com/download/repository sarge contrib

Da, Sarge je stara različica Debiana, vendar se to skladišče redno posodablja
Zdaj morate namestiti ključ GPG, ki ustreza temu repozitoriju oz. skladišču zažgite v terminalu spodnje komandi:

sudo wget http://www.webmin.com/jcameron-key.asc

sudo apt-key add jcameron-key.asc

Zdaj pa še za konec namestimo webmin tako da v terminalu kopiramo te komande oz. direktive sorry sm primorec ne uporabljam dvojine:

sudo apt update

sudo apt install webmin -y

KO STE NAMESTILI WEBMIN GA ŠTARTATE OZ. SE PRIJAVITE NA NJEGA TAKO DA V VAŠ BRSKALNIK (Chrome, Opera, Internet Explorer, Mozzila,…..) VPIŠETE:

https://ipraspberry:10000/

npr. https://192.168.1.82:10000
Potrdite samoregistrirani SSL od WEBMin in se prijavite npr. z uporabnikom WEBSCADA in GESLOM

Zdaj namestite še ta program za nadgradno npr. tem webmin in ostalo:

sudo apt-get install git -y

Pol če boste implementirali za vaš server npr. SSL Certifikat CertBot pa boste v webmin meni “Webmin Configuration” namestili še modul CertBot tako, da kliknete na ikono Webmin Modules in v polje “From HTTP or FTP URL” boste vpisali oz. kopirali spodnjo povezavo URL ter kliknili Install Module

http://cdn.acugis.com/certbot-webmin-module/certbot.wbm.gz

Zdaj vse namestitve modulov, lahko namestite preko webmin z klikom na željeni modul npr. apache, sql, ftp (ne rabi),….. Ampak jaz vam bom tu dalje vse pokazal za terminal namestitev dodatnih modulov!

15) Namestiom UFW nekomplicirani požarni zid za linux osebno sem bolj pristaš iptables odločitev je vaša:

Namestite ufw zaženi v terminalu – v kolikor ne boste namestili iptables:

sudo apt install ufw

sudo ufw enable -y

### ODPRETE PORTE KATERE RABITE:
sudo ufw allow 80
sudo ufw allow 443
sudo ufw limit ssh/tcp
sudo ufw allow 25
sudo ufw allow 465
sudo ufw allow 587
sudo ufw allow 143
sudo ufw allow 993
sudo ufw allow 110
sudo ufw allow 995
sudo ufw allow 4000
sudo ufw allow 8442
sudo ufw allow 10000
sudo ufw allow 20000
sudo ufw allow from 192.168.1.10 port 22
# Tvoj ip local npr. PC s katerega dostopate v terminal

Noip.com Namestitev aplikacije dinamični internet – DDNS:

### kot root@webscada: vaš hostname:

cd /usr/local/src/
sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
sudo rm noip-duc-linux.tar.gz
cd noip-2.1.9-1/
sudo make install

cd /etc/
sudo nano rc.local
## ****rc.local...
sudo noip2
# Shrani

sudo shutdown -r now

sudo noip2 -S

 

16) Namestitev Požarnega zida za spletne aplikacije – fail2ban:

V terminalu zaženite spodnje komande:

sudo apt install fail2ban -y

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

enabled = true
filter = apache-badbots
# Za vklopit modul kot je zgoraj enable in ime filtra!!!

ls /etc/fail2ban/filter.d/

sudo service fail2ban restart
sudo service fail2ban status

Konfiguracija Fail2Ban za WEB Scado – sudo nano /etc/fail2ban/fail2ban.conf primer spodaj vklopite tiste filtre katere aplikacije imate nameščene:

# Fail2Ban main configuration file
#
# Comments: use '#' for comment lines and ';' (following a space) for inline comments
#
# Changes:  in most of the cases you should not modify this
#           file, but provide customizations in fail2ban.local file, e.g.:
#
# [Definition]
# loglevel = DEBUG
#

[Definition]

# Option: loglevel
# Notes.: Set the log level output.
#         CRITICAL
#         ERROR
#         WARNING
#         NOTICE
#         INFO
#         DEBUG
# Values: [ LEVEL ]  Default: ERROR
#
loglevel = INFO

# Option: logtarget
# Notes.: Set the log target. This could be a file, SYSLOG, STDERR or STDOUT.
#         Only one log target can be specified.
#         If you change logtarget from the default value and you are
#         using logrotate -- also adjust or disable rotation in the
#         corresponding configuration file
#         (e.g. /etc/logrotate.d/fail2ban on Debian systems)
# Values: [ STDOUT | STDERR | SYSLOG | SYSOUT | FILE ]  Default: STDERR
#
logtarget = /var/log/fail2ban.log

# Option: syslogsocket
# Notes: Set the syslog socket file. Only used when logtarget is SYSLOG
#        auto uses platform.system() to determine predefined paths
# Values: [ auto | FILE ]  Default: auto
syslogsocket = auto

# Option: socket
# Notes.: Set the socket file. This is used to communicate with the daemon. Do
#         not remove this file when Fail2ban runs. It will not be possible to
#         communicate with the server afterwards.
# Values: [ FILE ]  Default: /var/run/fail2ban/fail2ban.sock
#
socket = /var/run/fail2ban/fail2ban.sock

# Option: pidfile
# Notes.: Set the PID file. This is used to store the process ID of the
#         fail2ban server.
# Values: [ FILE ]  Default: /var/run/fail2ban/fail2ban.pid
#
pidfile = /var/run/fail2ban/fail2ban.pid

# Options: dbfile
# Notes.: Set the file for the fail2ban persistent data to be stored.
#         A value of ":memory:" means database is only stored in memory 
#         and data is lost when fail2ban is stopped.
#         A value of "None" disables the database.
# Values: [ None :memory: FILE ] Default: /var/lib/fail2ban/fail2ban.sqlite3
dbfile = /var/lib/fail2ban/fail2ban.sqlite3

# Options: dbpurgeage
# Notes.: Sets age at which bans should be purged from the database
# Values: [ SECONDS ] Default: 86400 (24hours)
dbpurgeage = 8d

Konfiguracija fail2ban modulov – sudo nano /etc/fail2ban/local.jail:

/etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

[wordpress] enabled = true
port = http,https
filter = wordpress
action = iptables-multiport[name=wordpress, port=”http,https”, protocol=tcp] logpath = /var/log/apache2/auth.log
maxretry = 3
findtime = 10800
bantime = 86400


[phpmyadmin] enabled = true
port = http,https
filter = phpmyadmin
#logpath = %(apache_error_log)s
logpath = /var/log/apache2/phpmyadmin_access.log
action = iptables-multiport[name=phpmyadmin, port=”http,https”, protocol=tcp] #logpath = /var/log/auth.log
maxretry = 2
bantime = -1

[apache-myadmin] enabled = true
filter = apache-myadmin
port = http,https
logpath = /var/log/apache2/error.log
action = iptables-multiport[name=apache-myadmin, port=”http,https”, protocol=tcp] maxretry = 2
bantime = -1

Primer filtra za word press prijava in php my admin

sudo nano /etc/fail2ban/filter.d/apache-myadmin.conf

[Definition]

failregex = .*\[client <HOST>:[0-9]+\] phpmyadmin: authentification failed.*
[[]client <HOST>[]] File does not exist: /\S*phpmyadmin*
[[]client <HOST>[]] File does not exist: /\S*phpMyAdmin*
[[]client <HOST>[]] File does not exist: /\S*PMA*
[[]client <HOST>[]] File does not exist: /\S*pma*
[[]client <HOST>[]] File does not exist: /\S*admin*
[[]client <HOST>[]] File does not exist: /\S*dbadmin*
[[]client <HOST>[]] File does not exist: /\S*sql*
[[]client <HOST>[]] File does not exist: /\S*mysql*
[[]client <HOST>[]] File does not exist: /\S*myadmin*
[[]client <HOST>[]] File does not exist: /\S*MyAdmin*
[[]client <HOST>[]] File does not exist: /\S*phpmyadmin2*
[[]client <HOST>[]] File does not exist: /\S*phpMyAdmin2*
[[]client <HOST>[]] File does not exist: /\S*phpMyAdmin-2*
[[]client <HOST>[]] File does not exist: /\S*php-my-admin*
[[]client <HOST>[]] File does not exist: /\S*sqlmanager*
[[]client <HOST>[]] File does not exist: /\S*mysqlmanager*
[[]client <HOST>[]] File does not exist: /\S*PMA2005*
[[]client <HOST>[]] File does not exist: /\S*pma2005*
[[]client <HOST>[]] File does not exist: /\S*phpmanager*
[[]client <HOST>[]] File does not exist: /\S*php-myadmin*
[[]client <HOST>[]] File does not exist: /\S*phpmy-admin*
[[]client <HOST>[]] File does not exist: /\S*webadmin*
[[]client <HOST>[]] File does not exist: /\S*sqlweb*
[[]client <HOST>[]] File does not exist: /\S*websql*
[[]client <HOST>[]] File does not exist: /\S*webdb*
[[]client <HOST>[]] File does not exist: /\S*mysqladmin*
[[]client <HOST>[]] File does not exist: /\S*mysql-admin*

^<HOST> .* “POST /phpmyadmin/index.php *
^<HOST> .* “POST /phpmyadmin/setup/index.php *

ignoreregex =

   

Konfiguracija modula f2b prijava wordpress:
sudo nano /etc/fail2ban/filter.d/wordpress.conf
[Definition] failregex = ^<HOST> .* “POST .*wp-login.php
                     ^<HOST> .* “POST .*xmlrpc.php
ignoreregex = 



Najboljša praksa – Namestite LAMP se pravi Apache, MariaDB, php in Webmin

Primer www.noip.com – registrirajte vašo domeno, namestite za linux dodatni program intervalno preverjanje, če imate dinamični internet!!!

Preko webmin terminala ali npr. preko putty namestite program:

cd /usr/local/src/
sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
sudo tar xf noip-duc-linux.tar.gz
sudo rm noip-duc-linux.tar.gz
cd noip-2.1.9-1/
sudo make install

cd /etc/
sudo nano rc.local
#sudo noip2
## daš v autostart programi: rc.local
sudo noip2

Zdaj lahko ponovno zaženete server in v ozadju bo program deloval – FIKSNI IP TEGA NE POTREBUJEJO!!!

sudo shutdown -r now
sudo noip2 -S


Namestite potrebne module, če jih že niste preko terminala.

Pripravite si wordpress na vaš računalnik, zapakirajte nazaj vse skupaj brez mape in naložite program npr. v vaš root direktorij se pravi /var/www/html

Modul error za apache prevod slovenščina tukaj:

Navodila: https://github.com/BorisPerc/Apache-2-4

Primer apache server nastavitve:

Kliknite v levem kotu meni Webmin SERVERS in APACHE WEBSERVER

Odpre se vam Nastavitev kliknite na prvi jeziček Global configuration ter na zadnjo ikono Edit Config Files

Zdaj v /etc/apache2/apache2.conf izgleda tako nekako:

apache.conf
 

ServerRoot “/etc/apache2”
DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch “^\.ht”>
Require all denied
</FilesMatch>
LogFormat “%h %v %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”” vhost_combined
LogFormat “%h %v %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%h %v %u %t \”%r\” %>s %O” common
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent
LogFormat “%h %v %u %t \”%r\” %>s %S \”%{Referer}i\” \”%{User-Agent}i\” ” custom
LogFormat “%h %v %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %I %O” combinedio
#LogFormat “%h %v %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %I %O” detailed
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
ServerName localhost
Protocols h2 http/1.1


Apache Virtual Host Nastavitve:

Npr. da ste naložili wordpress v root direktorij /var/www/html zdaj ustvarite za vašo registrirano domeno npr. noip.com host tako:

Odprite v Meniju Servers, Apache WEbserver – Edit Config Files in kliknite na jeziček /etc/apache2/sites-available/000-default.conf

000-default.conf

<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request’s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerName mojserver.si
ServerAlias mojnoip.ddns.net

ServerAdmin administrator@mojserver.si

DocumentRoot /var/www/html

DirectoryIndex index.php

<Directory /var/www/html/>
# Options -Indexes +FollowSymLinks +ExecCGI +Includes +MultiViews +IncludesNoExec
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, …, trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
# ErrorLog /var/log/apache2/error.log
# CustomLog /var/log/apache2/access.log custom env=!dontlog
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with “a2disconf”.
#Include conf-available/serve-cgi-bin.conf

RewriteEngine On
## itd…… vaše nastavitve

</VirtualHost>


Zdaj preko Tools levi meni in izberite Command Shell zaženite ponovno apache:

Preverite če so vse vaše nastavitve ok in ponovno zaženite apache:

sudo apachectl configtest

sudo systemctl restart apache2


Zdaj bi če posredujete pravilno vaš serer v splet mogli pridet do vaše domene npr. http://mojnoip.ddns.net

Preko webmin lahko vse upravljate, aplicirate Certbot, Kronološka opravila preko serverja ne preko WordPress, itd…. Iz tega omrežja si poberite dodatne filtre Fail2Ban za vaš WordPress zelo priročno plus priporočam uporabo kvalitetnega požarnega zida za vaš wordpress, če boste dovolili, samoregistracijo na vašem mestu kot npr. sodelavec, urednik,….

 

PercNETForumiAudioMediaOglasiWEBDiskDDLeWDiskMServerPSTubePSDDLMediaPSMForumsPSMediaPCSNETMedia