История одного взлома, помогите.
Здравствуйте, уважаемые пользователи linux. Ситуация такова.
История взлома:
Пару недель назад взломали наш сервер, спустя бекап и 1 неделю взлом повторился, тогда стало ясно что началось все через админ панель wordpress.
А именно через вот эти файлики /wp-content/themes/informations.php и /wp-content/themes/includes.php в которых были заккоментированы первые двестрочки,
что позволило посылать сообщения с сервера через них. Собственно взлом и был найден потому что закончилась память из за логов и очереди сообщений.
Сейчас естественно сайт выключили, и от wordpressa отказались. Поменяли пароли. И отключили sendmail. !!!Но через определенные промежутки времени
очередь сообщений начинает понемногу заполняться spool/mqueue, о чем так же свидетельствует log/mail.info (sm-mta, sm-msp-queue, sendmail),
т. е. сообщение вроде как пытается отправиться, но т. к. sendmail отключен, пишет ошибку в лог. Попытка отправки писем происходит примерно каждые 15-25 мин
после перезагрузки компьютера прекращается на время, видимо взломщик нашел еще какую то уязвимость в настройках сервера, rkhunter ничего особенного не находит.
Сам я не очень опытный в плане администрирования сервера, скажем что это не совсем мой профиль, но приходится этим заниматься.
Все запросы ведутся с разных IP или человек просто заменяет в заголовке свой ip на рандомный, поэтому «вычислить по ip» ;) не получится.
Помогите разобраться в некоторых логах линукса, найти уязвимость и закрыть ее. Дополнительно удалил inetd, swat.
Прилагаю отрывки из логов некоторых файлов c описанием и вопросами, именно отрывки с подозрением хотя они не однократно повторяются и забивают все логи:
1. отрывки из apache2/access.log
самое частое сообщение, не знаю что это
::1 - - [24/Nov/2013:17:42:49 +0400] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.2.22 (Debian) (internal dummy connection)"
изредка появляется (ip разные)
58.221.240.19 - - [25/Nov/2013:10:12:47 +0400] "-" 408 0 "-" "-"
1.1 наибольший интерес несут большое количество вот таких сообщений, я пробовал раскодировать по примеру /wp-content/themes/informations.php, но получился какой то бред
знает кто что это?
95.65.85.116 - - [27/Aug/2013:19:42:11 +0400] "\x1b\xcf\xa9\xea\xf0E\t\xa2\x80\x85\x84Yi\xd6\xcb\x95\xb04\x0fpQ[b\x95\xb0Y2|OEpJs" 400 323 "-" "-"
95.106.76.117 - - [27/Aug/2013:20:15:10 +0400] "\x058\x80\x81A\xfa\xe0\x17zS3\xad%e\xf8G\xbc" 200 15287 "-" "-"
95.161.247.135 - - [27/Aug/2013:20:22:27 +0400] "7;\xf9~" 200 15287 "-" "-"
95.32.224.208 - - [27/Aug/2013:21:18:01 +0400] "\x8b\x9ck\xe9," 200 15287 "-" "-"
89.169.66.104 - - [27/Aug/2013:22:35:03 +0400] "\x181\x1c\xeb~" 200 15287 "-" "-"
1.2 что это за запрос? естествено файла
http://www.mysite1.com/hnap1/ и
http://www.mysite2.com/hnap1/ не существует
76.175.75.209 - - [25/Nov/2013:23:23:56 +0400] "GET /HNAP1/ HTTP/1.1" 404 501 "http://xxx.xxx.xxx.xxx/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (FM Scene 4.6.1)"
1.3 здесь я просто переименовал папку необычным образом и забыл про эти запросы, черт с ними
63.141.227.74 - - [02/Dec/2013:00:02:42 +0400] "GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1" 404 490 "-" "ZmEu"
63.141.227.74 - - [02/Dec/2013:00:02:43 +0400] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 479 "-" "ZmEu"
63.141.227.74 - - [02/Dec/2013:00:02:43 +0400] "GET /pma/scripts/setup.php HTTP/1.1" 404 474 "-" "ZmEu"
63.141.227.74 - - [02/Dec/2013:00:02:44 +0400] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 478 "-" "ZmEu"
63.141.227.74 - - [02/Dec/2013:00:02:44 +0400] "GET /MyAdmin/scripts/setup.php HTTP/1.1" 404 479 "-" "ZmEu"
1.4 видимо злоумышленник пользовался этими страницами, теперь их нет
190.78.79.20 - - [03/Dec/2013:00:03:39 +0400] "POST /wp-content/themes/informations.php HTTP/1.0" 408 530 "-" "-"
190.203.208.110 - - [19/Dec/2013:05:04:07 +0400] "POST /wp-content/themes/includes.php HTTP/1.0" 408 530 "-" "-"
1.5 что это за перебор? папка cgi-bin пуста.
221.213.100.238 - - [27/Nov/2013:06:26:56 +0400] "HEAD / HTTP/1.0" 200 400 "-" "-"
221.213.100.238 - - [27/Nov/2013:06:26:57 +0400] "POST /cgi-bin/php?-d aluon -d mod -d suhon=on -d uncts="" -d dne -d auto_pr%t -d cgi.force_redirect=0 -d t_=0 -d ut -n HTTP/1.1" 404 493 "-" "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26(KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25"
221.213.100.238 - - [27/Nov/2013:06:26:57 +0400] "POST /cgi-bin/php5? ...
221.213.100.238 - - [27/Nov/2013:06:26:58 +0400] "POST /cgi-bin/php-cgi? ...
221.213.100.238 - - [27/Nov/2013:06:26:58 +0400] "POST /cgi-bin/php.cgi? ...
221.213.100.238 - - [27/Nov/2013:06:26:59 +0400] "POST /cgi-bin/php4? ...
1.6 этих файлов я не нашел если злоумышленнику удалось их залить, то он их переименовал
61.147.99.202 - - [19/Dec/2013:19:38:40 +0400] "GET /web-console/ServerInfo.jsp HTTP/1.1" 404 488 "-" "-"
93.174.93.4 - - [03/Dec/2013:13:49:22 +0400] "GET /invoker/JMXInvokerServlet HTTP/1.0" 404 507 "-" "-"
1.7 что это? не нашел такого файла
::1 - - [17/Dec/2013:16:34:50 +0400] "POST /upload/loginIxje.php HTTP/1.1" 404 479 "-" "-"
1.8 ни по одной из этих строчек у меня нет мыслей, объясните пожалуйста?
61.231.87.94 - - [03/Dec/2013:04:47:23 +0400] "CONNECT mx0.mail2000.com.tw:25 HTTP/1.0" 404 12303 "-" "-"
92.240.68.152 - - [04/Dec/2013:19:38:43 +0400] "GET http://images4.byinter.net/333455180.gif HTTP/1.1" 404 480 "-" "webcollage/1.135a"
92.240.68.153 - - [19/Dec/2013:02:14:43 +0400] "GET http://thumbs.dreamstime.com\xc2:\xc2/x/gaseous-nebula-2248617.jpg HTTP/1.1" 400 527 "-" "webcollage/1.135a"
46.165.239.230 - - [21/Dec/2013:15:21:06 +0400] "GET http://85.17.141.182/proxychecker/check.cgi?action=getinfo HTTP/1.1" 404 502 "http://www.google.com/search?hl=ru&q=free+proxy+checker&sourceid=navclient-ff&ie=UTF-8" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
85.196.214.55 - - [23/Dec/2013:01:55:16 +0400] "GET http://www.msftncsi.com/ncsi.txt HTTP/1.1" 404 472 "-" "Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"
1.9 видимо запросы от поисковой машины, наверное не о чем волноваться
198.20.70.114 - - [03/Dec/2013:16:16:14 +0400] "GET / HTTP/1.1" 200 24744 "-" "-"
198.20.70.114 - - [03/Dec/2013:16:16:14 +0400] "GET /robots.txt HTTP/1.1" 404 473 "-" "-"
1.10 таки нашел базу гад, пароль был слабый, но сейчас она под другой директорией.
176.223.119.50 - - [04/Dec/2013:02:37:01 +0400] "GET /db/ HTTP/1.1" 404 461 "-" "Mozilla/7.0 (compatible; MSIE 8.0; Windows Seven)"
176.223.119.50 - - [04/Dec/2013:02:37:02 +0400] "GET /myadmin/ HTTP/1.1" 200 3893 "-" "Mozilla/7.0 (compatible; MSIE 8.0; Windows Seven)"
176.223.119.50 - - [04/Dec/2013:02:37:02 +0400] "GET /mysqladmin/ HTTP/1.1" 404 468 "-" "Mozilla/7.0 (compatible; MSIE 8.0; Windows Seven)"
2. ps -aux
в процессах висят пару неизвестных для меня пользователей, стоит ли из за них волноваться
1000 4058 0.0 0.0 96480 1332 ? S 12:49 0:00 sshd: имя_пользователя_не_root@pts/0
1000 30346 0.0 0.0 22280 1576 pts/0 Ss 15:07 0:00 -bash
1000 30387 0.0 0.0 12532 788 ? Ss 15:07 0:00 /usr/lib/openssh/sftp-server
avahi 3794 0.0 0.0 34160 1568 ? S 12:49 0:00 avahi-daemon: running [название_компьютера.local]
avahi 3795 0.0 0.0 34032 228 ? S 12:49 0:00 avahi-daemon: chroot helper
102 2931 0.0 0.0 30076 856 ? Ss 12:49 0:00 /usr/bin/dbus-daemon --system
bind 2788 0.0 0.0 201212 2824 ? Ssl 12:49 0:00 /usr/sbin/named -u bind
daemon 2701 0.0 0.0 16668 200 ? Ss 12:49 0:00 /usr/sbin/atd
statd 1988 0.0 0.0 23340 920 ? Ss 12:49 0:00 /sbin/rpc.statd
3. log/access.log
я привел записи которые происходили когда никто не взаимодействовал с сервером:
3.1 что это?, очень много таких записей
Dec 1 08:09:01 название_компьютера CRON[29181]: pam_unix(cron:session): session opened for user root by (uid=0)
3.2 Debian-exim что это запользователь?
Dec 2 02:33:01 название_компьютера CRON[31931]: pam_unix(cron:session): session opened for user Debian-exim by (uid=0)
3.3 это перебор паролей? порт каждый раз меняется, таких записей тоже прилично
Dec 1 08:35:32 название_компьютера sshd[29243]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=123.125.210.210 user=root
Dec 1 08:35:32 название_компьютера sshd[29243]: pam_winbind(sshd:auth): getting password (0x00000388)
Dec 1 08:35:32 название_компьютера sshd[29243]: pam_winbind(sshd:auth): pam_get_item returned a password
Dec 1 08:35:32 название_компьютера sshd[29243]: pam_winbind(sshd:auth): request wbcLogonUser failed: WBC_ERR_AUTH_ERROR, PAM error: PAM_USER_UNKNOWN (10), NTSTATUS: NT_STATUS_NO_SUCH_USER, Error message was: No such user
...
Dec 1 08:35:34 название_компьютера sshd[29243]: Failed password for root from 123.125.210.210 port 22657 ssh2
Dec 1 08:35:34 название_компьютера sshd[29243]: Connection closed by 123.125.210.210 [preauth]
...
Dec 2 02:28:04 название_компьютера sshd[31923]: Invalid user guest from 82.221.102.182
Dec 2 02:28:04 название_компьютера sshd[31923]: input_userauth_request: invalid user guest [preauth]
Dec 2 02:28:04 название_компьютера sshd[31923]: pam_unix(sshd:auth): check pass;user unknown
Dec 2 02:28:04 название_компьютера sshd[31923]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=82.221.102.182
Dec 2 02:28:04 название_компьютера sshd[31923]: pam_winbind(sshd:auth): getting password (0x00000388)
Dec 2 02:28:04 название_компьютера sshd[31923]: pam_winbind(sshd:auth): pam_get_item returned a password
Dec 2 02:28:07 название_компьютера sshd[31923]: Failed password for invalid userguest from 82.221.102.182 port 57181 ssh2
Dec 2 02:28:08 название_компьютера sshd[31923]: Received disconnect from 82.221.102.182: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
...
Dec 2 08:17:32 название_компьютера sshd[478]: Failed password for root from 58.30.38.28 port 48394 ssh2
Dec 2 08:17:32 название_компьютера sshd[478]: Received disconnect from 58.30.38.28: 11: Bye Bye [preauth]
...
4. отрывки из apache2/error.log
также много ошибок к /wp-content/themes/informations.php но это потому что человек пытался взломать
[Fri Dec 27 13:46:31 2013] [error] [client 78.111.186.189] Invalid URI in request \xdf:\xddH\xe9h,tW\x11a\xd0\x0c\xec\xf7r\xc3\xa0b\xf2
[Fri Dec 27 15:39:06 2013] [error] [client 194.186.207.105] request failed: error reading the headers
[Tue Dec 24 09:51:58 2013] [error] [client 50.16.241.71] script not found or unable to stat: /usr/lib/cgi-bin/php
[Tue Dec 24 09:51:58 2013] [error] [client 50.16.241.71] script not found or unable to stat: /usr/lib/cgi-bin/php5
[Tue Dec 24 09:51:58 2013] [error] [client 50.16.241.71] script not found or unable to stat: /usr/lib/cgi-bin/php-cgi
[Tue Dec 24 09:51:58 2013] [error] [client 50.16.241.71] script not found or unable to stat: /usr/lib/cgi-bin/php.cgi
[Tue Dec 24 09:51:59 2013] [error] [client 50.16.241.71] script not found or unable to stat: /usr/lib/cgi-bin/php4
на бывший сайт с wordpress еще идет много запросов, но естественно он отключен
но большая часть файла до отключения wordpressa была забита вот этим, что это? затерли что то важное огромным количеством записей?
fprintf.c:50: SM_REQUIRE((fp) != NULL && (fp)->sm_magic == (SmFileMagic)) failedAborted