Tinyproxy — это прокси HTTP/HTTPS. Это легкий, быстрый, очень простой в настройке прокси-сервис с открытым исходным кодом. Tinyproxy также можно настроить как обратный прокси. Его удобно использовать в качестве небольшого прокси с меньшим количеством системных ресурсов, потому что он очень легкий.
Архив рубрики: Публикации
Шифрование в состоянии покоя в MariaDB
Неактивное шифрование предотвращает доступ злоумышленника к зашифрованным данным, хранящимся на диске, даже если у него есть доступ к системе. Базы данных с открытым исходным кодом MySQL и MariaDB теперь поддерживают функцию шифрования в состоянии покоя, которая отвечает требованиям нового законодательства ЕС о защите данных. Шифрование MySQL в состоянии покоя немного отличается от MariaDB, поскольку MySQL обеспечивает шифрование только для таблиц InnoDB. В то время как MariaDB также предоставляет возможность шифровать файлы, такие как журналы повторного выполнения, журналы медленных операций, журналы аудита, журналы ошибок и т. д. Однако оба они не могут зашифровать данные в ОЗУ и защитить их от вредоносного корня.
В этой статье мы научимся настраивать шифрование на уровне базы данных для MariaDB.
Начиная
Для шифрования данных в состоянии покоя требуется плагин шифрования вместе с управлением ключами. Плагин шифрования отвечает за управление ключом шифрования, а также за шифрование/дешифрование данных.
MariaDB предоставляет три решения для управления ключами шифрования, поэтому то, как ваши базы данных управляют ключом шифрования, зависит от используемого вами решения. В этом руководстве будет продемонстрировано шифрование на уровне базы данных с помощью решения MariaDB File Key Management. Однако этот плагин не поддерживает функцию ротации ключей.
Если вы используете сервер LAMP, файлы для добавления этого плагина находятся в каталоге «/opt/lamp». В противном случае изменения вносятся в папку «/etc/mysql/conf.d».
Создание ключей шифрования
Перед шифрованием базы данных с помощью плагина управления ключами файлов нам необходимо создать файлы, содержащие ключи шифрования. Мы создадим файл с двумя частями информации. Это ключ шифрования в шестнадцатеричном формате вместе с 32-битным идентификатором ключа.
Мы создадим новую папку «keys» в каталоге « /etc/mysql/» и воспользуемся утилитой OpenSSL для случайной генерации трех шестнадцатеричных строк и перенаправления вывода в новый файл в папке ключей. Введите следующие команды:
ubuntu@ubuntu:~$ sudo mkdir /etc/mysql/keys ubuntu@ubuntu:~$ echo -n "1;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys" ubuntu@ubuntu:~$ echo -n "2;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys" ubuntu@ubuntu:~$ echo -n "3;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"
Где 1,2,3 — ключевые идентификаторы; мы включаем их, чтобы создать ссылку на ключи шифрования, используя переменную innodb_default_encryption_key_id в MariaDB. Выходной файл будет выглядеть так:
1;01495ba35e1c9602e14e40bd6de41bb8 2;3cffa4a5d288e90108394dbf639664f8 3;9953297ed1a58ae837486318840f5f1d
Шифрование ключевого файла
Мы можем легко установить системную переменную file_key_management_filename с соответствующим путем внутри плагина File Key Management. Но оставлять ключи в виде обычного текста небезопасно. Мы можем до некоторой степени снизить риск, назначив права доступа к файлам, но этого недостаточно.
Теперь мы зашифруем ранее созданные ключи, используя случайно сгенерированный пароль. Напротив, размер ключа может варьироваться от 128/192/256 бит.
ubuntu@ubuntu:~$ openssl rand -hex 192> /etc/mysql/keys/enc_paswd.key
Поэтому мы будем использовать OpenSSL ENC команду в терминале для шифрования enc_key.txt файл enc_key.enc, с помощью ключа шифрования , созданного выше. Кроме того, MariaDB поддерживает только режим CBC AES для шифрования ключей шифрования.
ubuntu@ubuntu:~$ openssl enc -aes-256-cbc -md sha1 -pass file:/etc/mysql/keys/enc_paswd.key -in /etc/mysql/keys/enc_key.txt -out /etc/mysql/keys/enc_key.enc && sudo rm /etc/mysql/keys/enc_key.txt
Мы также удаляем наш файл enc_keys.txt, поскольку он больше не нужен. Кроме того, мы всегда можем расшифровать наши данные в MariaDB, если наш файл паролей в безопасности.
Настройка плагина управления файловыми ключами
Теперь мы настроим MariaDB с помощью плагина File Key Management, добавив следующие переменные в файл конфигурации. Файлы конфигурации обычно находятся в ‘/etc/mysql’ и по умолчанию читают все файлы .cnf. Или вы можете создать новый файл конфигурации «mariadb_enc.cnf» в каталоге /etc/mysql/conf.d/.
Теперь ваш файл конфигурации может выглядеть совершенно иначе. Однако добавьте эти переменные шифрования в [sqld]. Если ключ зашифрован, плагину требуется настроить две системные переменные, то есть file_key_management_filename и file_key_management_filekey.
[sqld] #File Key Management Plugin plugin_load_add=file_key_management file_key_management = ON file_key_management_encryption_algorithm=aes_cbc file_key_management_filename = /etc/mysql/keys/enc_keys.enc file_key_management_filekey = /etc/mysql/keys/enc_paswd.key # InnoDB/XtraDB Encryption Setup innodb_default_encryption_key_id = 1 innodb_encrypt_tables = ON innodb_encrypt_log = ON innodb_encryption_threads = 4 # Aria Encryption Setup aria_encrypt_tables = ON # Temp & Log Encryption encrypt-tmp-disk-tables = 1 encrypt-tmp-files = 1 encrypt_binlog = ON
Вы можете найти подробную информацию о каждой системной переменной на официальном сайте MariaDB.
Защита файла паролей
Мы изменим права доступа к каталогу MySQL, чтобы защитить пароль и другие конфиденциальные файлы. Право собственности на MariaDB будет изменено на текущего пользователя, которым в Ubuntu является mysql.
sudo chown -R mysql:root /etc/mysql/keys sudo chmod 500 /etc/mysql/keys/
Теперь мы изменим пароль и права доступа к зашифрованным файлам на
sudo chown mysql:root /etc/mysql/keys/enc_paswd.key /etc/mysql/keys/enc_key.enc sudo chmod 600 /etc/mysql/keys/enc_paswd.key /etc/mysql/keys/enc_key.enc
Теперь перезапустите службу базы данных.
sudo service mysql restart
Вывод
В этой статье мы узнали, как шифрование на уровне базы данных является актуальной задачей и как мы можем настроить шифрование в состоянии покоя в MariaDB. Единственным недостатком плагина File Key Management является то, что он не поддерживает ротацию ключей. Однако, помимо этого подключаемого модуля, существует множество других решений для шифрования управления ключами, например подключаемый модуль AWS Key Management и подключаемый модуль Eperi Key Management. Вы можете найти более подробную информацию об этих плагинах на официальном сайте MariaDB.
MikroTik – подключение флэшки.
Рассмотрим способ организации общей сетевой папки небольшого размера, расположенной на флэшке. Для этих целей используется роутер MikroTik Rb750Gr3 с прошивкой 6.47.7 и самая обычная флэшка на 8Gb.
Освоить MikroTik Вы можете с помощью онлайн-куса
«Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Базовая настройка роутера выполнена по этой инструкции.
Вставляем флэшку в USB разъем на корпусе роутера.

Входим в меню MikroTik через WinBox и переходим на вкладку Files.
В списке файлов видим все содержимое флэшки. Кирилический алфавит не воспроизводится. 
Переходим в раздел меню System >> Disks
Видим отсутствие дисков.

Вводим команду в терминале.
|
1
| /disk print |

Видим, что диск все таки есть, но не отображается.
Можно вывести список файлов на диске
|
1
| /file print |

Отформатируем флэшку в Fat32. Для этого сперва нужно отсоединить ее, указав номер диска, в данном случае 0.
|
1
| /disk eject—drive 0 |
Далее вводим команду.
|
1
| /disk format—drive 0 file—system=fat32 label=PC360—USB |
Начнется форматирование флэшки.
Когда мы увидим надпись formatted: 100% можно еще раз вывести список дисков командой
|
1
| /disk print |

После этих действий флэшка начала корректно отображаться в графическом интерфейсе.

Для форматирования в графическом интерфейсе последовательность такая же, как и в командном терминале: сперва нажимаем Eject Drive, затем Format Drive. Далее выбираем диск, файловую систему, метку и нажимаем старт. 
*форматирование не является обязательным действием если файловая система fat32 или ext3
Общий доступ через SMB.
Активация SMB.
Переходим в 1 IP >> 2 SMB
Выполняем следующие настройки:
3.Enable – отмечаем галочкой (активация SMB).
4.Domain: WORKGROUP имя локальной сети или домена.
5.Comment: комментарий.
6.Allow Guests: разрешение для доступа гостей (в нашем случае отключено, т.к. папка нужна для админов).
7.Interfaces: bridge1 (мост в котором 4 порта локальной сети).
8.Нажимаем кнопку Apply для сохранения настроек. 
Через командную строку терминала:
|
1
| /ip smb set enabled=yes domain=WORKGROUP allow—guests=no interfaces=bridge1 |
Настройка общей папки.
В окне SMB Settings нажимаем кнопку Shares и на + создаем новую общую папку.
1.Name: share1 – имя латинскими буквами, можно оставить по умолчанию.
2.Directory: disk1/PC360 путь к будущей общей папке и ее название.
(Max Sessions – максимальное количество подключений.)
3.Нажимаем кнопку ОК.

Через командную строку терминала:
|
1
| /ip smb shares add name=share1 directory=usb1/PC360 |
В списке файлов появится созданная папка.

Настройка пользователей.
В окне SMB Settings нажимаем кнопку Users и выполняем настройки.
1.Нажимаем +
2.Name: admin111 (имя пользователя латинскими буквами)
3.Password: 12345Password (пароль доступа)
4.Read Only – убираем галочку (будет разрешено чтение и запись).
5.Нажимаем ОК. 
Через командную строку терминала:
|
1
| /ip smb users add name=admin111 password=12345Password read—only=no |
Проверим наличие общей папки в сети. В адресной строке ПК вводим IP-адрес роутера в локальной сети. Папка видна в общем доступе. 
К общей папке имеют доступ только те пользователи, которые правильно введут учетные данные.
Так же к папке можно подключиться по ftp. Вводим в адресной строке IP-адрес роутера с ftp префиксом ftp://192.168.111.1 затем вводим логин и пароль администратора роутера (НЕ от созданного пользователя SMB). Видим общую папку. Для доступа можно использовать сторонние программы, например Total Commander. 
*в меню роутера должен быть активирован доступ по ftp (IP >> Services >> ftp), обычно он активирован по умолчанию
Освоить MikroTik Вы можете с помощью онлайн-куса
«Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Linux. Создание загрузочной флешки для Windows
В начале этого века для установки дистрибутивов Linux на персональный компьютер требовалось знать несколько десятков команд. Неопытный пользователь был не в состоянии установить систему «в один клик», как это можно было сделать с Windows. Теперь всё изменилось с точностью наоборот. Поэтому сохраняю инструкцию по установке Windows. Читать
How to Secure MikroTik RouterOS Login Users
MikroTik RouterOS usually sits between WAN and LAN of any network. WAN network is always an insecure network because attackers always try to hack RouterOS so that they can compromise it for their own benefit. If any hacker can compromise MikroTik RouterOS, he can damage RouterOS as well as associated network. As a network administrator, we should always take anti hacking steps to secure MikroTik RouterOS. There are a lot of security tasks those we should take care to harden MikroTik RouterOS. Among these security tasks, we studied how to secure RouterOS login services which are enabled by default. In this article, we will see how to secure MikroTik RouterOS login users from being hacked easily.
Why Do We Need to Harden Login Users?
Because hackers usually try to login RouterOS using username and password if they don’t exploit any vulnerability in RouterOS Firmware. So, we have to harden login users as much as possible so that hackers cannot guess username and password so easily. There are various techniques to harden login users in MikroTik RouterOS. In the following sections we will see some best practices to harden MikroTik RouterOS login users.
Removing Default Username and Password
Default username and password is a common vulnerability to any application because by default any application comes with a default username and password to access it first time so easily. Default username and password is usually known by anyone including hackers and we often forget to remove or modify default username and password. Hackers or any tool (used to login to any application) use default username and password at first to compromise it.
Like other application MikroTik RouterOS comes with a default username admin and black password. As admin user is known to all, it is best practice to remove admin user from RouterOS so that none can use admin user to login MikroTik RouterOS. However, if you wish to keep admin user anyway, don’t forget to set a strong password for admin user. It will also be better to limit admin user access from specific IP addresses.
Making Strong Password for Write and Full Permission Users
Hackers usually do brute forcing using various tools to discover username and password of RouterOS. Tools usually use character combination to find used username and password. So, if we use strong username and password combination, it will take so much time to disclose username and password of RouterOS.
MikroTik RouterOS has three types of login users. These are read, write and full permission user. Read permission users cannot do anything in RouterOS configuration. But can read anything. So, we should be careful enough to set strong username and password for read permission user. Write permission users can alter RouterOS configuration. So, we should be more careful to set strong username and password for the write permission users. It will also be best practice to limit write permission user access from specific IP addresses. Full permission users can do anything in RouterOS. So, we should pay special care to set strong username and password for the full permission users. Never forget to limit full permission user access from specific IP addresses.
Login user can easily be made strong by using long character username and password. It is best practices to use password more than 10 characters long and to use character, numeric and alpha numeric values in password.
Applying User Access from Specific IP Address
MikroTik RouterOS has an awesome feature to limit user access from specific IP address. If we apply IP based user access restriction, user will only be able to login from specific IP addresses. So, user will be secure and hackers will hardly be able to login using user credential.
It is best practice to enable IP based user access for the full permission users and also write permission users. The following steps will show how to apply IP based user access in MikroTik RouterOS.
- Login MikroTik Router using Winbox with full permission user.
- Go to System > Users menu item. User List windows will be appeared.
- Click on Users tab and then double click on any user who will be restricted by IP address. User property window will be appeared.
- From user property windows, click on Allowed Address input box and put your desired IP Address or IP Block from where user will be permitted.
- Click Apply and OK button.

The user will now be restricted and can only be accessible from the desired IP address. Similarly we can enable IP based access for the other users.
Besides enabling IP based user restriction we should be careful enough to restrict login services from specific IP address. Then, MikroTik RouterOS will be more harder but don’t forget to write down applied restriction. If you forget your applied policy, you will never access RouterOS.
How to secure MikroTik RouterOS login users by enabling IP based user access has been discussed in this article. I hope, you will now be able to harden RouterOS login users from the hackers and keep safe. However, if you face any confusion to apply IP based user restriction, feel free to discuss in comment or contact me from Contact page. I will try my best to stay with you.
Как заблокировать хотлинкинг с помощью Nginx
Nginx — это легкий веб-сервер, способный обрабатывать огромное количество запросов в определенный момент времени, не загружая сервер. Он содержит сложные функции, такие как асинхронная обработка, поддержка ipv6, загрузчик кеша, поддержка http/2, горячая ссылка на блоки, пулы потоков, SPDY и SSL и многое другое. Среди них одна из самых важных функций для любого веб-сайта в целом — это блокировка хотлинкинга. Горячие ссылки — это злонамеренная практика, часто применяемая некоторыми мелкими веб-мастерами, когда они не могут позволить себе стоимость полосы пропускания и, таким образом, в конечном итоге берут ее откуда-то еще. Это мешает законным веб-мастерам использовать пропускную способность, за которую они заплатили. Вдобавок к этому связанный ресурс может быть недоступен для пользователей, которые посещают исходный веб-сайт, когда полоса пропускания, выделенная для исходного веб-мастера, исчерпана, а владелец сайта не платил за чрезмерно потребляемую пропускную способность. В общем, чтобы сохранить целостность, горячие ссылки на веб-сайты должны быть недоступны, и в этой статье рассказывается, как это легко сделать.
Подготовка
В подготовительном сегменте общие инструкции для обоих указанных ниже методов отменяются. Очевидно, что важно иметь консоль для доступа к серверу через SSH и правильный текстовый редактор, например nano, для открытия файла конфигурации Nginx. Как только оба будут получены, используйте следующие команды, чтобы открыть, сохранить и применить изменения. Следующие шаги предполагают, что пользователь уже получил доступ к серверу через SSH.
- Введите следующую команду, чтобы открыть файл конфигурации Nginx по умолчанию. Если у каждого домена есть отдельный файл конфигурации, используйте его имя вместо имени по умолчанию.
nano /etc/nginx/sites-available/default
- В файле по умолчанию или в файле конфигурации введите коды, указанные в одном из указанных ниже методов. Обязательно используйте только один из них.
- Используйте следующую команду, чтобы проверить файл конфигурации перед его переводом в рабочий режим.
nginx -t
- Если все в правильном порядке, введите следующую команду, чтобы изменения вступили в силу.
sudo systemctl restart nginx
Метод 1: Общий метод
Общий метод очень легко реализовать и понять, поскольку он содержит только блок местоположения. Кроме того, он блокирует запросы только к определенным форматам файлов вместо того, чтобы блокировать каждый запрос от недействительных ссылок на сервер.
- Скопируйте следующий фрагмент кода.
- Откройте файл nginx по умолчанию, как показано на этапе «Подготовка».
- Вставьте скопированный фрагмент кода под первый блок местоположения, найденный в файле по умолчанию. В nginx нечувствительность к регистру в регулярном выражении (~*) всегда имеет приоритет перед прямой косой чертой (/), и поэтому следующий фрагмент кода выполняется перед блоком местоположения прямой косой черты.
- Сохраните и закройте файл по умолчанию, а затем выполните 3, 4 шага на этапе «Подготовка», чтобы изменения вступили в силу.
В следующем примере он блокирует запросы к файлам css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf и eot. В блоке местоположения есть 10 условных операторов. Первый условный оператор позволяет напрямую просматривать ресурсы через веб-браузер, 2- й и 3- й блоки позволяют просматривать ресурсы через исходный сайт (как голые, так и субдомены www), остальные блоки, кроме поиска? q и последний блок позволяют сканерам поисковых систем получать доступ и индексировать ресурсы, что очень важно для индексации изображений как в изображениях Google, так и в изображениях Bing. Поиск? Q позволяет службе кеширования Google получать доступ и сохранять ресурсы вместе со страницей, и, таким образом, страница может быть доступна непосредственно через результат поиска Google, когда сайт находится в автономном режиме.
location ~* .(css|gif|ico|jpeg|jpg|js|png|woff|woff2|ttf|ttc|otf|eot)$ {
if ($http_referer !~ "^$"){
set $rule_0 1$rule_0;
}
if ($http_referer !~ "^http://nucuta.com/.*$"){
set $rule_0 2$rule_0;
}
if ($http_referer !~ "^http://nucuta.com$"){
set $rule_0 3$rule_0;
}
if ($http_referer !~* "google."){
set $rule_0 4$rule_0;
}
if ($http_referer !~* "search?q=cache"){
set $rule_0 5$rule_0;
}
if ($http_referer !~* "msn."){
set $rule_0 6$rule_0;
}
if ($http_referer !~* "yahoo."){
set $rule_0 7$rule_0;
}
if ($http_user_agent !~* "googlebot"){
set $rule_0 8$rule_0;
}
if ($http_user_agent !~* "msnbot"){
set $rule_0 9$rule_0;
}
if ($http_user_agent !~* "slurp"){
set $rule_0 10$rule_0;
}
if ($http_referer !~* "yandex."){
set $rule_0 11$rule_0;
}
if ($rule_0 = "10987654321"){
return 403;
break;
}
}
Метод 2: метод Valid_Referers
Действительные рефералы — это наиболее удобный и широко признанный метод простой блокировки недействительных рефереров. Он содержит всего две строки по сравнению с предыдущим методом и очень гибкий. Однако его немного сложно переварить, поскольку в нем используются регулярные выражения и другой механизм для блокировки запросов от недопустимых референтов.
- Скопируйте следующий фрагмент кода в середину и в самое начало основного блока местоположения.
- Замените список доменных имен разрешенными доменными именами, например google, bing, или вашими собственными доменами и т. Д.
- Сохраните и закройте файл по умолчанию, а затем выполните 3, 4 шага на этапе «Подготовка», чтобы изменения вступили в силу.
valid_referers нет заблокированных server_names
*.linux.com linux.* www.linux.com/about/
~.linux.;if ($invalid_referer) {
return 403;
}
В основном он имеет два блока кода, valid_referers и условное выражение if с переменной invalid_referer. По умолчанию этот блок кода используется между и в самом начале блока местоположения перед выполнением любого другого кода, но его можно использовать и в любом другом месте, например, между блоком кода местоположения с регулярными выражениями для обнаруживать определенные форматы файлов, чтобы сделать блокировку релевантной для вышеупомянутых форматов файлов, как в методе 1. Как объяснялось ранее, метод содержит только два блока кода, первый блок кода содержит 3 ключевых слова, первое — «нет», когда Поле referer отсутствует в HTTP-запросе, второе поле «блокируется», когда поле referer удаляется какой-либо промежуточной стороной, такой как прокси, брандмауэр и т. д., третье ключевое слово предназначено для указания действительных доменных имен.
Когда имя домена начинается с символа «~», оно рассматривается как регулярное выражение, и поэтому могут использоваться очень сложные шаблоны, но может быть трудно понять, если регулярные выражения известны недостаточно хорошо. Если ни одно из условий не выполняется в операторе valid_referers, переменная invalid_referer устанавливается в пустую строку, в противном случае она устанавливается в 1, что это означает, если поступающий запрос не содержит поля referer или если nginx определил, что поле referer удалено брандмауэром или прокси-сервером, или если в поле referer заданы указанные домены (список допустимых доменных имен), то для недопустимой переменной referer устанавливается пустая строка, и, следовательно, ее условие if не выполняется. Однако, если запрос поступает из домена, который не указан в выражении valid_referers как допустимый домен, он блокируется.
ВЫВОД
Обязательно примите во внимание этот контент и не допускайте ссылок на свои сайты, размещенные на Nginx.