Этот вопрос уже задан ответ здесь:
Итак, сегодня мой сервер взломали. Но просто пользователь, не являющийся пользователем sudoer.
Nov 26 10:44:18 Ubuntu-1604-xenial-64-minimal sshd[27188]: Accepted publickey for ... from hackerIP port 26394 ssh2: RSA SHA256:...
Он запустил экран и больше ничего не сканировал сети. История пуста. Он подключился к какому-то публичному ключу, хотя я никогда не добавлял никаких ключей. Я знаю, что мне следует использовать ssh-ключи вместо пароля. Но мой корень так и не был скомпрометирован. В auth.log я заметил следующее
Nov 26 19:01:01 Ubuntu-1604-xenial-64-minimal CRON[12360]: pam_unix(cron:session): session opened for user ... by (uid=0)
Nov 26 19:01:01 Ubuntu-1604-xenial-64-minimal CRON[12360]: pam_unix(cron:session): session closed for user ...
Nov 26 19:02:01 Ubuntu-1604-xenial-64-minimal CRON[12368]: pam_unix(cron:session): session opened for user ... by (uid=0)
Nov 26 19:02:01 Ubuntu-1604-xenial-64-minimal CRON[12368]: pam_unix(cron:session): session closed for user ...
. Честно говоря, я не знаю, размещаю ли я его не в том разделе. Я просто хочу чтобы знать, где найти ssh-ключи, потому что моя папка с ключами пуста. Как отключить удаленный вход для этого конкретного пользователя (чтобы я мог подключаться только через root и использовать команду su для входа). А что делать с pam_unix.
Edit: Во-первых, спасибо за огромную помощь. Я мог отменить все, что сделал злоумышленник. И я отключил вход по ssh-key в конфигурации sshd, поэтому действительны только пароли. Failed2Ban тоже работает, и я ежедневно управляю auth.log вручную.
Если вы хотите отключить возможность удаленного доступа пользователя к SSH, у вас есть пара параметров конфигурации прямо из /etc/ssh/sshd_config
.
Я лично предпочитаю использовать белые, а не черные списки для учетных записей пользователей. Вот почему использование белого списка позволяет явным пользователям входить в систему только там, где черный список запрещает только этим пользователям. Белый список, на мой взгляд, более полный.
Если вы хотите, чтобы admin, joe и sally удаленно подключались по SSH, сработала бы следующая директива, добавленная в /etc/ssh/sshd_config
.
AllowUsers admin joe sally
Если вы просто хотите заблокировать baduser
от подключения, используйте следующее.
DenyUsers baduser
В любом случае вам нужно sudo service ssh restart
, чтобы изменения вступили в силу.
Авторизованные ключи почти всегда находятся в ~ / .ssh / authorized_keys для конкретного пользователя. Вы можете найти их домашний каталог, выполнив команду cd ~username
. Расположение файла авторизованных ключей можно изменить в / etc / ssh / sshd_config с помощью строки, подобной AuthorizedKeysFile /some/path/to/authorized_keys_file
, поэтому я проверю оба места.
Вы можете отключить вход в систему этого пользователя, добавив что-то вроде следующего в ваш / etc / ssh / sshd_config:
AllowUsers root user
, чтобы разрешить только определенным пользователям или [ 1111]
DenyUsers user1 user2
для отказа конкретным пользователям. Есть много других интересных вещей, как это, просто прочитайте справочную страницу sshd_config.
Обычно root - это не та учетная запись, в которую вы хотите войти в ssh, потому что, если она взломана, они могут сделать что угодно.
И наконец, насчет pam_unix, это cronjob. Вы можете найти cronjobs в:
/var/spool/cron/crontabs
/etc/crontab
/etc/cron.d
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
Для укрепления конфигурации sshd,
Отключают вход в систему login/passwd: в/etc/ssh/sshd_config
ChallengeResponseAuthentication no
UsePAM no
И необходимо отключить корневой вход в систему (используйте sudo)
PermitRootLogin no
Ответ, как сказано Bryce, используйте AllowUsers
(но не корень ;-)
существует некоторая конфигурация, которую можно сделать.