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

Define!!!11

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

Самое основная защита от атак отказа в обслуживании (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 :
Code:
[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

Злостный отаку
Staff member
Администратор
Nov 29, 2012
1,983
745
158
39
www.dyndev.ru
Если начнуть досить слабую, быстро упадет глинк, и все, никто и не зайдет получается??
Сначала нужно найти эти "слабые машины". У меня так было сделано на старом сервере + MySQL тоже стоял на отдельной машине.
 

Define!!!11

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

noblessse

Пользователь
Пользователь
Dec 25, 2014
63
7
8
34
Я всё сделал правильно вроде, но при подключени пишет: Старая версия клиента (датки обновил)
 

Juzilkree

Злостный отаку
Staff member
Администратор
Nov 29, 2012
1,983
745
158
39
www.dyndev.ru
Вот рабочий конфиг от версии 1.4.6. Как пример.
Конфиг glinkd который должен стоять на отдельной машине.
 

Attachments

  • gamesys.rar
    581 bytes · Views: 48

noblessse

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

noblessse

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

noblessse

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

Members online

No members online now.

Latest resources

Forum statistics

Threads
3,852
Messages
21,339
Members
7,971
Latest member
SMRiST