Сайт(ы) клиента работали на виртуалке с публичным IP — сервер напрямую доступен из интернета. Нужно было сократить поверхность атаки и изолировать машину с сайтом.
Контекст и задача
ВМ с сайтом светит в интернет
Что было не так. ВМ с сайтом светит в интернет всем, чем открыта: лишние порты, панель, SSH. Взлом сайта = доступ к самой машине и шанс уйти дальше в сеть.
Решение
Что сделали
HAProxy в DMZ
Поставили HAProxy на отдельной пограничной ВМ (DMZ): терминирует TLS (Let's Encrypt), принимает весь внешний трафик.
Backend в изолированном сегменте
Сервер сайта убрали в изолированный внутренний сегмент без белого IP; он принимает соединения только от HAProxy и только по рабочему порту.
Firewall и защита
Между DMZ и сегментом сайта — firewall; на HAProxy — rate-limit и fail2ban; наружу сайт ходит только через контролируемый NAT (для обновлений).
# HAProxy — вход снаружи, backend скрыт во внутренней сети
frontend https_in
bind *:443 ssl crt /etc/haproxy/certs/
default_backend site
backend site
server s1 10.30.0.10:8080 check # приватный IP, наружу не виден
Результат
Реальный сервер сайта скрыт
Его IP и сеть снаружи не видны, открыт один укреплённый вход. Компрометация сайта не даёт прямого доступа к инфраструктуре.
- ✓HAProxy в DMZ — единственная точка входа
- ✓Backend изолирован — без белого IP, доступ только от прокси
- ✓TLS терминация — Let's Encrypt
- ✓Защита — rate-limit, fail2ban
Технологии
Что использовали
- HAProxy
- TLS/Let's Encrypt
- DMZ
- firewall
- fail2ban
Спрятать сервер сайта за защищённый прокси
Изолируем веб-серверы от прямого доступа из интернета через HAProxy/nginx в DMZ.
