====== Ограничение доступа по IP ====== \\ В версии 3.06.03 введен функционал генерации access list для nginx прямо из билинга. ===== Подготовка сервера ===== \\ Применяем рекомендации по [[https://wiki.mikbill.pro/security|iptables и ssh]] \\ Необходимо создать каталог /etc/nginx/access_list: mkdir -p /etc/nginx/access_list \\ Далее создать файлы access list: touch /etc/nginx/access_list/admin.conf touch /etc/nginx/access_list/payments.conf \\ Назначить им права веб сервера (centos - apache, debian - www-data): chown apache:apache -R /etc/nginx/access_list/ \\ Теперь можно подключить access list \\ Web хост админки /etc/nginx/conf.d/admin_vhost.conf привести к виду: server { listen *:443 ssl; server_name admin.ispnet.demo; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_certificate /etc/nginx/conf.d/ssl/ca.crt; ssl_certificate_key /etc/nginx/conf.d/ssl/ca.key; access_log /var/log/nginx/admin_access.log; error_log /var/log/nginx/admin_error.log; root /var/www/mikbill/admin; include access_list/payments.conf; charset utf-8; index index.html; location / { try_files $uri $uri/ /index.php?$args; } location @payment { access_log /var/log/nginx/payment_access.log; error_log /var/log/nginx/payment_error.log; include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-worker-socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/mikbill/admin/index.php; } location = /index.php { include access_list/admin.conf; access_log /var/log/nginx/admin_access.log; include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-worker-socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/mikbill/admin/$fastcgi_script_name; } location = /robots.txt { add_header Content-Type text/plain; return 200 "User-agent: *\nDisallow: /\n"; } # flash config location = /res/config.xml { allow all; } # flash locale location ~ ^/res/locales/.*\.xml { allow all; } # deny other root request location ~ ^/(.*)\.(php|php5)$ { deny all; } # deny non root request location ~* ^/(.*)/.*\.(xml|sh|php|php5|phtml|log|sql|txt)$ { deny all; } } ==== sudoers ==== \\ Далее если хотите что бы биллинг сам перезапускал nginx после генерации файла, разрешите ему выполнять команду: /sbin/service nginx reload \\ добавив её в /etc/sudoers.d/mikbill ===== Управление access list админки ===== \\ Управление происходит путем добавления/удаления IP адреса/сети в справочник "IP Доступ". \\ Зайти в него можно по пути: Настройки => Сотрудники => IP Доступ. \\ Для генерации access list используется кнопка "Применить на сервере". \\ Для ручного обновления можно использовать консольную команду: ip_access_admin ===== Управление access list платежных систем ===== \\ Управление происходит путем добавления/удаления IP адреса/сети в любой из текущих платежных систем. \\ Для ручного обновления можно использовать консольную команду: ip_access_payment ===== Troubleshooting ===== \\ 1. Не генерируется файл - проверьте путь, название и права на файлы access list. \\ 2. Автоматически не применяются новые правила - проверьте корректно ли добавлено разрешение на reload nginx в sudoers. \\ 3. Не работают правила - проверьте корректно ли подключили access list в хост админки.