diff --git a/README.md b/README.md index 00b9155..71026e0 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ manuals/ ## 📑 Список доступных мануалов - **SSO** — Регистрация в корпоративной SSO +- **NetBird** — Настройка корпоративного VPN для доступа в Internal +- **Certs** — Добавление корпоративных сертификатов ## 🎯 Цели репозитория diff --git a/docs/Certs/Certs.md b/docs/Certs/Certs.md new file mode 100644 index 0000000..4b002b3 --- /dev/null +++ b/docs/Certs/Certs.md @@ -0,0 +1,22 @@ +### Введение +Внутренняя `dns` зоны никак не светят в интернет, соотвественно нет глобально заверенных TLS сертификатов. + +### Добавление сертификата +Внутренний сертификат нужно добавить как в браузер так и в саму систему. Сам сертификат: `internal_gr.crt` +В случае с браузером заходим в Настройки -> Безопасность -> Сертификаты + +![Browser Certs](images/browser_certs.png) + + +И импортируем корневой сертификат компании. + +![alt text](images/import_cers.png) + + + +В случае с Linux системой необходимо поместить серт по пути: `/usr/local/share/ca-certificates/internal_gr.crt`. +И прогнать команду: `sudo update-ca-certificates`. + +Для проверки успешности добавления сертификата переходим на уже знакомый [PgAdmin](pgadmin.greedy.com) и проверяем сведения о сертификате. + +![alt text](images/pgadmin-crt.png) \ No newline at end of file diff --git a/docs/Certs/images/browser_certs.png b/docs/Certs/images/browser_certs.png new file mode 100644 index 0000000..e5d411a Binary files /dev/null and b/docs/Certs/images/browser_certs.png differ diff --git a/docs/Certs/images/import_cers.png b/docs/Certs/images/import_cers.png new file mode 100644 index 0000000..6993753 Binary files /dev/null and b/docs/Certs/images/import_cers.png differ diff --git a/docs/Certs/images/pgadmin-crt.png b/docs/Certs/images/pgadmin-crt.png new file mode 100644 index 0000000..9e3807a Binary files /dev/null and b/docs/Certs/images/pgadmin-crt.png differ diff --git a/docs/Certs/internal_gr.crt b/docs/Certs/internal_gr.crt new file mode 100644 index 0000000..8fd0412 --- /dev/null +++ b/docs/Certs/internal_gr.crt @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBrzCCAVWgAwIBAgIQfw53rPEw6Jo81qpC+5x81TAKBggqhkjOPQQDAjA2MRUw +EwYDVQQKEwxJbnRlcm5hbCBQS0kxHTAbBgNVBAMTFEludGVybmFsIFBLSSBSb290 +IENBMB4XDTI1MTAxMTE0MjQwNVoXDTM1MTAwOTE0MjQwNVowNjEVMBMGA1UEChMM +SW50ZXJuYWwgUEtJMR0wGwYDVQQDExRJbnRlcm5hbCBQS0kgUm9vdCBDQTBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABKoqmM/KGdqQqi5whqYvGxI4r3QJc0cTCGZN +vvMbF8r4h4CefHDC1/n1vvA0yPnY67IqS5+332jbffvd1Euqv4ujRTBDMA4GA1Ud +DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBQtVvtK/PnG +uSU/Nfq4LFIqkUhl+TAKBggqhkjOPQQDAgNIADBFAiEA/mNkq95BmouWg7PF4yyq +jH9YVyK3h24r//gBL3OWvpECIDBlLFftKXnw4bknfWyDAyBYeMlxDqrV2AMZoNrM +rGXo +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docs/NetBird/Connect_to_VPN.md b/docs/NetBird/Connect_to_VPN.md new file mode 100644 index 0000000..b23b380 --- /dev/null +++ b/docs/NetBird/Connect_to_VPN.md @@ -0,0 +1,80 @@ +# NetBird +Система на базе WireGuard обеспечивающая безопасное подключение к инфраструктуре. + + +# Настройка подключения +После того администратор аппрувнит вашу УЗ вы получите доступ сам Web-Interface NetBird. + +![Login page](images/login_page.png) + +Выбираете свою систему, в моем случае подключаться к инфре я буду через VPS ( который уже выступает в роли WireGuard VPN сервера ) для обеспечения большей безопасности. + +Перед подключением к NetBird в случае CLI клиентов как в моем случае в команду подключения необходимо добавить `--hostname you_nickname`, таким образом команда будет иметь вид: + +`netbird up --hostname dev-developer --management-url https://netbird.project-quest-dev.com:443` + + ![Approve Connect](images/approve_connection.png) + + +После этого у вас появится доступ к внутренней инфраструктуре компании. Сетевые доступы ограничиваются вашей группой в Authentik. + +Убедиться, что VPN соединения установлено и работает корректно можно пингом внутреннего PgAdmin: + +```bash +nslookup pgadmin.greedy.com +Server: 127.0.0.53 +Address: 127.0.0.53#53 + +Non-authoritative answer: +Name: pgadmin.greedy.com +Address: 100.80.215.33 + +ping pgadmin.greedy.com +PING pgadmin.greedy.com (100.80.215.33) 56(84) bytes of data. +64 bytes from prod-infra.netbird.selfhosted (100.80.215.33): icmp_seq=1 ttl=64 time=0.782 ms +64 bytes from prod-infra.netbird.selfhosted (100.80.215.33): icmp_seq=2 ttl=64 time=1.08 ms + +curl --insecure https://pgadmin.greedy.com + + +Redirecting... +

Redirecting...

+

You should be redirected automatically to the target URL: /login?next=/. If not, click the link. +``` + +# DNS +Уже на этом моменте вы получаете доступ к внутренней инфраструктуре. Внутренняя инфраструктура имеет свои `dns` зоны, которые не имеют никакого отношения к внешнему миру. В случае установки NetBird на рабочую систему ваши запросы к `pgadmin.greedy.com` через тунель уже проксируются на внетренний DNS сервер. Но в моем сценарии, когда имеется некий VPS выступающий в роли `Man-in-a-Middle` запросы до `*.greedy.com` просто будут потеряны. +После подключения к NetBird сети, на нашей машине поднимается Local-Resolver сервис самого NetBird. +Чтобы моя рабочая машина знала куда отправлять запросы я укажу в клиентском конфиге своего VPN (WireGuard - это мой рабочий VPN) этот самый Local-Resolver в качестве одного из DNS серверов. + +Чтобы найти Local-Resolver IP на VPS выполняю команду: +```bash +netstat -tulpn +Active Internet connections (only servers) +Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name +tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 110005/sshd: /usr/s +tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 589/systemd-resolve +tcp6 0 0 :::22 :::* LISTEN 110005/sshd: /usr/s +udp 0 0 0.0.0.0:51820 0.0.0.0:* - +udp 0 0 127.0.0.1:3128 0.0.0.0:* 111013/netbird +udp 0 0 0.0.0.0:8080 0.0.0.0:* - +udp 0 0 100.80.82.135:53 0.0.0.0:* 111013/netbird +udp 0 0 127.0.0.53:53 0.0.0.0:* 589/systemd-resolve +``` + +Вот и адрес нашего Resolver: `100.80.82.135:53 111013/netbird`. Этот адрес я добавляю в свой клиенсткий WireGuard конфиг: + +![alt text](images/wg-dns.png) + +Рестартуем WireGuard подключения и теперь даже на локальном машине у нас резолвятся внутренние домены компании. + +P.S в случе если на вашем VPS настроен `ufw` вам следует добавить разрешающее правило, чтобы WG клиенты ( ваш компьютер ) имели доступ до Resolver: +`sudo ufw allow from 10.7.0.0/24 to 100.80.82.135 port 53 proto udp` + +где: +- `10.7.0.0/24` - (клиентская подсеть wg) +- `100.80.82.135` - адрес резолвера + + +Таким образом мы получаю безопасную схему подключения: +![Connection Scheme](images/conn_architecture.png) \ No newline at end of file diff --git a/docs/NetBird/images/approve_connection.png b/docs/NetBird/images/approve_connection.png new file mode 100644 index 0000000..44ff64c Binary files /dev/null and b/docs/NetBird/images/approve_connection.png differ diff --git a/docs/NetBird/images/conn_architecture.png b/docs/NetBird/images/conn_architecture.png new file mode 100644 index 0000000..d523a65 Binary files /dev/null and b/docs/NetBird/images/conn_architecture.png differ diff --git a/docs/NetBird/images/login_page.png b/docs/NetBird/images/login_page.png new file mode 100644 index 0000000..d016425 Binary files /dev/null and b/docs/NetBird/images/login_page.png differ diff --git a/docs/NetBird/images/wg-dns.png b/docs/NetBird/images/wg-dns.png new file mode 100644 index 0000000..4dc7dbe Binary files /dev/null and b/docs/NetBird/images/wg-dns.png differ