Ограничение доступа по IP
В версии 3.06.03 введен функционал генерации access list для nginx прямо из билинга.
Подготовка сервера
Применяем рекомендации по 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 в хост админки.