УНИТе

Портал > Документация > Позициониране на потребителските OpenSSH ключове в HPC порталния сървър и HPC изчислителните сървъри

Позициониране на потребителските OpenSSH ключове в HPC порталния сървър и HPC изчислителните сървъри

Съдържание:

  1. Предварителна информация
  2. Специфични настройки в /etc/ssh/sshd_config на порталния HPC сървър
  3. Различно съдържание на /opt/ssh/authorized_keys върху HPC порталния сървър и HPC изчислителните сървъри

 

1. Предварителна информация

В една HPC инфраструктура, различните класове потребители имат различно ниво на достъпа. Организирането на този достъп изисква различна от стандартната настройка на OpenSSH сървъра. Стандартно, в Linux дистрибуциите CentOS 7 и Scientific Linux 7, потребителсктие OpenSSH ключове се поставят във файла /home/username/.ssh/authorized_keys (тук "username" трябва да се замести с актуалното име на потребителя). Пак стандартно, собственик на /home/username/.ssh/authorized_keys трябва да е потребителя, чиято идентичност ще се определя на базата на ключовете в този файл. Причината е, че в процеса на удостоверяване, извършван с посредничеството на OpenSSH сървъра (чиито демон sshd се изпълнява локално), демонът sshd създава дъщерен процес, който се изпълнява с правата на потребителя, който ще бъде удостоверен (този механизъм на създаване на дъщерен процес в OpenSSH се нарича "privilege separation").

В сървърските системи, които са част от HPC инфраструктура обаче, потребителските SSH ключове НЕ БИВА да се съхраняват във файловете /home/username/.ssh/authorized_keys. Причините за това са следните:

  • Домашните директории на потребителите се монтират на всеки от изчислителните сървъри, върху които потребителя ще изпълнява задачи. Това означава, че той може да се удостовери и получи достъп до командния интерпретатор на всеки изчислителен сървър, ако OpenSSH сървъра работи базиран на стандартните настройки в /etc/ssh/sshd_config. Това е в разрез със сигурността в HPC инфраструктурата.
  • Потребителят може да промени съдържанието на /home/username/.ssh/authorized_keys и да добави там още ключове, които не са одобрени от администратора на системата. С други думи, даден потребител може да добави "скрито" други потребители, представяйки ги за себе си, без при това да им дава копие от своя OpenSSH частен ключ (препродаване на изчислително време).

Реално, само порталният сървър на HPC инфраструктурата, през който потребителят изпраща задачата към мениджъра на опашката и следователно се удостоверява, трябва да оперира със съдържанието на файловете, които съдържат OpenSSH ключа на даден потребител. Самите изчислителни сървъри не удостоверяват (в повечето случаи) потребителите, доколкото мениджъра за управление на задачите стартира върху тях процеси с правата на съответния потребител и (в повечето случаи) единствената проверка, която се извършва там е дали домашната директория на потребителя присъства (и коя е тя) и какво е неговото UID и GID.

За да се реши този проблем, файловете с ключовете на обикновените потребители трябва да са достъпни за OpenSSH сървъра само на порталния HPC сървър - там, където процеса на удостоверяването се извършва. Съдържанието им трябва да бъде защитено и да не може да се променя от потребителите. То трябва да се управлява от мениджър на ключовете - приложение, което ги синхронизира периодично, изтегляйки ги от LDAP дирекориен сървър, където в DN-обектите на потребителите са добавени съответните SSH ключове (като атрибут). Ако потребителите са малко на брой, това управление може да бъде извършвано и ръчно.

 

2. Специфични настройки в /etc/ssh/sshd_config

Преди да продължите, направете настройките, които са препоръчани в документа "Настройки на OpenSSH сървър под CentOS 7 и Scientific Linux 7". След това, отворете файла /etc/ssh/sshd_config и в него намерете следния ред:

AuthorizedKeysFile     .ssh/authorized_keys

Преправете го на:

AuthorizedKeysFile      /opt/ssh/authorized_keys/%u

и запазете промените. Създайте директорията /opt/ssh/authorized_keys (за целта ще са ви нужни права на super user) и установете съответните права за достъп:

# mkdir /opt/ssh/authorized_keys
# chmod 755 /opt/ssh/authorized_keys

Рестартирайте демона sshd:

# systemctl restart sshd

За да тествате дали настройките работят правилно, изберете потребителско име (съществуващо в системата) и създайте за този потребител файл в /opt/ssh/authorized_keys/username:

# touch /opt/ssh/authorized_keys/username
# chown username:username /opt/ssh/authorized_keys/username
# chmod 600 /opt/ssh/authorized_keys/username

Поставете копие от OpenSSH ключа на потребителя в този файл. След това, направете така, че съдържанието на този файл да не може да бъде променено от потребителя:

# chattr +a /opt/ssh/authorized_keys/username

Проверете дали потребителя може да се удостовери на база своя OpenSSH ключ.

Обърнете внимание, че ако искате да промените пак съдържанието на файла /opt/ssh/authorized_keys/username, трябва да го направите писаем отново, изпълнявайки:

# chattr -a /opt/ssh/authorized_keys/username

 

3. Различно съдържание на /opt/ssh/authorized_keys върху HPC порталния сървър и HPC изчислителните сървъри

Директорията /opt/ssh/authorized_keys трябва да има различно съдържание върху HPC портала и HPC изчислителния сървър, съгласно следните базови правила:

  • HPC портален сървър:

    Директорията /opt/ssh/authorized_keys трябва да съдържа файловете с OpenSSH ключове за всеки потребител, който ще има достъп до този сървър и ще може да изпраща задачи до опашката.

  • HPC изчислителен сървър:

    Директорията /opt/ssh/authorized_keys трябва да съдържа файловете с OpenSSH ключове САМО за тези потребители, които ще администрират системата. Т.е. това няма да са обикновени потребители, които ще стартират изчислителни задачи върху HPC изчислителните сървъри.

 


Последна актуализация: 04 април 2019

2019 УНИТе, Веселин Колев