nextcloudhublogo

Nextcloud & Talk palvelimen turvallinen asennus

Nextcloud & Talk asennus tietoturvallisesti

Tämä opas on suunnattu jotka haluavat rakentaa yritystason Nextcloud-ympäristön puhtaalle Debian 13 -palvelimelle täysin ilman Dockeria.

Tässä arkkitehtuurissa hyödynnämme natiiveja binäärejä, edistynyttä PHP 8.3 -resurssienhallintaa, Redis-välimuistia ja NATS-viestinvälitystä. Lopputuloksena on järjestelmä, joka kestää raskasta mediasiirtoa ja kymmenien käyttäjien samanaikaisia videopuheluita maksimaalisella tietoturvalla.

Vaihe 1: Palvelimen Tietoturvan Perusta

Ennen ohjelmistojen asennusta käyttöjärjestelmä on suojattava ulkopuolisilta uhkilta. Suljemme tarpeettomat portit ja asennamme järjestelmän, joka estää automaattisesti toistuvat murtoyritykset.

1. Palomuurin (UFW) käyttöönotto: Sallimme vain välttämättömän verkkoliikenteen ja SSH-hallinnan. mikäli tämän haluaa.

sudo apt update && sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp  # SSH
sudo ufw allow 80/tcp  # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable

2. Kirjautumisyritysten estäminen (Fail2Ban)

Fail2Ban tarkkailee Nextcloudin lokeja ja estää hyökkääjien IP-osoitteet.

sudo apt install -y fail2ban
sudo nano /etc/fail2ban/jail.local

Lisää tiedostoon seuraava:

[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 86400
findtime = 43200
logpath = /mnt/ncdata/nextcloud.log

Käynnistä palvelu uudelleen: sudo systemctl restart fail2ban

Vaihe 2: Ympäristön Asennus

Asennamme palvelimelle seuraavat: PHP 8.3:n, Nginx-verkkopalvelimen, MariaDB-tietokannan ja Redis-välimuistin. Muista aina valita uusin PHP-versio!

# Perustyökalut
sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https unzip default-mysql-server nginx redis-server

# Lisää Ondřej Surýn virallinen PHP-lähde
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

# Asenna PHP 8.3 ja vaaditut moduulit
sudo apt install -y php8.3-fpm php8.3-cli php8.3-common php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath php8.3-intl php8.3-gmp php8.3-redis php8.3-apcu php8.3-imagick
#Version tarkistus
sudo php -v

Vaihe 3: Suorituskyvyn Optimointi

Perusasetuksilla PHP ja tietokanta tukehtuvat suuren kuorman alla. Skaalaamme resurssit vastaamaan nykyaikaisen laitteiston tehoa. Tämä riippuu suuresti minkälainen kokoonpano sinulla on!

1. PHP 8.3 JIT & OPcache:

Avaa /etc/php/8.3/fpm/php.ini ja viritä muistirajat isojen tiedostojen siirtoa varten:

memory_limit = 1024M
upload_max_filesize = 16G
post_max_size = 16G
max_execution_time = 3600

[opcache]
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 32
opcache.max_accelerated_files = 10000
opcache.jit = tracing
opcache.jit_buffer_size = 128M

2. PHP-FPM -säikeiden skaalaus:

Säädä työntekijäprosessit tiedostosta /etc/php/8.3/fpm/pool.d/www.conf:

pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

Käynnistä uudelleen: sudo systemctl restart php8.3-fpm

3. Tietokannan (MariaDB) puskuri:

Pakota tietokanta pitämään tiedot RAM-muistissa levyhakujen sijaan muokkaamalla /etc/mysql/mariadb.conf.d/50-server.cnf:

[mysqld]
innodb_buffer_pool_size = 4G  # Suositus: n. 60% vapaasta RAM-muistista
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000

Käynnistä uudelleen: sudo systemctl restart mariadb

Vaihe 4: Nginx ja Tietoturvaotsakkeet

Nginx konfiguroidaan turvalliseksi taustapalvelimeksi (sopii erinomaisesti käytettäväksi käänteisen välityspalvelimen takana ”Reverse Proxy”). Suosittelen tätä suuresti jotta tietoturva on entistä isompi. Sivultani löytyy helppo ohje tämän toteuttamiseen! Tämän takia ohjeessani ei käytetä porttia 443 sekä SSL-Suojausta. Voit kuitenkin vapaasti valita haluamasi portin kunhan se ei ole jo varattuna.

Luo tiedosto /etc/nginx/sites-available/nextcloud:

server {
    listen 80;
    server_name pilvi.esimerkki.fi;
    root /var/www/nextcloud;
    index index.php index.html /index.php$request_uri;

    client_max_body_size 16G;
    client_body_timeout 300s;
    fastcgi_buffers 64 4K;

    # HTTP-tietoturvaotsakkeet
    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Robots-Tag "none" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header Referrer-Policy "no-referrer" always;

    location / {
        rewrite ^ /index.php;
    }

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
        deny all;
    }

    location ~ ^\/((?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/)) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        set $path_info $fastcgi_path_info;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ \.(?:css|js|svg|gif|png|jpg|ico|wasm|tflite|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        access_log off;
    }
}

Ota käyttöön: sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/ && sudo systemctl restart nginx

Vaihe 5: Nextcloudin Ydin ja Tiedostolukitus

Rediksen käyttö tiedostojen lukituksessa (File Locking) on kriittistä, jotta järjestelmä ei korruptoidu, kun useat käyttäjät siirtävät tiedostoja samanaikaisesti.

1. Lataa ja asenna Nextcloud:

cd /var/www/
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo chown -R www-data:www-data /var/www/nextcloud

2. Pakota ydinasetukset välimuistille:

Avaa nyt selaimesi ja avaa palvelimen IP-Osoite. Kun olet suorittanut selaimen asennusnäkymän, muokkaa tiedostoa /var/www/nextcloud/config/config.php:

// Käänteisen välityspalvelimen (Reverse Proxy) reititys
  'trusted_proxies' => ['<VÄLITYSPALVELIMEN_IP>'], 
  'overwriteprotocol' => 'https',
  
  // APCu ja Redis -välimuisti
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => [
    'host' => 'localhost',
    'port' => 6379,
  ],
  
  // Lokituksen ja roskakorin hallinta
  'loglevel' => 2,
  'trashbin_retention_obligation' => 'auto, 30',
  'versions_retention_obligation' => 'auto, 30',

3. Ota käyttöön System Cron:

Vähennä selaimen latausaikoja siirtämällä taustatyöt käyttöjärjestelmän vastuulle.

sudo crontab -u www-data -e
# Lisää rivi: */5 * * * * php -f /var/www/nextcloud/cron.php

Vaihe 6: Nextcloud Talk HPB (High-Performance Backend)

Talk-sovellus vaatii tehokkaan signaalipalvelimen yli neljän hengen kokouksia varten. Asennamme NATS- ja Spreed-binäärit natiivisti. HUOM: Käy kuitenkin tarkistamassa uusimmat versiot ja lataa ne: https://github.com/nats-io/nats-server/releases ja https://github.com/strukturag/nextcloud-spreed-signaling/releases

1. NATS-palvelimen asennus:

wget https://github.com/nats-io/nats-server/releases/download/v2.10.16/nats-server-v2.10.16-linux-amd64.tar.gz
tar -xzf nats-server-*.tar.gz
sudo mv nats-server-*/nats-server /usr/local/bin/

2. Spreed-signaalipalvelimen asennus:

wget https://github.com/strukturag/nextcloud-spreed-signaling/releases/download/v1.2.3/signaling-linux-amd64
sudo mv signaling-linux-amd64 /usr/local/bin/signaling
sudo chmod +x /usr/local/bin/signaling
sudo mkdir /etc/signaling

3. HPB-konfiguraatio

(/etc/signaling/server.conf):

Luo kaksi satunnaista avainta (openssl rand -hex 16) ja sijoita ne hash- ja blockkey-kohtiin.

[server]
listen = 127.0.0.1:8080

[sessions]
hashkey = <GENEROITU_AVAIN_1>
blockkey = <GENEROITU_AVAIN_2>

[backend]
backends = nextcloud
allowall = false
timeout = 10
connectionsperhost = 8

[nextcloud]
backend = https://pilvi.esimerkki.fi
secret = <LUOTU_SALASANA_PALVELIMELLE>

[nats]
url = nats://localhost:4222

Tämän jälkeen luodaan Systemd-palvelut molemmille ja yhdistetään HPB Nextcloudin Talk-asetuksista secret avainta käyttäen.

Vaihe 7: Viimeistely (2FA ja Tietokannan Eheys)

Lopuksi viimeistelemme järjestelmän tietoturvan komentorivin kautta ja varmistamme tietokannan rakenteen.

Pakota kaksivaiheinen tunnistautuminen (TOTP) kaikille:

sudo -u www-data php /var/www/nextcloud/occ app:enable twofactor_totp
sudo -u www-data php /var/www/nextcloud/occ twofactorauth:enforce --on

Luo puuttuvat tietokantaindeksit asennuksen jäljiltä:

sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices

Olet nyt onnistuneesti rakentanut palvelimen, joka hyödyntää laitteistosi resursseja suoraan ja tehokkaasti.

Oikein konfiguroitu välimuistien ketju (APCu -> Redis -> MariaDB RAM Puskuri -> JIT) varmistaa, että järjestelmä pysyy salamannopeana myös silloin, kun tallennustilaan lisätään satoja gigatavuja dataa tai kun verkossa on kymmeniä samanaikaisia käyttäjiä. Palomuurit ja Fail2Ban-säännöt takaavat, että yritystason datasi pysyy turvassa verkkoon avattuna. Lisäturvallisuutta saat myös käyttämällä välityspalvelinta Internetin ja palvelimesi välillä.

nvidia

Nvidia näytönohjaimen ajureiden asennus Linuxille

Nvidia ajureiden asennusopas Debian 13

Tämä dokumentti ohjaa nvidia näytönohjaimen ajureiden asennuksen Debian 13 käyttöjärjestelmään.
Alkuperäisissä muistiinpanoissasi oli sekoitettu kaksi eri asennustapaa: virallinen Debian pakettienhallinnan kautta tehtävä asennus sekä Nvidian sivuilta ladattavan manuaalisen .run asennusohjelman käyttö.

HUOM: Linux ympäristöissä on suositeltavaa käyttää ensisijaisesti jakelun omaa
pakettienhallintaa. Se takaa, että ajurit päivittyvät automaattisesti uuden linux kernelin mukana dkms järjestelmän avulla. Jos kuitenkin tarvitset uusimman mahdollisen ajurin suoraan
Nvidialta, käytä manuaalista asennusta.

Tapa 1: Suositeltu asennus Debian pakettivarastoista

Tämä on helpoin tapa asentaa ajurit sekä se muotoutuu täydellisesti järjestelmän päivityksiin.

apt update
apt install nvidia-detect
nvidia-detect

Seuraavaksi riippuvuudet sekä itse ajurit.

apt update
apt install build-essential linux-headers-$(uname -r) dkms
sudo apt install nvidia-driver firmware-misc-nonfree
reboot now

Ja lopuksi vielä tarkistus:

nvidia-smi

Tapa 2: Manuaalinen asennus Nvidian .run-tiedostolla

Jos haluat käyttää suoraan Nvidian sivustolta ladattua ajuripakettia seuraa näitä korjattuja ja täydennettyjä
vaiheita.

Nouveau-ajurin estäminen

Nnouveau ajuri täytyy ottaa pois käytöstä jotta Nvidian oma ajuri voi latautua ongelmitta.

nano /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

Initramfs päivittäminen

Debian käyttää oletuksena initramfs järjestelmää. Jos olet erikseen asentanut dracut
järjestelmän, käytä sille tarkoitettua komentoa.

update-initramfs -u

Tai Dracut:

dracut --force

3. Käynnistä järjestelmä uudelleen tekstitilaan

Ajureita ei voi asentaa graafisen käyttöliittymän ollessa käynnissä toisin kuin Windows käyttöjärjestelmässä. Käynnistä tietokone uudelleen ja siirry
cli/terminaaliin tai juokse komento systemctl stop gdm3 tai lightdm.

4. Työkalut sekä kirjastojen asennus

apt update
apt install build-essential gcc-multilib dkms pkg-config libglvnd-dev
apt install xserver-xorg-dev libvulkan1 vulkan-utils linux-headers-$(uname -r)

5. Ajuritiedoston juokseminen

Mene Nvidian virallisille sivuille nvidia.com ja lataa sieltä näytönohjaimellesi oikea linux .run paketti. Muista myös valita Linux 64 bit! Kopio lataus linkki ja käytä wget komentoa saadaksesi ajurit helpoiten tai käytä selainta mikäli olet graafisella käyttöjärjestelmällä.

Juostaan asennustiedosto. Asennusohjelman kysymyksiin vastataan yleensä myöntävästi Yes, erityisesti 32 bit
yhteensopivuuskirjastojen ja automaattisen päivityksen kohdalla.

HUOM: lisäargumentti –dkms Rekisteröi ajurin dynamic kernel lodule supportiin estää ajurin rikkoutumisen
kernel päivityksissä, erittäin tärkeä muista siis lisätä se loppuun!

chmod +x NVIDIA-Linux-x86_64-*.run
./NVIDIA-Linux-x86_64-*.run --dkms
reboot

Uudelleen käynnistyksen jälkeen tarkistetaan että ajurit sekä näytönohjain tunnistautuvat oikein.

nvidia-smi

Tuon komennon pitäisi näyttää näytönohjaimestasi tärkeitä tietoja, esimerkiksi: Näytönohjaimen mallin, ajurien version, lämpötilat virrankulutus/kulutus sekä mikä prosessi käyttää ja kuinka paljon näytönohjainta.

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.12                 Driver Version: 580.12         CUDA Version: 13.0     |
|-----------------------------------------+------------------------+----------------------|
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4070        Off |   00000000:01:00.0  On |                  N/A |
| 30%   42C    P8               18W / 200W|     842MiB / 12282MiB  |      4%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      1548      G   /usr/lib/xorg/Xorg                             210MiB|
|    0   N/A  N/A      1862      G   /usr/bin/gnome-shell                           165MiB|
|    0   N/A  N/A      3120      G   /usr/lib/firefox/firefox                       245MiB|
|    0   N/A  N/A      4876      G   /usr/bin/code                                  222MiB|
+-----------------------------------------------------------------------------------------+

EXTRAA: Docker ja Nvidia container toolkit

Jotta Docker ympäristö  voivat hyödyntää näytönohjaimen
tehoa asennetaan Nvidia container toolkit.

1. Pakettien lisääminen ja asennus

Debian 13:ssa suositellaan virallisen Nvidian pakettien lisäämistä uusimman version varmistamiseksi:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -
o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-
toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-
container-toolkit-keyring.gpg] https://#g' | tee /etc/apt/sources.list.d/

nvidia-container-toolkit.list
apt update
apt install nvidia-container-toolkit

Sitten vielä Dockerin asennus mikäli sitä ei ole:

curl -fsSL https://get.docker.com | sh

2. Docker-integraation määritys ja käynnistys

Määritetään container toolkit lisäämään Nvidia ajurituki Dockerin runtimeen:

nvidia-container-toolkit runtime configure --runtime=docker
sudo systemctl restart docker

Sitten vielä testaus:

docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi

Näytönohjaimen liittäminen Docker konttiin

Tässä vielä esimerkki Dockerin compose.yaml tiedostossa johon täytyy lisätä muutama asia jotta kontti voi käyttää näytönohjainta. Tässä kontissa on tärkeimmät eli vaaditut enviroment muuttujat sekä deploy.

compose.yaml
version: "3.9"

services:
  gpu-app:
    image: nvidia/cuda:12.4.1-base-ubuntu22.04
    container_name: gpu-test-container

    # Example command (replace with your real app)
    command: ["bash", "-c", "nvidia-smi && sleep infinity"]

    environment:
      - NVIDIA_DRIVER_CAPABILITIES=all
      - NVIDIA_VISIBLE_DEVICES=all

    deploy:
      resources:
        reservations:
          devices:
            - capabilities:
                - gpu

Tarkistetaan vielä että komento nvidia-smi toimii kontissa sekä näytönohjain on annettu kontille onnistuneesti. Sekä käynnistetään kontti taustalle.

docker compose up -d

Tarkistus:

docker exec -it gpu-test-container nvidia-smi

Tai.

docker compose exec gpu-app nvidia-smi

Nyt on näytönohjain otettu oikein käyttöön! Näytönohjaimen lisäys antaa teho boostin Debianille sekä muille Distorille mikäli laskentatehoa tarvitsee enemmän mitä prosessori kykenee tarjoamaan. Tämä on todella tärkeä erityisesti silloin kun ylläpidät itsenäistä palvelinympäristöä ja hyödynnät Dockeria resursseja vaativiin tehtäviin, olipa kyseessä sitten suurten mediakirjastojen tehokas käsittely AV1 tai muu enkoodaus tai muiden raskaiden  asioiden kuten paikallisen tekoäly mallin pyörittäminen.

geolocation

Nginx Proxy Manager GeoBlocking

GeoBlocking Nginx Proxy Managerilla

Geoblokki tarkoittaa tiettyjen maiden tai alueiden IP-osoitteiden estämistä pääsemästä palveluun. Sen tarkoituksena on parantaa tietoturvaa ja vähentää turhaa liikennettä esimerkiksi silloin, kun palvelua käytetään vain tietyssä maassa. Näin voidaan estää haitallisia kirjautumisyrityksiä ja pienentää palvelimen kuormitusta.

Dockerin asennus

Asennetaan Docker ensin kätevästi heidän valmiilla bash scriptillä.

curl -fsSL https://get.docker.com | sudo sh

Tehdään kansio Nginxille.

mkdir -p /docker/npm

cd /docker/npm

Luodaan Docker compose tiedosto johon kaikki konfiguraatiot tulevat.

nano compose.yaml

🐳
compose.yaml
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      # Mysql/Maria connection parameters:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      - ./data/nginx/custom:/etc/nginx/conf.d/custom
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./mysql:/var/lib/mysql

  geoip-upd:
    container_name: geoip-upd
    image: maxmindinc/geoipupdate:latest
    restart: unless-stopped
    volumes:
      - ./data/geoip2:/usr/share/GeoIP
    environment:
      TZ: "Europe/Helsinki"
      GEOIPUPDATE_ACCOUNT_ID: 1234567
      GEOIPUPDATE_LICENSE_KEY: "keykeykeykeykeykeykeykey"
      GEOIPUPDATE_EDITION_IDS: "GeoLite2-City GeoLite2-Country GeoLite2-ASN"    #Databaset joita tarvimme
      GEOIPUPDATE_FREQUENCY: 12                #Kuinka usein database päivittyy
      GEOIPUPDATE_PRESERVE_FILE_TIMES: 1       #Todellinen aika tiedostolle

Seuraavaksi ladataan tarvittavat moduulit.

nano /docker/npm/data/nginx/custom/root_top.conf

root_top.conf
load_module /usr/lib/nginx/modules/ngx_http_geoip2_module.so;
load_module /usr/lib/nginx/modules/ngx_stream_geoip2_module.so;

Uudelleen käynnistetään containeri jotta muutokset tulevat voimaan.

docker exec -it docker-npm nginx -s reload

Tarkista kuitenkin oman containerin nimi seuraavalla komennolla.

docker ps

Tietokannan lataaminen

Mene osoitteeseen https://www.maxmind.com/en/geolite2/signup

Käytämme maxmindin tarjoavaa geoip datasettejä, ne päivittyvät yllättävän nopeasti. Luo uusi license key ja ota talteen account ID, License Key sekä nämä:

GeoLite2-ASN, GeoLite2-Country ja GeoLite2-City

Lisättyäsi tarvittavat tunnukset Docker Compose tiedostoon ja käynnistämällä Containerin näemme tiedostot.

docker compose up -d

ls -l /docker/npm/data/geoip2

Tietokannan konfigurointi Nginx Proxy Managerille

Luodaan uusi tiedosto joka käsittelee tietokannan sisällön ja parsii sieltä mm.country coden, nimen, cityn sekä regionin. Tässä ohjeessa päästämme vain Saksasta liikenteen.

nano /docker/npm/data/nginx/custom/http_top.conf

http_top.conf
charset utf-8;
geoip2 /data/geoip2/GeoLite2-City.mmdb {
        auto_reload 3h;
        $geoip2_metadata_country_build metadata build_epoch;
        $geoip2_data_country_code default=XX source=$remote_addr country iso_code;
        $geoip2_data_country_name default=- country names de;
        $geoip2_data_city_name default=- city names de;
        $geoip2_data_region_name default=- subdivisions 0 names de;
}
geo $allowed_ip {
        default no;             # Blockaa oletuksena
        10.10.1.0/24 yes;     # Whitelistaa locaali verkko
}

map $geoip2_data_country_code $allowed_country {
        default $allowed_ip;
        DE yes;                 # Vain Saksa voit lisätä lisää maita
}

#Formaatti logille, myöhemmin myös Grafanaa varten
log_format json_analytics escape=json '{'
       '"time_local": "$time_local", '
       '"remote_addr": "$remote_addr", '
       '"request_uri": "$request_uri", '
       '"status": "$status", '
       '"server_name": "$server_name", '
       '"request_time": "$request_time", '
       '"request_method": "$request_method", '
       '"bytes_sent": "$bytes_sent", '
       '"http_host": "$http_host", '
       '"http_x_forwarded_for": "$http_x_forwarded_for", '
       '"http_cookie": "$http_cookie", '
       '"server_protocol": "$server_protocol", '
       '"upstream_addr": "$upstream_addr", '
       '"upstream_response_time": "$upstream_response_time", '
       '"ssl_protocol": "$ssl_protocol", '
       '"ssl_cipher": "$ssl_cipher", '
       '"http_user_agent": "$http_user_agent", '
       '"remote_user": "$remote_user" '
   '}';

Login näet tällä komennolla.

tail -f /dockers/nginx-proxym/data/logs/proxy-host-%HOSTID%_access-geo.log

Lisätään vielä Proxy Manageriin.

Avaa Nginx Proxy manager WebUI ja paina Proxy Hosts, sen jälkeen Add proxy Host.

Kirjoita haluamasi domain, paikallinen osoite sekä portti. Lisää vielä asetukset Block Common Exploits sekä Websocket Support.

Seuraavaksi paina oikealta ylhäältä asetus kuvaketta ja lisää seuraava koodi.

if ($allowed_country = no) {
	return 444;
}

Nyt on kaikki valmista, että geoblokki on yksinkertainen mutta tehokas keino parantaa palvelun turvallisuutta ja hallittavuutta. Toteuttamalla sen Nginx Proxy Managerin avulla saamme helposti ylläpidettävän ratkaisun, jota voidaan tarvittaessa muokata nopeasti. Näin varmistamme, että palvelu pysyy suojattuna ja toimii optimaalisesti vain halutuille käyttäjille.

raid10

Proxmox zfs raid kovalevyn korvaaminen

Proxmox ZFS-raid hajonneen kovalevyn vaihto

HOX HOX muistiinpano! Ei ole valmis dokumentti. (Tähän raidista sun muusta roinasta tietoo) ja mikä on hyödykllinen etc.

Ongelma: levy rikki ja otettu pois ja heitetty roskii menee.

zpool  status

zpool replace rpool /dev/disk/by-id/ata-QEMU_HARDDISK_QM00009-part3 /dev/sdc

Eli kuvan ”rpool” poolin nimi, ja lätty ” was” kohdasta. Lopuksi laitetaa uuden lätyn nimi, sen näkee proxmoxin web gui kautta. (alla kuva)

Lätyn tunnistaa jos see on uusi jos proxmox näyttää että ”Usage” on No. Toki jos tiedät valmiiksi lätyn nimen niin se olisi parempi.  (Sesrial nuumber) (model number) etc.

Tuon jälkeen syötetään komento

zpool  status

Tarkistetaan onko prosessi alkanut, minun tilanteessa on normaali kovalevy joka on hidas verrattuna normaaliin ssd levyyn tai m.2 ssd levyyn. Kirjoita uudestaan tuo komento jos haluat tarksituaa uudestaan tilanetaéen.

Prosessi on valmis kun proxmoxissaa zpoolissa lukee kaikki ok ja kaikki näyttää virreeltäö.

Nyt on valmista.

openvpn-logo-768x427

OpenVPN helppo asennus

OpenVPN yksinkertainen asennus ja käyttöönotto

Olemassa on erityypin vpn asennuksia. Tässä näytän miten yksinkertaisesti voit tehdä oman vpn verkon jotta pääset kotiverkkoosi käsiksi. Aihe on erittäin laaja, en käy sitä tässä. Tähän toki liittyy omat tietoturva asiat joita en myöskään käy tässä läpi. Oman vpn verkon teko on siitä hyödyllinen, jos ressaan paljon  tai sinulla on palvelimia kotiverkossa joihin tarvitset pääsyö päivittäin. Yhteyden luotuasi olet kuin kiinni kotiverkossasi ainoa  ero vain on että et ole fyysisesti verkon lähistöllä.

Scriptin asennus on todella helppoa. Esiasennettuna tarvitaan esimerkiksi Ubuntu server tai Debian non graphical tietokone joka on tietenkin lähiverkossasi kiinni. Myös portti 1194 täytyy olla auki, toki voit käyttää muuta porttia. Portti 1194 on stantardi vpn maailmassa.

Asennus

Päivitetään repositorit sekä ohjelmat ajantasalle ensin.

apt update 

apt upgrade

Asennetaan git ohjelma jolla githubista saadaan käyttäjän tekemä scripti.

apt install git

Tällä komennolla haetaan scripti.

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh 

Tehdään scriptistä juostava. (Itse jätän tämän yleensä välistä ja juoksen scriptin bash komennolla.)

chmod +x openvpn-install.sh

./openvpn-install.sh

Valitaan joko domain tai pelkkä ulkoinen ip-osoite.

Harvemmin Ipv6 yhteyttä tarvitaan, tässä esimerkissä ei oteta käyttöön.

Nyt valitaan portti josta liikenne kulkee, itse laitan oletus portin eli 11194, voit käyttää mitä vain muuta kunhan mikään muu prosessi ei kyseistä porttia käytä.

UDP protokolla on vpn yhteyksissä yleensä nopein. Suosittelen siiis valitsemaan sen.

DNS resolver on palvelin joka hakee eri palvelimien ip-osoitteet ja yhdistää ne domainiin. Itse käytän aina Cloudflaren dns resolveria. Voit siis itse päättää mitä käytät, toki palvelimen omaa tai muokattua voi vapaasti käyttää.

Tämän voi huoletta jättää oletukselle.

Suosittelen muokkaamaan salaus asetuksia, tässä esimerkissä en niitä kuitenkaan muokaa helpon asennuksen takia.

Nyt valitaan clientin nimi  joka yhdistää palvelimeen ulkoverkosta. Tähän voi laittaa vaikka palvelimen nimen tai oman nimesi jotta tunnistat  mistä on kyse ja mihin olet yhdistämässä.

Tässä kohtaa voit lisätä salasanasuojauksen tiedostoon, suosittelen suuresti tämän lisäämistä. Tässä ohjeessa en sitä kuitenkaan lisää.

Nyt kaikki on asennettu ja konfiguroitu oiken. Näet vielä mihin tiedosto on tallennettu. Siirrä tiedosto laitteelle jolla haluat muodostaa vpn yhteyden.

Juoksemalla scriptin uudelleen, voit lisätä tai poistaa käyttäjiä. Myös palvelimen poistaminen tapahtuu täältä.

Clientin asennus Linuxille

Linuxissa on oma buildin tuki eri vpn yhteyksille. Siitä ei kuitenkaan löydy openvpn yhteyttä joka pitä asentaa erikseen.

apt install openvpn

apt install network-manager-openvpn-gnome

Loput tehdään työpöydän kautta. Mikäli haluat tuoda vpn yhteyden terminaalin kautta tai non grpahical käyttöjärjestelmälle, alla on komento.

openvpn lassi.ovpn

painamalla CTRL + C suljet yhteyden.

Vaikka listalla on nyt ”OpenVPN kohta, emme silti käytä sitä. Kohta ”Import a saved VPN configuration” taas tuo kaikki tarvittavat kohdat tiedsotosta automaattisesti.

Ohjelma automaattisesti tuo oikeat tiedostot. Syötä myös ”User key password” kohtaan salasana mikäli loit clientille sen.

Tallennettuasi muutokset, näet ”VPN connections kohdassa juuri lisätyn vpn profiilin. Painamalla sitä yhdistät vpn palvelimeen.

Clientin asennus Windowsille

Windowsille pitää asentaa kokonaan ohjelma, toki Windowsissakin on oma vpn tuki muttei OpenVPN tukea. Voit asentaa joko OpenVPN connect gui version tai community version joka on pienempi sekä minulle mieluisampi. Linkki OpenVPN asennus sivulle:OpenVPN connect v3, OpenVPN Community build.

Asennuksessa ei tarvitse muuta tehdä kuin painaa ”Install now”.

Asennuksen loputtua, avataan OpenVPN.  Joko työpöydältä tai taustasovelluksista pienen tietokoneruudun ja lukon kuvakkeella. Seuraavaksi Tuodaan ladattu .ovpn tiedosto.

Kun tiedosto on tuotu, painetaan ”Connect” nappia ja yhdistetään vpn palvelimeen.

Jos loit clientille salasanan, se syötetään yhdistyksen alussa.

Linuxsecurity

Linux palvelimen perusturvallisuus

Linux palvelimen perusturvallisuuden takaaminen

LOGIEN TARKISTUS

#tarkistetaan kirjautumisyritykset palvelimelle reaaliaikaisesti
tail -f /var/log/auth.log

#LOGIEN VÄRITYS

apt install grc

grc tail -f /var/log/auth.log

(multitail myös useammalle logille kerralla)

FAIL2BAN

apt-get update
apt-get install fail2ban
systemctl status fail2ban
nano /etc/fail2ban/jail.conf

#ignoraa lokaalin koneen
ignoreip = 127.0.0.1/8

#määritellään bannin kesto
bantime = 600

#määritellään monta yritystä kirjautumisessa on
maxretry = 3

#tämä lähettää postia root käyttäjälle että joku on bannattu
destemail = root@localhost
sendername = Fail2Ban banned user!
mta = sendmail
action = %(action_mwl)s

#tällä saadaan postiin logitedot kätevästi
action_mw
#tällä kuitenkin saa eniten
action_mwl

#tällä komennolla pysäytetään fail2ban
systemctl fail2ban stop

#tällä aloitetaan
systemctl fail2ban start

#tällä tarkistetaan nykyinen tilanne
systemctl status fail2ban

# tarkistetaan jaili sekä estetyt ipt sekä niiden määrä
fail2ban-client status sshd

UFW PALOMUURI

apt install ufw
systemctl enable ufw
systemctl start ufw
systemctl status ufw

#avataan palomuuriin portti
ufw allow ”portti”

#avataan portti 80
ufw allow 80

OPENSSH

#Asennetaan ssh
apt install openssh-server

#Otetaan ssh käyttöön samalla myös koneen startuppiin
systemctl enable ssh

#Tarkistetaan nykyinen tilanne ssh
systemctl status sshd

#Pysäytetään ssh
systemctl stop sshd

nano /etc/ssh/sshd_config

#vaihdetaan oletus portti toiseen
#Port22

port222

#Kielletään roottina kirjautuminen
#PermitRootLogin
PermitRootLogin no

#Annetaan lassi käyttäjälle lupa kirjautua
AllowUsers lassi

#käynnistetään ssh uudestaan
systemctl restart sshd

netstat -tulpn

netstat -tulpn | grep 22

ufw allow ssh

ufw allow 22

SSH PARANTELU

#Asenntaan moduulit ja sovellukset jotka yhdistävät hyökkääjän ip-osoitteen maahan
apt-get install geoip-bin geoip-database

#Luodaan scripti joka hallitsee pääsyn
nano /usr/local/bin/ipfilter.sh

#!/bin/bash
ALLOW_COUNTRIES=”IN US”
LOGDENY_FACILITY=”authpriv.notice”

if [ $# -ne 1 ]; then
echo ”Usage: `basename $0` ” 1>&2
exit 0 # return true in case of config issue
fi

if [[ ”`echo $1 | grep ’:’`” != ”” ]] ; then
COUNTRY=`/usr/bin/geoiplookup6 ”$1” | awk -F ”: ” ’{ print $2 }’ | awk -F ”,” ’{ print $1 }’ | head -n 1`
else
COUNTRY=`/usr/bin/geoiplookup ”$1” | awk -F ”: ” ’{ print $2 }’ | awk -F ”,” ’{ print $1 }’ | head -n 1`
fi
[[ $COUNTRY = ”IP Address not found” || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE=”ALLOW” || RESPONSE=”DENY”

if [[ ”$RESPONSE” == ”ALLOW” ]] ; then
logger -p $LOGDENY_FACILITY ”$RESPONSE sshd connection from $1 ($COUNTRY)”
exit 0
else
logger -p $LOGDENY_FACILITY ”$RESPONSE sshd connection from $1 ($COUNTRY)”
exit 1
fi

#Tämä muutos pitää tehdä jos halutaan että scripti juoksee!
chmod +x /usr/local/bin/ipfilter.sh

#Lisätään ssh listalle omat muutokset jotta järjestelmää ohjaa tuo uusi scripti ja muut asennetut ohjelmat.
nano /etc/hosts.deny

sshd: ALL
vsftpd: ALL

#Määritellään vielä mistä scripti löytyy.
nano /etc/hosts.allow

sshd: ALL: spawn /usr/local/bin/ipfilter.sh %a
vsftp: ALL: spawn /usr/local/bin/ipfilter.sh %a

rainloop

Postipalvelimen asennus ja konfigurointi Debianille

Postipalvelimen asennus ja konfigurointi Debianille

Miksi kukaan haluasi omaa postipalvelinta kun esim gmail outlook tai icloud ovat olemassa ja ne ovat ilmaisia jatilin teko helppoa? Eri syitä on monia, minulla ne ovat mm, yksityisyys, täysihallinta oppiminen, rajaton määrä sposteja, bulk emails sekä itse päättämä postin loppupääte eli domain. Toki nämä ilmaiset palvelut ovat siitä hyviä että niitä ei tarvitse ylläpitää ollenkaan kun taas omaa pitää kokoajan seurata mm, hyökkäysten liikenteen sekä mustallelistalle joutumista. Molemmissa tavoissa on omat hyvät ja huonot puolet, kumpikaan ei ole toista parempi.

Asennus

Oletus on että sinulla on jo valmis Linux järjestelmä jolla on ulkoinen ip-osoite sekä oma domain. Huom kiinteä ip-osoite on erittäin suositeltavaa, mutta yksityisen vaihtuva ip-osoite käy myös. Muista vain sen kohdalla helpottaa työtä ja asentaa ja tutustua ddclient tästä linkistä!

Päivitetään pakettivarasto.

apt update

apt upgrade

Myös tietoturvan kannalta on hyvä asentaa palomuuri sekä ohjelma joka estää mm, ssh ja dovecot hyökkäyksiä. Myös muita laajempia hyökkäyksenesto isp sovelluksia kuten Wazuh voidaan hyödyntää tässä linkki sen asentamiseen ja käyttöönottoon. Suositeltavaa on kuitenkin asentaa useita eri ohjelmistoja parhaan turvallisuuden takaamiseksi.

Tässä linkki pika ohjeeseen perusturvaamisen Linux palvelimelle.

Asennetaan tarvittavat ohjelmistot.

apt install curl net-tools bash-completion wget lsof nano

Lisätään pari tärkeää riviä dns ohjausta varten.

nano /etc/host.conf

Lisätään vielä domaini ja verkkoon ohjattu ip-osoite. Tätä ei tarvitse jos sinulla ei ole kiinteää ip-osoitetta!

nano /etc/hosts

Rebootataan kone jotta muutokset tulevat varmasti voimaan.

reboot

Syötetään seuraavat komennot ja varmistetaan onko nimipalvelun asetukset tehty oikein. Muista ohjata nimipalvelustasi ip-osoitteesi domainiisi jos et ole sitä jo tehnyt!

hostname
hostname -s
hostname -f
hostname -A
hostname -i

Tulosten pitäisi näyttää samantyyppisiltä:

Postfixin asennus

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Asennetaan postfix joka ohjaa postiliikenteen ulos sekä sisään internetistä palvelimellesi

apt install postfix

systemctl enable postfix

Valitaan kohta Internet Site. Sekä sen jälkeen syötetään postin domain, jos käytät alidomainia, muista syöttää päädomain. Jos syötetty domain on alidomaini, postiosoiteet ovat myös sen nimiset.

Muokataan Postfixin oletus konfiguraatio tiedostoa.

nano /etc/postfix/main.cf

Lisätään seuraava loppuun:

myhostname = oma.domain.com
mydomain = domain.com

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

Käynnistetään postfix uudelleen ja tarkistetaan onko oikeat portit oikein konfiguroitu.

systemctl restart postfix

netstat -tlpn

Nyt pitäisi portti 25 olla auki.

Jos joskus tulee ongelmia, postipalvelimen liikennettä voi tarkistaa seuraavalla ohjelmalla. Tällä myös kokeillaan toimiiko posti lähiverkossa.

apt install mailutils

syötetään seuraavat komennot.

echo ”Terppa”| mail -s ”Testiposti” root

ls -l Maildir/new/

Myös login näkee täältä.

tailf /var/log/mail.log

Dovecotin asennus

Dovecot lajittelee postin oikeisiin postilaatikoihin sekä tämän avulla voidaan käyttää muiden osapuolien posti sovelluksia, esimerkiksi Gmailia tai Thunderbirdiä.

Asennetaan dovecot ja tarvitta ohjelmat.

apt install dovecot-core dovecot-imapd

systemctl enable dovecot

Muokataan tavallisen mukaan dovecotin oletus konfigurointi tiedostoa.

nano /etc/dovecot/dovecot.conf

Sinne lisätää tämä rivi.

listen = *, ::

Muokataan toista dovecotin tiedostoa.

nano /etc/dovecot/conf.d/10-auth.conf

Muokataan sekä lisätää seuraavat rivit.

disable_plaintext_auth = no
auth_mechanisms = plain login

Muokataan postilaatikon polkua.

nano /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir

Muokataan vielä viimestä konfigurointi tiedostoa.

nano /etc/dovecot/conf.d/10-master.conf

Lisätään unix_listeneriin seuraavat rivit jos niitä ei ole olemassa.

unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

Käynnistetään dovecot uudelleen jotta muokkaukset tulevat voimaan.

systemctl restart dovecot.service

Tarkistetaan että oikeat portit ovat käytössä.

netstat -tlpn

Yhteensä 4 eri porttia pitäisi olla auki, 143, 587 993 ja 25.

Jos porttia 587 ei näy, käy muokkaamassa tätä tiedostoa.

nano /etc/postfix/master.cf

Poista kommenttit näistä riveistä alusta.

smtp inet n – y – – smtpd
#smtp inet n – y – 1 postscreen
smtpd pass – – y – – smtpd
#dnsblog unix – – y – 0 dnsblog
#tlsproxy unix – – y – 0 tlsproxy
submission inet n – y – – smtpd

Webmailin asennus

Sähköposti toimii nyt, mutta monesti voi olla tarvetta webmailille. Pienitehoisille koneille ei ole järkevää asentaa tätä koska, postin lähetys ja vastaanotto voi viedä melkein kaiken tehon. Suosittelen kuitenkin asentamaan, voit aina sulkea portit ja pysäyttää apachen jottei resursseja kulu.

Asennetaan Apache sekä php ja sen tarvittavat moduulit.

apt install apache2 php libapache2-mod-php php-curl php-xml

systemctl enable apache

Tarkistetaan php versio ja käytetään tietosuojan kannalta uudempaa versiota.

php -v

Mennään Apache host kansioon ja postetaan oletus tiedosto.

cd /var/www/html/

rm index.html

Asennetaan webmaili, tälläkertaa käytän Rainloop nimistä ohjelmaa. Se on juuri sopiva minun käyttöön ja on erittäin helppo asentaa ja ottaa käyttöön.

curl -sL https://repository.rainloop.net/installer.php | php

Muokataan Apachen oletus konfugiraatio tiedostoa.

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

Lisätään alkuun seuraavat parametrit tietoturvan kannalta.

ServerTokens Prod
ServerSignature Off
FileETag None
TraceEnable off

Sekä lisätään 80 portin ”blokkiin” seuraava:

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
order allow,deny
allow from all
Options -Indexes
</Directory>

<Directory /var/www/html/data/>
Order allow,deny
Deny from all
Options -Indexes
Deny from all
</Directory>

<Directory /var/www/html/data/_data_/_default_/>
Order allow,deny
Deny from all
Options -Indexes
Deny from all
</Directory>

Tällä estetään selaimen kautta pääsy postipalvelimen konfiguraatio tiedostoihin jossa näkyy arkaluonteista tietoa.

SSL Certbot

SSl salaa kaiken liikenteen sinun ja palvelimen välillä. Se tekee hakkereiden ja muiden kaappaajien hyökkäyksistä vaikeampaa.

Asennetaan certbot joka sertifikaatin myöntää, tässä voi myös käyttää itse allekirjoitettuja mutta itse suosin certbottia sen kätevyydestä ja monipuolisista asetuksista.

apt install apache-certbot

Luodaan uusi sertifikaatti sivustolle.

certbot certonly -d oma.domain.com

Hyväksytää käyttö sekä valitaan webroot johon syötät apachen juuripolun. Oletus on /var/www/html/

Tämän jälkeen otetaan Apacheen ssl käyttöön ja ohjataan http liikenne salattuun https protokollaan.

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

Lisätään portille 443 oma ”blokki”

<VirtualHost *:443>
ServerName oma.domain.com

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
order allow,deny
allow from all
Options -Indexes
</Directory>

<Directory /var/www/html/data/>
Order allow,deny
Deny from all
Options -Indexes
Deny from all
</Directory>

<Directory /var/www/html/data/_data_/_default_/>
Order allow,deny
Deny from all
Options -Indexes
Deny from all
</Directory>

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/oma.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/oma.domain.com/privkey.pem
</VirtualHost>

Tältä pitäisi konfiguraation näyttää suurinpiirtein.

Avataan vielä portit webliikenteelle.

ufw allow 80

ufw allow 443

Rainloop konfigurointi

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Avataan selaimesta oma.domain.com/?admin. Oletus tunnukset ovat admin:12345

Muista vaihtaa käyttäjänimi sekä salasana! Jos saat allaolevan ilmoituksen, pysäytä apache tai estä portti 80 ja palaa takaisin korjaamaan Apachen konfuguraatio. Data polkua ei saisi näkyä ollenkaan, voit toki kokeilla onko ilmoitus väärässä menemällä oma.domain.com/data ja oma.domain.com/data/_data_ sekä niiden alikansoihin.

Polkujen pitäisi näyttää tämän tyyppisiä ilmoituksia.

Seuraavaksi lisätään domaini jotta palvelimet osaavat siirtää postin oikeaan osoitteeseen. Mennään kohtaan Domains ja painetaan Add Domain. Voit myös poistaa valmiina luodut domainit.

Suosittelen käyttämään Porttia 143 ja 587, ne ovat ylesimmät joten liikenne varmasti toimii. Muista myös ottaa STARTTLS salaus käyttöön! Rainloop tukee myös yhteystietoja. Voit ottaa ne käyttöön jos tarvitset niitä. En koe itse tarvitta niille, muista olla avaamatta porttia 3306 internettiin tietokantaa tehdessä!

Luodaan vielä käyttäjä postiin.

adduser lassiiz

Luodaan vain salasana käyttäjälle, muuta ei tarvitse. Kun käyttäjä on luotu, mene postin kirjautumis-sivulle.

Jos et asettanut oletusdomainia, syötä käyttäjäksi, username@oma.domain.com. Salasana on sama minkä juuri syötit käyttäjää tehdessä. Suosittelen myös disabloimaan ssh kautta kaikki ylimääräiset käyttäjät. Toki muut webmailit kuten IredMail käyttää erillistä tietokantaa käyttäjien tekemiseen joka on turvallisempaa oletuksena.

Postilaatikon pitäisi avautua ja näyttää tältä.

DKIM luonti

DKIM ja DMARC ovat varmenteita joilla varmistetaan että lähettäjä on oikeasti se mikä väittää olevansa. Esimerkiksi et voi lähettää postia google.com domainina ja väittää muille että omistat tämän. Ellet sitten ole saanut heiltä omaa postilaatikkoa.

Asennetaan dkim ohjelma jolla oikeat avaimet luodaan.

apt install opendkim opendkim-tools

nano /etc/opendkim.conf

Tarkistetaan löytyykö seuraavat rivit.

AutoRestart Yes
AutoRestartRate 10/1h
UMask 002

Syslog yes

Domain lassinsivut.eu
KeyFile /etc/dkimkeys/dkim.key
#Selector 2007
#Canonicalization simple
Mode sv
#SubDomains no
Canonicalization relaxed/simple

ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable

#Socket inetst
#Socket local:/var/run/opendkim/opendkim.sock
Socket inet:12301@localhost
#
PidFile /var/run/opendkim/opendkim.pid

OversignHeaders From

TrustAnchorFile /usr/share/dns/root.key

UserID opendkim:opendkim

 

Yhdistetään Postfixiin.

nano /etc/default/opendkim

Lisätään rivi tiedostoon.

SOCKET=”inet:12301@localhost”

Kerrotaan vielä postfixille että käyttää tuota.

nano /etc/postfix/main.cf

milter_protocol = 2
milter_default_action = accept

Muodaan avaimille kansio

mkdir /etc/opendkim
mkdir /etc/opendkim/keys

Määritellään vielä domaini sekä aliverkko jotka määritellään turvallisiksi

nano /etc/opendkim/TrustedHosts

127.0.0.1
localhost
192.168.0.1/24

*oma.domain.com

Luodaan avaimille ”pöydät”.

nano /etc/opendkim/KeyTable

mail._domainkey.oma.domain.com oma.domain.com:/etc/opendkim/keys/oma.domain.com/mail.private

Luodaan vielä avaimille ”kirjotuspöytä”

nano /etc/opendkim/SigningTable

*@oma.domain.com mail._domainkey.oma.domain.com

 

Nyt luodaan avaimet joissa hyödynnetään juuri tehtyjä konfiguraatioita. Komentoon olisi voinut suoraan syöttää yllämainitut, mutta tulevaisuudessa uusien domainien liittäminen sekä avainten uudelleenluonti helpottuu huomattavasti.

cd /etc/opendkim/keys

mkdir oma.domain.com

cd oma.domain.com

Luon esimerkissä 1024 pituisen avaimen, suosittelen kuitenkin oletusta eli 2048. Minun nimipalvelu ei kuitenkaan salli sitä joten käytän lyhyempää.

opendkim-genkey -b 1024 -s mail -d oma.domain.com

Vaihdetaan avaimien omistaja

chown opendkim:opendkim mail.private

nano -$ mail.txt

mail._domainkey IN TXT ”v=DKIM1; k=rsa; p=OMA-HENKILÖKOHTAINEN-AVAIN” ; —– DKIM key mail for oma.domain.com

Kopio ja tallenna tuo avain, sitä käytetään nimipalvelussa myöhemmin. Tarvitaan vain p= eteenpäin heittomerkkien sisällä oleva avainkoodi.

Lopuksi vielä käynnistetään postfix sejä opnedkim.

service postfix restart
service opendkim restart

Nimipalvelu

Tarvitaan A-tietueen lisäksi muutama muu. MX, sekä dmarc , dkim ja spf TXT muodossa.

MX tietue: oma.domain.com

Arvoksi: oma.domain.com

DMARC: _dmarc.oma.domain.com

Arvoksi: v=DMARC1; p=quarantine; sp=quarantine; rua=mailto:dmarc_acc@oma.domain.com; ruf=mailto:dmarc_afrf@oma.domain.com; rf=afrf; fo=0:1:d:s;

SPF: oma.domain.com

Arvoksi: v=spf1 mx ip4:oma-ip-osoite -all

DOMAIN KEY: mail._domainkey.oma.domain.com

Arvoksi: v=DKIM1; h=sha256; k=rsa; p=OMA-HENKILÖKOHTAINEN-AVAIN

Kun kaikki on valmista, voit tarkistaa sekä tarkkailla omaa postipalvelintasi esimerkiksi tästä sivustosta. Saatavilla on monta eri testiä. Muista kuitenkin että nimipalvelun muutokset voivat viedä jopa 48 tuntia voimaan tulemiseen. Joten testit eivät välttämättä näytä heti asennuksen jälkeen oikein.

virus

Saastuneelta kovalevyltä virusten poisto Linuxilla

Virusten poisto Linuxilla

Virusten poisto saatttaa kuulostaa vaikealta, se on oikeastaan helppo toimenpide. Tässä esimerkissä käytän ClamAV ohjelmaa joka on erittäin helppokäyttöinen. Se skannaa valitulta kovalevyltä lukuiset haittaohjelmat. ClamAv tunnistaa Windowsiin, Linuxiin sekä Macos ympäristöihin kohdistuvat haittaohjelmat sekä pakatut haittaohjelmat kuten .tar tai .zip sisältävät.

Luodaan bootable

Luodaan ensin bootable live usb Linuxista, jakelulla ei ole väliä. Minulla on esimerkissä Debian 11. Tässä ohje live usb tekemiseen jos et ole sitä aikaisemmin tehnyt.

Clamav asennus

avataan terminaali ja päivitetään paketti repositoryt.

sudo -i

apt-get update

Nyt asennetaan itse ClamAV.

apt-get install clamav-daemon

apt-get install clamtk

mkdir /var/lib/clamav

freshclam

Kovalevyn mounttaaminen

Jotta kovalevyä voidaan käyttää linuxissa, se täytyy mountata kokoonpanoon. Esimerkiksi Windows tekee tämän automaattisesti.

lsblk (Muista valita oikea levy! Esimerkiksi minulla se on sda, sinulla se voi olla sdb tai sda1)

mkdir /root/mnt/

mount -t ntfs /dev/sda /mnt

Juostaa ClamAv töllö komennolla. Voit itse päättää parametrit, suosittelen kuitenkin tätä:

clamscan –infected –remove –recursive /root/mnt/

Skannaus kestää riippuen kovalevyn koosta. Nyt ei tarvitse muuta kuin odottaa että skannaus on valmi, ohjelma ilmoittaa automaattisesti jos haittaohjelmia löytyy sekä poistaa ne välittömästi parametrin -remove ansiosta. Tästä linkistä lisäätietoa komennoista ja käytöstä.