diff --git a/doc/step-001-wireguard-ufw-ssh-only.md b/doc/step-001-wireguard-ufw-ssh-only.md new file mode 100644 index 0000000..0f1f980 --- /dev/null +++ b/doc/step-001-wireguard-ufw-ssh-only.md @@ -0,0 +1,198 @@ +# Step 001: WireGuard + UFW + SSH tylko po WG (Ubuntu 24.04, 1 NIC) + +Cel: na świeżym Ubuntu 24.04 na bare metalu ustawić: + +- **WireGuard** jako prywatny kanał administracyjny, +- **SSH dostępne tylko przez WireGuard**, +- przygotować grunt pod **Agave RPC dostępne tylko przez WireGuard** (8899/8900 prywatnie), +- zostawić porty klastra Agave na publicznym NIC, żeby node mógł się zsynchronizować. + +Kolejność jest krytyczna: najpierw uruchom WireGuard i sprawdź, że działa, dopiero potem ograniczaj SSH/firewall. + +## Założenia + +- Host ma **1 publiczny interfejs** (np. `enp1s0`). +- WireGuard interfejs to `wg0`. +- Masz dostęp awaryjny do konsoli (IPMI/KVM) na wypadek pomyłki. + +## Parametry (dostosuj) + +```bash +export PUBLIC_IFACE="enp1s0" +export WG_IFACE="wg0" + +export WG_SERVER_IP="10.66.66.1/24" +export WG_SERVER_IP_ONLY="10.66.66.1" +export WG_PORT="51820" + +export WG_CLIENT_IP="10.66.66.2/32" +export WG_CLIENT_PUBKEY="" + +# Agave/validator ports +export RPC_PORT="8899" +export WS_PORT="8900" +export DYNAMIC_PORT_RANGE="8000:8020" +``` + +## 1) WireGuard (nie ruszaj jeszcze SSH) + +### Instalacja + +```bash +apt-get update +apt-get install -y wireguard +``` + +### Klucze serwera + +```bash +umask 077 +wg genkey | tee /etc/wireguard/server.key >/dev/null +cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub >/dev/null +cat /etc/wireguard/server.pub +``` + +### Konfiguracja `/etc/wireguard/wg0.conf` + +```bash +cat >/etc/wireguard/${WG_IFACE}.conf <@10.66.66.1 +``` + +Jeśli działa: zablokuj publiczny SSH: + +```bash +ufw deny 22/tcp +ufw status verbose +``` + +## 4) Kernel/sysctl baseline pod Agave (na tym etapie bez uruchamiania Agave) + +Minimalne wartości, które już mamy w Ansible (i kilka dodatkowych bezpiecznych): + +```bash +cat >/etc/sysctl.d/90-agave.conf <<'EOF' +fs.file-max = 2000000 +vm.max_map_count = 1000000 +net.core.somaxconn = 65535 +net.core.netdev_max_backlog = 250000 +net.core.rmem_max = 134217728 +net.core.wmem_max = 134217728 +EOF + +sysctl --system +``` + +Limity `nofile`: + +```bash +cat >/etc/security/limits.d/90-solana.conf <<'EOF' +* soft nofile 1000000 +* hard nofile 1000000 +EOF +``` + +## 5) Co dalej + +- Instalacja i uruchomienie Agave: patrz `doc/etap-007-manual-baremetal-rpc-commands.md`. +- Docelowo: bind RPC/WS do WG IP (zamiast `0.0.0.0`) i spójne, minimalne reguły firewall. +