Как я могу проверять пользователей и попытки доступа к SSH на моем сервере?
У меня было несколько проблем с безопасностью на моем сервере, несколько пользователей SSH настраивали пожары или проблемы.
Я бы хотел:
- Отслеживание пользовательских входов и выходов
- Отслеживайте активность этих SSH, чтобы обнаружить любую вредоносную активность
- Запретить пользователям удалять журналы
Я не являюсь системным администратором и совершенно неопытен в этом вопросе, поэтому любые советы будут очень полезны и полезны.:)
5 ответов
Поскольку мы говорим о SSH-серверах, я дам вам решения для командной строки.
Отслеживание пользовательских входов и выходов. Это легко, файл
/var/log/auth.log
должен иметь эту информацию.Отслеживайте активность этих пользователей: если они довольно невинны, вы можете проверить файл
.bash_history
в их доме реж. Вы увидите список команд, которые они выполнили. Проблема, конечно, в том, что они могут удалить или отредактировать этот файл.Запретить пользователям удаление журналов: пользователи не должны касаться
auth.log
, Чтобы помешать им играть с.bash_history
вам нужно сделать пару трюков.Что если пользователю удастся получить root-доступ?: Ты пьян. Если они не совершат ошибку, они смогут скрыть все свои шаги.
[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ] Я понимаю, что я опаздываю на вечеринку, но я хотел бы вставить ответ, который я дал на другой вопрос, потому что я чувствую, что он может предложить некоторое хорошее понимание для читателей, и этот вопрос, кажется, подходит место для базовой информации SSH.
Была похожая проблема, которая поразила меня после прочтения этого вопроса здесь на AskUbuntu и проверки моего VPS, только чтобы увидеть несколько миллиардов попыток перебора. Именно тогда я решил принять меры.
Теперь, в соответствии с вопросом, на который я ссылался, если вы хотите увидеть неудачные попытки входа в систему на вашей машине через ssh (это могут быть попытки перебора или что-то в этом роде), попробуйте набрать следующее:
grep sshd.\*Failed /var/log/auth.log | less
Если выходные данные состоят из нескольких строк, то есть множества попыток грубой силы, особенно если они произошли между короткими интервалами, вы можете выполнить следующие действия:
Изменить файл конфигурации ssh
Для этого откройте файл, расположенный в /etc/ssh/sshd_config, в вашем любимом редакторе, например так: vim /etc/ssh/sshd_config
,
1. Попробуйте переместить ssh из порта 22: найдите строку с надписью:
# What ports, IPs and protocols we listen for
Port 22
и закомментируйте порт 22, и используйте кого угодно. Пример:
# What ports, IPs and protocols we listen for
# Port 22
Port 28934
Пожалуйста, помните, что порты ниже 1024 требуют специального (root) разрешения. Я не знаю, как это может помешать этому, но я просто говорю.
2. Отключите вход в систему Root через ssh: поскольку имя пользователя root предсказуемо и обеспечивает полный доступ к вашей системе, предоставлять беспрепятственный доступ к этой учетной записи через SSH нецелесообразно. Найдите строку с именем PermitRootLogin и установите для нее значение no.
PermitRootLogin no
3. Отключите аутентификацию по паролю. Создайте и используйте ключи SSH для входа в систему. Если пароли не включены, злоумышленникам потребуется угадать (или украсть) ваш закрытый ключ SSH, чтобы получить доступ к вашему серверу. Нечто очень сложное. Перейдите к строке, которая читает PasswordAuthentication, и установите для нее значение no
PasswordAuthentication no
!ПРЕДУПРЕЖДЕНИЕ! Прежде чем сделать это, пожалуйста, ознакомьтесь с этим руководством здесь о том, как настроить аутентификацию сертификата.
ПРИМЕЧАНИЕ. После внесения изменений используйте sudo /etc/init.d/ssh restart
, Для подключения к другому порту через ssh используйте: ssh username@hostname.com -p <port_number>
,
Настройте брандмауэр
Пожалуйста, ознакомьтесь с этим руководством о том, как настроить чрезвычайно мощный и эффективный межсетевой экран, который интегрирован в Linux, IPTables.
Сценарии установки, чтобы помочь вам с безопасностью
Тот, который я использую лично и быстро приходит на ум, - это Fail2Ban. Fail2ban будет контролировать ваши файлы журнала для неудачных попыток входа в систему. После того, как IP-адрес превысил максимальное количество попыток аутентификации, он будет заблокирован на уровне сети, и событие будет зарегистрировано /var/log/fail2ban.log
, Чтобы установить это: sudo apt-get install fail2ban
Проверьте историю команд через ssh
Существует команда Linux, названная history
, который позволяет вам видеть, какие команды были введены до этого момента. Попробуйте набрать history
в терминале, чтобы увидеть все команды до этого момента. Это могло бы помочь, если бы вы были root.
Для поиска конкретной команды попробуйте: history | grep command-name
Чтобы вывести список всех команд после ssh: fc -l ssh
Вы также можете редактировать команды, используя vi (еще не пробовал vim, хотя я предполагаю, что это также работает): fc -e vi
Вы также можете удалить историю: history -c
ПРИМЕЧАНИЕ: если вы не фанат команды history
в вашем домашнем каталоге также есть файл (cd ~
), называется .bash_history (если вы используете bash), что вы можете cat
чтобы увидеть все, что было напечатано в оболочке bash.
Немного излишне, но вы можете увидеть все, что запущено в вашей системе, используя "коннектор событий процесса":
http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/
Помимо самого входа в систему нет безопасного способа отслеживать / регистрировать действия пользователей после их входа в систему, при условии, что они имеют базовые знания Linux, что они смогут отключить ведение журнала оболочки или просто запускать команды из других оболочек (например, python).
Вместо этого вы должны быть консервативны в отношении предоставления доступа по SSH, им это действительно нужно? Предоставление доступа по ssh не очень распространено, если вы не используете оболочку, предоставляющую бизнес.
- Хавьер уже ответил на это: /var/log/auth.log
- Я нашел отличную статью об этом здесь.
- Если ваши пользователи не имеют доступа к root, ваши файлы журналов должны быть в безопасности. Вы можете попытаться встроить некоторые пользовательские правила в файл sudoers, чтобы ограничить доступ и способы доступа ваших пользователей. Также вы можете увеличить уровень журнала для демона sshd.