Amro

Amro
Рейтинг
130
Регистрация
09.12.2006
Должность
Student
Интересы
Программирование,web дизайн, шахматы, спорт

Бага выявлена: похоже вся беда в обновлённом glibc на сервере ) народ не обновляйтесь из sid репозиториев ) Я обновлял proftpd (закрывал багу касаемую mod copy)и не обратил внимания и попал )

В качестве примитивной защиты можно использовать скрипт DDoS-Deflate https://github.com/Amet13/ddos-deflate

От серьёзных ddos атак с множества серверов не спасёт конечно, но от школоты поможет.

pupseg:
в принципе, если вас ничего не исполняется кроном от этих юзеров и для исполнения им не нужен шелл - то правильно сделали что закрыли.
в первом приближении системным юзерам не нужен шелл, за исключением тех, от которых стартуют системные демоны.

по сути если что-то и исполняется то только от рута, так что для меня можно смело их рубить.

==============

В целях безопасности от долбёжек ботов убрал isp панельку на отдельный поддомен, а порт 1500 (встроенного ihttpd) переместил на локальный айпишник 127.0.0.1:

0) Создаём поддомен

к примеру cp.mydomen.ru, для создания достаточно в редакторе DNS добавить запись А на ваш ip:1.2.3.4 (через панель поддомен создавать не нужно)

1) в /usr/local/ispmgr/etc/nginx.domain у меня

server {
listen 1.2.3.4:80;
listen 1.2.3.4:443 ssl;
server_name cp.mydomen.ru;

ssl_certificate /usr/local/ispmgr/etc/manager.crt;
ssl_certificate_key /usr/local/ispmgr/etc/manager.key;

if ( $scheme = "http" ) {
rewrite ^/(.*)$ https://$host/$1 permanent;
}

# Чтобы при обращении по IP вида http://1.2.3.4 панелька не открывалась
if ($host !~ ^(cp.mydomen.ru|cp.mydomen.ru)$ ) {
return 444;
}

error_log /var/log/nginx/cp.mydomen.ru.error.log;
access_log /var/log/nginx/cp.mydomen.ru.access.log;

set $mgr_proxy "https://127.0.0.1:1500";

location /manimg/ {
alias /usr/local/ispmgr/skins/;
access_log off;
expires 7d;
}

location / {
proxy_pass $mgr_proxy;
proxy_redirect $mgr_proxy /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
}

2) в /usr/local/ispmgr/etc/nginx.inc нужно закомментировать всё что есть или просто удалить

3) а в /etc/rc.local сменить внешний ip на локальный


/usr/local/ispmgr/sbin/ihttpd 127.0.0.1 1500

после всего вышепроделанного грохаем

killall ihttpd

и перазапускаем

/usr/local/ispmgr/sbin/ihttpd 127.0.0.1 1500

или рестартим систему

теперь панель стала доступной исключительно и только на поддомене + для которого подрублены access логи, так что проще будет искать )

Пробовал стандартными способами, через "Адрес панели" повесить её на отдельный поддомен, но что-то там всё глухо, не работает, так что при использовании способа делаем простое проксирование средствами nginx на ihttpd и забываем про эту вкладку навсегда.

P.S. постю это суда чтобы самому не забыть, и авось кому пригодится.

В общем отрубил у всех юзеров без пасса шелл и вам советую


root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:/usr/sbin/nologin
........................................................

и через /etc/ftpusers закрыл им доступ по ftp

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody
www-data
proxy
backup
list
irc
gnats
libuuid
........................

будем следить далее за ситуацией )

pupseg:
ну а если не менять шелл и запрыгнуть в этого юзера su - www-data и дать там например ls -l , че нить покажет ?
Когда то проскакивала тут тема на форуме про какую-то критическую уязвимость в 4ой версии isp , дескать раскрывать ее не стали, потому что она дико какая то опасная, но вроде как ее закрыли.. лениво искать

Ничего не покажет права на папку /var/www 751, а владелец root :) зато командами в шеле может пользоваться всеми.

А вообще странная хренотень в Debian

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh

у всех юзеров с пустым пассом * стоит шелл /bin/sh

Через крон, в логах была бы приписка что это крон, а тут идёт GET запрос причём с IP адреса самого сервера, это значит, что запрос обрабатывается напрямую апачем. Поверх апача у меня nginx, порт апача во внешку закрыт.

Т.е. запрос может быть выполнен только через php скрипт имеющийся на сервере, к которому можно обратится, передать данный запрос и чтобы этот скрипт его отправил. Оба этих запроса идут с реферами моих сайтов на вордпрессе, а в вордпрессе это можно сделать только через XML-RPC, т.е. обратившись и передав сценарию xmlrpc.php

Вот и оно http://habrahabr.ru/post/215543/ (Pingback) так скорее всего и был отправлен запрос. В логах обоих сайтов кстати в 07:48 как раз идут обращения к xmlrpc.php (срубил нафиг его со всех сайтов)

Но хр*ен с ним с rpc не понятно как всё таки пасс уставился, видимо isp пропустил, а пропустить он мог только тогда когда его "положили", больше я не вижу путей.

Возможно, но похоже баг именно в isp

логи nginx

193.169.86.16 - - [26/Jul/2015:07:47:59 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www-data&password=r4FOttG00OmT HTTP/1.0" 404 106 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko)
193.169.86.16 - - [26/Jul/2015:07:48:06 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www-data&password=r4FOttG00OmT HTTP/1.0" 404 106 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:5.0) Gecko/20110619 Firefox/5.0"
193.169.86.16 - - [26/Jul/2015:07:48:08 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=nginx&password=r4FOttG00OmT HTTP/1.0" 200 514 "-" "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET
193.169.86.16 - - [26/Jul/2015:07:48:10 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www&password=r4FOttG00OmT HTTP/1.0" 200 512 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 FirePHP/0.5"
193.169.86.16 - - [26/Jul/2015:07:48:11 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=apache&password=r4FOttG00OmT HTTP/1.0" 200 515 "-" "Mozilla/5.0 (Windows NT 5.1; U; rv:5.0) Gecko/20100101 Firefox/5.0"
193.169.86.16 - - [26/Jul/2015:07:48:12 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=ftph8mi&password=gsplou5s HTTP/1.0" 200 516 "-" "Mozilla/5.0 (X11; U; Linux amd64; en-US; rv:5.0) Gecko/20110619 Firefox/5.0"
193.169.86.16 - - [26/Jul/2015:07:48:13 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www-data&password=r4FOttG00OmT HTTP/1.0" 404 106 "-" "Mozilla/5.0 (X11; Linux) Gecko Firefox/5.0"
193.169.86.16 - - [26/Jul/2015:07:48:17 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www-data&password=r4FOttG00OmT HTTP/1.0" 404 106 "-" "Opera/9.70 (Linux i686 ; U; en) Presto/2.2.0"
193.169.86.16 - - [26/Jul/2015:07:48:22 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=nginx&password=r4FOttG00OmT HTTP/1.0" 200 514 "-" "Mozilla/4.01 (compatible; MSIE 6.0; Windows NT 5.1)"
193.169.86.16 - - [26/Jul/2015:07:48:23 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www&password=r4FOttG00OmT HTTP/1.0" 200 512 "-" "Opera/9.64 (X11; Linux x86_64; U; pl) Presto/2.1.1"
193.169.86.16 - - [26/Jul/2015:07:48:24 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=apache&password=r4FOttG00OmT HTTP/1.0" 200 515 "-" "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
193.169.86.16 - - [26/Jul/2015:07:48:25 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=ftpy6u0&password=anc9y7fm HTTP/1.0" 200 516 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 Firefox/5.0"
92.53.96.84 - - [26/Jul/2015:07:48:35 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www-data&password=r4FOttG00OmT HTTP/1.0" 404 106 "-" "Opera/9.64 (X11; Linux x86_64; U; de) Presto/2.1.1"
92.53.96.84 - - [26/Jul/2015:07:48:39 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=nginx&password=r4FOttG00OmT HTTP/1.0" 200 514 "-" "Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00"
92.53.96.84 - - [26/Jul/2015:07:48:41 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www&password=r4FOttG00OmT HTTP/1.0" 200 512 "-" "Opera/9.64 (X11; Linux i686; U; sv) Presto/2.1.1"
92.53.96.84 - - [26/Jul/2015:07:48:43 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=apache&password=r4FOttG00OmT HTTP/1.0" 200 515 "-" "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)"
92.53.96.84 - - [26/Jul/2015:07:48:45 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=ftpl9ka&password=rkv3xt47 HTTP/1.0" 200 516 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.824.0 Safari/535.1"
31.*.*.* - - [26/Jul/2015:07:48:47 +0300] "GET /manager/ispmgr?out=json&name=www-data&passwd=r4FOttG00OmT&confirm=r4FOttG00OmT&func=usrparam&elid=www-data&sok=ok HTTP/1.0" 200 35 "-" "WordPress/3.0.1; http://la***ag.net"
92.53.96.84 - - [26/Jul/2015:07:48:47 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=www-data&password=r4FOttG00OmT HTTP/1.0" 200 90 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.801.0 Safari/535.1"
91.206.200.190 - - [26/Jul/2015:07:48:52 +0300] "GET /manager/ispmgr?func=auth&username=www-data&key=1006789fghfghfghfghfq2iu&out=xml HTTP/1.0" 200 517 "-" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/5.0"

91.206.200.190 - - [26/Jul/2015:07:48:54 +0300] "GET /manager/ispmgr?out=xml&func=auth&username=nginx&password=r4FOttG00OmT HTTP/1.0" 200 479 "-" "Mozilla/5.0 (X11; Linux x86_64) Gecko Firefox/5.0"
31.*.*.* - - [26/Jul/2015:07:49:03 +0300] "GET /manager/ispmgr?out=json&func=session.newkey&username=www-data&key=1006789fghfghfghfghfgs8e HTTP/1.0" 200 32 "-" "WordPress/3.2.1; http://x***ka.ru"
91.206.200.190 - - [26/Jul/2015:07:49:03 +0300] "GET /manager/ispmgr?func=auth&username=www-data&key=1006789fghfghfghfghfgs8e&out=xml HTTP/1.0" 200 90 "-" "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"

Как раз в 07:48 были изменения в shadow и passwd

в message лог такая штука

Jul 26 07:47:59 *** kernel: [16964607.632309] ispmgr[6907]: segfault at 0 ip 00007f6082dfe46a sp 00007f606fffe588 error 4 in libc-2.19.so[7f6082d6e000+19f000]
Jul 26 07:48:05 *** kernel: [16964614.350594] ispmgr[7003]: segfault at 0 ip 00007f857f39d46a sp 00007f8575242588 error 4 in libc-2.19.so[7f857f30d000+19f000]
Jul 26 07:48:13 *** kernel: [16964622.043339] ispmgr[7076]: segfault at 0 ip 00007ff5e3ae346a sp 00007ff5d99a6588 error 4 in libc-2.19.so[7ff5e3a53000+19f000]
Jul 26 07:48:17 *** kernel: [16964625.621360] ispmgr[7120]: segfault at 0 ip 00007f659ed5b46a sp 00007f6598cf8588 error 4 in libc-2.19.so[7f659eccb000+19f000]
Jul 26 07:48:32 *** kernel: [16964641.373681] ispmgr[7206]: segfault at 0 ip 00007f407653146a sp 00007f4063ffe588 error 4 in libc-2.19.so[7f40764a1000+19f000]
Jul 26 07:48:34 *** kernel: [16964642.795030] ispmgr[7244]: segfault at 0 ip 00007f47d7d9546a sp 00007f47cdd1a588 error 4 in libc-2.19.so[7f47d7d05000+19f000]

В моменты этих ошибок происходит перезапуск ispmanager, возможно в момент перегруза, и возникновения ошибки прокатил такой GET запрос:

31.*.*.* - - [26/Jul/2015:07:48:47 +0300] "GET /manager/ispmgr?out=json&name=www-data&passwd=r4FOttG00OmT&confirm=r4FOttG00OmT&func=usrparam&elid=www-data&sok=ok HTTP/1.0" 200 35 "-" "WordPress/3.0.1; http://la***ag.net"

31.*.*.* Это айпишник моего сервака.

А чего фиксить...., все логи обрыл,толком откуда дыра не нашёл. Скорее всего в ISP дыра и сидит.

В shadow есть хэшь пасса, так что пасс действительно поставили! Сам шелл /bin/sh но он вроде как по умолчанию у этого юзера.

В общем вернул пока пасс в пустоту, командой passwd -S www-data (из ISP юзер сразу убрался), копаем дальше.

Заметил такую особенность, при вводе в качестве логина в форме авторизации ISP manager например www-data или любого юзера без пасса: games, proxy, man и т.д. получаю ошибку "Request timeout to panel reached. Panel has not started yet."

Причём по логам ISP видно что панель после этого автоматом перегружается. Это у меня только так?

---------- Добавлено 30.07.2015 в 21:29 ----------

Andreyka:
Чем дальше, тем интереснее

так так так, а поподробнее? знаком с багой видимо?

Уже три случая, мне тоже 26-го числа на www-data установили пасс.

кусок лога


Jul 26 07:48:47 [ 7256:9] ^[[1;32mINFO Request [31.*.*.*][www-data] 'sok=ok&elid=www%2Ddata&func=usrparam&confirm=*&passwd=*&name=www%2Ddata&out=json'^[[0m Jul 26 07:48:47 [ 7256:10] ^[[1;32mINFO Request [92.53.96.84][nobody] 'password=*&username=www%2Ddata&func=auth&out=xml'^[[0m Jul 26 07:48:47 [ 7256:10] ^[[1;36mEXTINFO Execute (/usr/sbin/repquota -g -n /dev/mapper/vg0-root) return=0 exited^[[0m Jul 26 07:48:52 [ 7256:11] ^[[1;32mINFO Request [91.206.200.190][nobody] 'out=xml&key=1006*************iu&username=www%2Ddata&func=auth'^[[0m Jul 26 07:48:54 [ 7256:12] ^[[1;32mINFO Request [91.206.200.190][nobody] 'password=*&username=nginx&func=auth&out=xml'^[[0m Jul 26 07:48:56 [ 7256:13] ^[[1;32mINFO Request [91.206.200.190][nobody] 'password=*&username=www&func=auth&out=xml'^[[0m Jul 26 07:48:58 [ 7256:14] ^[[1;32mINFO Request [91.206.200.190][nobody] 'password=*&username=apache&func=auth&out=xml'^[[0m Jul 26 07:49:00 [ 7256:15] ^[[1;32mINFO Request [91.206.200.190][nobody] 'password=*&username=ftpk2mb&func=auth&out=xml'^[[0m Jul 26 07:49:03 [ 7256:16] ^[[1;36mEXTINFO Execute (/usr/sbin/repquota -g -n /dev/mapper/vg0-root) return=0 exited^[[0m Jul 26 07:49:03 [ 7256:16] ^[[1;32mINFO Request [31.*.*.*][www-data] 'key=1006**********gs8e&username=www%2Ddata&func=session%2Enewkey&out=json'^[[0m Jul 26 07:49:03 [ 7256:17] ^[[1;32mINFO Request [91.206.200.190][nobody] 'out=xml&key=10****************fgs8e&username=www%2Ddata&func=auth'^[[0m

Кто-нибудь разобрался где дыра?

Всего: 44