Новости:

SMF - Just Installed!

Главное меню

Последние сообщения

#21
mikroTik / Mikrotik edit/set как удалить/...
Последний ответ от George - Март 11, 2024, 12:49
Команды для консоли MikroTik:
Переходим в нужный раздел
# Переходим в разде IP/Firewall/NAT
Код: bash
/ip firewall nat

Удаляем параметр у элемента
# Удаляем параметр "dst-address" для первого элемента в списке (номер 0):
Код: bash
unset 0 dst-address


Всё то же самое, что и выше, но одной командой:
Код: bash
/ip firewall nat unset 0 dst-address

ПАМЯТКА на всякий случай:

Вывести список элементов текущего раздела:
Код: bash
print

Установить значение dst-address для первого элемента (номер 0), находясь в разделе /ip firewall nat:
Код: bash
set 0 dst-address=192.168.88.32

Удалить значение dst-address для первого элемента (номер 0), находясь в любом разделе:
Код: bash
/ip firewall nat unset 0 dst-address
#22
mikroTik / Настройка Firewall Mikrotik
Последний ответ от George - Март 11, 2024, 11:55
Сначала дропаем всё подозрительное, ненормальное, и противоестественное, такое как invalid connection, запросы на мой DNS, листы DROP и так далее.
Далее защиты от сканера портов, от DDoS и Syn атак и т.д.
Следом правила по разграничиванию доступа, запрет ненормалых подключений по VPN....
Потом разрешающие и запрещающие правила для конкретных сетей и пользователей
Последнее правило для запрета всего остального, что не попало под правила выше.
Блокировка любителей сканировать порты:

Код: bash
>/ip firewall filter add chain=input psd=21,3s,3,1 action=add-src-to-address-list address-list=psd

Код: bash
/ip firewall raw add chain=prerouting src-address-list=psd action=drop

Так мы дропнем его навсегда

блокировка DDoS

Код: bash
/ip firewall address-list
Код: bash
add list=ddos-attackers
Код: bash
add list=ddos-target
Код: bash
/ip settings set tcp-syncookies=yes
Код: bash
/ip firewall filter
Код: bash
add chain=forward connection-state=new action=jump jump-target=detect-ddos
Код: bash
add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s
Код: bash
add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s protocol=tcp tcp-flags=syn,ack
Код: bash
add action=add-dst-to-address-list address-list=ddos-target address-list-timeout=10m chain=detect-ddos
Код: bash
add action=add-src-to-address-list address-list=ddos-attackers address-list-timeout=10m chain=detect-ddos
Код: bash
/ip firewall raw
Код: bash
add action=drop chain=prerouting dst-address-list=ddos-target src-address-list=ddos-attackers
1-3 создаем два списка адресов, в которые будут попадать спамеры и жертвы (ведь спам может быть направлен и не на вас, а на сторонний ресурс).

4 включаем кэш для отслеживания SYN-ACK пакетов.

5-10 правила определяющие кто и как часто пытается нас или через нас спамить кого-либо малыми пакетами. Если это не спам, то пакетик считается легитимным и продолжает обрабатываться в обычном режиме.

11-12 отдельная цепочка прероутинга, в которой спам начинает отбрасываться.

Особенно разжевывать или тюнить эту схему не вижу смысла - у всех будут разные задачи и разный результат, который должен получиться. В моем случае мне этого вполне достаточно. Не забудьте в IP -> Firewall поднять эти правила в самый верх. У меня еще выше этих правил стоят правила BLOCK и WhiteList - где, соответственно, черный список - это те адреса, которые мне совсем не нравятся, а белый - это список моих внешних адресов, которые нет смысла пропускать через все остальные правила фаервола. Далее должны расположиться вот эти 4 правила по отсеиванию флуда, а далее уже все остальные с пробросом к внутренним ресурсам.

#23
Настройка HAProxy Server
Чтобы начать настройку, подключитесь к серверу HAProxy по ssh и измените файл конфигурации в ./etc/haproxy/haprxy.cfg

Код: bash
sudo vi /etc/haproxy/haprxy.cfg
Чтобы назначить заголовок, добавьте следующую строку в раздел бэкенда:X-Forwarded-For

Код: vim
backend Apache2_Server
    mode http
    http-request add-header X-Forwarded-For %[src]
    http-request set-header X-Forwarded-Port %[dst_port]
Сохраните и закройте файл

Настройка веб-сервера Apache2
Затем подключите ssh remote к вашему веб-серверу Apache2 и включите модуль, набрав команду:remoteip

Код: bash
sudo a2enmod remoteip
remoteip_module – заменяет исходный IP-адрес клиента для соединения со списком IP-адресов агента пользователя, представленным сервером HAProxy. Для получения дополнительной информации>>

Если модуль remoteip не существует в вашей системе Ubuntu, то установите последнюю версию веб-сервера Apache2, используя следующее руководство:

https://linuxbeast.com/tutorials/aws/install-apache2-on-amazon-ec2-ubuntu-18-04/
После того, как вы закончите установку модуля remoteip, измените конфигурационный файл Apache2 в ./etc/apache2/apache2.conf

Код: bash
sudo vi /etc/apache2/apache2.conf
Далее добавьте в последнюю строку следующее:

Код: vim
RemoteIPHeader X-Forwarded-For
Сохраните и закройте файл.

Проверьте конфигурацию Apache2 с помощью:

Код: bash
sudo apache2ctl configtest
Если все хорошо. Затем перезапустите службу Apache2, чтобы изменения вступили в силу.

Код: bash
sudo systemctl apache2 restart
#24
В данном примере HTTPS-трафик клиентов не модифицируется (HAProxy вмешивается в транспортный уровень) и его терминация происходит непосредственно на Nginx.

haproxy.cfg

Извините, вам запрещён просмотр содержимого спойлеров.


nginx.conf

Извините, вам запрещён просмотр содержимого спойлеров.


Я этот вариант не пробовал, поскольку при таком варианте, как я понимаю, сертификат будет запрашиваться с хоста. А мне, при том, что у меня letsencrypt сертификаты обновляет сам haproxy это не удобно. Ведь на самом сервере они не обновятся, надо будет изобретать скрипт перезаписи сертификатов и перезапуска nginx))
#25
Довольно часто требуется балансировать нагрузку между несколькими веб-серверами. При этом, как правило, необходимо, чтобы веб-приложения получали реальные IP-адреса клиентов, а не IP балансировщика.

В случае балансировки и терминации HTTP(S)-трафика на HAProxy (Layer 7 [1]) данная задача легко решается добавлением заголовка "X-Real-IP" и его обработкой на Nginx при помощи модуля ngx_http_realip_module [2]. При балансировке TCP-трафика от HTTPS-клиентов и передаче его на веб-сервера напрямую без модификации или терминации (Layer 4 [3]) добавить данный заголовок невозможно, поэтому требуется воспользоваться возможностями, предоставляемыми Proxy Protocol [4, 5, 6].

Рассмотрим оба варианта (балансировка L7 и L4) на примере выдержек из конфигурационных файлов haproxy 1.5.9 и nginx 1.6.2

Балансировка на прикладном уровне (Layer 7): терминация HTTPS-трафика на HAProxy и передача по HTTPS на Nginx

В данном примере HTTPS-трафик от клиента терминируется на HAProxy, модифицируется и передается на Nginx так же по HTTPS.

Извините, вам запрещён просмотр содержимого спойлеров.




Извините, вам запрещён просмотр содержимого спойлеров.

#26
в принципе подходит для любого lvm. Но на centos 7 я столкнулся с тем, что resize2fs ошибку выдает..
Вот команда. Там файловая система xfs
Код: bash
xfs_growfs /dev/centos/root
#27
может потребоваться:
Код: bash
sudo -u www-data php8.2 occ upgrade

и выход из режима обслуживания
Код: bash
sudo -u www-data php8.2 occ  maintenance:mode --off
#28
Если нам нужно подключиться к серверу по защищенному каналу SSL/TLS, то используем для подключения команду openssl. Мы можем подключиться к портам 587 (STARTTLS) или 465 (SMTP over SSL).

а) Для подключения по порту 587:

Код: bash
openssl s_client -starttls smtp -connect smtp.yandex.ru:587

б) Для подключения по порту 465:

Код: bash
openssl s_client -connect smtp.yandex.ru:465

Далее проходим аутентификацию и можно делать отправку вышеописанными командами.
Аутентификация

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

Для этого вместо или после приветствия вводим:

Код: bash
ehlo

* EHLO — расширенное приветствие, которое позволит получить возможности почтового сервера.

В ответ мы получаем, примерно, следующее:

Цитировать250-relay.im-cloud.site Hello [192.168.0.15]
250-SIZE 10485760
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-X-ANONYMOUSTLS
250-AUTH LOGIN PLAINT
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250-XEXCH50
250-XRDST
250 XSHADOW

* в списке мы можем увидеть разные методы аутентификации (перечислены после AUTH).
Получаем base64

Данные авторизации передаются в закодированном виде с использованием стандарта Base64.

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

1. Bash:

Код: bash
echo -ne "текст" | base64

2. Powershell:

Код: powershell
[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("текст"))

3. Perl:

Код: bash
perl -MMIME::Base64 -e "print encode_base64('текст');"

4. Онлайн:

На веб-сайте base64.ru
LOGIN

При данном методе мы по очереди передаем закодированные логин и пароль.

После приветствия вводим:
Код: bash
AUTH LOGIN

В ответ получаем:

Цитировать334 VXNlcm5hbWU6

После этого отправляем логин в base64, например dmosk:

Код: bash
ZG1vc2s=

Получим ответ:

Цитировать334 UGFzc3dvcmQ6

И вводим пароль (password):

Код: bash
cGFzc3dvcmQ=

Если аутентификация прошла успешно, увидим:

Цитировать235 2.0.0 Authentication successful

Можно делать отправку.
PLAIN

Данный метод аутентификации отличается от вышеописанного тем, что логин с паролем передаются одной строкой. Base64 для них получаем следующей командой, например, в unix-shell:

Код: bash
echo -ne "\0username\0password" | base64

... или Powershell:

Код: powershell
[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("\0username\0password"))

* где username и password — логин и пароль для аутентификации; \0 — нулевой байт.

Авторизовываемся:

Код: bash
AUTH PLAIN

Видим приглашение на ввод аутентификационных данных:

Цитировать334 VXNlcm5hbWU6

Вводим нашу последовательность:

XDAwdXNlclxAZG9tYWluLnJ1XDAwcGFzc3dvcmQ=
#29
Настройки *nix (почта, web, система etc) / Обновление nextcloud
Последний ответ от George - Нояб. 24, 2023, 12:02
Обновите Nextcloud из командной строки
Метод командной строки более эффективен, и вы увидите меньше ошибок по сравнению с веб-приложением обновления. Если в вашем экземпляре Nextcloud много пользователей и файлов, вам следует использовать метод командной строки.

Перейдите в каталог установки NextCloud. (В зависимости от вашей настройки каталог установки Nextcloud может отличаться. Например, если вы настроили Nextcloud со стеком LAMP, это может быть каталог /var/www/nextcloud/. Если вы настроили Nextcloud со стеком LEMP каталогом данных может быть /usr/share/nginx/nextcloud/).

Код: bash
cd /var/www/nextcloud/
Затем запустите программу обновления на основе командной строки.

Код: bash
sudo -u www-data php8.2 updater/updater.phar --no-interaction
*Версия php может отличаться. Посмотрите версию командой:
Код: bash
php -v
www-data — это имя пользователя веб-сервера, которое может отличаться в вашей системе.
#30
Mail servers / 10. Отправка почты наружу
Последний ответ от George - Нояб. 14, 2023, 02:29
10. Отправка почты наружу

Для отправки почты на другие почтовые серверы необходимо правильно сконфигурировать сервер, чтобы письма не попадали в СПАМ. Чтобы это сделать, выполняем инструкции ниже.
Настройки DNS для сервера

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

1. rDNS. Обратная зона используется для проверки соответствия имени сервера в приветствии с именем, которое возвращает NS сервер при запросе по PTR-записи.

И так, для создания записи в обратной зоне, необходимо написать письмо Интернет провайдеру, к сети которого подключен сервер или хостеру, если почтовый сервер настроен на VPS. IP-адрес нашего сервера должен вести на имя, которым приветствуется наш postfix — можно посмотреть командой:

Код: bash
postconf -n smtpd_banner

Если мы получим пустой ответ, то вводим:

Код: bash
postconf -n myhostname

Если и в этот вариант не вернет ответ, вводим:

Цитироватьhostname

2. А-запись. Также необходимо, чтобы имя сервера, которым представляется почтовый сервер разрешалось в IP-адрес.

Для этого заходим в консоль управления зоной нашего домена и создаем запись типа А для сопоставления имени сервера с IP-адресом, на котором слушает запросы данный сервер.
Настройки DNS для домена

Для каждого домена, для которого будем отправлять почту создаем записи:

    SPF.
    DMARC.
    DKIM


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

    https://www.mail-tester.com
    https://spamtest.smtp.bz

11. Настройка DKIM

Подпись писем не является обязательной, но помогает не попадать в СПАМ. DKIM настраивается для каждого домена, а также должна создаваться специальная запись в DNS. Рассмотрим создание и настройку DKIM в amavisd.

Создаем каталог для хранения ключей:

Код: bash
mkdir -p /var/lib/dkim

Для нашего удобства создаем переменную с доменом, для которого будем создавать DKIM:

Код: bash
DOMAIN=$(hostname -d)

* где hostname -d — команда, которая вернет нам домен из имени нашего сервера. При необходимости создать dkim для другого домена, пропишем его вручную, а не с использованием команды.

Посмотреть значение полученной переменной можно командой:

echo $DOMAIN

Генерируем последовательность для нашего домена:

amavisd-new genrsa /var/lib/dkim/${DOMAIN}.pem 1024

Задаем права на созданный файл:

chown amavis:amavis /var/lib/dkim/*.pem


chmod 0400 /var/lib/dkim/*.pem

Открываем конфигурационный файл amavisd:

vi /etc/amavis/conf.d/20-debian_defaults

Редактируем запись:

#$inet_socket_port = 10024;

Код: bash
$inet_socket_port = [10024,10026];

* в данном примере мы закомментировали первую строку и раскомментировали вторую. Это укажет amavis, что он должен запускаться и работать на двух портах.

А также добавим:

Код: bash
$forward_method = 'smtp:[127.0.0.1]:10025';
$notify_method = $forward_method;
$interface_policy{'10026'} = 'ORIGINATING';
$policy_bank{'ORIGINATING'} = {
    originating => 1,
    smtpd_discard_ehlo_keywords => ['8BITMIME'],
    os_fingerprint_method => undef,
    bypass_banned_checks_maps => [1],
    bypass_header_checks_maps => [1],
    bypass_banned_checks_maps => [1],
    virus_admin_maps => ["virusalert\@$mydomain"],
};
Открываем файл:

Код: bash
vi /etc/amavis/conf.d/50-user

Добавляем записи:
Код: bash
$enable_dkim_verification = 1;
$enable_dkim_signing = 1;

dkim_key('im-cloud.site', "dkim", "/var/lib/dkim/im-cloud.site.pem");

@dkim_signature_options_bysender_maps = ( {
   "im-cloud.site" => { d => "im-cloud.site", a => 'rsa-sha256', ttl => 10*24*3600 },
});

* где im-cloud.site — домен, для которого мы настраиваем dkim; /var/lib/dkim/im-cloud.site.pem — путь до сгенерированного файла с последовательностью.

Перезапускаем amavis:

Код: bash
systemctl restart amavis

Посмотреть DKIM последовательность для нового домена можно командой:

Код: bash
amavisd-new showkeys

Мы должны увидеть что-то на подобие:

; key#1 1024 bits, i=dkim, d=im-cloud.site, /var/lib/dkim/im-cloud.site.pem
dkim._domainkey.im-cloud.site.        3600 TXT (
  "v=DKIM1; p="
  "MIGfMA0SDFqGSIb3DQEBAQUAA4GNADCBiQKBgQC44iOK+99mYBxsnIl1Co8n/Oeg"
  "4+x90sxqWzoGW42d/GCP4wiYqVqncc37a2S5Berv0OdoCGcmkDkKWh4CHhFD4blk"
  "x6eMYXsp1unAdo2mk/OVK7M2ApraIkh1jVbGBZRgNJERdF+uPOwtAbXEeRLG/Vz5"
  "zyQuIpwY2Nx3IgEMgwIDAQAB")

Теперь нам нужно на основе данного вывода создать в DNS запись TXT. В данном примере, нужно создать запись c именем dkim._domainkey в зоне im-cloud.site и значением "v=DKIM1; p=MIGfMA0SD...wIDAQAB".

Проверить корректность настройки DKIM можно командой:
Код: bash
amavisd-new testkeys

Переходим к настройке Postfix. Мы должны добавить отправку всех исходящих писем на проверку в amavis на порт 10026 и принимать обратно письма на порт 10027.

Открываем файл:

Код: bash
vi /etc/postfix/master.cf

Отредактируем submission и smtps, добавив content_filter:

Код: bash
smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=scan:[127.0.0.1]:10026
  ...

Код: bash
submission   inet  n  -  n  -  -  smtpd
  -o content_filter=scan:[127.0.0.1]:10026
  ...

Код: bash
smtps   inet  n  -  n  -  -  smtpd
  -o content_filter=scan:[127.0.0.1]:10026
  ...

И добавим:

Код: bash
127.0.0.1:10027   inet  n  -  n  -  16  smtpd
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8

Перезапускаем postfix:

Код: bash
systemctl restart postfix

Настраиваем Roundcube:
Код: bash
vi /var/www/html/webmail/config/config.inc.php

Находим строки:

$config['smtp_server'] = '';
...
$config['smtp_port'] = 25;


... и меняем ее на:

Код: bash
$config['smtp_server'] = 'tls://localhost';
...
$config['smtp_port'] = 587;

* в данном примере мы указали, что соединение для отправки почты должно быть защищенным. Это важно для нашей настройки DKIM.

Пробуем отправить письмо — в заголовках мы должны увидеть:

dkim=pass header.d=im-cloud.site
🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.