Zdaj glede te tematike je že dosti napisanega in narisanega, slednji način postavitve WEB-Serverja oz. spletnega strežnika je moj osebni pogled in način postavitve CMS WordPress na Debian Linux strežnik z pomočjo WEBMin za administracijo strežnika. Osebno nisem računalničar zato menim, da obstaja tisoče boljših načinov postavitve to je eden izmed primerov, če si hočete za vaše podjetje ali osebno uporabo postaviti odlično predstavitveno stran – Blog WordPress – stari prenosni računalnik ali stacionarni računalnik, konvertiramo v strežnik, lahko tudi po izbiri direktno preko vašega Windowsa to isto izvedete s pomočjo XAmpp aplikacije za Windows (Apache, SQL, FTP,…) serverji lokalna postavitev. V tem primeru, ko smo naprimer postavili oz. namestili enega izmed strežnikov Linux Ubuntu, Debian, CentOS,…. po želji tukaj primer Debian začetek postavitve.
Osebno uporabljam za SSH povezave pri Windows Putty in največ SmartFTP – SSH/sFTP povezava – Stvar navade tudi npr. od kar poznam računalništvo uporabljam za Windows TotalCommander – pred tem je bil Windows Commander in še prej Norton Commander… dolgo nazaj…
Recimo da ste ustvarili sebi na vašem strežniku račun admin@debianlinux se pravi hostname je debianlinux sedaj se povežite preko putty ali SmartFTP ali vašim priljubljenim programom na SSH oz. port 22 IPDebian admin pass….
sudo nano /etc/hostname
debianlinux
sudo visudo
# KOPIRAJTE NA KONCU TE SPODNJE KOMANDE
admin ALL=(ALL) ALL
admin ALL = NOPASSWD: ALL
# ZAŽENITE OZ. IZVRŠITE SPODNJO KOMANDO V TERMINALU
sudo usermod -m -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,apache,www-data admin
sudo nano /etc/ssh/sshd_config
# Na koncu dodajte spodnje direktive IN SHRANI
AllowUsers admin
# LAHKO SI TUDI ZAŠČITITE DOSTOP Z VAŠIM SSH CERTIFIKATOM BOLJ VARNO
sudo apt-get install openssh-server
ssh-keygen
#generiraj si ssl ključ
sudo systemctl restart ssh
sudo service ssh reload
PRIPRAVA NAMESTITVE PROGRAMOV ZA WEB SERVER
sudo apt-get update
sudo apt-get upgrade
sudo apt-get full-upgrade
sudo apt-get -y dist-upgrade
# PO POTREBI:
sudo nano /etc/passwd
sudo nano /etc/group
sudo nano /etc/shadow
Prva stvar nastavitev požarnega zidu Linux iptables:
sudo iptables -L
sudo ip6tables -L
sudo nano /tmp/v4
# Kopiraj vse te kode spodaj do commit in shrani
*filter
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
# Allow ping.
-A INPUT -p icmp -m state -–state NEW -–icmp-type 8 -j ACCEPT
# Allow SSH connections.
-A INPUT -p tcp –dport 22 -m state -–state NEW -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp -–dport 80 -m state –-state NEW -j ACCEPT
-A INPUT -p tcp -–dport 443 -m state –-state NEW -j ACCEPT
# Allow inbound traffic from established connections.
# This includes ICMP error returns.
-A INPUT -m state –-state ESTABLISHED,RELATED -j ACCEPT
# Log what was incoming but denied (optional but useful).
#-A INPUT -m limit –-limit 5/min -j LOG –-log-prefix “iptables_INPUT_denied: ” –-log-level 7
# Reject all other inbound.
-A INPUT -j REJECT
# Log any traffic which was sent to you
# for forwarding (optional but useful).
#-A FORWARD -m limit –-limit 5/min -j LOG –-log-prefix “iptables_FORWARD_denied: ” –-log-level 7
# Reject all traffic forwarding.
-A FORWARD -j REJECT
#-A FORWARD -i eth0 -o usbnet0 -m state --state RELATED,ESTABLISHED -m limit --limit 10/sec -j ACCEPT
# -MAIL ZA VAŠO POŠTO ČE JO ŽELITE ODOBRITE SPODNJE DIREKTIVE -A INPUT
#SMTP
#-A INPUT -p tcp --dport 25 -j ACCEPT
#-A INPUT -p tcp --dport 465 -j ACCEPT
#-A INPUT -p tcp --dport 587 -j ACCEPT
#IMAP(S)
#-A INPUT -p tcp --dport 143 -j ACCEPT
#-A INPUT -p tcp --dport 993 -j ACCEPT
#POP(S)
#-A INPUT -p tcp --dport 110 -j ACCEPT
#-A INPUT -p tcp --dport 995 -j ACCEPT
COMMIT
#Shrani
sudo nano /tmp/v6
# Kopiraj vse te spodaj kode in shrani
*filter
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s ::1/128 -j REJECT
# Allow ICMP
-A INPUT -p icmpv6 -m state -–state NEW -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp -–dport 80 -m state –-state NEW -j ACCEPT
-A INPUT -p tcp –-dport 443 -m state –-state NEW -j ACCEPT
# Allow inbound traffic from established connections.
-A INPUT -m state –-state ESTABLISHED,RELATED -j ACCEPT
# Log what was incoming but denied (optional but useful).
-A INPUT -m limit –-limit 5/min -j LOG –-log-prefix “ip6tables_INPUT_denied: ” -–log-level 7
# Reject all other inbound.
-A INPUT -j REJECT
# Log any traffic which was sent to you
# for forwarding (optional but useful).
-A FORWARD -m limit –-limit 5/min -j LOG –-log-prefix “ip6tables_FORWARD_denied: ” –-log-level 7
# Reject all traffic forwarding.
-A FORWARD -j REJECT
COMMIT
#Shrani
Zdaj smo ustvarili za naš WEB Server direktive, potrebno jih je naložiti tako da izvršite spodnje komande – Ko namestite skripte vsi odgovori so Yes oz. Da kar vas vpraša “install iptables-persistent”:
sudo iptables-restore < /tmp/v4
sudo ip6tables-restore < /tmp/v6
sudo apt-get install iptables-persistent
sudo reboot
# Preverite če deluje
sudo iptables -vL
sudo ip6tables -vL
Zdaj še nastavimo lokalno naš server – Router:
ifconfig
sudo nano /etc/dhcpcd.conf
# Na koncu kopirajte vaše direktive se pravi IP strežnika rezerviran IP na vašem routerju za vaš linux npr. in static domain je IP router:
#static IP configuration
interface eth0
static ip_address=192.168.0.100/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
#Shrani - SHRANITE IN ZAŽENITE PONOVNO RAČUNALNIK SUDO REBOOT
APACHE – NAMESTITEV
sudo apt update && sudo apt upgrade -y
sudo apt-get install apache2 -y
sudo nano /etc/apache2/apache2.conf
# SPREMENI SAMO DIREKTIVE POT HTML KOT JE TU SPODAJ POIŠČI V DATOTEKI
<Directory /var/www/html/> pot mape in direktivo:
“AllowOverride None” – spremeni v “AllowOverride ALL” ustvari pot kjer bo wordpress nameščen:
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
#Shrani
sudo nano /etc/apache2/apache2.conf
# Na koncu datoteke shrani spodnje direktive
ServerName localhost
#Shrani
sudo service apache2 restart
sudo /etc/init.d/apache2 restart
# NAMISTITEV PHP 7.4 - Zaženi v terminalu spodnje komande:
sudo apt -y install lsb-release apt-transport-https ca-certificates wget
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
# Izklop starejše verzije če jo imate nameščeno in vklop novejše:
sudo a2dismod php7.3
sudo a2dismod php7.2
sudo a2enmod php7.4
sudo apt install php7.4
sudo apt install php7.4-{common,mysql,xml,xmlrpc,curl,gd,imagick,cli,dev,imap,mbstring,opcache,soap,zip,intl,bcmath} -y
### PHP Extensions for CMS WordPress
sudo apt install -y 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
sudo nano /etc/php/7.4/apache2/php.ini
# SPREMENITE PO SVOJE SPODNJE DIREKTIVE
max_execution_time = 60
memory_limit = 256M
post_max_size = 256M
upload_max_filesize = 512M
log_errors = On
error_log = /var/log/php/error.log
# SHRANITE IN IN IZVEDITE SPODNJE KOMANDE ZA BELEŽKO NAPAK
sudo mkdir -p /var/log/php
sudo chown www-data /var/log/php
# SQL SERVER BAZE PODATKOV
sudo apt-get install mariadb-client mariadb-server php-mysql php-mbstring -y
# phpMyAdmin UPRAVLJANJE BAZE PODATKOV
sudo apt-get install phpmyadmin
# PRISTOPNI PODATKI SO phpmyadmin uporabnik in geslo ki ste si ga določili, priporočam čim daljše za vašo varnost nikakor admin ali 1234...
sudo phpenmod mysqli
sudo a2enmod rewrite
sudo service apache2 restart
Zdaj namestimo še noip.com DDNS – domeno, ki smo jo registrirali za naš IP bodisi fiksni ali dinamični.
# bodite kot root sudo su in izvedite spodnje komande:
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
# Izpolnite vašo epošto noip.com in geslo za prijavo
cd /etc/
sudo nano rc.local
# Kopiraj spodnjo komando v datoteko
sudo noip2
sudo shutdown -r now
sudo noip2 -S
Požarni Zid UFW in Fail2ban
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# Glej objavo nastavitve fail2ban WordPress
enabled = true
filter = apache-badbots
ls /etc/fail2ban/filter.d/
sudo apt install ufw
# Oddobri takoj porte 80 443 in maile, če si namestil-a
sudo ufw allow 80
sudo ufw allow 443
sudo ufw limit ssh/tcp
# NPR. ODOBRIŠ RAČUNALNIK PREKO KATEREGA UPORABBLAŠ SSH
sudo ufw allow from 192.168.0.111 port 22
sudo ufw enable
cd /etc/
sudo nano rc.local
#!/bin/sh -e
#
# rc.local
sudo noip2
sudo ufw enable
#
# Kopiraj spodnjo direktivo nekje pod rc.local npr. zraven noip...
sudo ufw enable
Elektronska Pošta:
sudo apt-get install ssmtp -y && sudo apt-get install mailutils -y && sudo apt-get install mpack -y
sudo apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql -y
# Glej objavo kako se nastavi spletna pošta za tvoj server linux, postfix in dovecot nastavitve - Lažje vam bo vse delati z WEBMin.com za Debian Strežnik
Nastavitve za Google Mail - mailutils:
sudo apt-get install ssmtp && sudo apt-get install mailutils && sudo apt-get install mpack -y
sudo nano /etc/ssmtp/ssmtp.conf
# Na koncu kopiraj svoje direktive se pravi google mail in geslo
AuthUser=moj.mail@gmail.com
AuthPass=geslogooglemail
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
shrani
sudo nano /etc/ssmtp/revaliases
# Na koncu kopipiraj spodnje direktive svoj googlemail
root:moj.mail@gmail.com:smtp.gmail.com:587
mainuser:moj.mail@gmail.com:smtp.gmail.com:587
#shrani
Certbot SSL certifikat – https://certbot.eff.org/
# Spodnje komande izvrši kot ROOT to velja tudi za obnovo certifikata
sudo apt-get install certbot python-certbot-apache
sudo certbot --apache
# Ko se začne postopek bodite pozorni, da ste prej v vašem usmerjevalniku za
# vaš strežnik v lokalnem omrežju posredovali dalje, se pravi Linux server
# interni porti 80 in 443 v usmerjevalniku posredujete dalje na 80 in 443,
# npr: moj server interno v omrežju je na IP 192.168.0.100 in posredujem za
# ta rezerviran IP DHCP router nastavitve port 80 na externo port 80 itd..
# port 443 interno za ip 192.168.0.100 na port 443 externo.... email....
sudo certbot --apache certonly
# Obnova certifikata - test
sudo certbot renew --dry-run
V vašem Routerju oz. Usmerjevalniku ali svičerju obvezno posredujte za vaš strežnik porte 80 in 443 za implementacijo SSL certifikata – certbot, sslforfree, namecheap, itd…
Glede na to da smo ta Apache server napotili v pot VAR/WWW/HTML prenesemo v to mapo WordPress
cd /var/www/html/
sudo rm *
sudo wget http://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
sudo chown -R www-data: .
Namestitev baze podatkov za CMS WordPress
sudo mysql_secure_installation
Prvi odgovor NE (menjava gesla) drugi vsi so YES oz. DA !!!
sudo mysql --user=root --password=vašegesloadmin
create user 'wordpress'@'localhost' identified by 'DAJTETUDOLGOKODOZAVAŠOAPLIKACIJO';
create database bazapodatkov;
grant all privileges on bazapodatkov.* to 'wordpress'@'localhost';
flush privileges;
exit
WordPress namestitev
Npr. odprite vaš url noip.com – http://mojadomena.ddns.net, če uporabljaš certbot certifikat pol lahko tudi https preveri prej če deluje vse pravilono v apache – ko instaliraš npr. certbot daj obveno redirect oz. preusmeritev na https !!!
Database Name: wordpress
User Name: bazapodatkov
Password: DAJTETUDOLGOKODOZAVAŠOAPLIKACIJO
Database Host: localhost
Table Prefix: mojblog_
Za Debian Linux obstaja fantastična aplikacije in sicer WEBMin http://www.webmin.com/
WEBMin = http://www.webmin.com/
sudo apt-get update && sudo apt-get upgrade
sudo apt install apt-transport-https -y
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.955_all.deb
sudo dpkg --install webmin_1.955_all.deb
hostname -I
https://192.168.0.100:10000
Z WEBMin oz. Spletnim Administratorjem strežnika si pomagajte pri rednih varnostnih kopijah SQL baz podatkov in enostavno upravljajte in konfigurirajte vaše strežnik po vaših potrebah – baze, ftp, stranke,….
Druga varianta namestitve WEBMin.com – Boljše:
sudo nano /etc/apt/sources.list
#Kopiraj na koncu
deb https://download.webmin.com/download/repository sarge contrib
#Shrani
#Zaženi v terminalu sudo su
wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
sudo apt update
sudo apt install webmin -y
sudo apt-get install git -y
#Namestitev CertBot modul za webmin
http://cdn.acugis.com/certbot-webmin-module/certbot.wbm.gz
Glede uporabe vašega strežnika priporočam, da si preko WEBMin namestite še FTP strežnik, če ga že niste prej. WebMin si lahko nastavite, da bo celotno delovanje vašega strežnika popolnoma avtomatizirano z dnevnimi varnostnimi kopijami sistema ali baz potakov, kar je najbolj pomembno!