TL; DR: как я могу глубже изучить свой сервер Mac mini OSX, чтобы определить, какие процессы потребляют такую большую полосу пропускания или откуда исходит весь входящий трафик?
Кэширование ресурсов включено, все ресурсы уменьшены или изображения сжаты, наши страницы потребляют меньше трафика, чем веб-сайт в прошлом месяце (www.vulytrampolines.com), и наш трафик в аналитике такой же.
Предыстория: у нас есть 2x мини-сервера Mac, на которых работает наш веб-сайт / постановка / базы данных и т. Д. После перехода с выделенного сервера в Америке на место колокации в городе потребление пропускной способности каким-то образом учетверенный. Между ними настроен процесс репликации базы данных, а также DNS и различные веб-сайты (например, большие файлы, задачи базы данных, пакеты интрасети и т. Д. Находятся на промежуточном сервере, веб-сайт и база данных находятся на производственном сервере)
На нашем промежуточном сервере 7 ГБ входящего трафика в 3 ДНЯ. Кто-нибудь знает, как проверить источники входящего трафика, чтобы увидеть потенциально, откуда исходит этот последовательный поток входящего трафика при соединении 200k? Мы понятия не имеем. Мы вообще не отправляем ему файлы, единственное, что должно быть активным, - это SSH и процесс репликации базы данных. netstat
[см. ниже] показывает, что у нас около 20+ установленных и 30+ close_weight подключений к порту 625. Мы не знаем, как это могло происходить.
Раздражает то, что веб-статистика показывает, что мы не использовали около 11,66 ГБ для HTTP-трафика (там говорится, что в прошлом месяце мы использовали 22 ГБ, но наш исходящий трафик был зарегистрирован как более 100 ГБ). Статистика базы данных говорит, что мы не использовали достаточную пропускную способность, чтобы вызвать проблему.
Это наш промежуточный сервер venus1 (так было уже несколько недель):
Это наш производственный сервер venus2:
netstat -anp tcp
выход на venus1. Большинство внешних адресов взяты с наших рабочих IP-адресов. 11211 - это memcached.
tcp4 0 0 122.99.117.18.49712 204.93.223.143.80 ESTABLISHED
tcp4 0 0 122.99.117.18.11211 122.99.117.18.49711 ESTABLISHED
tcp4 0 0 122.99.117.18.49711 122.99.117.18.11211 ESTABLISHED
tcp4 0 52 122.99.117.18.22 59.167.152.67.56106 ESTABLISHED
tcp4 0 0 122.99.117.18.11211 122.99.117.18.49588 ESTABLISHED
tcp4 0 0 122.99.117.18.49588 122.99.117.18.11211 ESTABLISHED
tcp4 0 0 122.99.117.18.49410 122.99.117.19.3306 ESTABLISHED
tcp4 0 0 122.99.117.18.5432 122.99.117.18.58704 ESTABLISHED
tcp4 0 0 122.99.117.18.58704 122.99.117.18.5432 ESTABLISHED
tcp4 0 0 127.0.0.1.58699 *.* LISTEN
tcp4 0 0 122.99.117.18.625 110.142.234.238.62055 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.71.206.61838 ESTABLISHED
tcp4 5 0 122.99.117.18.625 203.206.171.34.61741 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.61270 ESTABLISHED
tcp4 0 0 127.0.0.1.54 *.* LISTEN
tcp4 0 0 122.99.117.18.53 *.* LISTEN
tcp4 0 0 127.0.0.1.53 *.* LISTEN
tcp4 0 0 122.99.117.18.625 110.142.234.238.63980 ESTABLISHED
tcp4 0 0 122.99.117.18.625 203.206.171.34.55282 ESTABLISHED
tcp46 0 0 *.80 *.* LISTEN
tcp4 0 0 *.* *.* CLOSED
tcp46 0 0 *.443 *.* LISTEN
tcp4 0 0 *.* *.* CLOSED
tcp4 0 0 122.99.117.18.625 122.99.117.19.50766 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 122.99.117.19.63981 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.60214 ESTABLISHED
tcp4 0 0 122.99.117.18.625 27.33.32.204.65196 ESTABLISHED
tcp4 0 0 122.99.117.18.625 110.142.234.238.60274 ESTABLISHED
tcp4 0 0 122.99.117.18.625 122.99.117.19.53201 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 203.206.171.34.59662 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 122.99.117.19.49869 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 122.99.117.19.53827 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.64678 ESTABLISHED
tcp4 0 0 122.99.117.18.625 122.99.117.19.52810 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.62510 ESTABLISHED
tcp4 0 0 122.99.117.18.625 122.99.117.19.49909 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.56096 ESTABLISHED
tcp4 0 0 122.99.117.18.625 203.206.171.34.53247 ESTABLISHED
tcp4 0 0 122.99.117.18.625 203.206.171.34.62051 ESTABLISHED
tcp4 0 0 122.99.117.18.625 58.111.93.92.59123 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 122.99.117.19.57173 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 203.206.171.34.49352 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.64362 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.59772 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 59.167.152.67.59528 CLOSE_WAIT
tcp4 0 0 *.3306 *.* LISTEN
tcp4 0 0 122.99.117.18.625 27.33.32.204.56812 ESTABLISHED
tcp4 0 0 122.99.117.18.625 110.142.234.238.52987 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 59.167.152.67.50598 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.63339 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.63283 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 59.167.152.67.61312 ESTABLISHED
tcp4 0 0 122.99.117.18.625 110.142.234.238.52045 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 122.99.117.19.49172 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 203.206.171.34.50501 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.93.92.56042 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.55882 ESTABLISHED
tcp4 0 0 122.99.117.18.311 58.111.93.92.55875 ESTABLISHED
tcp4 0 0 122.99.117.18.625 203.206.171.34.58776 ESTABLISHED
tcp6 0 0 *.5432 *.* LISTEN
tcp4 0 0 *.5432 *.* LISTEN
tcp4 0 0 122.99.117.18.625 58.111.93.92.52692 ESTABLISHED
tcp4 0 0 122.99.117.18.625 203.206.171.34.57121 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.54673 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.53915 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.52109 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.51807 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.65049 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.93.92.64442 ESTABLISHED
tcp4 0 0 122.99.117.18.311 203.206.171.34.51628 ESTABLISHED
tcp4 0 0 122.99.117.18.625 203.206.171.34.51594 ESTABLISHED
tcp4 0 0 122.99.117.18.625 58.111.79.42.62597 ESTABLISHED
tcp4 0 0 122.99.117.18.625 58.111.79.42.62454 ESTABLISHED
tcp4 0 0 122.99.117.18.625 58.111.79.42.58088 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.57305 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.53724 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.62224 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.62064 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.58236 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 203.206.171.34.51320 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 203.206.171.34.51297 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 203.206.171.34.50864 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.49800 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 27.33.32.204.50894 ESTABLISHED
tcp4 0 0 122.99.117.18.625 59.167.152.67.50411 ESTABLISHED
tcp4 0 0 122.99.117.18.625 27.33.32.204.54446 ESTABLISHED
tcp4 0 0 122.99.117.18.625 58.111.79.42.51680 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.60797 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.60729 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 59.167.152.67.49209 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.63371 CLOSE_WAIT
tcp4 81 0 122.99.117.18.625 113.128.44.66.3842 CLOSE_WAIT
tcp4 11 0 122.99.117.18.625 213.57.189.27.55646 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 110.142.234.238.53655 ESTABLISHED
tcp4 0 0 122.99.117.18.625 110.142.234.238.53644 ESTABLISHED
tcp4 0 0 122.99.117.18.625 58.111.79.42.52146 CLOSE_WAIT
tcp4 0 0 127.0.0.1.8005 *.* LISTEN
tcp46 0 0 *.8009 *.* LISTEN
tcp46 0 0 *.8080 *.* LISTEN
tcp4 0 0 122.99.117.18.625 58.111.79.42.50716 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 59.167.152.67.49872 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.63218 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.62471 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.64758 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.64646 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.56788 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.56770 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.56017 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.53131 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.52519 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.51215 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.51131 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 59.167.152.67.57058 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 59.167.152.67.56711 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.50975 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.57209 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.54753 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.60786 CLOSE_WAIT
tcp4 0 0 122.99.117.18.625 58.111.79.42.56174 CLOSE_WAIT
tcp4 0 0 *.11212 *.* LISTEN
tcp6 0 0 *.11212 *.* LISTEN
tcp4 0 0 127.0.0.1.5348 127.0.0.1.49167 ESTABLISHED
tcp4 0 0 127.0.0.1.49167 127.0.0.1.5348 ESTABLISHED
tcp4 0 0 122.99.117.18.5218 122.99.117.18.49166 ESTABLISHED
tcp4 0 0 122.99.117.18.49166 122.99.117.18.5218 ESTABLISHED
tcp46 0 0 *.5268 *.* LISTEN
tcp46 0 0 *.5218 *.* LISTEN
tcp4 0 0 127.0.0.1.5348 127.0.0.1.49163 ESTABLISHED
tcp4 0 0 127.0.0.1.49163 127.0.0.1.5348 ESTABLISHED
tcp4 0 0 127.0.0.1.5348 127.0.0.1.49162 ESTABLISHED
tcp4 0 0 127.0.0.1.49162 127.0.0.1.5348 ESTABLISHED
tcp4 0 0 127.0.0.1.5348 127.0.0.1.49161 ESTABLISHED
tcp4 0 0 127.0.0.1.49161 127.0.0.1.5348 ESTABLISHED
tcp4 0 0 127.0.0.1.5348 *.* LISTEN
tcp4 0 0 *.11211 *.* LISTEN
tcp6 0 0 *.11211 *.* LISTEN
tcp4 0 0 *.88 *.* LISTEN
tcp6 0 0 *.88 *.* LISTEN
tcp6 0 0 *.2000 *.* LISTEN
tcp4 0 0 *.2000 *.* LISTEN
tcp6 0 0 *.4190 *.* LISTEN
tcp4 0 0 *.4190 *.* LISTEN
tcp4 0 0 *.464 *.* LISTEN
tcp6 0 0 *.464 *.* LISTEN
tcp6 0 0 *.25 *.* LISTEN
tcp4 0 0 *.25 *.* LISTEN
tcp4 0 0 *.749 *.* LISTEN
tcp6 0 0 *.749 *.* LISTEN
tcp4 0 0 *.22 *.* LISTEN
tcp6 0 0 *.22 *.* LISTEN
tcp4 0 0 *.5900 *.* LISTEN
tcp6 0 0 *.5900 *.* LISTEN
tcp4 0 0 *.625 *.* LISTEN
tcp6 0 0 *.625 *.* LISTEN
tcp4 0 0 127.0.0.1.631 *.* LISTEN
tcp6 0 0 ::1.631 *.* LISTEN
tcp4 0 0 *.311 *.* LISTEN
Если у вас нет очень хорошая причина не делать этого, пожалуйста, установите брандмауэр на все закрытые порты на вашем Mac Minis немедленно и выставляйте только то, что вам нужно! Я быстро проверил, и все ваши сервисы в настоящее время, похоже, полностью открыты для Интернета (SSH, SMTP, Tomcat, VNC, MySQL и apple-xsrvr-admin (TCP625), безусловно, есть), что является очень плохой идеей.
Большой объем входящего трафика, который вы видите, вполне может быть связан с хакерами / ботами, пытающимися подобрать логины и пароли для ваших сервисов - я часто вижу это на серверах, особенно с SSH (поскольку он часто общедоступен) и напрямую против популярного программного обеспечения, такого как страница WordPress /wp-login.php. Из вашей netstat я вижу, что IP-адреса из Израиля и Китая пытались получить доступ к TCP625 (apple-xsrvr-admin, используемый для DirectoryService, Open Directory Assistant и Workgroup Manager), что не является хорошим признаком. Я надеюсь, что все ваши имена пользователей и пароли надежны, потому что - не пытаюсь показаться здесь паникером, но - брутфорс объемом 7 ГБ, возможно, позволил некоторым плохим людям добраться до вещей, к которым у них не должно быть доступа, независимо от безопасности / исправлять состояние любого программного обеспечения.
Уточните у своего хостинг-провайдера / colo, что у вас есть какая-то удаленная последовательная консоль и / или доступ к VNC, если вы случайно заблокируете себе доступ к своим серверам, затем добавьте абсолютный минимум, необходимый для удаленного администрирования серверов самостоятельно, в наборы правил и брандмауэры, которые, как я предполагаю, еще не установлены. По умолчанию брандмауэр OS X Server блокирует все входящие порты, кроме тех, которые используются для удаленной настройки сервера (TCP22, TCP311, TCP626, TCP625, стандартный пинг ICMP (входящий и исходящий), разрешение DNS-имени UDP53), поэтому вы должны быть в порядке, чтобы его включить прямо, хотя вы захотите заблокировать их еще раз, как только вы это сделаете. Создайте группы адресов, относящиеся к IP-адресу вашего офиса (или сетевому блоку (-ам) IP-адреса вашего интернет-провайдера, если у вашего офиса нет статического IP-адреса), и используйте их для открытия административного доступа (например, SSH, OpenDirectory, VNC) только к ним. Создайте другую группу с одним IP-доступом для 122.99.117.18 и 122.99.117.19 (или 122.99.117.18/31 маску), чтобы общаться друг с другом и разрешить это для репликации MySQL. Откройте для всего мира порты SMTP, HTTP, HTTPS, если они общедоступны. Плотно заблокируйте все, предоставляя разрешение только тем IP-адресам, которым необходим доступ к каждому порту. Сделайте это и для исходящего трафика. Вы должны спланировать это заранее и убедиться, что у вас все в порядке, но сделайте это скорее, а не оставляйте сервер открытой сидячей уткой.
Просмотрите журналы своих серверов и найдите подозрительную активность. В частности, обратите внимание на любые успешные входы в службы из странных мест или в нечетное время. Установите некоторые процедуры, чтобы делать это регулярно.
Я не уверен, какая у вас версия OS X Server, но предполагая 10.6 или 10.7, этот документ Peachpit может помочь вам начать работу с брандмауэрами.
Как может этот документ поддержки Apple в формате PDF о сетевых службах (см. главу 4 для брандмауэра).
Для более продвинутой конфигурации брандмауэра попробуйте Waterroof или Icefloor, которые предоставляют простой графический интерфейс, вместо того, чтобы возиться с pf в командной строке.
(Отредактируйте, чтобы адресовать правила ipfilter, вставленные с каждого сервера)
Хорошо, начнем с venus1 (122.99.117.18). Очевидная проблема здесь в том, что нет универсальной deny ip from any to any
, поэтому нам нужно немедленно это исправить. Из командной строки вы можете выполнить: sudo ipfw add 65534 deny log logamount 1000 ip from any to any
Или сделайте это на вкладке «Настройки администратора сервера» на подвкладке «Дополнительно», если вам неудобно манипулировать правилами ipfw из командной строки (что должно вас нервировать, поскольку это может плохо закончиться, если вы ошибетесь). Должен быть список расширенных правил, несколько похожий на следующий рисунок. Предполагая, что это правило уже существует внизу, отметьте его, чтобы включить его:
Помните, что правила ipfw идут вниз по списку приоритетов, поэтому правило с приоритетом 1 имеет приоритет над всем остальным. Таким образом, добавление правила «запретить все» на 65534 будет последним в списке, то есть оно будет отклонять соединение только в том случае, если все, что выше, не разрешает что-то первым.
Хорошо, разобравшись с этим, давайте разберемся с некоторыми группами адресов. Вы определили группу адресов 122.99.117.16/29, поэтому 122.99.177.16-22 (где один IP-адрес является шлюзом), который является вашим Mac Minis и другими IP-адресами co-lo. Вероятно, вы захотите определить другую группу адресов для местоположения своего офиса, который, как я предполагаю, имеет статический IP-адрес 59.167.152.67 (или, если ваша работа получает динамический IP, тогда весь сетевой блок Internode равен 59.167.0.0/16). Сделайте это как для venus1, так и для venus2 и добавьте еще для любых других ваших офисов.
После того, как вы определили свои офисные группы, дайте каждому из этих разрешений доступ к TCP22, TCP311, TCP626, TCP625, TCP3283 и TCP5900, чтобы вы всегда могли администрировать свой Minis, даже если вы отключили общий доступ к этим портам. Используя графический интерфейс, перейдите на подвкладку Services в настройках администратора сервера. Измените «Услуги редактирования для:» на адресную группу (ы) вашего офиса, затем отметьте соответствующие поля для указанных выше портов.
Теперь давайте обратимся к еще нескольким проблемным правилам Venus1. Например:
12321 1570 78548 allow tcp from any to any dst-port 3306
Правило 12321 позволяет всему подключаться к MySQL. Отключите это правило для «любой» адресной группы (снова используя вложенную вкладку «Службы») и, пока вы там, любые другие службы, к которым миру не нужен доступ. Вероятно, вы хотите, чтобы TCP25 (почта smtp), TCP / UDP53 (dns), TCP80 (HTTP), TCP443 (HTTPS) были доступны для всех, но нужен ли вам глобальный доступ к TCP8080 (статус сервера tomcat)? Что-нибудь еще? Заблокируйте все это и предоставляйте доступ только к адресным группам вашего офиса и ко-лоу, где это необходимо (например, репликация MySQL).
Не забудьте все проверить! Научитесь использовать Nmap для сканирования портов вашего сервера, чтобы вы могли видеть, что открыто и что закрыто. Сканируйте из разных мест (например, из вашего офиса, ssh'ed на другой сервер, дома через другого провайдера и т. Д.), Чтобы убедиться, что правила работают должным образом. Будьте осторожны, чтобы не запереться, но зафиксируйте все как можно крепче. Перечитайте документ Peachpit, и Apple поддерживает PDF-файл, указанный выше, и по-настоящему изучите материал, он сослужит вам хорошую службу. О, и регулярно следите за своими журналами!
Хорошо, надеюсь, это должно вас увидеть или, по крайней мере, направить вас на лучший путь. Удачи.
Самым быстрым решением было бы просто использовать сниффер пакетов - tcpdump или wirehark (последний имеет графический интерфейс). Если есть какой-то постоянный источник трафика, он, как правило, выделяется. Вы также сможете вникнуть в подробности полезной нагрузки, как только обнаружите источник неизвестного трафика.
Основываясь на тесной корреляции между статистикой трафика на промежуточном и рабочем серверах, похоже, что ваши два сервера общаются с друг друга.
Порт 625 - это порт управления, используемый продуктами Apple. Из вашего netstat видно, что одна машина (.19) подключается к другой (.18) через порт 625. По некоторым поисковым запросам Google, Mac OS X использует порт 625 для Менеджер рабочей группы (который был заменен в Mountain Lion на Profile Manager).
Также похоже, что множество других машин в Интернете также подключаются к порту 625, вероятно, как попытки взлома. Вы должны как можно скорее установить брандмауэр на свой сервер, чтобы предотвратить вторжение.