Lightweight Vulnerability Scanner for Resourced-constrained Organizations

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/bin/bash
  2. set -e
  3. # === CONFIGURATION ===
  4. WG_INTERFACE="wg0"
  5. WG_ADDRESS="10.0.0.1/32"
  6. WG_LISTEN_PORT="123"
  7. WG_PRIVATE_KEY_PATH="/etc/wireguard/privatekey"
  8. WG_PUBLIC_KEY_PATH="/etc/wireguard/publickey"
  9. WG_CONF_PATH="/etc/wireguard/${WG_INTERFACE}.conf"
  10. WG_PEER_PUBLIC_KEY="YOUR_CLIENT_PUBLIC_KEY_HERE"
  11. # IMPORTANT: Add all IP subnets that exist on the client-side LANs
  12. WG_ALLOWED_IPS="136.145.187.0/24, 10.0.0.2/32, 192.168.0.0/24"
  13. WG_KEEPALIVE=25
  14. # === INSTALL WIREGUARD ===
  15. echo " Installing WireGuard..."
  16. sudo apt-get update
  17. sudo apt-get install -y wireguard
  18. # === GENERATE SERVER KEYS ===
  19. echo "Generating WireGuard server keys..."
  20. sudo mkdir -p /etc/wireguard
  21. sudo chmod 700 /etc/wireguard
  22. if [ ! -f "$WG_PRIVATE_KEY_PATH" ]; then
  23. umask 077
  24. wg genkey | sudo tee "$WG_PRIVATE_KEY_PATH" | wg pubkey | sudo tee "$WG_PUBLIC_KEY_PATH"
  25. else
  26. echo " Private key already exists. Skipping key generation."
  27. fi
  28. PRIVATE_KEY=$(sudo cat "$WG_PRIVATE_KEY_PATH")
  29. # === WRITE CONFIG ===
  30. echo " Writing server config to $WG_CONF_PATH..."
  31. sudo tee "$WG_CONF_PATH" > /dev/null <<EOF
  32. [Interface]
  33. PrivateKey = ${PRIVATE_KEY}
  34. Address = ${WG_ADDRESS}
  35. ListenPort = ${WG_LISTEN_PORT}
  36. [Peer]
  37. PublicKey = ${WG_PEER_PUBLIC_KEY}
  38. AllowedIPs = ${WG_ALLOWED_IPS}
  39. PersistentKeepalive = ${WG_KEEPALIVE}
  40. EOF
  41. sudo chmod 600 "$WG_CONF_PATH"
  42. # === ENABLE IP FORWARDING ===
  43. echo "Enabling IP forwarding..."
  44. sudo sysctl -w net.ipv4.ip_forward=1
  45. echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf > /dev/null
  46. # === START WIREGUARD SERVER ===
  47. echo "Starting WireGuard interface ${WG_INTERFACE}..."
  48. sudo wg-quick up "${WG_INTERFACE}"
  49. echo "WireGuard server is now running and listening on port ${WG_LISTEN_PORT}."
  50. echo "IMPORTANT: Make sure AllowedIPs includes all subnets from the client's local networks!"