Новости:

SMF - Just Installed!

Главное меню

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

#21
mikroTik / От: Настройка Firewall Mikroti...
Последний ответ от George - Март 11, 2024, 01:05
Входим в редактирование FW
Код: bash
/ip firewall filter
Пакеты проходят по списку правил по порядку, сверху вниз. Если пакет соответствует какому-то правилу, то он прекращает движение по цепочке. Из этого следует важный вывод - первыми в цепочке должны быть правила, которые охватывают максимальный объем трафика, чтобы он дальше не обрабатывался устройством. Примером такого правила является разрешение пакетов уже установленных (established) или связанных (related) соединений, которые ранее были разрешены каким-то правилом. Повторно проверять по всем правилам их не нужно. Сделаем такое правило для цепочки input - входящие соединения роутера.
Код: bash
add action=accept chain=input comment="accept establish & related" connection-state=established,related
Отбрасываем все неверные (Invalid) пакеты
Код: bash
add action=drop chain=input comment="drop invalid" connection-state=invalid
Разрешаем ICMP (ping). У меня он обычно закрыт (drop)
Код: bash
add action=accept chain=input comment="accept ICMP" protocol=icmp
Создаем заключительное правило для цепочки input, которое будет блокировать все запросы, пришедшие не из локальной сети. В моем примере у меня локальная сеть подключена к бриджу bridge1-lan. В него входят все порты, подключенные в локалку.
Код: bash
add action=drop chain=input comment="drop all not from lan" in-interface=!bridge1-lan
На текущий момент мы запретили все запросы из вне к роутеру, кроме пингов. При этом доступ из локальной сети полный. Настроим теперь правила для транзитного трафика цепочки forward. Здесь по аналогии с input первыми идут правила для established, related, invalid пакетов.
Код: bash
add action=accept chain=forward comment="accept established,related" connection-state=established,related
Код: bash
add action=drop chain=forward comment="drop invalid" connection-state=invalid
Теперь запретим все запросы из внешней сети, связь с которой через интерфейс ether1-wan к локальной сети. dstnat это проброс портов, о нем отдельная тема.
Код: bash
add action=drop chain=forward comment="drop all from WAN to LAN" connection-nat-state=!dstnat connection-state=new in-interface=ether1-wan
Разрешаем 80 и 443 порты из локальной сети:
Код: bash
add action=accept chain=forward comment="accept http & https from LAN" dst-port=80,443 in-interface=bridge1-lan out-interface=ether1-wan protocol=tcp
И разрешаем 53 (DNS) порт
Код: bash
add action=accept chain=forward comment="accept dns from LAN" dst-port=53 in-interface=bridge1-lan out-interface=ether1-wan protocol=udp
Все остальное отбрасываем
Код: bash
add action=drop chain=forward comment="drop all from LAN to WAN" in-interface=bridge1-lan out-interface=ether1-wan
#22
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
#23
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 правила по отсеиванию флуда, а далее уже все остальные с пробросом к внутренним ресурсам.

#24
Настройка 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
#25
В данном примере HTTPS-трафик клиентов не модифицируется (HAProxy вмешивается в транспортный уровень) и его терминация происходит непосредственно на Nginx.

haproxy.cfg

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


nginx.conf

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


Я этот вариант не пробовал, поскольку при таком варианте, как я понимаю, сертификат будет запрашиваться с хоста. А мне, при том, что у меня letsencrypt сертификаты обновляет сам haproxy это не удобно. Ведь на самом сервере они не обновятся, надо будет изобретать скрипт перезаписи сертификатов и перезапуска nginx))
#26
Довольно часто требуется балансировать нагрузку между несколькими веб-серверами. При этом, как правило, необходимо, чтобы веб-приложения получали реальные 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.

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




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

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

и выход из режима обслуживания
Код: bash
sudo -u www-data php8.2 occ  maintenance:mode --off
#29
Если нам нужно подключиться к серверу по защищенному каналу 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=
#30
Настройки *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 — это имя пользователя веб-сервера, которое может отличаться в вашей системе.
🡱 🡳

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