
Ostatnia aktualizacja: 07.06.2023 r.
IBM System x3550 M4 to już dość leciwa maszyna, która miała swoją premierę w 2013 roku. Jednak mimo swojego wieku wciąż można znaleźć dla niej zastosowanie. W moim przypadku pierwotnie działała ona jako baza sprzętowa pod Microsoft Hyper-V Server 2012 R2. Wraz ze wzrostem firmy sprzęt zaczął być niewystarczający. Mimo to postanowiłem zaadoptować go do pracy przy innym projekcie, przy którym sprawdzi się idealnie.
Spróbowałem czegoś nowego i całość skonfigurowałem na systemie NethServer 7. Jest to dystrybucja Linux bazująca na CentOS 7, przeznaczona dla entuzjastów oraz dla małych i średnich przedsiębiorstw. System posiada modułową budowę, dzięki czemu w bardzo prosty sposób możemy dostosować go pod konkretne potrzeby jak np. serwer poczty e-mail, serwer www, zaporę sieciową, serwer IPS/IDS, serwer VPN czy prosty wirtualizator. Cała obsługa systemu odbywa się przez interfejs przeglądarkowy oparty o Cockpit firmy Red Hat, dzięki któremu możemy zarządzać systemem, usługami oraz instalować dodatkowe moduły. Ktoś powie, że słabo jest teraz instalować CentOS 7, który na początku 2021 roku został ubity przez Red Hat`a. To prawda, jednak system wsparcie ma do 30 czerwca 2024 roku oraz będzie wykorzystywany na bardzo podstawowym poziomie więc nie jest to problem.
W tym projekcie postanowiłem przygotować jedną dużą przestrzeń dyskową z wszystkich ośmiu dysków.
Jak napisałem na początku, system bazuje na CentOS 7 więc instalacja wygląda tak samo jak w przypadku instalacji "gołego" CentOS`a. Poniższe zrzuty ekranowe zrobiłem na maszynie wirtualnej w Hyper-V, jednak na fizycznym serwerze postępowałem identycznie.
Zapisz
czekam na wprowadzenie zmian do systemu.Zapisz
czekam na zaaplikowanie zmian.Zapisz
.Konfiguruj
przy odpowiednim interfejsie sieciowym (w moim przypadku LAN (green)), aby ustawić stały adres IP. Osobiście preferuję statyczne adresy ustawiać bezpośrednio na zaporze sieciowej w celu łatwiejszego zarządzania, jednak niektóre systemy mają problem z tym, że nie są one ustawione bezpośrednio na nich i NS7 jest jednym z nich. 😜Update all
iOdśwież
, w celu aktualizacji pakietów do najnowszych dostępnych wersji.Zainstaluj 3 applications
, a następnieZainstaluj
. Jeśli po zakończonej aktualizacji system zasygnalizuje dostępność aktualizacji, to je instaluję.Ustawienia
przy pozycji File server. Z pionowego menu wybieram pozycję Współdzielone foldery, następnie klikam w przyciskCreate a shared folder
w celu utworzenia dwóch udziałów sieciowych.vi /etc/e-smith/templates/etc/samba/smb.conf/70shares
;
[udzial1]
path = /var/lib/nethserver/ibay/udzial1
browseable = no
ea support = no
read only = no
vfs objects = streams_xattr acl_xattr
inherit permissions = yes
inherit acls = yes
hide unreadable = yes
;
;
[udzial2]
path = /var/lib/nethserver/ibay/udzial2
browseable = no
ea support = no
read only = no
vfs objects = streams_xattr acl_xattr
inherit permissions = yes
inherit acls = yes
hide unreadable = yes
;
signal-event ibay-modify nazwa_udziału
config setprop smb Libwbclient sssd
signal-event nethserver-samba-update
New
aby uruchomić kreator tworzenia maszyny wirtualnej. W moim przypadku ustawiam parametry pod system Windows 10 64-bit, którego przenoszę z wirtualizatora Proxmox.VBoxManage convertdd sdb.raw sdb.vdi --format VDI --variant Fixed
Jeśli natomiast zdecydujesz się przygotować maszynę wirtualną "z pustym" dyskiem twardym, aby później podmienić plik VDI, to natrafisz na błędy UUID dysku twardego podczas uruchomienia maszyny wirtualnej. Rozwiązaniem tego problemu jest sczytanie UUID dysku twardego z pliku konfiguracyjnego VBOX, a następnie nadpisanie go w pliku VDI:
VBoxManage internalcommands sethduuid admin_nazwa.vdi UUID
Oczywiście możliwa jest odwrotna operacja (linia Header: uuidCreation=) i podmiana numeru w pliku VBOX w sekcji <StorageControllers>, przy odpowiednim dysku twardy (jeśli oczywiście masz ich więcej niż jeden):
VBoxManage internalcommands dumphdinfo admin_nazwa.vdi
Jeśli dodatkowo masz takie szczęście jak ja i jeszcze wyskoczy Ci błąd VD: error VERR_ACCESS_DENIED opening image file, to wykonaj poniższe polecenia, aby się go pozbyć:
chgrp vboxweb admin_nazwa.vdi
chown vboxweb admin_nazwa.vdi
Settings
i w oknie, które pojawi się na ekranie, przechodzę na zakładkę System w celu ustawienia w niej odpowiednich opcji. Jeśli przenosisz inne systemy (np. Linux`y) z innych wirtualizatorów (np. Proxmox, XCP-ng, VMware, Hyper-V) lub wirtualizujesz fizyczny system to wtedy ustawiasz poniższe opcje pod swoje systemy.Settings
i z listy wybieram Install Guest Additions.... Oczywiście jeśli usunąłeś(-aś) napęd CD z ustawień maszyny wirtualnej, to wtedy na ekranie pojawi Ci się błąd.Settings
i wybranie z listy Remote Display. W oknie ustawień VM w sekcji Display w linii Remote Desktop Server Port: pojawi się numer portu i adres (domyślnie jest Disabled), który należy wpisać w oknie Podłączanie pulpitu zdalnego w Windows. Wyłączenie tej funkcji odbywa się w ten sam sposób jak jej włączenie. Wydajność tego rozwiązania jest bardzo zła, ale dobrze, że jest. 😋NS7 posiada wbudowane narzędzie Netdata do zbierania mnóstwa wskaźników w czasie rzeczywistym odnośnie pracy serwera. Poniższymi poleceniami ustawiam dostęp po moim interfejsie LAN i dostęp do danych będzie pod adresem http://adres.serwera:19999.
config setprop netdata Bind 0.0.0.0 access green
signal-event nethserver-netdata-update
signal-event firewall-adjust
Poniższa konfiguracja nie należy do najbezpieczniejszych (tj. nie jest przygotowana zgodnie z dobrymi praktykami OpenVPN), jednak będzie działała. Niestety kreator jest mocno uproszczony więc część konfiguracji wykonuję z jego poziomu a część z poziomu terminala.
Ustawienia
przy pozycji VPN i dalej klikam przyciskEnable OpenVPN RoadWarrior server
.Zapisz
i czekam na zapisanie zmian.Add account
w celu przygotowania profili dla użytkowników. Tryb ustawiłem na VPN Only oraz każdemu tworzonemu użytkownikowi przypisałem statyczny adres IP.Zapisz
usługa poprosi o kliknięcie w przyciskApply
w celu aktywacji ustawień.Apply
i czekam na zapisanie ustawień.Powyższa konfiguracja mogłaby zostać w takiej postaci ponieważ będzie ona działać, jednak w oknie połączenia programu OpenVPN będą wyświetlały się ostrzeżenia oraz niekiedy błędy:
a) "WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this".
Moja konfiguracja co prawda nie ma w sobie żadnych loginów i hasłem, więc pierwszy komunikat jest nieco mylący i może powodować nerwowość wsród użytkowników. W celu rozwiązania tego problemu wystarczy dodać na końcu klienckiego pliku konfiguracyjnego parametr auth-nocache.
b) "WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.".
W moim przypadku na internecie mobilnym PLAY (co ciekawe przez kilka miesięcy konfiguracja działała bez problemów, a później nagle przestała) w/w komunikat dodatkowo wygenerował błędy:
"TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)"
"TLS Error: TLS handshake failed"
Kumulacja ich trzech uniemożliwiła zestawienie połączenia i stąd kolejne kroki.
sudo yum install easy-rsa
cp -rf /usr/share/easy-rsa/3.0.8/ /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa/
vi vars
set_var EASYRSA_DIGEST "sha512"
set_var EASYRSA_ALGO ec
set_var EASYRSA_CURVE secp521r1
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_CRL_DAYS 3650
chmod +x vars
export EASY_VARS_FILE=/etc/openvpn/easy-rsa/vars
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full OpenVPN nopass
./easyrsa gen-crl
./easyrsa gen-dh
openvpn --genkey --secret /etc/openvpn/server/ta.key
./easyrsa build-client-full grzegorz_wita nopass
openssl verify -CAfile pki/ca.crt pki/issued/OpenVPN.crt
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/server
cp /etc/openvpn/easy-rsa/pki/issued/OpenVPN.crt /etc/openvpn/server/
cp /etc/openvpn/easy-rsa/pki/private/OpenVPN.key /etc/openvpn/server/
cp /etc/openvpn/easy-rsa/pki/crl.pem /etc/openvpn/server/
cp /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn/server/
vi /etc/e-smith/templates/etc/openvpn/host-to-net.conf/20certificates
#dh /var/lib/nethserver/certs/dh1024.pem
#ca /etc/pki/tls/certs/NSRV.crt
#cert /etc/pki/tls/certs/NSRV.crt
#key /etc/pki/tls/private/NSRV.key
#crl-verify /var/lib/nethserver/certs/crl.pem
dh /etc/openvpn/server/dh.pem
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/OpenVPN.crt
key /etc/openvpn/server/OpenVPN.key
crl-verify /etc/openvpn/server/crl.pem
tls-auth /etc/openvpn/server/ta.key 0
vi /etc/openvpn/ccd/grzegorz_wita
ifconfig-push 10.68.126.2 255.255.255.0
dev tun
client
remote xxx.xxx.xxx.xxx
port 1194
proto udp
explicit-exit-notify 1
float
# Authentication: certificate
<cert>
#certyfikat klienta
</cert>
<key>
#klucz prywatny klienta
</key>
<ca>
#certyfikat CA
</ca>
<tls-auth>
#klucz TLS
</tls-auth>
auth SHA384
cipher AES-256-GCM
verb 3
persist-key
persist-tun
nobind
passtos
tls-client
key-direction 1
verify-x509-name "OpenVPN" name
remote-cert-tls server
auth-nocache
Na koniec kilka uwag:
@echo off
chcp 65001 > nul
cmdkey /generic:"nazwa" /user:"" /pass:""
mstsc /v:nazwa
cmdkey /delete:"nazwa"
vi /etc/shorewall/rules
ACCEPT loc $FW tcp 3389
shorewall restart