Как ограничить максимальное количество соединений ssh в CentOS / RHEL

Нет такой опции, которая может ограничивать максимальное количество соединений ssh.

Но как обходной путь, мы можем сделать sshd управляемым супер демоном xinetd и использовать опцию экземпляров xinetd, чтобы ограничить максимальное количество соединений ssh.

В большинстве Unix-подобных операционных систем сервер OpenSSH работает как демон, прослушивающий соединения SSH.

В системах CentOS / RHEL, однако, sshd управляется демоном супер-сервера xinetd.

Всякий раз, когда клиент SSH пытается связаться с sshd через TCP-порт 22, xinetd замечает попытку и вызывает один экземпляр sshd (в частности, sshd -i) для обслуживания этого соединения.

Ограничение максимального числа соединений ssh

1. Создайте файл /etc/xinetd.d/sshd и добавьте следующее содержимое.

# cat /etc/xinetd.d/sshd 
service ssh
{
        disable = no
        socket_type = stream
        wait = no
        user = root
        server = /usr/sbin/sshd
        server_args = -i
        log_on_success += DURATION USERID
        log_on_failure += USERID
        nice = 10
        instances = 3 # максимальное количество
}

2. Остановите работающий в данный момент демон sshd.

# service sshd stop
# chkconfig sshd off

3. Перезапустите xinetd super daemon.

# service xinetd restart

Ограничение одновременного доступа к серверу через ssh (испольуя limit.conf)

Альтернатива возможна, если достаточно ограничения на одно (или небольшое количество) известных имен для входа.

Здесь мы пытаемся ограничить одновременный вход пользователей на сервер через ssh.

1. Если предположить, что количество пользователей, для которых мы хотим ограничить доступ по ssh, равно 3, то в файле /etc/security/limits.conf поместите следующую директиву:

# vi /etc/security/limits.conf
#[domain]        [type]  [item]  [value]
*               hard    maxsyslogins    3

domain, выбранный здесь *, предназначен для записи по умолчанию.
type, выбранный здесь, hard установить жесткие ограничения.
item, выбранный здесь, это maxsyslogins максимальное количество всех входов в систему.

Дальнейшие пользователи не могут войти в систему, если общее количество всех входов в систему превышает указанное число (3).

Проверка

Пользователь root уже зарегистрирован на сервере как root и выполнил команду tailf /var/log/secure на своем терминале.

Ниже показан живой отрывок из /var/log/secure во время тестирования вышеуказанного метода:

Mar 25 12:16:01 rhel6 sshd[7888]: Accepted password for user1 from 10.65.223.222 port 53048 ssh2
Mar 25 12:16:01 rhel6 sshd[7888]: pam_unix(sshd:session): session opened for user user1 by (uid=0)
Mar 25 12:16:14 rhel6 sshd[7921]: Accepted password for user2 from 10.65.223.222 port 53049 ssh2
Mar 25 12:16:14 rhel6 sshd[7921]: pam_unix(sshd:session): session opened for user user2 by (uid=0)
Mar 25 12:16:33 rhel6 sshd[7953]: Accepted password for user3 from 10.65.223.222 port 53050 ssh2
Mar 25 12:16:33 rhel6 sshd[7953]: pam_limits(sshd:session): Too many logins (max 3) for user3
Mar 25 12:16:33 rhel6 sshd[7953]: pam_unix(sshd:session): session opened for user user3 by (uid=0)
Mar 25 12:16:33 rhel6 sshd[7953]: error: PAM: pam_open_session(): Permission denied

Есть три пользователя user1, user2 и user3.

Как только третий пользователь попытается войти, он будет возвращен с ошибкой, как показано ниже:

# ssh user3@rhel5
user3@rhel6's password: 
Too many logins for 'user3'.

Это связано с тем, что root, user1 и user2 уже вошли в систему.

Все остальные пользователи, пытающиеся отныне зайти по ssh, будут возвращены.

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40