Pokud provozujete starší instalaci Nakiva (<10.5) jako virtual appliance (VA), může pro vás být užitečné si instalaci obrnit svými silami namísto reinstalace na novější verzi a přenosu konfigurace.
Nejprve začneme konfigurace firewallu iptables.
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport ssh -j ACCEPT iptables -A INPUT -p tcp --dport 4443 -j ACCEPT iptables -A INPUT -p tcp --dport 9446 -j ACCEPT iptables -A INPUT -p tcp --dport 9448:10000 -j ACCEPT iptables -A INPUT -j DROP
Po konfiguraci firewallu nainstalujeme IPS fail2ban pomocí příkazu „apt-get install fail2ban“.
root@nakivo:# apt-get install fail2ban Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: python3-pyinotify python3-systemd Suggested packages: mailx monit sqlite3 python-pyinotify-doc The following NEW packages will be installed: fail2ban python3-pyinotify python3-systemd 0 upgraded, 3 newly installed, 0 to remove and 7 not upgraded. Need to get 390 kB of archives. After this operation, 2,024 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 fail2ban all 0.10.2-2 [329 kB] Get:2 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 python3-pyinotify all 0.9.6-1 [24.7 kB] Get:3 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 python3-systemd amd64 234-1build1 [36.1 kB] Fetched 390 kB in 1s (440 kB/s) Selecting previously unselected package fail2ban. (Reading database ... 70187 files and directories currently installed.) Preparing to unpack .../fail2ban_0.10.2-2_all.deb ... Unpacking fail2ban (0.10.2-2) ... Selecting previously unselected package python3-pyinotify. Preparing to unpack .../python3-pyinotify_0.9.6-1_all.deb ... Unpacking python3-pyinotify (0.9.6-1) ... Selecting previously unselected package python3-systemd. Preparing to unpack .../python3-systemd_234-1build1_amd64.deb ... Unpacking python3-systemd (234-1build1) ... Setting up fail2ban (0.10.2-2) ... Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /lib/systemd/system/fail2ban.service. Setting up python3-systemd (234-1build1) ... Setting up python3-pyinotify (0.9.6-1) ... Processing triggers for systemd (237-3ubuntu10.53) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ... Processing triggers for ureadahead (0.100.0-21) ...
Jako zásadní konfigurace IPS fail2ban je třeba azpnout ochranu SSH v souboru /etc/fail2ban/jail.conf.
Najděte a odkomentujte následující řádky:
[sshd] enabled = true
Pokud již provozujete novější verzi VA, kde je namísto uživatele root použit uživatel nkvuser, můžete tento bod přeskočit. Jinak vytvořte nového uživatele (např. nakivo nebo nkvuser, my použijeme jméno nakivo) a skupinu admin (je v /etc/sudoers uvedena pro právo spustit příkaz sudo, ale v /etc/group není). Uživateli nakivo nastavte nějaké netriviální heslo!
useradd nakivo passwd nakivo groupadd admin usermod -a -G admin nakivo
Otestujte, že se lze na uživatele nakivo přihásit a provést např. sudo su – (přepnutí na roota). Pokud vše bude fungovat, zamezíme přímému loginu uživatele root přes ssh v souboru /etc/ssh a kromě toho upravte ještě pár řádků dle tohoto vzoru:
PermitRootLogin no PermitEmptyPasswords no IgnoreUserKnownHosts yes IgnoreRhosts yes Protocol 2
Nyní otestujte, že všechno funguje a pokud ano, můžeme přistoupit k dalšímu utahování šroubů. Začneme zamezením toho, aby si OS sahal libovolně do internetu a donutíme ho jít pouze řízeně přes proxy server (v našem případě jde o stroj s proxyserverem Squid na portu 3128). samozřejmě pokud nějaký proxyserver provozujete:-)
Utilitu pro aktualizace OS donutíme k použití proxyserveru vytvořením souboru /etc/apt/apt.conf.d/proy.conf
Acquire::http::Proxy "http://proxy_ip:3128/"; Acquire::https::Proxy "http://proxy_ip:3128/";
Dále vynutíme použití proxyserveru pro všechny uživatele úpravou souboru /etc/environment
export http_proxy=proxy_ip:3128 export https_proxy=proxy_ip:3128
Nakonec si necháme omezení přístupů na správu appliance (SSH pro správu OS a HTTP přístup na GUI NAKIVO directoru). Vycházím z toho, že máte v LAN nějakou dedikovanou stanici nebo server určené pro správu, kde přísně kontrolujete a logujete, kdo se na ně hlásí, pravidelně je aktualizujete a máte na nich instalovánu patřičnou ochranu (endpoint protection). Editujme tedy soubor /etc/iptables/rules.v4. Původní obsah po počáteční konfiguraci bude vypadat asi nějak takto.
# Generated by iptables-save v1.6.1 on Mon Sep 12 10:19:55 2022 *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [9290916:135749001596] -A INPUT -p icmp -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 4443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 9446 -j ACCEPT -A INPUT -p tcp -m tcp --dport 9448:10000 -j ACCEPT -A INPUT -j DROP COMMIT # Completed on Mon Sep 12 10:19:55 2022
Předpokládejme, že máte 2 správcovské stanice na IP 192.168.1.100 a 192.168.1.200. Doplníme
# Generated by iptables-save v1.6.1 on Mon Sep 12 10:19:55 2022 *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [9290916:135749001596] -A INPUT -p icmp -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp -s 192.168.1.100/32 --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp -s 192.168.1.200/32 --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp -s 192.168.1.100/32 --dport 4443 -j ACCEPT -A INPUT -p tcp -m tcp -s 192.168.1.200/32 --dport 4443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 9446 -j ACCEPT -A INPUT -p tcp -m tcp --dport 9448:10000 -j ACCEPT -A INPUT -j DROP COMMIT # Completed on Mon Sep 12 10:19:55 2022
Restartujte firewall nebo raději celý server (to nikdy neškodí:-) a otestujte funkčnost.