Назад | Перейти на главную страницу

Кто для меня sftp-файлы? Есть ли способ узнать?

Мне пришлось взять на себя ответственность за Linux-машину Ubuntu, которую мы используем в качестве файлового сервера. У меня почти не было опыта работы с Linux. Одна из вещей, с которыми я пытаюсь справиться, - это куча очень больших файлов, которые кто-то переносит на этот сервер и занимает все доступное пространство. Я поспрашивал, и никто не использует эти файлы и не знает, откуда они. Я не хочу заходить в систему каждый день, чтобы продолжать удалять эти файлы, но я понятия не имею, кого отслеживать, откуда они приходят. Все, что я знаю, это то, что файлы отправляются на наш сервер, скорее всего, через sftp, и что мы не извлекаем файлы откуда-то (я не нашел ни одного задания cron, которое бы это делало). Могу ли я узнать, откуда берутся эти файлы, и, возможно, заблокировать их?

Пара идей:

Есть ли общее имя пользователя и пароль SFTP, которые все используют для подключения к серверу, или у каждого есть собственное имя пользователя? Если у каждого из них есть собственное имя пользователя, вы можете посмотреть владельца файлов, используя ls -l path/to/file.

Поскольку SFTP работает поверх SSH, вы можете проверить журнал аутентификации в /var/log/auth.log чтобы узнать, кто и когда вошел в систему. Вы можете проверить время создания в больших файлах и посмотреть, сможете ли вы сопоставить время создания / входа в систему. В auth.log файл содержит IP-адрес и имена пользователей для каждой попытки входа в систему. Когда у вас есть IP-адрес, вы можете выполнить обратный поиск DNS (т.е. dig @your_nameserver -x offending_ip +short, или выполните любую другую сетевую разведку, о которой вы только можете подумать.

Что касается того, что делать, как только вы узнаете, кто использует все пространство, это зависит от того, кто использует ваш файловый сервер. Если это общедоступный файловый сервер, запрет IP-адреса может показаться разумным, но если кто-то намерен злоупотребить вашим сервисом, он может просто прокси-сервер через другой IP-адрес и сделать все это снова. Если это внутренний файловый сервер вашей организации, вы, вероятно, захотите поговорить с нарушителем, если сможете его найти. Возможно, стоит составить простой набор правил для использования файлового сервера (то есть не загружать огромные файлы) и разместить его там, где его смогут увидеть люди.

Вы можете использовать systemtap, чтобы узнать, какой PID создает файл. Вот как увидеть удаление: https://serverfault.com/a/310477/30946 Для создания нужно смотреть creat(2) и open(2) системные вызовы.

Сценарий systemtap будет:

probe syscall.creat, syscall.open
{
    printf ("%s(%d) open (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}

В основном:

  • Файлы всегда будут содержать данные о владельце, имя пользователя и группу, поиск по которым уже может дать информацию о реальном бизнес-пользователе, конкретном бизнес-процессе или ответственном серверном процессе.
  • Путь к файлу / каталогу также часто указывает на конкретную службу. Т.е. Файлы в /var/www намек на процесс веб-сервера, онлайн-форму загрузки или веб-DAV и т. д.
  • Кроме того, большинство демонов (включая sftp) регистрируют такие события, как аутентификация пользователя и / или загрузка в /var/log что также может позволить вам определить, из каких систем исходят такие загрузки