V3ct0r 2,117 Report post Posted July 10, 2016 Обеспечение безопасности игрового сервера Автор: @Duduf В данном гайде мы рассмотрим основные проблемы, связанные с обеспечением безопасности нашего игрового сервера. Основными проблемами в работе игровых серверов являются: Несанкционированный доступ к учетной записи администратора ОС сервера SQL-инъекции через клиент игры SQL-инъекции через веб-обвязки игрового сервера Гайд состоит из следующих разделов: Выбор операционной системы для игрового сервера и базовые настройки его безопасности Обеспечение базовой безопасности SQL-сервера Защита баз данных SQL-сервера от SQL-инъекций Установка и базовые настройки веб-сервера Защита веб-обвязок от SQL-инъекций 1. Выбор операционной системы для игрового сервера и базовые настройки его безопасности В первую очередь, следует понимать, что игровой сервер должен являться отдельной машиной, предназначенной только для обеспечения работы этого самого игрового сервера. В качестве операционной системы необходимо использовать только серверные - Windows Server 2003, Windows Server 2008, никаких XP, Вист и семерок - эти системы априори не предназначены для функционирования в качестве серверов. Высшим пилотажем, в плане обеспечения безопасности, было бы разнесение служб игрового сервера по разным серверам - ПО игры, SQL-сервер, Веб-сервер, но в данном случае мы рассмотрим установку и настройку всего этого добра на одной машине. Почему именно серверная ОС В первую очередь, это повышенная отказоустойчивость, отсутствие ресурсоемких и небезопасных приложений, загружаемых "по умолчанию", полноценное логирование действий пользователей, полноценный трейс ошибок при крахе приложений, более полная, по сравнению с домашними ОС, защита системных файлов и директорий, а также более высокая производительность приложений. К базовым настройкам безопасности ОС относятся: Отключение учетной записи Администратор Установка антивируса с автоматическим обновлением Автоматическое обновление ОС Настройка удаленного доступа по протоколу RDP Установка межсетевого экрана (Брандмауэр, Файрволл) Автоматическое обновление ОС Настраивайте автоматическое обновление таким образом, чтобы обновления скачивались, но не устанавливались. Заведите привычку раз в неделю устанавливать эти самые обновления и после их установки перезагружать машину.Remote Desktop Сколь бы не велико было желание подключить монитор и клавиатуру к серверу, делайте это только в случае сбоя в работе RDP, т.е. если вы не можете подключиться к серверу удаленно. Для включения Remote Desktop откройте Панель управления > Система, выберите вкладку Удаленные сеансы и установите флажок Разрешить удаленное подключение к этому компьютеру. По умолчанию удаленное соединение разрешено только локальным администраторам. Учетную запись Администратор мы отключили, т.о. у нас остается только один локальный администратор. Теперь настроим сам сервер RDP Откройте Панель управления > Администрирование > Настройка служб терминалов. В дереве консоли выберите пункт Подключения. В области сведений щелкните правой кнопкой мыши подключение, которое нужно изменить, и выберите команду Свойства. На вкладке Общие, в разделе Уровень безопасности, выберите метод обеспечения безопасности Высокий. Рекомендую также ознакомиться со следующими ссылками по обеспечению безопасности RDP:http://technet.microsoft.com/ru-ru/library/cc781085(WS.10).aspxhttp://www.winblog.ru/win2003/1147766806-15021001.htmlМежсетевой экран Самый простой маршрутизатор, установленный между интернетом и вашим сервером во сто крат эффективнее и производительней любых программных файрволлов. Настройте маршрутизацию портов в своем роутере - 80 (для веб-сервера), 1973 (Gate Server), 3389 (RDP) и 1433 (SQL-сервер). Все пакеты от клиента приходят на порт GateServe'ra, поэтому нет необходимости открывать порты других служб игрового сервера. Ограничьте доступ по IP-адресам для порта 3389 (RDP) и 1433 (SQL-сервер). Желательно, чтобы доступ к этим портам был только из локальной сети. Если вы планируете администрировать сервер удаленно из Интернета и имеете статичный IP-адрес, то можете открыть порты 3389 и 1433 и для него. Добавьте перечисленные порты (80, 1973, 3389, 1433) в исключения в Брандмауэре Windows. В исключениях должны быть именно порты, а не приложения. Ничего другого в исключениях быть не должно. Если в вашем роутере есть возможность автоматической защиты от ARP и других атак, включите их. Если у вас нет роутера или аппаратного Файрволла, то ограничения на порты и службы необходимо установить в Брандмауэре Windows. Итогом наших мероприятий стало то, что даже если злоумышленник получит информацию о логине/пароле к SQL-серверу, воспользоваться им он не сможет, поскольку мы закрыли возможность удаленного подключения к игровому серверу с "неизвестных" машин.Работа игровых подсерверов Не запускайте игровые сервера из-под пользователя, обладающего административными правами. Создайте отдельного пользователя в группе Users (Пользователи), прав этой группы достаточно для работы игрового сервера. В противном случае, если злоумышленник получит доступ в игре к команде &lua, то он автоматически получит доступ к пользователю-администратору сервера, со всеми вытекающими. 2. Настройка SQL-сервера Итак, вы установили SQL-сервер, используя соответствующие гайды и присоединили базы данных игры. Запускаем SQL Server Management Studio. При авторизации выбираем проверку подлинности Windows. В обозревателе объектов открываем вкладку Безопасность > Имена входа, заходим в свойства пользователя sa и отключаем эту учетную запись. Для чего мы его отключаем? Пользователь sa по умолчанию имеет права суперпользователя на вашем SQL-сервере. Также права суперпользователя вы можете получить авторизовавшись на Windows-сервере под учетной записью администратора и авторизовавшись в SQL-сервере используя проверку подлинности Windows. Отключением пользователя sa мы оставляем единственную возможность авторизации в качестве суперпользователя - через Windows-аутентификацию. Теперь у вас не будет соблазна настраивать работу приложений из под пользователя sa (особенно с пустым паролем) Для работы игрового сервера и веб-сервера мы создадим отдельных пользователей, которые будут иметь ограниченные права. Вычищаем из БД дефолтные данные Многие сборки серверов поставляются с базами, в которых уже существуют всякие разные нехорошие записи. К таковым относятся пользователи и схемы самой БД, а также список аккаунтов с ГМ-правами. В данной ситуации лучше использовать базы, поставляемые со сборкой Base Server 2.0, там присутствует только один аккаунт с логином admin и паролем admin. Не забываем поменять хотя бы пароль... Добавляем отдельных пользователей для игрового сервера Нам необходимо создать трех пользователей для баз AccountServer и GameDB с ограниченным набором прав - одного для работы GameServer, второго для работы AccountServer, третьего для веб-обвязки. Откройте папку Безопасность > Имена входа и выберите в контекстном меню Создать имя входа. Создайте пользователя для работы игрового сервера (в моем случае это Gamemaster) Перейдите на страницу Роли сервера и выберите только public Перейдите на страницу Сопоставление пользователей и определите базы данных GameDB с правами db_datawriter, public. Схема по умолчанию - dbo. Данные права определяют, что пользователь может осуществлять выборку (SELECT), изменение (UPDATE), вставку (INSERT) и удаление (DELETE) записей в таблицах базы GameDB. Создайте пользователя под которым будет работать AccountServer (в моем случае это Accountmaster) по аналогии с пользователем Gamemaster. Задайте права на базу AccountServer как db_datawriter, public, на базу GameDB прав давать не надо. Создайте пользователя под которым будет работать веб-обвязка (в моем случае это Webmaster) по аналогии с пользователем Gamemaster. Задайте права на базу AccountServer как db_datawriter, public, а на базу GameDB как db_datareader, public. Не ставьте ни в коем случае прав db_owner или db_securityadmin, а также любую другую роль кроме public, эти права дадут доступ пользователю к системным функциям Базы данных, в т.ч. к ее остановке и уничтожению. 3. Защита объектов базы данных от несанкционированных изменений В первую очередь, следует понимать, что SQL-инъекции возможны в том случае если приложения, работающие с SQL-сервером в должной мере не обрабатывают приходящие от пользователей переменные. В случае если в качестве приложения выступает php-скрипт с открытым кодом, мы можем самостоятельно добавить обработку пользовательских переменных. В случае если в качестве приложения выступает скомпилированное приложение (в нашем случае GateServer, GameServer, GroupServer и AccountServer), возможности по модификации кода у нас отсутствуют. При таком раскладе нам остается контролировать данные другими средствами. Первое - это различные фильтры (FilterServer и др.) и модификации GateServer, второе - защита объектов базы средствами SQL-сервера. Ставим необходимые фильтры. Объекты базы защищаем следующим образом: Заходим в свойства пользователя Gamemaster в базе GameDB Переходим на страницу Защищаемые объекты и жмем кнопку Найти. Выбираем Определенные объекты и жмем ОК Нажимаем Типы объектов, выбираем Таблицы, жмем ОК. Затем Обзор и выбираем таблицу account и жмем ОК и еще раз ОК. Загрузится таблица прав. Напротив Изменение и Удаление отмечаем Запретить. Выберите разрешение Обновление, чтобы активировать кнопку Разрешения на доступ к столбцу. Жмем ее. В открывшемся окне отмечаем Запретить напротив столбца gm Ту же самую процедуру проделываем и для пользователя Webmaster Все, теперь гм-права можно выставить только из под учетной записи администратора, пользователи, из под которых работает веб-обвязка и игровой сервер этих прав не имеют. По аналогии вы можете запрещать доступ на изменение к столбцам и в других таблицах. Например, в character было бы неплохо запретить изменение столбца act_id. Теперь со спокойной душой можно защищать менее значимые объекты базы посредством триггеров и мониторинга базы игроков. Сами триггеры я писать не буду, опишу, что можно защищать: Стат-пойнты. Триггер должен при вставке/изменении записи проверять не выходит ли сумма статов за допустимые значения. Количество HP/SP Наличие невведенных/редких предметов в инвентарях игроков Наличие у игроков фей и экипировки со статами, выходящими за допустимыми значениями 4. Веб-сервер На форуме, как я заметил, существует любовь к различного рода NoName-сборкам Apache + PHP + MySQL + еще хрен знает чего (это я про всякие ксампы и денверы). Наличие доверия к ним крайне сомнительно ввиду, хотябы отсутствия документации к ним, особенно, это касается выставленных параметров "по умолчанию". Грамотным решением была бы установка всех компонент отдельно, скачанных и обновляемых с сайтов ПРОИЗВОДИТЕЛЕЙ (apache.org, php.net, mysql.com) либо использование промышленных сборок типа Zend.Server. Если вы устанавливаете MySQL, не забудьте задать пароль для root-пользователя (по умолчанию он пустой) и создать второго администратора. Не следует запускать приложения из-под пользователя root. Прежде чем устанавливать FTP-сервер, сто раз подумайте, нужен ли он вам, возможно, достаточно открыть доступ к нужным папкам в локальной сети. FTP - сам по себе крайне небезопасный протокол. Если установка FTP-сервера необходима, используйте лучше реализацию SFTP под Windows http://www.coreftp.com/server/ (в качестве клиента используйте WinSCP). 5. Веб-обвязки Ну, что тут говорить, большинство представленных на форуме веб-обвязок представляют собой "жалкое зрелище, душераздирающее зрелище": Принудительное подавление вывода ошибок без должной их обработки (error_reporting(0), ini_set('display_errors',0), волшебный символ @ и пр.) Использование "псевдоконструкторов" классов, которые с версии php 5.3.3 уже не поддерживаются Использование библиотеки ereg, которая не модернизировалась с 4-й версии PHP и в 6-й версии будет вырезана Использование морально устаревшей библиотеки mssql Но это еще цветочки по сравнению с отсутствием типизации данных и недолжной обработкой входящих переменных (что может привести к SQL-инъекциям и XSS-атакам). Я не буду вдаваться в экскурс, как писать безопасные приложения, рекомендую использовать только проверенные скрипты, не пихать на рабочий сайт "новинки" пока не появятся отзывы об их использовании и аудите, каким бы шикарным не был их функционал. При появлении новых версий, обязательно обновляйте их. Примеры инъекций в существующих обвязках Рассмотрю один пример уязвимостей в веб-обвязке (регистрации), но, увы, некоторые другие регистрации и обвязки, представленные на этом сайте, имеют уязвимости. Итак, рега Уязвимый код Строка 21 if ((eregi("[^a-z0-9_-]", $login)) || (eregi("[^a-z0-9_-]", $pass)) ) { eregi - устаревшее расширение, имеющее нульбайтовую уязвимость Строки 36-37 $email = $_POST['email']; do_query("INSERT INTO account_login (name,password,originalPassword,email) VALUES ('$login','$encr_pass','$pass', '$email')","AccountServer"); Переменная email не обрабатывается никак вообще 1 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
WVWMK 121 Report post Posted July 10, 2016 А по настройке фаервола будут добавления? Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
Sareth 0 Report post Posted July 11, 2016 20 часов назад, V3ct0r сказал: с правами db_datawriter Я пытался так делать, но если не выставить еще и db_datareader, то сервер не запустится. К тому же, в первоначальной версии этого гайда, еще на мд, был описан способ, как из GroupServer убрать код, отвечающий за создание триггеров в базе, так вот те манипуляции тоже необходимо проделать, иначе ничего не заработает, я проверял это буквально вчера. Правда это был sql2012, а файлы от 2.4, но я не думаю, что в разных версиях это так сильно отличается. Quote Share this post Link to post Share on other sites
pirate 2 Report post Posted September 6, 2016 (edited) Собственно продолжая тему безопасности. Меня интересует,(как и описано в шапке) взлом через клиент игры game.exe, И что страшного в GroupServer и AccountServer? ведь можно триггеры и хранимую процедуру написать в SQL V3ct0r, давайте обсудим с вами, хочется уяснить моменты Спасибо всем, за конструктивную дискуссию. Edited September 6, 2016 by pirate Дополнение Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 14, 2016 В 06.09.2016 в 23:53, pirate сказал: Собственно продолжая тему безопасности. Меня интересует,(как и описано в шапке) взлом через клиент игры game.exe, И что страшного в GroupServer и AccountServer? ведь можно триггеры и хранимую процедуру написать в SQL V3ct0r, давайте обсудим с вами, хочется уяснить моменты Спасибо всем, за конструктивную дискуссию. Да, в гайде этот момент и еще несколько дыр не были рассмотрены. Обсуждать тут особо нечего, все уже давно разобрано и исправлено. Можете поднять архивы на MD. Если в кратце, то: AccountServer.exe Когда клиент подключается к серверу, то первым делом отправляет логин пакет, который содержит: логин, пароль, MAC-адрес клиента, версию клиента. AccountServer.exe не проверяет MAC-адрес и пишет его в базу данных как есть. Таким образом, злоумышленник может записать вместо MAC-адреса SQL-инъекцию и провести атаку на сервер. GroupServer.exe: Проблема по сути такая же. Клиент в первый раз зашел на аккаунт и ему предлагается создать секретный код. Пакет создания секретного кода состоит из одного поля (насколько я помню) - строки секретного кода в MD5 в верхнем регистре. Это поле тоже никак не проверяется. Если быть точнее, то проверяется только его длина - 32 символа. В итоге вместо секретного кода, "хакер" может записать SQL-инъекцию, и она пройдет. Аналогично с пакетом смены секретного кода. От этих уязвимостей давно есть защита: различные "фильтр-серверы", которые устанавливаются между GateServer.exe и GroupServer.exe/AccountSerever.exe и проверяют эти пакеты на SQL-инъекции. Либо можно пропатчить данные .exe и добавить в них проверку этих уязвимых полей. Так же есть исходники, так что это теперь вообще не проблема. 1 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 14, 2016 Так же мы здесь обсуждали уязвимости (Англоязычный раздел) 1 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
Chudik 12 Report post Posted October 16, 2016 (edited) Не полный гайд, по настройке sql. Во-первых, у вас ничего не запуститься. Если вы поставите права только db_datawriter. Т.к. доступа для чтения БД не будет Нужно ставить и db_datareader. Во-вторых, после выполненных выше действий. Запуститься все, кроме GroupServer. Почему? Потому GroupServer при запуске, создает триггер в БД. А при завершении, удаляет его. И т.к. у нас нет прав на григгеры, он просто закроется через несколько секунд. Что бы дать доступ ему на создание/удаление триггера, нужно выдать db_ddladmin на БД gamedb. Остальные пункты, не разбирал. Edited October 16, 2016 by Chudik 1 Quote По всем вопросам, обращайтесь [email protected] Share this post Link to post Share on other sites
Chudik 12 Report post Posted October 17, 2016 (edited) Решил немного сказать и за другие пункты. FTP и RDP можете закрыть фаерволлом (брандмауэр Windows). Т.е. разрешить подключение, только со своего ip-адреса или своей сети. И не боятся. Если же вдруг, у вас ip динамический и сетей у провайдера много (например, Ростелеком). Подключите двухфакторную авторизацию. Например, отлично с этим справляется DUO Security (бесплатно). Тогда не подтвердив подключение на телефоне, на сервер зайти будет невозможно. Это самые надежные способы на данный момент. Web сервера не ставьте на хост с игрой, это самая глупая идея! Лучше найдите и купите хостинг с поддержкой mssql в php. Слава богу, сейчас хостинги недорогие. Edited October 17, 2016 by Chudik 1 Quote По всем вопросам, обращайтесь [email protected] Share this post Link to post Share on other sites
Duduf 44 Report post Posted October 24, 2016 (edited) Схема db_datawriter действительно не включает в себя права db_datareader, поэтому вместе с db_datawriter надо добавлять также схему db_datareader. Для создания триггера не обязательно давать права DDL на всю базу, достаточно дать права на изменение таблицы character (т.к. триггер создается именно на ней) Edited October 24, 2016 by Duduf 1 Quote Share this post Link to post Share on other sites
Totoka 152 Report post Posted October 24, 2016 @Faller ^ 1 Quote Discord: andresc Share this post Link to post Share on other sites
Faller 93 Report post Posted October 24, 2016 5 hours ago, Totoka said: @Faller ^ I did not understand anything at all lmao I'll give it a try when I get to my PC, let's hope Google translate will help hahahahaha btw, thanks for remembering me =) 1 Quote Share this post Link to post Share on other sites
Спейсио 19 Report post Posted November 5, 2016 В 11.07.2016 в 00:03, V3ct0r сказал: Создайте пользователя под которым будет работать веб-обвязка (в моем случае это Webmaster) по аналогии с пользователем Gamemaster. Задайте права на базу AccountServer как db_datawriter, public, а на базу GameDB как db_datareader, public. В этом месте нужно получается ставить права одинаковые? Если судить по вышеизложенным комментам? AccountServer как db_datawriter, public, db_datareader, а на базу GameDB как db_datareader, public, db_datawriter. Quote Share this post Link to post Share on other sites
Duduf 44 Report post Posted November 5, 2016 (edited) 1 час назад, Спейсио сказал: В этом месте нужно получается ставить права одинаковые? Если судить по вышеизложенным комментам? AccountServer как db_datawriter, public, db_datareader, а на базу GameDB как db_datareader, public, db_datawriter. Для создания аккаунтов из веб-обвязки права нужны на запись на базу AccountServer, т.е. public, db_datawriter, db_datareader. Если веб-обвязка не предусматривает манипуляций с игровыми аккаунтами и персонажами (баны через сайт, переименования, запись в инвентари и пр.), то на GameDB нужно только public и db_datareader, если требуется запись, то дополнительно нужно еще db_datawriter Edited November 5, 2016 by Duduf 1 Quote Share this post Link to post Share on other sites
Спейсио 19 Report post Posted November 5, 2016 4 минуты назад, Duduf сказал: Для создания аккаунтов из веб-обвязки права нужны на запись на базу AccountServer, т.е. public, db_data_writer, db_data_reader. Если веб-обвязка не предусматривает манипуляций с игровыми аккаунтами и персонажами (баны через сайт, переименования, запись в инвентари и пр.), то на GameDB нужно только public и db_datareader, если требуется запись, то дополнительно нужно еще db_datawriter Спасибо за ответ. Quote Share this post Link to post Share on other sites
Спейсио 19 Report post Posted November 8, 2016 В 16.10.2016 в 14:59, Chudik сказал: Не полный гайд, по настройке sql. Во-первых, у вас ничего не запуститься. Если вы поставите права только db_datawriter. Т.к. доступа для чтения БД не будет Нужно ставить и db_datareader. Во-вторых, после выполненных выше действий. Запуститься все, кроме GroupServer. Почему? Потому GroupServer при запуске, создает триггер в БД. А при завершении, удаляет его. И т.к. у нас нет прав на григгеры, он просто закроется через несколько секунд. Что бы дать доступ ему на создание/удаление триггера, нужно выдать db_ddladmin на БД gamedb. Остальные пункты, не разбирал. Делал полностью по гайду сверху. Группсервер писал иероглифы какие-то в табло свое, а если сразу же запускать гейм сервера, вылезают ошибки что-то там с character. Добавил db_ddladmin, db_datareader и запустилось Quote Share this post Link to post Share on other sites
Graf 210 Report post Posted November 12, 2019 Обновить бы скриншоты.. 1 Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted November 18, 2019 On 11/12/2019 at 6:09 PM, Graf said: Обновить бы скриншоты.. Привет, @Graf! Восстановил изображения, спасибо! 1 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites