Архив автора: admin

Microsoft переносит облачные игры Xbox на ваш Samsung Smart TV

Microsoft наметила планы по запуску своего приложения Xbox TV на Samsung Smart TV, что позволит пользователям играть в игры Xbox без специальной консоли.

Партнерство направлено на то, чтобы привнести желанный игровой опыт Xbox в линейку Smart TV Samsung 2022 года, при этом приложение должно быть запущено в 27 странах. Microsoft заявляет, что этот первый набег на телевизионное пространство не будет последним, и мы предполагаем, исходя из громкого характера этого нового предприятия, у компании есть планы изучить другие партнерские отношения в области телевидения в будущем.

 

Как это работает

Xbox утверждает, что переход предложений облачных игр на телевидение должен быть плавной интеграцией, как потоковые приложения Netflix и Hulu, к которым вы привыкли. Просто войдите в приложение Xbox через Samsung Gaming Hub, войдите в свою существующую учетную запись Microsoft и подключите свой любимый контроллер с поддержкой Bluetooth, и все готово.

Те, у кого есть подписка Game Pass Ultimate, получат мгновенный доступ к сотням облачных игр, готовых к потоковой передаче. Если вы скептик и хотите более практического подхода «попробуй, прежде чем купить», Fortnite доступен для игры без членства.

По мнению генерального директора Microsoft Gaming Фила Спенсера, «мы создаем платформу, которая может охватить миллиарды игроков — будь то на консоли, на ПК или через облачную потоковую передачу Xbox — где игроки могут играть на любом устройстве, на котором они хотят играть. должны быть в состоянии найти контент, который они хотят воспроизвести».

Приложение Xbox TV будет доступно на Samsung Smart TV с 30 июня в 27 странах, а Аргентина и Новая Зеландия впервые получат доступ к облачному сервису Microsoft Xbox.



2022-06-14T00:07:56
Microsoft

Объединение сетей с помощью L2TP/IPsec на Mikrotik и Keenetic Ultra II

Появилась задача подключить к локальной сети два дополнительных удалённых офиса. Про настройку OpenVPN сервера для желающим поработать из дома или в командировке я уже рассказывал, однако перспектива выдачи каждому пользователю сети отдельного сертификата с последующей настройкой соединения меня совсем не радовала. Потому для подключения филиалов было решено пойти другим путём.




Объединять сети будем через VPN туннели по технологии L2TP/IPsec без поднятия дополнительных серверов и использования дорогостоящего оборудования, непосредственно на роутерах Mikrotik и Keenetic Ultra II. Поводом для такого объединения, помимо удобства пользователей и моей лени, послужила некорректная работа встроенного L2TP/IPsec клиента в Windows.




Как видно из схемы, пользователи в филиалах должны иметь доступ к терминальному серверу, расположенному за роутером Keenetic Ultra II. Так как на «Кинетике» уже был настроен и благополучно работал L2TP/IPsec сервер, то «Микротикам» досталась роль клиентов. Кроме того, такой вариант существенно проще в настройке, по сравнению с поднятием VPN сервера на «микротике».




Обязательное условие: адреса объединяемых сетей не должны пересекаться между собой.




Настройка L2TP VPN-сервера на роутере Keenetic




С подробностями настройки L2TP/IPsec сервера на Keenetic Ultra можно ознакомиться перейдя по этой ссылке. Там всё просто, потому не буду повторяться. В дополнение к той статье, необходимо остановиться на паре существенных моментов, без которых не возможна нормальная работа VPN туннелей:




  • Отключить NAT для клиентов, оно тут будет только мешать;




  • Снять галочку, напротив поля «Множественный вход», если она там стояла. Это позволит точно указать IP адрес, выдаваемый клиенту L2TP сервером при подключении;







  • Настроить статическую маршрутизацию.







Для удалённых филиалов я выбрал имена office_01 и оffice_02 и назначил им соответсенно статические адреса 172.16.2.35 и 172.16.2.35. Эти адреса, указываются в качестве шлюзов при создании статических маршрутов для сетей, расположенных за ними. У office_01 внутренняя сеть 192.168.11.0/24, office_02 — 192.168.0.0/24




Настройка Mikrotik в качестве клиента L2TP/IPsec




Настройку удаленного клиента начнём с добавления нового интерфейса L2TP Client в разделе интерфейсов. Указываем IP-адрес L2TP сервера, свои учётные данные и общий ключ шифрования IPSec.







Если вы думаете, что этого достаточно для успешной установки соединения с сервером, поднятом на Keenetic Ultra II, то глубоко заблуждаетесь, ибо настройка «микротов» это всегда боль и страдания. Складывается впечатление, что компания Mikrotik намеренно лишает себя прибыли. Я не понимаю, что мешает выпустить нормальные пошаговые руководства по настройке своих железок и стать ведущим игроком на рынке.




Далее требуется указать нужные алгоритмы шифрования SA (Security Association) в настройках IP->IPsec->Proposals и изменить значение параметра PFS Group с modp1024 на none.




Аббревиатура PFS расшифровывается как Perfect Forward Secrecy — что-то связанное со второй фазой обмена ключами в IPsec. Честно говоря, так глубоко в эту тему не вникал и если не ошибаюсь, то на устройствах от Apple данный параметр в настройках IPsec по умолчанию тоже выключен. В общем, чтобы канал до Keenetic Ultra II поднялся, значение параметра PFS Group должно быть none.







Также скорректируем и профиль шифрования по-умолчанию IP->IPsec->Profiles:







Нажимаем «Применить», и если мы всё сделали правильно, соединение должно быть установлено.




Туннель у нас поднялся. Осталась самая малость, чтобы компьютеры за роутером получили доступ в удалённую сеть 192.168.99.0/24, где находится терминальный сервер. Для этого необходимо добавить правило маскарада и новый статический маршрут.




Переходим во вкладку IP->Firewall->NAT:







На вкладке IP->Routes в качестве шлюза указываем созданный интерфейс l2tpMainOffice, а в поле Pref. Source – наш IP-адрес в виртуальной сети:







Аналогичным образом настраивается и клиент для второй сети.




Источник: https://mdex-nn.ru/page/l2tp-ipsec-tunnel-mikrotik-i-keenetik.html



2022-06-14T00:03:42
Network

Timeout команды в Linux

timeoutэто утилита командной строки, которая запускает указанную команду и завершает ее, если она все еще выполняется по истечении заданного периода времени. Другими словами, timeoutпозволяет запустить команду с ограничением по времени. Эта timeoutкоманда является частью пакета основных утилит GNU, который установлен практически в любом дистрибутиве Linux.




Это удобно, когда вы хотите запустить команду, которая не имеет встроенной опции тайм-аута.




В этой статье мы объясним, как использовать команду Linux timeout.




Как использовать timeoutкоманду




Синтаксис timeoutкоманды следующий:




timeout [OPTIONS] DURATION COMMAND [ARG]…




Копировать




Может DURATIONбыть положительным целым числом или числом с плавающей запятой, за которым следует необязательный суффикс единицы измерения:




  • s— секунды (по умолчанию)
  • m— минут
  • h— часы
  • d— дней




Когда единицы измерения не используются, по умолчанию используются секунды. Если для длительности установлено нулевое значение, соответствующий тайм-аут отключен.




Параметры команды должны быть указаны перед аргументами.




Вот несколько основных примеров, демонстрирующих использование timeoutкоманды:




  • Завершить команду через пять секунд:timeout 5 ping 8.8.8.8Копировать
  • Завершить команду через пять минут:timeout 5m ping 8.8.8.8Копировать
  • Завершить команду через одну минуту и ​​шесть секунд:timeout 1.1m ping 8.8.8.8Копировать




Если вы хотите запустить команду, требующую повышенных привилегий, например tcpdump , добавьте sudo перед timeout:




sudo timeout 300 tcpdump -n -w data.pcap




Отправка определенного сигнала




Если сигнал не подан, timeoutотправляет SIGTERMсигнал управляемой команде, когда достигается лимит времени. Вы можете указать, какой сигнал отправлять, используя опцию -s( ).--signal




Например, чтобы отправить SIGKILLкоманду ping через одну минуту, вы должны использовать:




sudo timeout -s SIGKILL ping 8.8.8.8




Вы можете указать сигнал по имени, например SIGKILL, или по его номеру, например 9. Следующая команда идентична предыдущей:




sudo timeout -s 9 ping 8.8.8.8




Чтобы получить список всех доступных сигналов, используйте kill -l команду:




kill -l




Уничтожение зависших процессов




SIGTERM, сигнал по умолчанию, отправляемый при превышении лимита времени, может быть перехвачен или проигнорирован некоторыми процессами. В таких ситуациях процесс продолжает выполняться после отправки сигнала завершения.




Чтобы убедиться, что отслеживаемая команда уничтожена, используйте параметр -k( --kill-after), за которым следует период времени. Когда эта опция используется после достижения заданного срока, timeoutкоманда отправляет SIGKILLуправляемой программе сигнал, который нельзя перехватить или проигнорировать.




В следующем примере timeoutкоманда выполняется в течение одной минуты, и если она не будет завершена, она будет уничтожена через десять секунд:




sudo timeout -k 10 1m ping 8.8.8.8




тайм-аут -k «./test.sh»




убит после достижения заданного срока




Сохранение статуса выхода




timeoutвозвращается 124, когда лимит времени достигнут. В противном случае он возвращает статус выхода управляемой команды.




Чтобы вернуть статус выхода команды даже при достижении лимита времени, используйте --preserve-statusопцию:




timeout --preserve-status 5 ping 8.8.8.8




Бег на переднем плане




По умолчанию timeoutзапускает управляемую команду в фоновом режиме. Если вы хотите запустить команду на переднем плане, используйте --foregroundопцию:




timeout --foreground 5m ./script.sh




Этот параметр полезен, когда вы хотите запустить интерактивную команду, требующую ввода данных пользователем.




Вывод




Команда timeoutиспользуется для запуска данной команды с ограничением по времени.




timeoutэто простая команда, которая не имеет большого количества опций. Обычно вы будете вызывать timeoutтолько с двумя аргументами: продолжительностью и управляемой командой.




Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2022-06-13T23:55:52
Утилиты командной строки

Резервное копирование PostgreSQL

В данной инструкции рассмотрены варианты и примеры создания резервных копий и восстановления баз СУБД PostgreSQL.

Все команды, которые приводятся ниже, должны выполняться из командной строки. В Linux — это окно терминала, в Windows — командная строка (cmd.exe) с переходом в папку установки PostgreSQL. Читать →

Блокирование вредоносных ботов, спама, юзер-агентов, Ransomware на Nginx

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




Наиболее распространенными атаками являются DDoS (распределенный отказ в обслуживании), захват учетных записей (ATO) и перехват контента с веб-сайтов.




Эти атаки имеют тяжелые последствия для целевых организаций и должны быть предотвращены любой ценой.




Обычно Bad Bots можно определить как программные приложения, которые выполняют автоматизированные задачи со злыми намерениями через Интернет.




Они маскируются в системе путем маскировки агентов пользователя.




Такими плохими ботами могут быть;




  • Боты или серверы, связанные с вирусами или вредоносным ПО
  • Боты для правительственного наблюдения
  • Атакующие сети ботнетов (Mirai)
  • Сайты азартных игр и порносайты
  • Сканеры уязвимостей
  • Спам-рефереры
  • Браузерное рекламное и вредоносное ПО (Yontoo и т.д.)
  • Инструменты для исследования ссылок и тестирования обратных ссылок
  • SEO компании, которые используют ваши конкуренты для улучшения своего SEO
  • Сайты хотлинк на изображения и воры изображений
  • Боты для ранжирования ссылок
  • Сборщики электронной почты
  • Сайты, связанные с выгодными вредоносными программами, рекламным ПО и Ransomware Кампании Clickjacking
  • Остановка “Ghost спама” Google Analytics




Это руководство демонстрирует, как вы можете блокировать Bad Bots, спам, User-Agents и Ransomware на Nginx.




Шаг 1 – Скачать Nginx Bad Bot Blocker




Nginx Bad Bot Blocker был разработан Митчеллом Крогом для использования в веб-сервере Nginx.




Его можно загрузить в систему Linux с помощью команды:




### С wget
wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker

### С curl
sudo curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o install-ngxblocker




🖧 В чем разница между curl и Wget?




После загрузки файла сделайте его исполняемым.




chmod +x install-ngxblocker







На системах FreeBSD пакет доступен в репозитории по умолчанию и может быть установлен с помощью команды:




pkg install www/nginx-ultimate-bad-bot-blocker




Шаг 2 – Скачайте необходимые файлы.




В других системах Linux используйте загруженный файл в каталоге /usr/local/sbin, как показано ниже:




sudo ./install-ngxblocker




Установка будет происходить следующим образом:




Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt

** Dry Run ** | not updating files | run  as 'install-ngxblocker -x' to install files.

Creating directory: /etc/nginx/conf.d
Creating directory: /etc/nginx/bots.d

REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master

Downloading [FROM]=>  [REPO]/conf.d/globalblacklist.conf            [TO]=>  /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=>  [REPO]/conf.d/botblocker-nginx-settings.conf  [TO]=>  /etc/nginx/conf.d/botblocker-nginx-settings.conf

REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master

Downloading [FROM]=>  [REPO]/bots.d/blockbots.conf              [TO]=>  /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=>  [REPO]/bots.d/ddos.conf                   [TO]=>  /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=>  [REPO]/bots.d/custom-bad-referrers.conf   [TO]=>  /etc/nginx/bots.d/custom-bad-referrers.conf
Downloading [FROM]=>  [REPO]/bots.d/bad-referrer-words.conf     [TO]=>  /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=>  [REPO]/bots.d/blacklist-ips.conf          [TO]=>  /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=>  [REPO]/bots.d/blacklist-user-agents.conf  [TO]=>  /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=>  [REPO]/bots.d/whitelist-domains.conf      [TO]=>  /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=>  [REPO]/bots.d/whitelist-ips.conf          [TO]=>  /etc/nginx/bots.d/whitelist-ips.conf

REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master

Downloading [FROM]=>  [REPO]/setup-ngxblocker      [TO]=>  /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=>  [REPO]/update-ngxblocker     [TO]=>  /usr/local/sbin/update-ngxblocker




В приведенной выше команде перечислены пакеты, которые будут загружены, теперь используйте команду с параметром -x для записи этих изменений.




sudo ./install-ngxblocker -x




Вывод:




Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt

Creating directory: /etc/nginx/conf.d
Creating directory: /etc/nginx/bots.d

REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master

Downloading [FROM]=>  [REPO]/conf.d/globalblacklist.conf            [TO]=>  /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=>  [REPO]/conf.d/botblocker-nginx-settings.conf  [TO]=>  /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK

REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master

Downloading [FROM]=>  [REPO]/bots.d/blockbots.conf              [TO]=>  /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=>  [REPO]/bots.d/ddos.conf                   [TO]=>  /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=>  [REPO]/bots.d/custom-bad-referrers.conf   [TO]=>  /etc/nginx/bots.d/custom-bad-referrers.conf...OK
Downloading [FROM]=>  [REPO]/bots.d/bad-referrer-words.conf     [TO]=>  /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=>  [REPO]/bots.d/blacklist-ips.conf          [TO]=>  /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=>  [REPO]/bots.d/blacklist-user-agents.conf  [TO]=>  /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=>  [REPO]/bots.d/whitelist-domains.conf      [TO]=>  /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=>  [REPO]/bots.d/whitelist-ips.conf          [TO]=>  /etc/nginx/bots.d/whitelist-ips.conf...OK

REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master

Downloading [FROM]=>  [REPO]/setup-ngxblocker      [TO]=>  /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=>  [REPO]/update-ngxblocker     [TO]=>  /usr/local/sbin/update-ngxblocker...OK
Setting mode: 700 => /usr/local/sbin/install-ngxblocker
Setting mode: 700 => /usr/local/sbin/setup-ngxblocker
Setting mode: 700 => /usr/local/sbin/update-ngxblocker




После загрузки необходимых файлов в нужные папки, перейдите к выполнению скриптов установки и обновления.




sudo chmod +x /usr/local/sbin/setup-ngxblocker
sudo chmod +x /usr/local/sbin/update-ngxblocker




Шаг 3 – Установка Nginx Bad Bot Blocker




Чтобы установить Nginx Bad Bot Blocker, мы запустим скрипт установки.




Этот скрипт можно запустить в DRY-MODE, чтобы показать изменения, которые он внесет, и файлы, которые он загрузит, как показано ниже.




sudo /usr/local/sbin/setup-ngxblocker




Вывод:




/etc/nginx/sites-available/ssl.no-default.conf
/etc/nginx/sites-available/no-default.conf
/etc/nginx/sites-available/wordpress.example.com.conf

Configure every file above as a vhost ? [Y/N] : Y
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt

** Dry Run ** | not updating files | run  as 'setup-ngxblocker -x' to setup files.

inserting: include /etc/nginx/conf.d/globalblacklist.conf;            => /etc/nginx/nginx.conf
inserting: include /etc/nginx/conf.d/botblocker-nginx-settings.conf;  => /etc/nginx/nginx.conf
inserting: include /etc/nginx/bots.d/blockbots.conf;                  => /etc/nginx/sites-available/wordpress.example.com.conf
inserting: include /etc/nginx/bots.d/ddos.conf;                       => /etc/nginx/sites-available/wordpress.example.com.conf

Whitelisting ip:  88.99.92.81     => /etc/nginx/bots.d/whitelist-ips.conf

Web directory not found ('/var/www'): not automatically whitelisting domains.

Checking for missing includes:

Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt

Nothing to update for directory: /etc/nginx/conf.d
Nothing to update for directory: /etc/nginx/bots.d
Nothing to update for directory: /usr/local/sbin
Setting mode: 700 => /usr/local/sbin/install-ngxblocker
Setting mode: 700 => /usr/local/sbin/setup-ngxblocker
Setting mode: 700 => /usr/local/sbin/update-ngxblocker




Чтобы внести изменения в nginx.conf, необходимо запустить скрипт с параметром -x.




sudo ./setup-ngxblocker -x




Ввыод:




/etc/nginx/sites-available/ssl.no-default.conf
/etc/nginx/sites-available/no-default.conf
/etc/nginx/sites-available/wordpress.example.com.conf

Configure every file above as a vhost ? [Y/N] : y
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt

inserting: include /etc/nginx/conf.d/globalblacklist.conf;            => /etc/nginx/nginx.conf
inserting: include /etc/nginx/conf.d/botblocker-nginx-settings.conf;  => /etc/nginx/nginx.conf
inserting: include /etc/nginx/bots.d/blockbots.conf;                  => /etc/nginx/sites-available/wordpress.example.com.conf
inserting: include /etc/nginx/bots.d/ddos.conf;                       => /etc/nginx/sites-available/wordpress.example.com.conf

Whitelisting ip:  88.99.92.81     => /etc/nginx/bots.d/whitelist-ips.conf

Web directory not found ('/var/www'): not automatically whitelisting domains.

Checking for missing includes:

Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt

Nothing to update for directory: /etc/nginx/conf.d
Nothing to update for directory: /etc/nginx/bots.d
Nothing to update for directory: /usr/local/sbin
Setting mode: 700 => /usr/local/sbin/install-ngxblocker
Setting mode: 700 => /usr/local/sbin/setup-ngxblocker
Setting mode: 700 => /usr/local/sbin/update-ngxblocker




Приведенная выше команда включает все файлы виртуальных хостов Nginx на сервере и вносит ваш Ip-адрес в белый список в файле whitelist-ips.conf.




Вы можете внести желаемые изменения, отредактировав файл /etc/nginx/bots.d/whitelist-ips.conf.




По сути, скрипт добавляет приведенные ниже утверждения “include” в ваши файлы виртуальных хостов Nginx:




Кроме того, вы можете установить блокировщик в нестандартную папку Nginx, указав их:




sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e yourname@youremail.com




После завершения проверьте синтаксис конфигурации Nginx.




$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful




Перезапустите Nginx, чтобы изменения были применены.




sudo systemctl restart nginx




Шаг 4 – Настройка автоматического обновления для блокировщика плохих ботов Nginx




Мы настроим задание Cron так, чтобы оно автоматически обновляло блокиратор, гарантируя вам последнюю версию.




Откройте файл для редактирования:




sudo crontab -e




В файле добавьте следующие строки, заменив адрес электронной почты соответствующим образом.




00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e yourname@youremail.com




Эта команда будет автоматически обновлять блокировщик каждый день в 22-00 часа.




Вы также можете выполнять обновление 3-4 раза в день, установив задачу Cron на выполнение через каждые 8 часов, как показано ниже:




00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e yourname@youremail.com




Вы также можете отключить обновления по электронной почте с помощью команды:




00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n




Шаг 5 – Настройка Nginx Bad Bot Blocker




Nginx Bad Bot Blocker может быть настроен в соответствии с вашей средой путем редактирования файлов “include”.




Хорошо то, что эти файлы не перезаписываются при обновлении.




Для редактирования доступны следующие файлы:




etc/nginx/bots.d/whitelist-ips.conf
/etc/nginx/bots.d/whitelist-domains.conf
/etc/nginx/bots.d/blockbots.conf
/etc/nginx/bots.d/blacklist-domains.conf
/etc/nginx/bots.d/blacklist-user-agents.conf
/etc/nginx/bots.d/blacklist-ips.conf
/etc/nginx/bots.d/bad-referrer-words.conf
/etc/nginx/bots.d/custom-bad-referrers.conf
/etc/nginx/bots.d/ddos.conf




Например, если вы хотите заблокировать доступ GoogleBot к вашему сайту, отредактируйте файл /etc/nginx/bots.d/blacklist-user-agents.conf, который отменяет белый список по умолчанию для GoogleBot.




Это можно сделать и для любого другого бота, внесенного в белый список.




Шаг 6 – Тестирование Nginx Bad Bot Blocker




Вы можете протестировать ваш Nginx Bad Bot Blocker из терминала на другой системе, используя ваше доменное имя, как показано ниже:




curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com




Вы также можете использовать:




curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com




Вывод:




HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Wed, 27 Apr 2022 08:57:12 GMT
Content-Type: text/html
Content-Length: 3429
Last-Modified: Thu, 10 Jun 2021 09:09:03 GMT
Connection: keep-alive
ETag: "60c1d6af-d65"
Accept-Ranges: bytes




Приведенный ниже тест должен выдать ошибку, описанную ниже:




  • curl: (52) Пустой ответ от сервера
  • curl: (56) TCP-соединение сброшено сверстником
  • curl: (92) HTTP/2 поток 0 не был закрыт чисто: PROTOCOL_ERROR (err 1).




Для проверки используйте команды ниже:




curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru




На этом мы заканчиваем данное руководство по блокированию вредоносных ботов, спама, пользовательских агентов и Ransomware на Nginx.




Вы можете внести необходимые изменения в файлы “include” для разрешения/блокирования ботов.




Источник: https://itsecforu.ru/2022/06/08/%f0%9f%8c%90-%d0%b1%d0%bb%d0%be%d0%ba%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b2%d1%80%d0%b5%d0%b4%d0%be%d0%bd%d0%be%d1%81%d0%bd%d1%8b%d1%85-%d0%b1%d0%be%d1%82%d0%be%d0%b2-%d1%81%d0%bf/



2022-06-13T23:14:24
Software

Развертывание сервера Graylog с помощью Ansible на Ubuntu/Debian/CentOS

Добро пожаловать в это руководство по развертыванию сервера Graylog на системе Ubuntu/Debian/CentOS Linux с помощью Ansible.




Graylog – это бесплатный инструмент для агрегации и управления логами с открытым исходным кодом.




Он используется для сбора, анализа, визуализации журналов и отправки оповещений.




Сервер Graylog состоит из 4 компонентов, а именно:




  • Graylog Server – сервер, который передает журналы для визуализации на веб-интерфейсе.
  • MongoDB – это сервер базы данных, используемый для хранения данных и конфигураций.
  • ElasticSearch – это инструмент анализа журналов для Graylog Server.
  • Java – обеспечивает среду выполнения для ElasticSearch.




Все эти инструменты работают вместе для достижения главной цели – агрегации и управления журналами.




Использование Ansible для развертывания сервера Graylog Server позволяет легко автоматизировать рекурсивную задачу.




Ansible, как и другие инструменты оркестрации, должен быть установлен на управляющем узле, чтобы иметь возможность управлять подключенными хостами.




Эта установка с помощью ansible в настоящее время работает в следующих системах:




  • CentOS / RHEL: CentOS 7/8, RHEL 7/8
  •  Debian: Debian 10 / Debian 9
  • Ubuntu: Ubuntu 20.04 / Ubuntu 18.04




Шаг 1. Установка и настройка Ansible




Ansible может быть установлен на управляющей ноде несколькими методами.




Самый простой способ установить его на любой дистрибутив Linux – это использование PIP.




Прежде чем приступить к этому методу, необходимо установить Python и PIP.




##На Ubuntu
sudo apt update
sudo apt install python3 python3-pip -y

##На CentOS
sudo yum install python3 python3-pip -y




Теперь используйте установленный PIP для установки Ansible.




sudo pip3 install ansible




На macOS вы можете использовать brew для установки Ansible




brew install ansible




Проверьте правильность установки.




$ ansible --version
ansible [core 2.12.4]
  config file = None
  configured module search path = ['/home/ubuntu/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/ubuntu/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
  jinja version = 2.10.1
  libyaml = True




Ansible также может быть установлен из репозиториев пакетов по умолчанию:




##На Ubuntu / Debian
sudo apt install ansible

##На CentOS
sudo yum install epel-release
sudo yum install ansible




Создайте файл инвентари хостов nsible




Этот файл состоит из хостов, управляемых Ansible.




$ sudo vim /etc/ansible/hosts
[graylog]
192.168.205.9 ansible_ssh_user=username




Замените “username” в приведенной ниже команде на имя пользователя главного хоста.




Сгенерируйте и скопируйте SSH-ключи управляемого хоста на управляющую ноду.




ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.205.9




Это позволит вам управлять добавленными хостами без пароля.




Проверьте, работает ли это:




$ ansible -m ping all
192.168.205.9 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}




Шаг 2. Установите роль Graylog Ansible




Роль Graylog Ansible позволяет установить и настроить Graylog.




Ее можно установить с помощью команды:




$ ansible-galaxy install graylog2.graylog
Starting galaxy role install process
- downloading role 'graylog', owned by graylog2
- downloading role from https://github.com/Graylog2/graylog-ansible-role/archive/3.3.7.tar.gz
- extracting graylog2.graylog to /Users/jkmutai/.ansible/roles/graylog2.graylog
- graylog2.graylog (3.3.7) was installed successfully
- adding dependency: lean_delivery.java (7.1.0)
- adding dependency: elastic.elasticsearch (main)
- downloading role 'java', owned by lean_delivery
- downloading role from https://github.com/lean-delivery/ansible-role-java/archive/7.1.0.tar.gz
- extracting lean_delivery.java to /Users/jkmutai/.ansible/roles/lean_delivery.java
- lean_delivery.java (7.1.0) was installed successfully
- extracting elastic.elasticsearch to /Users/jkmutai/.ansible/roles/elastic.elasticsearch
- elastic.elasticsearch (main) was installed successfully




Из приведенного выше результата вы заметите, что следующие зависимости были установлены.




  • Java
  • Elasticsearch




Проверьте, были ли установлены зависимости роли , используя команду:




ansible-galaxy install -r ~/.ansible/roles/graylog2.graylog/requirements.yml




Не забудьте заменить ~/.ansible/roles/graylog2.graylog/ на правильный путь к вашей роли Graylog Ansible.




Шаг 3. Развертывание сервера Graylog с помощью Ansible Roles




Создайте playbook YAML для установки сервера Graylog в одном экземпляре.




vim graylog-playbook.yaml




Файл будет содержать следующие строки:




- hosts: "graylog"
  remote_user: "username"
  become: True
  vars:
    #Elasticsearch vars
    es_major_version: "7.x"
    es_version: "7.10.2"
    es_enable_xpack: False
    es_instance_name: "graylog"
    es_heap_size: "1g"
    es_config:
      node.name: "graylog"
      cluster.name: "graylog"
      http.port: 9200
      transport.tcp.port: 9300
      network.host: "127.0.0.1"
      discovery.seed_hosts: "localhost:9300"
      cluster.initial_master_nodes: "graylog"
    oss_version: True
    es_action_auto_create_index: False

    #Graylog vars
    graylog_version: 4.2
    graylog_install_java: True
    graylog_password_secret: "ncc4jque0VvGImadZ7jzX26NrESt30dY4U4nNfZWAXubcvUGDKnMjbC4eEAU0KcfWX6CDk4ME80CrYPP9ErpvyFPXc2H2xKf" # Insert your own here. Generate with: pwgen -s 96 1
    graylog_root_password_sha2: "434e27fac24a15cbf8b160b7b28c143a67d9e6939cbb388874e066e16cb32d75" # Insert your own root_password_sha2 here.
    graylog_http_bind_address: "{{ ansible_default_ipv4.address }}:9000"
    graylog_http_publish_uri: "http://{{ ansible_default_ipv4.address }}:9000/"
    graylog_http_external_uri: "http://{{ ansible_default_ipv4.address }}:9000/"

  roles:
    - role: "graylog2.graylog"
      tags:
        - "graylog"




Не забудьте заменить сгенерированный командой graylog_password_secret:




$ pwgen -N 1 -s 96
ncc4jque0VvGImadZ7jzX26NrESt30dY4U4nNfZWAXubcvUGDKnMjbC4eEAU0KcfWX6CDk4ME80CrYPP9ErpvyFPXc2H2xKf




Также замените graylog_root_password_sha2, созданный с помощью команды:




$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d 'n' | sha256sum | cut -d" " -f1
Enter Password: Str0ngPassw0rd
434e27fac24a15cbf8b160b7b28c143a67d9e6939cbb388874e066e16cb32d75




Теперь разверните сервер Graylog.




ansible-playbook graylog-playbook.yaml

## With custom inventory file ###
ansible-playbook graylog-playbook.yaml -i myinventory




Проверьте, запущен ли Elasticsearch:




$ curl -X GET localhost:9200
{
  "name" : "graylog",
  "cluster_name" : "graylog",
  "cluster_uuid" : "O6qVFbgjQvmTDZ3j-cAVSg",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "oss",
    "build_type" : "rpm",
    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}




Развертывание кластера Graylog с помощью Ansible (необязательно для HA)




Также можно развернуть кластер Graylog с большим количеством экземпляров Elasticsearch и Graylog.




Приведенный ниже пример включает 3 экземпляра Elasticsearch и 3 экземпляра Graylog.




Начните с развертывания кластера Elasticsearch:




- hosts: "elasticsearch"
  vars:
    es_major_version: "7.x"
    es_version: "7.10.2"
    es_enable_xpack: False
    es_instance_name: "graylog"
    es_heap_size: "1g"
    es_config:
      node.name: "{{ ansible_hostname }}"
      cluster.name: "graylog"
      http.port: 9200
      transport.port: 9300
      network.host: "0.0.0.0"
      discovery.seed_hosts: "elasticsearch01:9300, elasticsearch02:9300, elasticsearch03:9300"
      cluster.initial_master_nodes: "elasticsearch01, elasticsearch02, elasticsearch03"
    oss_version: True
    es_action_auto_create_index: False

  roles:
    - role: "elastic.elasticsearch"




Затем перейдите к развертыванию экземпляров MongoDB:




- hosts: "graylog"
  vars:
    mongodb_version: "4.4"
    bind_ip: "0.0.0.0"
    repl_set_name: "rs0"
    authorization: "disabled"
  roles:
    - community.mongodb.mongodb_repository
    - community.mongodb.mongodb_mongod
  tasks:
    - name: "Start MongoDB"
      service:
        name: "mongod"
        state: "started"
        enabled: "yes"

- hosts: "graylog01"
  tasks:
    - name: "Install PyMongo"
      apt:
        update_cache: yes
        name: "python3-pymongo"
        state: "latest"
    - name: Configure replicaset
      community.mongodb.mongodb_replicaset:
        login_host: "localhost"
        replica_set: "rs0"
        members:
        - graylog01
        - graylog02
        - graylog03




Наконец, разверните экземпляр Graylog:




- hosts: "graylog"
  vars:
    graylog_is_master: "{{ True if ansible_hostname == 'graylog01' else False }}"
    graylog_version: 4.2
    graylog_install_java: False
    graylog_install_elasticsearch: False
    graylog_install_mongodb: False
    graylog_password_secret: "" # Insert your own here. Generate with: pwgen -s 96 1
    graylog_root_password_sha2: "" # Insert your own root_password_sha2 here.
    graylog_http_bind_address: "{{ ansible_default_ipv4.address }}:9000"
    graylog_http_publish_uri: "http://{{ ansible_default_ipv4.address }}:9000/"
    graylog_http_external_uri: "http://{{ ansible_default_ipv4.address }}:9000/"
    graylog_elasticsearch_hosts: "http://elasticsearch01:9200,http://elasticsearch02:9200,http://elasticsearch03:9200"
    graylog_mongodb_uri: "mongodb://graylog01:27017,graylog02:27017,graylog03:27017/graylog"

  roles:
    - role: "graylog2.graylog"




Таким образом, у вас будет кластер Graylog с 3 экземплярами Elasticsearch и 3 экземплярами Graylog.




Шаг 4. Получите доступ к веб-интерфейсу Graylog




Теперь разрешите порт 9000 на брандмауэре:




##На Firewalld
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

##На UFW
sudo ufw allow 9000/tcp




Войдите в систему, используя стандартного пользователя admin и пароль, заданный с помощью graylog_root_password_sha2.




После успешной аутентификации вы должны получить доступ.



2022-06-13T23:11:29
Software