billing:secure_16122020

Ограничение доступа по 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;
    }
}


Далее если хотите что бы биллинг сам перезапускал nginx после генерации файла, разрешите ему выполнять команду:

/sbin/service nginx reload


добавив её в /etc/sudoers.d/mikbill


Управление происходит путем добавления/удаления IP адреса/сети в справочник "IP Доступ".
Зайти в него можно по пути: Настройки ⇒ Сотрудники ⇒ IP Доступ.
Для генерации access list используется кнопка "Применить на сервере".
Для ручного обновления можно использовать консольную команду: ip_access_admin


Управление происходит путем добавления/удаления IP адреса/сети в любой из текущих платежных систем.
Для ручного обновления можно использовать консольную команду: ip_access_payment


1. Не генерируется файл - проверьте путь, название и права на файлы access list.
2. Автоматически не применяются новые правила - проверьте корректно ли добавлено разрешение на reload nginx в sudoers.
3. Не работают правила - проверьте корректно ли подключили access list в хост админки.

  • billing/secure_16122020.txt
  • Последнее изменение: 21 мес. назад
  • Александр Дудяк