Защита от удаленного доступа

Define!!!11

Новичок
Пользователь
13 Авг 2012
7
10
3
82
Распределенная защита от атак.

Самое основная защита от атак отказа в обслуживании (DoS атак) - это скрыть от трухацкеров уязвимые сервисы.
Под уязвимыми сервисами я подразумеваю GamedBD, UniqueNamed, GS, GDelivery, GProvider. Они не контроллируют траффик, поступаемый к ним, не шифруют его, не проверяют его легитимности и суки падают от любой ошибки.
Игрокам известна, например, уязвимость "ивеб со своего компа" (меняем ip в конфиге ивеба на ip сервера и используем 80% возможностей Iweba).
Решение есть!
1. Арендуем 2 машины: 1 - слабее (0,5 GiB ОЗУ; 1,2 ГГц; можно VPS), вторую - сильнее (большая мощность). Обязательно разные машины с разными ip адресами. Желательно один провайдер, чтобы ping между ними был минимален и скорость передачи данных максимально.
2. Ставим следующие конфиги
IP слабой - ip1
IP сильной - ip2
GLink :
Код:
[GLinkServer1]
type = tcp
port = 29000
address = ip1
so_sndbuf = 12288
so_rcvbuf = 12288
ibuffermax = 16384
obuffermax = 65536
tcp_nodelay = 0
listen_backlog = 10
accumulate = 131072
max_users = 3000
halflogin_users = 6000
sender_interval = 200000
accumu_packets = 32768
mtrace = /tmp/m_trace.link
compress = 0
close_discard = 1
urgency_support = 1
version = 10304
 
 
 
[GLinkServer2]
type = tcp
port = 29000
address = ip1
so_sndbuf = 12288
so_rcvbuf = 12288
ibuffermax = 16384
obuffermax = 65536
tcp_nodelay = 0
listen_backlog = 10
accumulate = 131072
max_users = 3000
halflogin_users = 6000
sender_interval = 200000
accumu_packets = 32768
mtrace = /tmp/m_trace.link
compress = 0
close_discard = 1
urgency_support = 1
version = 10304
 
[GLinkServer3]
type = tcp
port = 29000
address = ip1
so_sndbuf = 12288
so_rcvbuf = 12288
ibuffermax = 16384
obuffermax = 65536
tcp_nodelay = 0
listen_backlog = 10
accumulate = 131072
max_users = 3000
halflogin_users = 6000
sender_interval = 200000
accumu_packets = 32768
mtrace = /tmp/m_trace.link
compress = 0
close_discard = 1
urgency_support = 1
version = 10304
 
[GLinkServer4]
type = tcp
port = 29000
address = ip1
so_sndbuf = 12288
so_rcvbuf = 12288
ibuffermax = 16384
obuffermax = 65536
tcp_nodelay = 0
listen_backlog = 10
accumulate = 131072
max_users = 3000
halflogin_users = 6000
sender_interval = 200000
accumu_packets = 32768
mtrace = /tmp/m_trace.link
compress = 0
close_discard = 1
urgency_support = 1
version = 10304
 
[GDeliveryClient]
type = tcp
port = 29100
address = ip2
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 1048576
obuffermax = 1048576
tcp_nodelay = 0
accumulate = 268435456
 
[GProviderServer1]
type = tcp
port = 29301
address = 127.0.0.1
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 1048576
obuffermax = 1048576
tcp_nodelay = 0
accumulate = 268435456
 
[GProviderServer2]
type = tcp
port = 29302
address = 127.0.0.1
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 1048576
obuffermax = 1048576
tcp_nodelay = 0
accumulate = 268435456
 
[GProviderServer3]
type = tcp
port = 29303
address = 127.0.0.1
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 1048576
obuffermax = 1048576
tcp_nodelay = 0
accumulate = 268435456
 
[GProviderServer4]
type = tcp
port = 29304
address = 127.0.0.1
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 1048576
obuffermax = 1048576
tcp_nodelay = 0
accumulate = 268435456
 
 
[GFactionClient]
type = tcp
port = 29500
address = ip2
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 1638400
obuffermax = 1638400
tcp_nodelay = 0
accumulate = 268435456
 
[LogclientClient]
type = udp
port = 11100
address = ip2
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 65536
obuffermax = 1048576
accumulate = 1048576
 
[LogclientTcpClient]
type = tcp
port = 11101
address = ip2
so_sndbuf = 65536
so_rcvbuf = 65536
ibuffermax = 65536
obuffermax = 1048576
accumulate = 1048576
 
[ThreadPool]
threads = (1,3)(100,1)(101,1)(0,1)
max_queuesize = 1048576
prior_strict = 1


3. На сильную машину ставим все, кроме GLink и вебсервера. Запускаем.
4. На слабую машину устанавливаем только nginx (apache) c PHР для ЛК, GLink, загружаем конфиг для GLink. Запускаем.
4.1. Для ЛК открываем mysql для ip1.
5 (примечание). Можно заказать несколько "слабых" машин. Сервера поддерживают несколько GLink => можно продублировать сервис => большая устойчивость.
Теперь защита:
1. Блокируем все подключения к сильной машине отовсюду.
2. Разрешаем все подключения к сильной со слабой.
3. Защищаем слабую машину.
4. Никому нельзя говорить ip2.

+ данной схемы:
Злоумышленник не узнает ip2 => не может DoSить эту машину => она не сможет упасть из-за наплыва траффика.
Злоумышленник не сможет послать на ip2 никакие данные напрямую => исключен доступ к GamedBD (редактирование персов, прописываение вещей и прч.), исключена возможность принятия битых пакетов, вызывающих segmentation fault (падение сервиса).
см. Пункт 5 (примечание).
Злоумышленник не сможет использовать эксплойты для проникновения на сильную машину и украсть базы данных и ценную сборку.

- данной схемы.
Незначительное увеличение pinga.
Усложняется контроль сервера. Следить за двумя серверами сложнее.

Такая система используется на pwmail. Только там каждый сервис на отдельной машине.
PS: в описании раздела исправьте:"Мы не требуем от Вас чего то сверх естественного" на "Мы не требуем от Вас чего-то сверхъестественного"
 

Juzilkree

Злостный отаку
Команда форума
Администратор
29 Ноя 2012
1.940
731
158
37
www.dyndev.ru
Если начнуть досить слабую, быстро упадет глинк, и все, никто и не зайдет получается??
Сначала нужно найти эти "слабые машины". У меня так было сделано на старом сервере + MySQL тоже стоял на отдельной машине.
 

Define!!!11

Новичок
Пользователь
13 Авг 2012
7
10
3
82
Если начнуть досить слабую, быстро упадет глинк, и все, никто и не зайдет получается??
глинков можно создать овер 9000. упадет один - зайдут на другие. Главное, чтобы мир и база не упала
 
  • Like
Реакции: Juzilkree

Электрон

Большой Электрон
Пользователь
30 Мар 2012
504
230
79
27

Juzilkree

Злостный отаку
Команда форума
Администратор
29 Ноя 2012
1.940
731
158
37
www.dyndev.ru

Juzilkree

Злостный отаку
Команда форума
Администратор
29 Ноя 2012
1.940
731
158
37
www.dyndev.ru
Вот рабочий конфиг от версии 1.4.6. Как пример.
Конфиг glinkd который должен стоять на отдельной машине.
 

Вложения

  • gamesys.rar
    581 байт · Просмотры: 47

noblessse

Пользователь
Пользователь
25 Дек 2014
63
7
8
33
Это конфиг glinkd который должен стоять на основной машине.
про основную машину в гайде написано мол не надо ставить хД
такой вопрос, на основной машине в глинксервер 1-4 нужно какой машины ip указывать
 

noblessse

Пользователь
Пользователь
25 Дек 2014
63
7
8
33
Можешь прописать ип основной машины или 0.0.0.0.
еще раз уточню, т.к я дикий нуб в этих вопросах:
1.Я установил на слабую машину (ip1) пакеты: update , php5, apache2
На нее же я установил glinkd в папку хом, libs в одноименную папку, прописал права и запустил.При конекте в клиенте сервер пингуется, и при запуске ошибок вроде нету.
2.На основной машине рабочий сервер, удалил от туда папку глинк.
Я так понял надо обратно заливать, но только файл conf, или второй тоже лить?И указывать в нем
Можешь прописать ип основной машины или 0.0.0.0.
Я все правильно понял?
 

noblessse

Пользователь
Пользователь
25 Дек 2014
63
7
8
33
Залей его обратно.
Правильно понял. Вроде )
Всё равно выдает старая версия клиента.Оба глинка серверные, версия там стоит нужная...
на основную заходит, а через левую машину нет(
 

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.

Последние ресурсы

Статистика форума

Темы
3.838
Сообщения
21.197
Пользователи
7.612
Новый пользователь
Shenia