Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Общие вопросы
  • Search

Безопасный доступ к панели и SSH через Web-Knokking

Общие вопросы о панели управления Vesta
Post Reply
  • Print view
Advanced search
6 posts • Page 1 of 1
...
Posts: 5
Joined: Sun May 02, 2021 7:04 pm

Os: Debian 7x
Web: apache + nginx
Безопасный доступ к панели и SSH через Web-Knokking
  • Quote

Post by ... » Sun May 02, 2021 8:12 pm

VestaCP — это панель-"дуршлаг" для уязвимостей. Хотя бы потому, что любой пользователь на хостинге может вызывать в PHP через EXEC команды CLI-интерфейса панели: exec(/usr/bin/sudo /usr/local/vesta/bin/v-*…) и делать с сервером абсолютно всё что угодно. Ну и по умолчанию при создании сайтов и некоторых других моментов предлагаются самые небезопасные варианты. Поэтому сначала немного подкрутим гайки для безопасности:
  1. Первым делом отключаем в PHP.ini опасные функции:

    Code: Select all

    disable_functions=pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,show_source
  • Меняем для каждого сайта Web-шаблон для APACHE2 в панели с default на basedir. Вообще этот опасный шаблон не должен использоваться по умолчанию и по идее его быть не должно. Если уже используется любой другой шаблон, отличный от default, то всё должно быть в порядке.
Смысл Web-Knokking предельно прост: по умолчанию для всех закрыты порты SSH, панель на 8083 и отключен ping. Когда нужно их открыть для своего текущего IP, то просто вызываем скрипт из браузера. Он состоит из 2-х частей: 1 часть для любого пользовательского хоста, которая вызывает 2-ю часть для выполнения CLI-команд панели (т.к. по умолчанию доступа к порту панели нет и для пользовательских хостов ранее мы отключили опасные функции в PHP для выполнения CLI-команд).
  1. 1-ю часть назовём, например, Hidden.php и положим в /usr/local/vesta/web

    Code: Select all

    <?PHP
    $ip=getenv('QUERY_STRING');
    if(filter_var($ip,FILTER_VALIDATE_IP))
     {
      exec('/usr/bin/sudo /usr/local/vesta/bin/v-change-firewall-rule "2" "ACCEPT" "'.$ip.'" "8083" "TCP"',$output,$return_var);
      exec('/usr/bin/sudo /usr/local/vesta/bin/v-change-firewall-rule "11" "ACCEPT" "'.$ip.'" "22" "TCP"');
      echo'<h1><center>'.$ip.'<br>'.gethostbyaddr($ip).'<br>';
      #print_r($output);print_r($return_var);
     }
    ?>
  • 2-часть назовём как угодно и положим на любой сайт на сервере в public_html в /home

    Code: Select all

    <?PHP
    $curl=curl_init('https://localhost:8083/Hidden.php?'.getenv('REMOTE_ADDR'));
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    echo curl_exec($curl);
    ?>
Теперь когда нужен доступ к панели или SSH, достаточно в браузере просто открыть секретный адрес и можно спать немного спокойнее, т.к. более не страшны 0-day эксплойты и брутфорс. В принципе, теперь можно и отключить fail2ban, который жрёт память.
Top

grayfolk
Support team
Posts: 1111
Joined: Tue Jul 30, 2013 10:18 pm
Contact:
Contact grayfolk
Website Facebook Skype Twitter

Os: CentOS 6x
Web: nginx + php-fpm
Re: Безопасный доступ к панели и SSH через Web-Knokking
  • Quote

Post by grayfolk » Sun May 02, 2021 10:20 pm

... wrote: ↑
Sun May 02, 2021 8:12 pm

Code: Select all

exec('/usr/bin/sudo /usr/local/vesta/bin/v-change-firewall-rule "2" "ACCEPT" "'.$ip.'" "8083" "TCP"',$output,$return_var);
exec('/usr/bin/sudo /usr/local/vesta/bin/v-change-firewall-rule "11" "ACCEPT" "'.$ip.'" "22" "TCP"');
А каким образом у вас выполнится exec(), если вы его запретили в php.ini?
... wrote: ↑
Sun May 02, 2021 8:12 pm
VestaCP — это панель-"дуршлаг" для уязвимостей. Хотя бы потому, что любой пользователь на хостинге может вызывать в PHP через EXEC команды CLI-интерфейса панели: exec(/usr/bin/sudo /usr/local/vesta/bin/v-*…) и делать с сервером абсолютно всё что угодно.
Именно поэтому и не следует использовать Весту для организации многопользовательского хостинга.

P.S. Если в php файле нет иного кода, кроме php, закрывающий тег ставить незачем.
Top

...
Posts: 5
Joined: Sun May 02, 2021 7:04 pm

Os: Debian 7x
Web: apache + nginx
Re: Безопасный доступ к панели и SSH через Web-Knokking
  • Quote

Post by ... » Mon May 03, 2021 7:03 am

grayfolk wrote: ↑
Sun May 02, 2021 10:20 pm
А каким образом у вас выполнится exec(), если вы его запретили в php.ini?
Отключили его для пользовательских сайтов. У панели на 8083 отдельный nginx со своим php.
grayfolk wrote: ↑
Sun May 02, 2021 10:20 pm
Именно поэтому и не следует использовать Весту для организации многопользовательского хостинга.
Так Web-Knokking и делается для себя. Если многопользовательский хостинг, то такой вариант защиты уже не применим.
Тут дело несколько в другом: если бы изначально из коробки генерелись конфиги, запрещающие всё потенциально опасное для пользователей, то в принципе панелью пользоваться можно и даже организовывать какой-то хостинг.
Top

grayfolk
Support team
Posts: 1111
Joined: Tue Jul 30, 2013 10:18 pm
Contact:
Contact grayfolk
Website Facebook Skype Twitter

Os: CentOS 6x
Web: nginx + php-fpm
Re: Безопасный доступ к панели и SSH через Web-Knokking
  • Quote

Post by grayfolk » Mon May 03, 2021 6:51 pm

... wrote: ↑
Mon May 03, 2021 7:03 am
Отключили его для пользовательских сайтов. У панели на 8083 отдельный nginx со своим php.
Ну да, вы не написали, а я не сообразил.

Кстати, у меня не получается запускать скрипты Весты не из-под рута.
Не подскажете, как запустить?
Top

...
Posts: 5
Joined: Sun May 02, 2021 7:04 pm

Os: Debian 7x
Web: apache + nginx
Re: Безопасный доступ к панели и SSH через Web-Knokking
  • Quote

Post by ... » Mon May 03, 2021 7:54 pm

Из-под рута запускаются если положить в /usr/local/vesta/web
У меня так же запускаются из /home/admin (если владелец admin)
Top

grayfolk
Support team
Posts: 1111
Joined: Tue Jul 30, 2013 10:18 pm
Contact:
Contact grayfolk
Website Facebook Skype Twitter

Os: CentOS 6x
Web: nginx + php-fpm
Re: Безопасный доступ к панели и SSH через Web-Knokking
  • Quote

Post by grayfolk » Mon May 03, 2021 9:20 pm

... wrote: ↑
Mon May 03, 2021 7:54 pm
Из-под рута запускаются если положить в /usr/local/vesta/web
У меня так же запускаются из /home/admin (если владелец admin)
Так в Весте admin - это администратор сервера, он и должен иметь такие права.
... wrote: ↑
Sun May 02, 2021 8:12 pm
любой пользователь на хостинге может вызывать в PHP через EXEC команды CLI-интерфейса панели: exec(/usr/bin/sudo /usr/local/vesta/bin/v-*…) и делать с сервером абсолютно всё что угодно.
Все же, любой не может.
Top


Post Reply
  • Print view

6 posts • Page 1 of 1

Return to “Общие вопросы”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password