7

Я арендовал VPS в течение полугода (в образовательных целях), и я пытался узнать как можно больше о его безопасности.

Недавно он был взломан, и я подозреваю, что он использовался как чей-то прокси-сервер за неделю до того, как я понял. У меня были журналы от пользователей «анонимный» и «никто» входил и выходил через SSH, и загрузка ЦП была вне графика - буквально.

В любом случае, я переустанавливал его и заново применял все, что знал, чтобы проверить, произойдет ли это снова, и через 24 часа после переустановки, я думаю, это произошло.

Вот соответствующие журналы из /var/log/auth.log которые заставляют меня чувствовать себя параноиком:

Oct 31 06:30:21 vultr su[24157]: Successful su for nobody by root
Oct 31 06:30:21 vultr su[24157]: + ??? root:nobody
Oct 31 06:30:21 vultr su[24157]: pam_unix(su:session): session opened for user nobody by (uid=0)
Oct 31 06:30:21 vultr systemd: pam_unix(systemd-user:session): session opened for user nobody by (uid=0)
Oct 31 06:30:21 vultr systemd-logind[503]: New session 40 of user nobody.
Oct 31 06:30:24 vultr su[24157]: pam_unix(su:session): session closed for user nobody
Oct 31 06:30:24 vultr systemd-logind[503]: Removed session 40.

Я не был тем, кто мог аутентифицироваться в 6:30 утра, поэтому, естественно, я волнуюсь, что снова где-то напутал ...

(примечание: .bash_history root не показывает ничего подозрительного, и насколько я знаю пользователя nobody не имеет .bash_history - поправьте меня , если я ошибаюсь)

Аутентификация по паролю отключена для SSH, возможна только аутентификация по SSH-ключу, поэтому я действительно озадачен тем, что делать дальше, поскольку кому-то все же удалось получить доступ (я думаю).

Я читал эту статью об эксплойте phpMyAdmin, когда злоумышленник получил доступ к пользователю «nobody». Однако я не думаю, что это применимо к моему случаю, потому что согласно моим журналам Apache не было никаких попыток получить доступ к странице phpMyAdmin, не говоря уже о том, что статья датирована 2010 годом, и моя страница phpMyAdmin на данный момент недоступна ,

Однако тип запросов, которые получает Apache, меня немного беспокоит, вот пример (из /var/log/apache2/access.log):

192.99.144.140 - - [31/Oct/2015:03:43:48 +0000] "PROPFIND /webdav/ HTTP/1.1" 405 569 "-" "WEBDAV Client"
185.25.151.159 - - [31/Oct/2015:03:59:35 +0000] "GET http://testp2.czar.bielawa.pl/testproxy.php HTTP/1.1" 404 460 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"
61.228.95.69 - - [31/Oct/2015:09:07:39 +0000] "CONNECT 126mx00.mxmail.netease.com:25 HTTP/1.0" 405 536 "-" "-"
185.25.151.159 - - [31/Oct/2015:09:15:13 +0000] "GET http://testp4.pospr.waw.pl/testproxy.php HTTP/1.1" 404 457 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"

в то время как я ожидал бы чего-то большего, как это:

my ip - - [31/Oct/2015:14:47:58 +0000] "GET / HTTP/1.1" 200 589 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36"

Я не понимаю, что достигается, пытаясь

"GET http://testp4.pospr.waw.pl/testproxy.php"

с моего сервера. В /var/www/html такого файла или каталога нет

Я перечислю все, что я сделал, чтобы попытаться остаться в безопасности после переустановки. Пожалуйста, укажите, если вы думаете, что я сделал что-то неправильно или я ничего не сделал вообще.

Что я сделал:

  1. Свежая установка Ubuntu 15.04
  2. Генерация пары открытого и закрытого ключей
  3. Добавить мой открытый ключ в мой файл authorized_keys на моем сервере
  4. Измените эти настройки в /etc/ssh/sshd_config , таким образом отключив аутентификацию по паролю и разрешив только аутентификацию только по ключу SSH

    PermitRootLogin without-password
    RSAAuthentication yes
    PubkeyAuthentication yes
    PasswordAuthentication no
    
  5. перезагружать

  6. Установите вещи, которые мне нужны, в следующем порядке:

    zip 
    unzip 
    apache2
    mysql-server
    php5 libapache2-mod-php5
    openjdk-7-jdk
    gcc
    g++
    screen
    vsftpd
    auditd
    
  7. Удалить по умолчанию /var/www/html/index.html

  8. Настройте vsftpd для работы (у меня есть надежный пароль для FtpUser). Я следовал этому руководству от DigitalOcean

    mkdir /home/proj
    groupadd ftp-users
    chown root:ftp-users /home/proj
    chown root:ftp-users /var/www
    useradd -g ftp-users -d /home/proj FtpUser
    chown FtpUser /home/proj
    passwd FtpUser    (add strong password)
    

    Я изменил эти настройки в /etc/vsftpd.conf

    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    chroot_local_user=NO
    pam_service_name=ftp
    
  9. перезагружать

Все остальное, что я не упомянул, по умолчанию, все установленное программное обеспечение обновлено.

Пожалуйста, дайте мне знать, если журналы, которые я показал ранее, о чем-то беспокоиться. Я также был бы очень признателен, если бы вы сообщили мне, неверна ли моя конфигурация и что я могу сделать, чтобы улучшить свою безопасность. Кроме того, если вы знаете какие-либо хорошие статьи по этому вопросу, которые будут очень полезны в долгосрочной перспективе.

1 ответ1

0

Запустите веб-сервер hiawatha в качестве reverse proxy перед вашим веб- сервером . Он заблокирует такие эксплойты (они будут заблокированы как « мусор ») в журналах:

91.196.50.33|Sat 19 Mar 2016 21:12:15 +0000|GET http://testp3.pospr.waw.pl/testproxy.php HTTP/1.1
Host: testp3.pospr.waw.pl
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate

Запустите веб-сервер и прокси внутри отдельных контейнеров lxc для дальнейшей изоляции процессов.

Используйте функцию chroot встроенную в php-fpm .

НЕ делайте shell доступной внутри chroot

Стелс ваш ssh порт.

Смонтируйте ваш /var/www/public_html как noexec nosuid nodev .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .