Назад | Перейти на главную страницу

Поставьте сервер или два за прокси

Небольшая предыстория того, почему я задаю этот вопрос. Недавно мы стали получать DDoS-атаки и другие атаки на наши серверы прямого доступа, и когда эти атаки происходят, они значительно замедляют сетевые соединения на всех других серверах в нашей сети. Мы хотели бы попробовать разместить эти два сервера за прокси-сервером или чем-то подобным, чтобы при повторной атаке они вывели из строя прокси-сервер, разорвав соединение между серверами DA и клиентами, но избежав замедления сети в другом месте. Это всего лишь временное решение, пока мы не получим физический маршрутизатор с брандмауэрами, чтобы предотвратить это.

Поскольку я все еще довольно неопытен в способах администрирования сети, я не совсем уверен, как мы могли бы этого добиться. Мне указали на Squid для прозрачного проксирования, но все рекомендации, с которыми я сталкивался, - это поместить Squid между клиентами и Интернетом, в то время как мне нужно что-то среднее между Интернетом и одним или двумя серверами.

Я также рассмотрел возможность использования правил PREROUTING IPtables, чтобы просто пересылать соединения на другие серверы, но при тестировании с SSH кажется, что они просто перехватывают соединения, а не пересылают их. Вероятно, это потому, что я точно не знаю, как настроить IPtables для этого.

Для справки, это правила IPtables, которые я использую. Первое правило - тестировать SSH-соединения, а второе - для порта 443, поскольку для входящих подключений к Direct Access, насколько я понимаю, нужен только https. Я настроил его так, чтобы прокси-сервер имел DNS-имя целевого сервера, назначенное в нашей системе управления DNS, обозначенное здесь "remoteserver.example.edu". Идея состоит в том, что клиент пытается подключиться к прямому доступу с помощью DNS-имени «remoteserver.example.edu», которое подключается к прокси-серверу, который затем немедленно перенаправляет его на сервер DA по IP-адресу.

iptables -t nat -A PREROUTING -p tcp -d remoteserver.example.edu --dport 22 -j DNAT --to-destination remoteserverip:22
iptables -t nat -A PREROUTING -p tcp -d remoteserver.example.edu --dport 443 -j DNAT --to-destination remoteserverip:443

Поэтому я хотел бы спросить, есть ли у кого-нибудь представление о том, как достичь цели создания буфера перед парой серверов, чтобы уменьшить замедление сети из-за вредоносных атак. Я открыт для советов по настройке Squid, правил IPtables или другого решения. Заранее спасибо.

Я бы использовал nginx на отдельном сервере в качестве временного решения. Быстрый пример будет примерно таким:

  • Запустите новое окно с выходом в Интернет, чтобы действовать как обратный прокси
  • Попросите этот новый ящик отправлять трафик на веб-серверы

Базовый файл конфигурации для /etc/nginx/conf.d/basic-reverse-proxy.conf будет выглядеть примерно так

upstream backend {
  least_conn;
  server 10.1.0.101; 
  server 10.1.0.102;
}

# This server accepts all traffic to port 80 and passes it to the upstream. 
# Notice that the upstream name and the proxy_pass need to match.

server {
  listen 80; 

  location / {
    proxy_pass http://backend;
  }
}

Это просто передаст любой трафик через порт 80 на внутренние серверы. «minimum_conn» означает, что nginx будет пытаться отправлять трафик на сервер с наименьшим количеством подключений. Чем больше у вас внутренних серверов, тем больше вы сможете распределить трафик.

Для этого типа проблем вам нужно использовать nginx, а не Squid. Вам даже может сойти с рук nginx, сидящий на одном ящике с вашим apache, в зависимости от интенсивности атаки и типа контента, который вы обслуживаете.