Небольшая предыстория того, почему я задаю этот вопрос. Недавно мы стали получать 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, в зависимости от интенсивности атаки и типа контента, который вы обслуживаете.