Go to file
mateusz779 fc3a9f0361 Update config.py 2023-12-24 21:14:27 +00:00
configs - 2023-04-28 13:29:02 +02:00
style wyciagniecie css z plikow html 2023-04-24 10:22:17 +02:00
templates bug 2023-04-25 09:30:19 +02:00
.gitignore dodanie kluczy ssh 2023-04-25 09:58:40 +02:00
LICENCE add licence 2023-04-30 19:46:06 +02:00
README.md Update README.md 2023-12-24 21:10:21 +00:00
app.py - 2023-04-27 10:17:28 +02:00
buildroot.tar.gz add buildroot 2023-04-30 19:39:46 +02:00
config.py Update config.py 2023-12-24 21:14:27 +00:00
db.py dostosowanie do code review 2023-04-24 08:27:35 +02:00
images.py code cleanup 2023-04-21 16:39:25 +02:00
machines.py code cleanup 2023-04-21 16:39:25 +02:00
requirements.txt - 2023-04-27 10:17:28 +02:00
update_rootfs.sh bug i uaktualnienie skryptu aktualizujacego 2023-04-21 10:11:58 +02:00
utils.py - 2023-04-27 10:17:28 +02:00

README.md

Projekt systemów zdalnych z Krypto-IT uVPN

Projekt uruchamiania zdalnych systemów.

Instalacja wymaganych składników

Aby zainstalować wymagane składniki wydaj komendę:

  sudo apt install python3-venv python3-pip postgresql postgresql-contrib

A następnie:

  python3 -m venv venv
  source venv/bin/activate

I zainstaluj wymagane paczki pip

  pip install -r requirements.txt

Konfiguracja

Aby dodać bazę i użytkownika w PostgreSQL należy wykonać następujące kroki:

sudo adduser <username>
sudo passwd <username>
sudo -u postgres psql
CREATE USER <username> WITH PASSWORD 'PASSWORD';
CREATE DATABASE <db_name>;
GRANT ALL PRIVILEGES ON DATABASE <db_name> to <username> ;

Konfiguracja dostępu do serwera PostgreSQL znajduje się w pliku config.py

Pliki konfiguracyjne

  • config.py - zawiera konfiguracje dostępu do bazy danych plik domyslny czy też port dostępu do serwera ssh
  • configs/msmtprc - zawiera konfiguracje msmtp
  • configs/sendmail.sh - skrypt w którym znajduje sie konfiguracja co i w jaki sposób ma zostac wysłane mailem
  • configs/sshd_config - plik zawierający konfiguracje serwera ssh
  • configs/uVPN.conf,uVPN.ini - pliki konfiguracyjne do uVPNa

Uruchomienie

Aby uruchomić serwer deweloperski:

  flask run --host=0.0.0.0

Dodanie nowego użytkownika

Aby dodać użytkownika do bazy w pliku app.py w funkcji

login_api

należy odkomentować linijkę:

    # db.add_user(username, password)

A następnie przejść na stronę logowania wpisac żądaną nazwę użytkownika i hasło a następnie wyłączyć serwer zakomentować tą linijkę i uruchomic serwer ponownie.

Aktualizacja i instalacja kolejnych pakietów do rootfs

Aby zainstalować nowe pakiety należy uruchomic skrypt

update_rootfs.sh

W celu instalacji dodatkowych pakietów można wydać polecenie:

sudo ./update_rootfs.sh -n <obraz wyjściowy> -s <obraz żródłowy> -i "<pakiety do instalacji>"

Natomiast w celu aktualizacji pakietów w obrazie :

sudo ./update_rootfs.sh -n <obraz wyjściowy> -s <obraz żródłowy> -u

Tworzenie initramfs

Aby zacząć tworzenie obrazu initramfs należy najpierw zainstalować poniższe składniki:

sudo apt install build-essential libncurses5-dev

Następnie pobrac i rozpakować buildroota z tej strony: https://buildroot.org/download.html i przejść do katalogu w którym został on wypakowany. Kolejnym krokiem jest wypakowanie paczki external.tar.gz do głównego katalogu buildroota i skopiowanie pliku .config również do głównego katalogu. Kolejnym krokiem jest wydanie polecenia

make BR2_EXTERNAL=/path/to/external

I finalnie uruchomienie kompilacji

make

W katalogu ./output/images znajdują sie pliki:

  • bzImage - kernel linuxa
  • rootfs.cpio.xz - spakowany obraz initramfs

Przykładowe parametry startowe

Dodatkowe parametry wymagane:

  • root=/dev/ram0
  • server=<adres serwera dysponującego wraz z portem>
  • sqfile=
  • nfsrootfs=:/<ścieżka do folderu z plikami systemu>
  • token=

Opcjonalnie podawane do uruchomienia systemu:

  • ip=
  • netmask=<maska podsieci w postaci pełnej>
  • gateway=

Przykład uruchomienia qemu:

sudo qemu-system-x86_64 -kernel bzImage -append "root=/dev/ram0 console=ttyS0 ip=dhcp nfsrootfs=<ip>:/<path/to/foo> sqfile=<obraz> server=<adres serwera z portem> token=<token> panic=5" -initrd rootfs.cpio.xz -nographic -net nic,model=virtio,macaddr=00:00:00:00:00:02 -net tap,ifname=tap0 -m 512 -no-reboot -smp cpus=4

Przykład konfiguracji dla iPXE

#!ipxe

set server_ip <ip serwera>
set root_path /tftpboot/os-images
set boot_url http://${server_ip}

set os_locate <nazwa folderu z obrazami>
set os_root ${boot_url}/${url_path}/${os_locate}
kernel ${os_root}/bzImage
initrd ${os_root}/initramfs.cpio.xz
imgargs bzImage initrd=initramfs.cpio.xz root=/dev/ram0 console=ttyS0 ip=dhcp nfsrootfs=${server_ip}:${root_path}/${os_locate} sqfile=<obraz> server=<adres serwera z portem> token=<token> panic=5
boot || goto failed


Jak uzyskać obraz rootfs

Najprostrzym sposobem do uzyskania obrazu rootfs jest pobranie obrazu ubuntu serwer ser strony: https://ubuntu.com/download/server następnie otwarcie go lub wypakowanie i skopiowanie z folderu casper pliku

ubuntu-server-minimal.squashfs

Następnie plik ten można poddać modyfikacjom za pomocą skryptu

update_rootfs.sh