Запуск SSH без отсоединения от терминала
Запуск службы sshd описан в первой части. Также демон sshd можно запустить по имени файла. Для этого нужно указать полный путь до файла sshd, чтобы его узнать:
which sshd /usr/bin/sshd
Запущенная таким образом sshd отключиться от терминала (перейдёт в фоновое выполнение) и не будет выводить что-либо в стандартный вывод.
Можно запустить sshd как процесс без отсоединения от терминала (чтобы процесс не стал демоном), для этого используйте опцию -D — это позволяет упростить процесс мониторинга работы SSH, поскольку сообщения о событиях и проблемах службы будут выводиться в стандартный вывод. Дополнительно можно указать опцию -d для включения режима отладки:
sudo /usr/bin/sshd -D -d
Разрешить SSH-доступ пользователю или группе
Чтобы разрешить доступ по SSH для определенного пользователя, например sk, отредактируйте файл sshd_config:
$ sudo vi /etc/ssh/sshd_config
Нажмите «i», чтобы войти в режим вставки и добавить или изменить следующую строку:
AllowUsers sk
Замените «sk» своим именем пользователя
Обратите внимание на отступы между «AllowUsers» и «sk». Вы должны использовать Tab вместо пробела
Значение — добавьте слово «AllowUsers» и нажмите клавишу Tab, а затем укажите имя пользователя.
Вы также можете указать более одного пользователя, как показано ниже.
AllowUsers user1 user2
Чтобы разрешить всю группу, например, root , добавьте/отредактируйте следующую строку:
AllowGroups root
Этот параметр позволит всем членам «корневой» группы подключаться к серверу Linux по ssh.
Нажмите клавишу ESC, чтобы выйти из режима вставки, и введите : wq, чтобы сохранить и выйти из файла конфигурации SSH. Перезапустите службу SSH, чтобы изменения вступили в силу.
$ sudo systemctl restart sshd
Теперь пользователю sk и всем членам «корневой» группы разрешено подключаться к вашему Linux-серверу по ssh. Остальные пользователи (кроме sk и членов группы «root») не имеют доступа к системе через ssh.
Чтобы проверить это, попробуйте подключиться к серверу Linux по ssh от имени любого из запрещенных пользователей:
$ ssh [email protected]
Вы получите следующее сообщение об ошибке:
[email protected]'s password: Permission denied, please try again.
Настройка параметров политики безопасности
Описывает действия по настройке параметра политики безопасности на локальном устройстве, на устройстве, соединяемом с доменом, и на контроллере домена.
Для выполнения этих процедур необходимо иметь права администраторов на локальном устройстве или иметь соответствующие разрешения на обновление объекта групповой политики (GPO) на контроллере домена.
Если локальный параметр недоступен, это указывает на то, что GPO в настоящее время контролирует этот параметр.
Настройка параметра с помощью консоли Local Security Policy
Чтобы открыть локализованную политику безопасности на экране Начните, введите secpol.mscи нажмите кнопку ENTER.
В Параметры панели безопасности консоли сделайте одно из следующих:
- Щелкните Политики учетной записи, чтобы изменить политику паролей или политику блокировки учетных записей.
- Щелкните локальные политики, чтобы изменить политику аудита, назначение прав пользователей илипараметры безопасности.
При нажатии параметра политики в области сведений дважды щелкните политику безопасности, которую необходимо изменить.
Измените параметр политики безопасности и нажмите кнопку ОК.
- Некоторые параметры политики безопасности требуют перезапустить устройство до того, как параметр вступает в силу.
- Изменения прав пользователя вступают в силу при его следующем входе в учетную запись.
Для выполнения этих процедур необходимо иметь соответствующие разрешения на установку и использование консоли управления Microsoft (MMC) и обновление объекта групповой политики (GPO) на контроллере домена.
Откройте редактор локальной групповой политики (gpedit.msc).
В дереве консоли нажмите кнопку Конфигурациякомпьютера, нажмите кнопку Windows Параметрыи нажмите кнопку Безопасность Параметры.
Выполните одно из следующих действий.
- Щелкните Политики учетной записи, чтобы изменить политику паролей или политику блокировки учетных записей.
- Щелкните локальные политики, чтобы изменить политику аудита, назначение прав пользователей илипараметры безопасности.
В области сведений дважды щелкните параметр политики безопасности, который необходимо изменить.
Если эта политика безопасности еще не определена, выберите поле Определение этих параметров политики.
Измените параметр политики безопасности и нажмите кнопку ОК.
Если вы хотите настроить параметры безопасности для многих устройств в сети, вы можете использовать консоль управления групповой политикой.
Настройка параметра контроллера домена
Следующая процедура описывает настройку параметра политики безопасности только для контроллера домена (от контроллера домена).
Чтобы открыть политику безопасности контроллера домена в дереве консоли, найдите GroupPolicyObject Политика, щелкните Конфигурация компьютера, нажмите кнопку Windows Параметры, а затем нажмите кнопку Параметры .
Выполните одно из следующих действий.
- Дважды щелкните политики учетных записей для редактирования политики паролей, **** политики блокировки учетных записей или политики Kerberos.
- Щелкните локальные политики, чтобы изменить политику аудита, назначение прав пользователей илипараметры безопасности.
В области сведений дважды щелкните политику безопасности, которую необходимо изменить.
Если эта политика безопасности еще не определена, выберите поле Определение этих параметров политики.
Измените параметр политики безопасности и нажмите кнопку ОК.
Настройка SSH сервера в Windows
После уставной сервера OpenSSH в Windows вам нужно изменить тип запуска службы sshd на автоматический и запустить службу с помощью PowerShell:
С помощью nestat убедитесь, что теперь в системе запущен SSH сервер и ждет подключений на 22 порту:
Проверьте, что включено правило брандмауэра (Windows Defender Firewall), разрешающее входящие подключения к Windows по порту TCP/22.
Name DisplayName Description Enabled ---- ----------- ----------- ------- OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True
Если правило отключено (состоянии Enabled=False) или отсутствует, вы можете создать новое входящее правило командой New-NetFirewallRule:
По умолчанию важным компоненты OpenSSH хранятся в следующих каталогах:
- Исполняемые файлы OpenSSH Server:
- Конфигурационный файл sshd_config (создается после первого запуска службы):
- Журнал OpenSSH:
- Файл authorized_keys и ключи:
При установке OpenSSH сервера в системе создается новый локальный пользователь sshd.
Запретить доступ по SSH пользователю или группе
Чтобы отключить или запретить доступ по SSH для пользователя или группы, вам необходимо добавить/изменить следующие директивы в файле sshd_config вашего удаленного сервера.
- DenyUsers
- DenyGroups
Чтобы запретить доступ по SSH конкретному пользователю с именем «sk», отредактируйте файл sshd_config:
$ sudo vi /etc/ssh/sshd_config
Добавьте/отредактируйте следующую строку в файле sshd_config.
DenyUsers sk
Убедитесь, что отступы правильные. Не используйте клавишу пробела. Нажмите клавишу Tab и добавьте имя пользователя.
Аналогичным образом, чтобы запретить доступ по SSH нескольким пользователям, укажите имена пользователей через пробел, как показано ниже.
DenyUsers user1 user2
Аналогичным образом, чтобы запретить доступ по SSH для всей группы, например root , добавьте:
DenyGroups root
Сохраните и выйдите из файла конфигурации ssh. Перезапустите службу ssh, чтобы изменения вступили в силу.
$ sudo systemctl restart sshd
Теперь попробуйте ssh на свой Linux-компьютер из заблокированной учетной записи пользователя, например sk:
$ ssh [email protected]
Вы получите следующее сообщение:
[email protected]’s password: Permission denied, please try again. [email protected]’s password:
№ 10: Используйте сильные пароли
Нельзя переоценить, насколько важно использовать сильные
пользовательские пароли или пароли для ваших ключей. Атака методом
грубой силы работает, если Вы пользуетесь паролями, которые
подбираются по словарю
Вы можете заставить пользователей не применять
. Используйте специальное средство
для поиска используемых слабых паролей. Ниже приведен пример генератора случайных паролей (поместите в ваш файл ~/.bashrc):
genpasswd() { local l=$1 && l=20 tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs }
Запустите генератор:
genpasswd 16
Вы получите следующий результат:
uw8CnDVMwC6vOKgW
Дополнительные настройки безопасности
Есть и другие рекомендуемые конфигурации, чтобы избежать нежелательных подключений к нашему SSH-серверу. Эти соединения:
- Войти : Мы установим время, необходимое для ввода пароля, чтобы злоумышленнику не приходилось «много думать».
- MaxAuthTries : Количество разрешенных попыток при вводе пароля перед отключением.
- MaxStartups : Количество одновременных входов в систему с IP-адреса, чтобы избежать использования грубой силы в нескольких сеансах одновременно.
- AllowUsers : Это для создания белого списка пользователей. Этот параметр позволяет нам настроить пользователей, которые смогут подключиться. Это очень ограничительная мера, но в то же время очень безопасная, поскольку она блокирует все подключения пользователей, которых нет в списке. Пользователи, которые у нас здесь, смогут подключиться, а остальные — нет.
- DenyUsers : Аналогично предыдущему, но теперь мы создаем черный список. Пользователи, которые у нас здесь, не смогут подключиться, а остальные подключатся.
- AllowGroups / DenyUsers : Точно так же, как указано выше, но вместо создания черного / белого списка пользователей это группы пользователей.
Например, файл конфигурации для sshd_config будет следующим:
Дополнительной мерой безопасности является настройка алгоритмов обмена ключами, симметричного шифрования, а также конфигурации HMAC для проверки целостности. В настоящее время рекомендуется применять следующую конфигурацию для обеспечения очень высокой безопасности:
С этой конфигурацией у нас будут лучшие криптографические наборы для сервера, однако старые клиенты могут не иметь возможности подключиться, поскольку они не поддерживают эти алгоритмы
Мы должны принять во внимание эту деталь и проверить, какие алгоритмы совместимы, а какие нет
Если мы создали новые ключи RSA или DSA для ключей с большей битовой длиной, мы должны поместить их в файл конфигурации (или заменить предыдущие, и, таким образом, нам не придется трогать файл конфигурации), таким образом мы получим дополнительная безопасность, если, например, мы используем ключи RSA длиной 4096 бит или выше.
Чтобы сгенерировать новые 4096-битные ключи RSA, нам просто нужно выполнить следующую команду:
Если мы хотим сгенерировать новые ключи ECDSA (с максимальной длиной 512 бит) или ED25519, нам нужно будет ввести следующие команды:
11: Используйте сильные пароли и ключи
Невозможно оценить насколько важно использовать сильные пароли и ключи. Brute-Force атака работает если вы используете пароли, которые основываются на данных из словарей
Есть также специальные расширенные «словари», которые могут содержать наиболее популярные пароли. Они называются rainbow tables. Вы можете заставить пользователей избегать пароли подверженные подобным атакам и выявлять слабые пароли с помощью утилиты John the Ripper. Вот пример генератора случайных паролей, написанных на баше (положите его в ваш ~/.bashrc):
genpasswd() {
local l=$1
&& l=20
tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
}
1 |
genpasswd(){ locall=$1 «$l»==»»&&l=20 tr-dcA-Za-z0-9_<devurandom|head-c${l}|xargs } |
Если вы совсем параноик, то вместо /dev/urandom используйте /dev/random
Запустите в консоли:
Shell
genpasswd 16
uw8CnDVMwC6vOKgW
1 |
genpasswd16 uw8CnDVMwC6vOKgW |
Как изменить доступ к файлам, с помощью .htaccess?
Для того чтобы это сделать, мы в корневой папке сайта создаем файл .htaccess. Данный файл необходимо открыть как обычный текстовик или с помощью программы для написания кода. Я открываю этот файл через программу Sublime Text.
ВНИМАНИЕ
Для файла .htaccess следует использовать права доступа 644 и загружать его в ASCII-режиме. Если ваш .htaccess файл не работает, то вам следует обратиться к системному администратору или в техподдержку вашего веб-хостинга и убедиться, что использование его разрешено для вашей учетной записи, так как некоторые хостинговые компании не позволяют его использование без предварительного разрешения, это в основном относится к бесплатным хостингам. Также, к сожалению, .htaccess не будет работать на Windows-серверах.
Первая директива, с которой мы познакомимся, это директива Order. Синтаксис директивы прост и она может быть использована в двух вариантах:
Order Deny,Allow # или Order Allow,Deny
Order Deny,Allow – это начала кода, которое показывает, что после него будут перечислены параметры ограничения доступа к файлам.
Allow – разрешает доступ.
Deny – запрещает.
В зависимости от выбранного варианта или для директивы Order, мы изменяем логику работы сервера. Если используем первый вариант (Deny,Allow), то мы сообщаем серверу, что хотим запретить доступ для всех (deny), кроме тех, которым разрешим (Allow).
Когда мы используете второй вариант (Allow,Deny), то подразумевается, что мы разрешаем доступ всем, кроме определенных IP.
Здесь стоит отметить, что на самом деле использование директивы Order не является обязательным и возможно использование директив Deny и Allow без директивы Order. Также не будет ошибкой, если, к примеру, объявив в директиве Order вариант Deny,Allow, мы сначала используем директиву Allow, а затем Deny. Хотя все же лучше будет, если мы в этом вопросе не будем отходить от рекомендаций документации.
Другие возможности
Для того, чтобы скрыть идентификацию версии openssh, вам нужно
изменить исходный код и заново откомпилировать openssh. Убедитесь, что в sshd_config включены следующие опции:
# Turn on privilege separation – Включите разделение привелегий UsePrivilegeSeparation yes # Prevent the use of insecure home directory and key file permissions # Запретите использование небезопасных прав доступа к домашнему директорию и к файлам StrictModes yes # Turn on reverse name checking – Включите обратную проверку имени VerifyReverseMapping yes # Do you need port forwarding? - Вам нужно перенаправление портов? AllowTcpForwarding no X11Forwarding no # Specifies whether password authentication is allowed. The default is yes. # Укажите, допускается ли аутентификация по паролю. По умолчанию - допускается PasswordAuthentication no
Проверьте изменения, сделанные в вашем файле перед тем, как выполнить перезапуск / перезагрузку:
Ссылки:
- Официальный проект .
- Форум: и как избежать атак на SSH методом грубой силы.
- Страницы man pages с описанием sshd_config, ssh_config, tcpd, yum и apt-get.
Linux, MacOS, Windows 10
Создание SSH-ключей
Запустите терминал или Windows PowerShell на вашем компьютере и выполните команду:
ssh-keygen
Вы увидите примерно следующее сообщение:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Нажмите Enter — ключ будет сохранен в указанную директорию по умолчанию.
Далее вам будет предложено задать пароль (кодовую фразу) для ключа. Вы можете задать ее или оставить пустой, просто нажав Enter
Обратите внимание, что если вы зададите кодовую фразу, ее потребуется вводить при каждой авторизации по ключу.
Процедура создания ключей завершена, ключи сохранены в директории ~/.ssh/ в файлах id_rsa и id_rsa.pub. Теперь их необходимо скопировать на сервер.
Копирование ключей на сервер
-
Выполните в терминале следующую команду, указав вместо user имя пользователя, созданного на сервере, а вместо server — IP-адрес вашего сервера:
ssh-copy-id user@server #Например: ssh-copy-id [email protected]
-
В результате содержимое файла с публичным ключом id_rsa.pub будет скопировано в файл ~/.ssh/authorized_keys на сервере, и в дальнейшем вы сможете устанавливать соединение с сервером, используя команду:
ssh user@server #Например: ssh [email protected]
Ограничение доступа к файлам и папкам встроенными средствами Windows.
Обязательным условием, при котором ограничение будет действовать, является наличие нескольких учетных записей в системе, не с правами администратора, а также, чтобы файловая система на дисках соответствовала формату NTFS.Другими словами, администратор, для других пользователей без прав администратора, устанавливает ограничения на запись, чтение и т.д.Через учетную запись с правами администратора, в свойствах нужной папки указываются те пользователи, которые будут иметь к ней доступ. При попытке доступа к папке пользователем без прав, будет запрошен пароль.
Изменение прав доступа групп :
Итак, ограничим доступ с помощью запретов. Для этого кликаем по нужной папке или файлу правой кнопкой мыши и выбираем — «Свойства», далее переходим на вкладку — «Безопасность» и на этой вкладке нажимаем кнопку — «Изменить».
Далее открывается окно, где жмем в кнопку «Добавить». Здесь, вводим имена выбираемых объектов (логины/имена пользователей), которым дальше будет запрещен доступ к папке. Затем нажимаем «Проверить имена» чтобы убедиться в правильности ввода имени:
Для закрытия доступа всем пользователям вводим имя «Все» (учитывается регистр букв), система поймёт. Затем в колонке «Запретить» ставим галочки в те пункты, на которые вы хотите установить запрет и нажать «ОК»В итоге, указанные вами пользователи не смогут получить доступ к указанной папке либо файлу, но правда, если только зайдут в систему под своей учеткой. Чтоб вы знали, если кто-то зайдет в систему например с флешки с правами администратора, то он получит доступ к папке и всему её содержимому.
Изменение прав доступа групп :
Теперь давайте ограничим доступ к папке не запретом, а наоборот открытием прав только определенным пользователям.Для этого удалим всех пользователей из списка доступа и добавим туда уже только нужных нам.Возможно, при попытке удалить элемент, будет выдана ошибка, так как по умолчанию они наследуются от родительского каталога. Поэтому жмем «Дополнительно -> Изменить разрешения…» и снимаем галочку с «Добавить разрешения, наследуемые от родительских объектов»В Windows 10 жмем «Дополнительно» далее жмем кнопку «Отключить наследования».Система спросит «Добавить» или «Удалить». В Windows 10 система также даст на выбор два варианта — «Преобразовать унаследованные разрешения в явные разрешения этого объекта» и «Удалить все унаследованные разрешения из этого объекта». Думаю здесь все понятно. Добавив нужного пользователя, уже устанавливаем галочки в колонку «Разрешить».
Подытожим
Итак, сегодня, уважаемые читатели, мы с вами рассмотрели первую возможность ограничения доступа к определенным папкам и файлам с помощью встроенных средств Windows. Данный способ не самый надежный, но для ограждения «секретных материалов» от любопытных глаз неопытных пользователей подойдет.В следующей публикации рассмотрим другую возможность Windows, встроенную в систему по умолчанию, которая позволяет шифровать ценные данные и таким образом ограничивать к ним доступ. Это EFS (Encrypting File System) — система шифрования данных на уровне файлов в операционных системах Windows (начиная с Windows 2000 и выше), за исключением «домашних» версий.
4.4.2. Запрещение доступа root
Если по этим или другим причинам администратору не хочется, чтобы пользователи имели права root, пароль root следует хранить в секрете и запретить доступ к первому уровню выполнения или монопольному режиму, защитив загрузчик паролем (подробнее эта тема рассматривается в ).
В перечислены способы дальнейшей защиты от входа под именем root:
Способ | Описание | Действие | Не затрагивает | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Изменение оболочки root. | Отредактируйте файл /etc/passwd и смените оболочку с /bin/bash на /sbin/nologin. |
|
|
|||||||||||||||
Запрет доступа root с любых консольных устройств (tty). | Пустой файл /etc/securetty не позволит root войти в систему с любых устройств, подключенных к компьютеру. |
|
|
|||||||||||||||
Запрет входа root через SSH. | Отредактируйте файл /etc/ssh/sshd_config и задайте параметр PermitRootLogin равным no. |
|
|
|||||||||||||||
Используйте PAM для ограничения доступа root к службам. | Отредактируйте файл нужной службы в каталоге /etc/pam.d/. Убедитесь в том, что для проверки подлинности требуется pam_listfile.so. |
|
|
|||||||||||||||
Замечания:a. За подробностями обратитесь к . |
Таблица 4-1. Способы отключения учётной записи root
4.4.2.1. Отключение оболочки root
Чтобы запретить пользователям непосредственный вход под именем root, системный администратор может задать для root оболочку /sbin/nologin в файле /etc/passwd. Это предотвратит доступ к учётной записи root с помощью команд, использующих оболочку, например su и ssh.
Важно
Программы, не нуждающиеся в оболочке, например, почтовые клиенты или команда sudo, по-прежнему могут работать под именем root.
4.4.2.2. Запрет входа root
Чтобы ещё больше ограничить доступ к учётной записи root, администраторы могут запретить вход под именем root с консоли, отредактировав файл /etc/securetty. В этом файле перечислены все устройства, с которых может регистрироваться root. Если файл не существует, пользователь root сможет войти в систему с любого устройства, будь то консоль или сетевой интерфейс. Это опасно, так как пользователь может входить в систему, используя Telnet, а при этом его пароль передаётся по сети в открытом виде. По умолчанию, в Red Hat Enterprise Linux файл /etc/securetty разрешает root подключаться только с физически подключенной к компьютеру консоли. Чтобы запретить вход root, очистите содержимое этого файла, выполнив следующую команду:
echo > /etc/securetty |
Предупреждение | |
---|---|
Пустой файл /etc/securetty не предотвращает удалённый доступ root с помощью набора инструментов OpenSSH, так как консоль открывается после проверки подлинности. |
4.4.2.3. Запрет входа root через SSH
Чтобы запретить регистрацию root с использованием протокола SSH, отредактируйте файл настроек демона SSH (/etc/ssh/sshd_config). Измените строку, в которой написано:
# PermitRootLogin yes |
на следующую:
PermitRootLogin no |
Шаблоны в файле настроек SSH
Шаблон состоит из нуля или более символов, которые не являются белыми пробелами, ‘*’ (подстановочного символа, который соответствует нулю или более символам), а также ‘?’ (подстановочный символ, который соответствует ровно одному любому символу). Например, чтобы охарактеризовать любой хост в наборе доменов «.co.uk» можно использовать следующий шаблон:
Host *.co.uk
Следующий шаблон будет соответствовать любому хосту в сетевом диапазоне 192.168.0.:
Host 192.168.0.?
Список шаблонов — это несколько шаблонов, разделённых запятой. Шаблоны внутри списка могут иметь противоположное значение если перед ними стоит восклицательный знак («!»). Например, для разрешения ключа использовать откуда угодно внутри организации, кроме пула «dialup», можно использовать следующее (в authorized_keys):
from="!*.dialup.example.com,*.example.com"
Помните, что отрицательное совпадение никогда само по себе не даст положительных результатов. Например, попытка сопоставить хост «host3» следующими списку шаблонов не найдёт совпадений:
from="!host1,!host2"
Решением для предыдущей ситуации является включение термина, который приведёт к положительному совпадению, им может быть подстановочный символ:
from="!host1,!host2,*"
Конфигурационные файлы первоначальной настройки и порт SSH
- /etc/ssh/sshd_config — конфигурационный файл сервера OpenSSH
- /etc/ssh/ssh_config — конфигурационный файл клиентской части OpenSSH
- ~/.ssh/ — конфигурационная директория пользователей ssh
- ~/.ssh/authorized_keys или ~/.ssh/authorized_keys2 — список открытых ключей (RSA или DSA), которыми можно пользоваться при входе в систему по регистрационным записям пользователей
- /etc/nologin — если этот файл существует, то демон sshd не даст никому из пользователей доступ, кроме пользователя root
- /etc/hosts.allow (доступ разрешен) и /etc/hosts.deny(доступ запрещен): здесь находятся списки управления доступом, которые должны использоваться tcp-wrapper-ами .
- SSH порт, используемый по умолчанию: : TCP 22
Сессия SSH в действии