[Настройка] Настраиваем KeenDNS от Zyxel правильно

Описание настройки чего либо

Модераторы: immortal, newz20

Ответить
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 898 раз

[Настройка] Настраиваем KeenDNS от Zyxel правильно

Сообщение SmoKE_xDDD » Ср июл 17, 2019 4:11 pm

Привет всем! Обожаю роутеры от Zyxel и считаю их лучшими за свои деньги.
У меня стоит Keenetic AIR со всеми нужными мне функциями: SNMP, удаленный лог, VPN и самое главное - бесплатный сервис доменных имен KeenDNS.
KeenDNS - это бесплатный сервис от Zyxel (Читать как keenetic :)) который превращает ваш "серый" IP в доменное имя вида: mydomen.keenetic.pro и это все бесплатно. Конечно у него есть плюсы и минусы:
Плюсы сервиса:
  • Бесплатно
  • С SSL сертификатом тоже бесплатно
  • Просто и быстро настроить
Минусы сервиса:
  • Периодически "падает" сервак Zyxel и домен становится недоступным
  • При входе через домен вы имеете IP роутера (Как правило: 192.168.1.1). Вот этот минус и будем исправлять...
Соответственно, если вы просто создадите себе домен - то все будет работать, но есть риск, что помимо вас - вашим светом будет управлять кто нибудь еще :) Авторизация в файле config.php не сработает, т.к. при входе через домен пользователь имеет фактический IP роутера (Можете проверить сами, посмотрите переменную $_SERVER['REMOTE_ADDR']) и MJDM будет считать, что этот пользователь из локальной сети.
Чтобы избавится от этой напасти - нужно закрыть каталог /var/www/ + каталог phpmyadmin от IP 192.168.1.1, а всем остальным в локальной сети разрешить.

Использовать будем Basic авторизацию Apache (Инструкция для Linux):
1) Стандартно настраиваем KeenDNS
2) Открываем консоль и пишем:

Код: Выделить всё

sudo nano /etc/apache2/.htpasswd
Откроется редактор, пока его не трогаем. Открываем генератор пароля, например: ссылка, не реклама :) и генерируем себе пароль, вида: admin:$apr1$cfp/Lzoi$xh9L/arBwlq4FkCeYHNhg0
Копируем и вставляем в терминал. CTRL+O сохранить, CTRL+X - выйти из nano
3) Открываем /var/www/html и в нем файл .htaccess и добавляем туда вот такие строки:

Код: Выделить всё

AuthUserFile /etc/apache2/.htpasswd #стандартный путь до htpasswd, можно изменить на свой
AuthName "Please Log In"
AuthType Basic
require valid-user
Order allow,deny
allow from all
Deny from 192.168.1.1
satisfy any
По факту, каталог с mjdm закрыт авторизацией для IP 192.168.1.1, для всех остальных открыт.
4) Закрыть phpmyadmin чуть сложнее. Сначала откроем конфиг phpmyadmin для апача:

Код: Выделить всё

sudo nano /etc/phpmyadmin/apache.conf
И там изменим несколько параметров в <Directory /usr/share/phpmyadmin>:

Код: Выделить всё

Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
Сохраняем и выходим.
5) Открываем каталог /usr/share/phpmyadmin и туда закидываем файл .htaccess с таким же содержимым, которое было выше.

Все! Готово! Каталоги закрыты Basic авторизацией.
Если в чем то неправ или есть еще критические каталоги, которые нужно закрыть - дайте знать :)
За это сообщение автора SmoKE_xDDD поблагодарили (всего 5):
Sergey.Chek (Ср июл 17, 2019 6:45 pm) • skysilver (Ср июл 17, 2019 9:03 pm) • ferrumlogic (Чт июл 18, 2019 12:40 pm) • Chainik (Вт сен 22, 2020 6:22 pm) • slgeo (Ср дек 07, 2022 10:50 pm)
Рейтинг: 5.81%
Teo
Сообщения: 19
Зарегистрирован: Сб фев 11, 2017 9:07 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: [Настройка] Настраиваем KeenDNS от Zyxel правильно

Сообщение Teo » Пт июл 19, 2019 9:49 pm

В конце этой статьи есть настройка keenetic для установки паролей, я ещё не проверял и проверить получится не скоро.
https://help.keenetic.com/hc/ru/article ... %B8%D1%85-
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 898 раз

Re: [Настройка] Настраиваем KeenDNS от Zyxel правильно

Сообщение SmoKE_xDDD » Пт июл 19, 2019 10:13 pm

Teo писал(а):
Пт июл 19, 2019 9:49 pm
В конце этой статьи есть настройка keenetic для установки паролей, я ещё не проверял и проверить получится не скоро.
https://help.keenetic.com/hc/ru/article ... %B8%D1%85-
Да но есть "но", в этом случае вы не сможете отследить юзера по логину $_SERVER['REMOTE_USER'] например для логирования действий. Так например у меня жена с работы светом баловалась и я не понимал, что у меня заглючило в системе )
Ну и само собой придется всей семье дать пароль от роутера)
V.A.S.t
Сообщения: 258
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 15 раз
Поблагодарили: 58 раз

Re: [Настройка] Настраиваем KeenDNS от Zyxel правильно

Сообщение V.A.S.t » Пн июл 22, 2019 8:28 am

Юзера отследить и правда не получится, но пароль от админа на роутер давать не придется - можно создать бесправного пользователя на роутере и авторизоваться под ним.
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: [Настройка] Настраиваем KeenDNS от Zyxel правильно

Сообщение ZyaK » Пн июл 22, 2019 8:42 am

тоже юзаю кенетик гига 3, периодически отваливается, лечу методом закрытия доступа с последующем открытием. отвал как то надо лечить на уровне роутера, то ли таймер какой то там ставить и перезапускать раз в сутки
PI2 + MQTT + 5 ESP8266 + Atmega16
V.A.S.t
Сообщения: 258
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 15 раз
Поблагодарили: 58 раз

Re: [Настройка] Настраиваем KeenDNS от Zyxel правильно

Сообщение V.A.S.t » Пт фев 04, 2022 4:08 am

Озадачился данной темой на NGINX. Но с дополнительным условием - разрешением доступа к некоторым файлам без авторизации. Несколько дней гугления привели к такому результату конфига:
majordomo.conf:

Код: Выделить всё

server {
    listen 80 default_server;
    listen [::]:80;
    listen 443 ssl default_server;
    listen [::]:443 ssl;
    ssl_certificate /etc/letsencrypt/live/majordomo.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/majordomo.ru/privkey.pem;
    server_name majordomo.ru 127.0.0.1;
    charset utf-8;
    client_max_body_size 150M;
    access_log  off;
    error_log  /var/log/nginx/majordomo_error.log;
    root   /var/www/majordomo;
    index  index.php index.htm index.html;
    satisfy any;
    deny 192.168.1.1;
    allow all;
    auth_basic "Log-In";
    auth_basic_user_file /etc/nginx/htpasswd;

    location /api {
	rewrite ^(.*)$ /api.php;
    }

    location / {
	rewrite pda$ /popup/pda.html redirect;
        if (!-e $request_filename){
            rewrite ^/(.*)$ /nf.php;
        }
    }

    location /config.php {
        deny all;
    }
	
    location /gprs.php {
	allow all;
	auth_basic off;
    }

    location /debmes.txt {
        deny all;
    }
	
    location /backup {
	allow 127.0.0.1;
        deny all;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ [^/]\.php(/|$) {
	include /etc/nginx/sites-available/php.conf;
    }
	
    location ^~ /modules/yandexhome/authorize.php {
	allow all;
	include /etc/nginx/sites-available/php.conf;
    }
	
    location ^~ /modules/yandexhome/token.php {
	allow all;
	include /etc/nginx/sites-available/php.conf;
    }
	
    location ^~ /modules/yandexhome/smarthome.php {
	allow all;
	include /etc/nginx/sites-available/php.conf;
    }
	
    location ^~ /webhook_telegram.php {
	allow all;
	include /etc/nginx/sites-available/php.conf;
    }
}
php.conf:

Код: Выделить всё

fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO       $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
fastcgi_param PHP_VALUE "short_open_tag=on";
fastcgi_param PHP_VALUE "error_reporting=E_ALL & ~E_NOTICE";
fastcgi_param PHP_VALUE "max_execution_time=90";
fastcgi_param PHP_VALUE "max_input_time=180";
fastcgi_param PHP_VALUE "post_max_size=200M";
fastcgi_param PHP_VALUE "upload_max_filesize=50M";
fastcgi_param PHP_VALUE "max_file_uploads=150";
То есть, для того, чтобы открыть доступ без авторизации для Yandex Home и Telegram, пришлось для каждого из файлов прописывать настройки PHP. Довольно костыльно получилось, но работает. Гораздо проще было бы использовать if в секции location ~ [^/]\.php(/|$), но nginx не стартует, если в if запихать allow all;, поэтому пришлось сделать так.
Данный конфиг тестировался только на доступность файлов извне и не тестировался на работоспособность с сервисами Яндекса.
Скорее всего придется изменить настройки SSL. Но это уже дело техники. Мне для тестов перестраивать рабочую систему негоже. ;)

Для phpmyadmin проще. В секцию server достаточно запихать:

Код: Выделить всё

satisfy any;
deny 192.168.1.1;
allow all;
auth_basic "Log-In";
auth_basic_user_file /etc/nginx/htpasswd;
Про auth_basic_user_file гуглится по фразе "Базовая авторизация nginx", поэтому разъяснений тут не выкладываю.
За это сообщение автора V.A.S.t поблагодарил:
Samir77 (Чт авг 25, 2022 1:59 pm)
Рейтинг: 1.16%
Ответить