Methode computer infrastructuur
Inhoud
Minimale benodigdheden hardware
De volgende onderdelen zijn minimaal nodig:
Server-1
- Procesor: 4 cores 6 mb cache met de volgende supported onderdelen
- Intel® Virtualization Technology (VT-x)
- Intel® Virtualization Technology for Directed I/O (VT-d)
- x64 instructie set
- Ram (geheugen): 16 gb ddr3 (liefst ECC)
- Voeding: bij het gebruik van duurdere hardware moet zeker een voedingsbron worden gebruikt die goud gecertificeerd is, zodat deze 24/7 kan draaien.
- Moederbord: minimaal 2 pci express sloten. Uit kostenoverwegingen is aan te raden om tweedehands hardware te gebruiken..
- Accessoires: Optioneel: 2 monitoren, 2 toetsenborden en 2 muizen.
- Opslag: een ssd van minimaal 256 Gb en een hdd van minimaal 500gb. Ik raad ten zeerste aan om te zorgen voor voldoende opslagcapaciteit.
- NIC: met minimaal 4 ethernet ports.
Server-2
Voor gebruik van een cloud desktop server zijn alle bovengeniemde onderdelen ook nodig, met als extra toevoeging 24GB ram en 6 cores. Dit is voldoende om 3 desktop sessies te hosten.
Routers
Bij het gebruik van wireless accespoints moet een wireless router aangeschaft zijn.
Extra computer / laptop
Een extra computer is noodzakelijk. Deze moet worden gebruikt om diverse virtual machines op te zetten met als doel het netwerk te testen en verschillende configuraties te voltooien op de server.
Usb stikje
Minimaal 8 gb.
Benodigde software
Via de in de tabel hieronder opgenomen "bron-link" kom je terecht bij de originele software zoals de uitgevers deze op het internet aanbieden. Je kan de software via deze link dus downloaden.
Er is ook een "mirror-link" opgenomen, waardoor je direct bij de desbetreffende software komt. Druk je op deze link, dan begint de software direct te downloaden op je computer. Door het creëren van deze mirror downloads heb je een back-up link mocht de originele website er uit liggen.
proxmox | -mirror | -bron |
---|---|---|
pfsense | -mirror | -bron |
openvpn | -mirror | -bron |
windows-server | -mirror | -bron |
rufus | -mirror | -bron |
windows-enterprise | -mirror | -bron |
putty | -mirror | -bron |
vm-player | -mirror | -bron |
filezilla | -mirror | -bron |
gpu-z | -mirror | -bron |
cpu-z | -mirror | -bron |
venyon | -mirror | -bron |
virtIO drivers | -mirror | -bron |
MDT | -mirror | -bron |
ADK | -mirror | -bron |
WinPE | -mirror | -bron |
Optioneel te downloaden
office | -mirror | -bron |
---|---|---|
adbobe reader | -mirror | -bron |
ninite | -mirror | -bron |
Let op: De ninite mirror installeert de volgende applicaties in één keer. chrome, winrar, discord, vlc, audacity, spotify, java (jre), paint.net, python, filezilla, notepad++. Een eigen ninite download kan worden gemaakt via de bron-link.
Maken van opstart usb
De volgende stappen zijn niet noodzakelijk omdat het software programma Rufus dit zelf ook al doet. Maar in sommige gevallen (bv als de usb stick schrijf beschermd is of niet wordt herkend door windows) kan dit worden toegepast. Let op: Deze stappen verwijderen alle aanwezige informatie van de usb-stick!
- Druk op de windows knop; typ cmd in.
- Click met rechter muisknop op cmd en open als administrator.
Hier rechts staat een plaatje van hoe de command prompt er uit ziet
Voer het volgende uit om de disk op te schonen:
diskpart
list disk
select disk <jou usb stick>
clean
# als het clean command niet werkt
# attributes disk clear read-only
create partition primary
format fs=fat32 quick
Als er meerdere usb stickjes in de computer zitten, raad ik aan om deze uit de computer te halen om vergissingen te voorkomen.
Nu kun rufus gebruiken om een opstartdisk van de usb te maken. Bij gebruik van UEFI opstart moet je de partitie indeling op gpt zetten. Deze optie is links boven in rufus aan te passen. Wanneer dit is gedaan kan er op start worden gedrukt. Mocht de computer niet willen opstarten vanaf de usb stick dan kun je proberen om "dd modus" te selecteren in rufus.
Let op! Wanneer de usb stick in "dd modus" wordt gezet, dan is de usb stick beschermd. Je kan dan geen nieuwe bestanden op de usb stick meer zetten. De enige manier om dit ongedaan te maken is via een programma zoals "diskpart".
Installatie
Voordat je begint met de installatie van proxmox moet het een en ander worden aangepast in de BIOS. Jammer genoeg is elke BIOS verschillend en kan ik niet stapsgewijs uitleggen wat je precies moet aanpassen, maar ik zal toch een poging wagen.
Je begrint met het opnieuw opstarten van de computer en het intoetsen van F12,Esc, Del en F8 tot er een scherm wordt geopend waar je instelingen kan aanpassen. Voordat je verder gaat controleer je eerst of de informatie in de BIOS klopt zoals de datum, de tijd, het aantal ram, de opslag etc. Zorg er voor dat de volgende opties aan of uit staan:
- zet UEFI aan (meestal onder geavanceerd);
- zet intel vt/d en vt/x aan;
- zet de videokaart uit als standaard display (indien er een videokaart aanwezig is);
- zet "trust removable drives" als opstart aan.
Vervolgens sla je de veranderingen op en maak je gebruik van het boot menu om vanaf de usb op te starten. Mocht dit niet werken dan kan je voor korte tijd de boot volgorde aanpassen en "removable devices" als eerste zetten. Nu zou je in de installatie van proxmox moeten komen. De installatie is vrij gemakkelijk. Ga door de installatie wizzard heen tot je bij "target disk" komt. Hierbij raad ik aan om een ssd of hdd te kiezen, omdat dit de IO delays erg verkort. Een tweede usb-stick zou in theorie ook kunnen werken.
Bij het scherm waar je adressen moet invullen moet je even opletten. Kies de onboard NIC (van het moederbord). Dit is de NIC met 1 netwerkpoort. Doe een ethernet kabel van de proxmox machine naar je eigen computer. Vergeet niet dat de ethernetkabel in de port gaat met 1 port. Vervolgens moet je ervoor zorgen dat de adapter instellingen van beide computers op hetzelfde subnet zitten. In het profielwerkstuk is uitgelegd hoe dit moet.
Let op! Er zal nu geen internetverbinding zijn voor de computer, maar een lan verbinding van de computer met de server.
Als je 2 proxmox installaties wil gaan doen vergeet niet twee verschillende hostnamen te gebruiken. Je moet ervoor zorgen dat de achtervoegsels hetzelfde zijn. Als je niet wilt dat proxmox en windows server kunnen communiceren dan moet het domein verschillend zijn.
In mijn geval zal het worden pve.home en voor de virtual machines in proxmox vm123.wake |
Configuratie van proxmox
Nadat de proxmox installatie is voltooid volgt een heropstart (reboot). Hierna kunnen we proxmox configureren. Als de adapter instellingen goed zijn ingesteld kun je in je browser naar het volgende adres toegaan: https://<proxmox ip>:8006 . Https wordt niet als standaard geselecteerd. Daarom zou het direct invullen van het ip adres niet werken. Vergeet daarom niet om https er voor te zetten. Afhankelijk van je browser krijg je nu een fout melding. Deze kan worden genegeerd. Dit heeft ermee te maken dat het certificaat van de server "self signed" is. In geval van chrome druk je op "meer informatie" en ga je verder naar deze site. Log in met de gebruikersnaam root en het wachtwoord wat je eerder hebt aangemaakt. Nu kun je - als je wilt - een ZFS pool opzetten als je gebruikt maakt van meerdere schijven en je bestanden veilig wilt stellen. In mijn geval maak ik hier geen gebruik van omdat ik niet genoeg schijven heb. Als het goed is heb je proxmox geïnstalleerd op een ssd of hdd en zou er nog een 2de storage disk over moeten zijn. Deze kunnen we nu instellen onder het kopje disks in proxmox. Dit is te vinden onder <jouwhostname>. Druk nu onder directory "create new directory". Kies als disk type ext4 en de naam kan je zelf geven.
Let op! Maak geen LVM storage aan. Het is niet makkelijk om dit weer te verwijderen! Een hernieuwde installatie van proxmox moet dan weer worden uitgevoerd!
Nu kun je de ISO bestanden die zijn gedownload uploaden naar de schijf. Zie het plaatje waar dit gebeurd.
Nu ga je pfSense installeren. Dit gebruik je om je netwerk beter te beveiligen en te monitoren.
PCLe passthrough
Voordat je verder kan gaan moet je de NIC isoleren van de kernel. Dit doe je door een zogeheten "PCLe passthrough" te doen. Hierbij isoleer je de NIC kaart van Proxmox, zodat deze niet kan worden gebruikt door proxmox maar alleen door de pfSense virtual machine. Dit doe je als volgt:
Open de shell van Proxmox vanaf de browser of de server console en typ het volgende in:
nano /etc/default/grub
Met de arrow keys kan je naar boven en beneden gaan:
Verander GRUB_CMDLINE_LINUX_DEFAULT="<commands>"
in GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
type ctl + x
druk op y en dan enter . Belangrijk is dat je niks anders aanpast!
Vervolgens slaan we de aanpassing op door middel van:
update-grub
Nu moet je een aantal modules toevoegen aan /etc/modules
. Dit kan weer worden gedaan door nano /etc/modules
.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Om problemen van een slechte IOMMU grouping te voorkomen, maak je gebruik van onderstaande.
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
Nu moet je zoeken welke "device id" de NIC heeft die je wil gebruiken voor pfSense. Dit doe je als volgt:
lspci -nnk
Dan zoek je de naam van de netwerkkaart. In mijn geval krijg ik de volgende output. Als je kijkt zie je dat in mijn geval de 4 verschillende ethernet poorten apart worden gedetecteerd in de groepen 4:00 en 5:00 Je typt dan ook
lspci -n -s 04:00
lspci -n -s 05:00
Als het goed is moet ongeveer hetzelfde uit beide komen. In mijn geval krijg ik 04:00.0 0200: 8086:10bc (rev 06). Het stuk dat je wilt gebruiken ligt in het deel dat net voor (rev 06) ligt. In mijn geval is dit 8086:10bc. In het volgende gedeelte krijg ik dan ook:
echo "options vfio-pci ids=8086:10bc" > /etc/modprobe.d/vfio.conf
Vervolgens voer je de volgende commands uit:
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
update-initramfs -d -u
reboot now
Nu wordt de computer opnieuw opgestart. Nadat deze is opgestart kijk je of alles is gelukt met
lspci -nnk
Onder de groepen waar de NIC zat moet nu staan Kernel driver in use: vfio-pcid
. Als dit niet het geval is dan is er iets mis gegaan. Als dit er wel staat kun je doorgaan naar de volgende stap.
Maken van de virtual machine (VM)
Click met de rechtermuis knop op <jou hostnaam> en druk dan op Create VM. Hiermee open je een wizzard waarmee je de VM configureert. Kies de naam voor de VM. Vervolgens kies je pfSense iso installatie die je ingevolge het vorige hoofdstuk hebt geüpload naar de proxmox server. Onder het kopje "systeem" pas je de bios naar UEFI en machine naar Q35. Vervolgens kies je de locatie waar hij de EFI disk opslaat. Onder het kopje CPU verander je het aantal cores naar 3. De memory zet je naar 4096 en network doe je naar "no network device". Nu wordt er een VM voor je gemaakt. Als dit gelukt is moet je de NIC toevoegen. Vergeet niet om alle groepen aan de VM toe te voegen. In mijn geval zijn dit groepen 4:00 en 5:00. Als vergelijkingsmateriaal laat ik hieronder mijn VM.config zien. Deze is te vinden onder
/etc/pve/qemu-server/<vmid>.conf
bios: ovmf
bootdisk: scsi0
cores: 3
efidisk0: local-lvm:vm-101-disk-0,size=128K
hostpci0: 04:00
hostpci1: 05:00
ide2: local:iso/pfSense-CE-2.4.4-RELEASE-p3-amd64.iso,media=cdrom
machine: q35
memory: 4098
name: pfsense
numa: 0
onboot: 1
ostype: l26
scsi0: hdd1:101/vm-101-disk-0.qcow2,size=32G
scsihw: virtio-scsi-pci
smbios1: uuid=<my uuid>
sockets: 1
vmgenid: <my vmgenid>
Installatie van pfSense
Nu kun je de VM starten. Als alles soepel verloopt kom je nu in de installatie wizzard van pfSense terecht. Ook hierbij - zoals bij proxmox - ga ik ervan uit dat je hier makkelijk doorheen gaat. Hierbij kan bij bijna elke vraag "enter" worden geselecteerd (tenzij er nog andere aanpassingen moeten worden volbracht). Na het opnieuw opstarten van de VM moet worden gecontroleerd of alle NIC interfaces aanwezig zijn in de VM.
Hierna kan verder worden gegaan met de volgende stap. In mijn geval zet ik de ISP router naar bridge modus. Dit houdt in dat het public IP wordt doorverwezen naar de pfSense box. Dit kan worden gedaan door dit te vragen aan je eigen ISP. Onthoud wel dat wanneer je dit doet het internet er voor langere tijd uit ligt tot alles is geconfigureerd. Bij het instellen van de bridge modus zullen alle ethernet poorten van de ISP router worden uitgezet behalve de eerste. In de eerste port doen we de ethernet kabel. Zo hebben we een WAN interface op de pfSense box. Nu doen we een tweede ethernet kabel in een tweede wireless router. Deze kabel gaat dan in de LAN port van de wireless router en niet de WAN port. Als het goed is wordt een public IP adres via de DHCP servers van jou ISP toegewezen aan de pfSense box. Vergeet niet dat het LAN interface hetzelfde subnet moet hebben als de 2de wireless router. De 2de wireless router moet dus eerst worden geconfigureerd voordat deze kan worden aangesloten. Op de wireless router mag de DHCP server uitgezet worden, want er wordt gebruik gemaakt van de DHCP server op de pfSense box. Ervan uitgaande dat de pfSense box en de wireless router dezelfde LAN instellingen hebben, kun je nu een ethernet kabel van de wireless router naar je computer doen. Je moet nu handmatig de adapter instellingen laten overeenkomen met die van de pfSense box en de wireless router, zodat deze een verbinding met elkaar kunnen maken. Hierna kun je beginnen met de installatie wizzard van pfSense in de browser. Hierbij moet je het IP-adres opzoeken van pfSense in de browser.
De plaatjes rechts kunnen worden gebruikt als referentie. Het public IP is zwart gemaakt vanwege beveiligingsredenen.
Configuratie van pfsense
Als alle bovenstaande stappen zijn doorlopen kan worden genavigeerd naar https://<router ip> .Als het goed is wordt er een wizzard geopend. Pas hier zo nodig de instellingen aan. Pas de DNS server tijdelijk aan naar 1.1.1.1. Later kun je de dns server van windows gebruiken. Dubbelcheck of de DHCP server aanstaat en kijk of de wireless router IP adressen uitdeelt via de wifi verbinding. Als dit lukt kun je beginnen met een aantal applicaties te installeren op pFsense. De package manager is te vinden onder systeem-PackageManager-AvailablePackages.
De volgende applicaties raad ik ten zeerste aan om te installeren: TFTPD, suricata en pfBlockerNG-devel. Optioneel kunnen voor diagnose de volgende applicaties worden geïnstalleerd: arpwatch, nmap, iperf, zabbix-agent44, Status_Traffic_Totals en darkstat. Als eerste begin je met de configuratie van pfBlockerNG. Deze is te vinden onder firewall-pfBblockerNG. Hier wordt weer een wizzard geopend waar je zo nodig aanpassingen in kan maken. Als eerste raad ik aan om een MaxMind GeoIp key aan te vragen. Dit is namelijk gratis en kost 10 minuutjes werk voor extra beveiliging. Zo kun je zorgen dat alle netwerk traffic afkomstig uit Asia, Africa, China en andere landen die mogelijke beveiligingsrisico's opleveren, worden geblokkeerd. Dit is handig omdat er veel brute force attacks uit deze landen komen. Je kunt pfblocker gebruiken om games, malware, tracking en nog veel meer te blokkeren. Het is ook mogelijk om een custom error message te maken en deze te laten zien wanneer iemand bijvoorbeeld een spel wil spelen.
Rechts staat een plaatje van hoe een dergelijke error er uit ziet. TFTPD zal later moeten worden geconfigureerd nadat de windows server is geïnstalleerd. Iets wat wel belangrijk is om te configureren is suricata. Dit verbetert de beveiliging van het netwerk en is vooral handig om deze wiki server te beschermen. Alternatieven voor suricata kunnen ook worden gebruikt, zoals Snort. Het is daarom niet noodzakelijk om verder uit te leggen hoe pFsense blocker en suricata werken. Afhankelijk van wat de netwerk administrator wil bereiken moet dit anders worden geconfigureerd.
Als eerste begin je met het downloaden van de meest recente ubuntu LTS (Long Term Support) container. Dit kan worden gedaan in Proxmox onder "schijven-content-templates". Als dit is gedownload kun je beginnen met het aanmaken van een container. Hier bij moet "unprivilaged" container worden uitgezet, anders werkt het tun/tap interface niet. Dit interface is nodig om VPN connecties tot stand te brengen. Ook bij het maken van de container opent er een wizzard die vrij gemakkelijk doorlopen kan worden. Na het maken van de container hoeft er eigelijk niet veel meer te gebeuren, want in dit voorbeeld wordt gebruik gemaakt van een installatie script. Als eerste begin je met de sources.list te updaten en te upgraden met het onderstaande command.
Voeg zo nodig extra sources toe aan /etc/apt/sources.list
indien er extra installaties moeten worden uitgevoerd.
De volgende commands moeten worden uitgevoerd om de container te updaten:
apt-get update && apt-get upgrade
Hierna kun je met het volgende command "wget" installeren:
apt-get install wget
Vervolgens gebruik je "wget" om het script te downloaden:
wget https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
Om het script uitvoerbaar te maken moet het volgende worden uitgevoerd:
chmod +x openvpn-install.sh
Met ./ kun je het bash script laten starten:
./openvpn-install.sh
Nu wordt er al weer een installatie wizzard geopend. Hierbij kan zo nodig een ander protocol worden gekozen, maar ik raad ten zeerste het gebruik van udp aan omdat deze sneller is. Een andere port kan wel makkelijk worden gebruikt, maar dan moet dit op alle overige plekken worden gespecificeerd. Nadat de installatie wizzard is voltooid kan eerst worden gechecked of alles goed is ingesteld. Dit kan als volgt worden gedaan:
nano /etc/openvpn/server/server.conf
Hierin kunnen aanpassingen worden gedaan aan de server. Vergeet niet, dat wanneer dit wordt gedaan, ook de client config aan moeten worden gepast. Dit kan als volgt worden gedaan:
nano /etc/openvpn/server/client-common.txt
Als voorbeeld ziet mijn config er als volgt uit:
local 192.168.1.124
port 9201
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 192.168.1.108"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
Een tip voor iemand die zijn VPN altijd wil laten werken: maak gebruik van port 443. Dit omzeilt 99% van alle blokkades in bedrijfsnetwerken. Dit komt doordat 443 ook wordt gebruikt voor https en een bedrijf moeilijk websites kan blokkeren. In de configuratie kun je later ook de DNS server van windows zetten, zodat clienten buiten het netwerk zich ook kunnen aansluiten bij dit domein. Nu moet in de firewall van pFsense een port worden geopend. Voordat dit kan worden gedaan moet eerst het lokale ip adres van de container bekend zijn. De makkelijkste manier is als volgt:
apt-get install ifconfig
Voer hierna ifconfig
uit en noteer het ip adres van interface eth0 of ander gebruikt interface. In mijn geval krijg ik het volgende (zie hiernaast).
Na dit gedaan te hebben kunnen we via NAT in pfSense portforwarden naar (in mijn geval) 192.168.1.122 Als dit alles gedaan is kun je een open vpn profiel aanmaken.
Dit kan als volgt worden gedaan: voer opniew het onderstaande command uit en kies voor de optie "create profiel":
./openvpn-install.sh
Na een naam te hebben gegeven aan het profiel kun je via filezilla het profiel downloaden. Als eerste installeer je file zilla en check je of root login in ssh is toegestaan. Dit kan als volgt worden gecontroleerd:
nano /etc/ssh/sshd_config
Pas PermitRootLogin <syntax>
naar PermitRootLogin yes
Check vervolgens of PasswordAuthentication yes
staat anders zal file zilla niet werken. Als dit alles is gedaan kan met de container worden verbonden en het profiel worden gedwonload. Hierna kan het profiel worden gebruikt op de computer of telefoon om een VPN verbinding tot stand te brengen.
Maak nog een container aan in Proxmox. 1gb ram en 1 core moet voldoende zijn.
pi-hole is een makkelijk alternatief als je DNSBL wilt gebruiken maar geen pfSense hebt geïnstalleerd. Pi hole is heel makkelijk om te installeren. Dat kan als volgt worden gedaan.
Update de container door middel van:
apt-get update && apt-get upgrade
Daarna kun je "curl" installeren met:
apt-get install curl
Vervolgens voer je het volgende command uit:
curl -sSL https://install.pi-hole.net | bash
Dan wordt een wizzard geopend waar zo nodig instellingen kunnen worden aangepast. Eigenlijk is pi-hole niet bedoeld om content te blokkeren maar, dient om advertenties te blokkeren. Daarom raad ik aan om iets te gebruiken zoals pfSense.