<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Аникин: заметки с тегом ssh</title>
<link>https://anikin.pw/tags/ssh/</link>
<description>Блог об администрировании Linux, BSD и не только</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Блог об администрировании Linux, BSD и не только</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Логирование команд ssh</title>
<guid isPermaLink="false">112</guid>
<link>https://anikin.pw/all/logirovanie-komand-ssh/</link>
<pubDate>Tue, 29 Oct 2024 14:44:02 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/logirovanie-komand-ssh/</comments>
<description>
&lt;p&gt;В конфиг /etc/ssh/sshd_config добавляем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ForceCommand logger -p user.notice &amp;quot;$SSH_ORIGINAL_COMMAND&amp;quot;; bash -c &amp;quot;$SSH_ORIGINAL_COMMAND&amp;quot;; bash&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Проверяем и релоадим ssh&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sshd -t
service sshd reload&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь запросы вида&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ssh user@ip ls -la&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;будут логироваться либо в messages либо в syslog в зависимости от дистрибутива&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Oct 29 11:34:14 localhost user[1100022]: ls -la&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Изолируем пользователей ssh в домашней директории с помощью lshell</title>
<guid isPermaLink="false">54</guid>
<link>https://anikin.pw/all/izoliruem-polzovatelya-ssh-v-domashney-direktorii-s-pomoschyu-ls/</link>
<pubDate>Wed, 01 Apr 2015 16:20:07 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/izoliruem-polzovatelya-ssh-v-domashney-direktorii-s-pomoschyu-ls/</comments>
<description>
&lt;p&gt;Установим lshell, он есть в репозиториях большинства дистрибутивов. Установка для дебианоподобных дистров:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install lshell&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем открываем конфигурационный файл и редактируем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# nano /etc/lshell.conf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Там в основном все просто и понятно, обратим внимания на некоторые переменные в разделе [default].&lt;br /&gt;
Команды разрешённые для выполнения:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;allowed         : ['ls','echo','cd','ll','rsync','mkdir']&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В allowed нельзя вписывать программы которые умеют бродить по каталогам например mc, т.к из lshell выполнение передается в bash и такие программы смогут выйти за пределы домашнего каталога. Поэтому тут будьте внимательны.&lt;/br&gt;&lt;br /&gt;
Команды которые можно выполнять через ssh:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;overssh         : ['ls','rsync']&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В конце конфигурационного файла можно указать индивидуальные настройки для определенного юзера примерно так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[user]
allowed: ['ls','echo','cd','ll','rsync','mkdir','cp','mv']
path: ['/backups']
overssh: ['ls', 'rsync']&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Тут например мы разрешили пользователю user выполнять команды указанные в allowed, кроме домашней папки он может ходить в /backups, и может выполнять по ssh ls и rsync.&lt;/br&gt;&lt;br /&gt;
После редактирования сохраняемся и и закрываем файл.&lt;br /&gt;
Теперь нужно изменить shell у пользователей, которых мы ограничиваем.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# chsh -s /usr/bin/lshell user
# chsh -s /usr/bin/lshell user1
# chsh -s /usr/bin/lshell user2
.....&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь пробуем зайти по ssh user’ом и проверяем, что он изолирован в домашней папке и может выполнять только команды указанные в allowed.&lt;/p&gt;
</description>
</item>

<item>
<title>Правильная настройка denyhosts. Защита ssh, разбан ip, очистка правил. Или как не забанить самого себя.</title>
<guid isPermaLink="false">14</guid>
<link>https://anikin.pw/all/pravilnaya-nastroyka-denyhosts-zaschita-ssh-razban-ip-ochistka-p/</link>
<pubDate>Wed, 23 Oct 2013 14:10:34 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/pravilnaya-nastroyka-denyhosts-zaschita-ssh-razban-ip-ochistka-p/</comments>
<description>
Denyhosts - это скрипт для защиты в основном ssh от взлома брутфорсом. Он анализирует число неудачных попыток коннекта к серверу и после определённого их количества блокирует ip с которого пытаются приконектится. Блокирует путём добавления ip в /etc/hosts.deny.&lt;p&gt;

Установка довольно простая. В большинстве дистрибутивов linux скрипт есть в репозиториях. Во freebsd она есть в портах.&lt;p&gt;

Установка для debian/ubuntu:&lt;p&gt;

&lt;code&gt;# apt-get install denyhosts&lt;/code&gt;&lt;p&gt;

Установка для freebsd:&lt;p&gt;
&lt;code&gt;
# cd /usr/ports/security/denyhosts&lt;p&gt;
# make install clean&lt;p&gt;
&lt;/code&gt;
Многие в интернете пишут, что скрипт работает из коробки без дополнительных настроек. Это действительно так, но в один прекрасный день вы рискуете быть забаненым. Если например забудете пароль или введёте его неправильно. Разберём основные настройки конфига. Конфигурационный файл находится в /usr/local/etc/denyhosts.conf(для freebsd) или /etc/denyhosts.conf(для debian/ubuntu).&lt;p&gt;
&lt;code&gt;
HOSTS_DENY = /etc/hosts.deny #Список забаненых ip&lt;/br&gt;
PURGE_DENY = 4w #Время бана в формате: m - минуты, h - часы, d - дни, w - недели, y - годы.&lt;/br&gt;
BLOCK_SERVICE = sshd #сервисы с которыми работает denyhosts&lt;/br&gt;
DENY_THRESHOLD_INVALID = 5 #Число неудачных попыток входа c несуществующим логином до бана&lt;/br&gt;
DENY_THRESHOLD_VALID = 5 #Число попыток входа с существующим логином, но неверным паролем до бана&lt;/br&gt;
DENY_THRESHOLD_ROOT = 1 #Число неудачных попыток входа до бана для пользователя root(по умолчанию эта директива равна одной попытке, права на ошибку у вас нет. Вкупе с временем бана выставленным на продолжительное время, в случае ошибки ввода пароля это даст интересный результат :-) ).&lt;p&gt;
&lt;/code&gt;
Остальные настройки описаны достаточно хорошо в комментариях конфигурационного файла. Это все настройки на которые я хотел бы обратить внимание.&lt;p&gt;

Теперь разберёмся что делать если вас всё таки забанили. Всё описаное ниже можно сделать сложнее, выискивая ваш ip  в списках забаненых и убирая его. Я считаю что это нецелесообразно, т.к в случае повторного перебора все "плохие ip" повторно будут забанены и ничего страшного неслучится. Так что мы просто будем делать очистку забаненых ip. Ну во-первых вам нужно хоть как-то подключится к серверу. Т.е вы должны знать пароль и подключатся с уникального ip, который ещё не забанен в denyhosts. Если вы не помните пароль к серверу, его можно &lt;a href="http://anikin.pw/linux-recovery-system-server4you.html#passwd" target="_blank"&gt;сбросить с livecd или recovery.&lt;/a&gt; Итак, подключаемся к серверу по ssh и первое что делаем останавливаем denyhosts и очищаем файл hosts.deny&lt;p&gt;
&lt;code&gt;
# /etc/init.d/denyhosts stop&lt;p&gt;
# cp /dev/null /etc/hosts.deny&lt;p&gt;
&lt;/code&gt;
Затем в конфигурационном файле denyhosts ищем директиву WORK_DIR и смотрим в какой каталог она ведёт. Переходим в этот каталог и удаляем все файлы кроме allowed-hosts. Открываем этот файл и добавляем в него ваш ip. Поясню, в этом файле находятся исключения, т.е если вы добавите туда ваш ip, то скрипт больше не будет вас банить. Запускаем демон denyhosts&lt;p&gt;

&lt;code&gt;# /etc/init.d/denyhosts start&lt;/code&gt;&lt;p&gt;

Всё пробуем подключится, подключение должно пройти успешно.</description>
</item>


</channel>
</rss>