{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Аникин: заметки с тегом ssh",
    "_rss_description": "Блог об администрировании Linux, BSD и не только",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/anikin.pw\/tags\/ssh\/",
    "feed_url": "https:\/\/anikin.pw\/tags\/ssh\/json\/",
    "icon": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884",
    "authors": [
        {
            "name": "Петр Аникин",
            "url": "https:\/\/anikin.pw\/",
            "avatar": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884"
        }
    ],
    "items": [
        {
            "id": "112",
            "url": "https:\/\/anikin.pw\/all\/logirovanie-komand-ssh\/",
            "title": "Логирование команд ssh",
            "content_html": "<p>В конфиг \/etc\/ssh\/sshd_config добавляем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ForceCommand logger -p user.notice &quot;$SSH_ORIGINAL_COMMAND&quot;; bash -c &quot;$SSH_ORIGINAL_COMMAND&quot;; bash<\/code><\/pre><p>Проверяем и релоадим ssh<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sshd -t\nservice sshd reload<\/code><\/pre><p>Теперь запросы вида<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ssh user@ip ls -la<\/code><\/pre><p>будут логироваться либо в messages либо в syslog в зависимости от дистрибутива<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Oct 29 11:34:14 localhost user[1100022]: ls -la<\/code><\/pre>",
            "date_published": "2024-10-29T14:44:02+03:00",
            "date_modified": "2024-11-01T15:16:16+03:00",
            "tags": [
                "ssh"
            ],
            "_date_published_rfc2822": "Tue, 29 Oct 2024 14:44:02 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "112",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "54",
            "url": "https:\/\/anikin.pw\/all\/izoliruem-polzovatelya-ssh-v-domashney-direktorii-s-pomoschyu-ls\/",
            "title": "Изолируем пользователей ssh в домашней директории с помощью lshell",
            "content_html": "<p>Установим lshell, он есть в репозиториях большинства дистрибутивов. Установка для дебианоподобных дистров:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># apt-get install lshell<\/code><\/pre><p>Затем открываем конфигурационный файл и редактируем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># nano \/etc\/lshell.conf<\/code><\/pre><p>Там в основном все просто и понятно, обратим внимания на некоторые переменные в разделе [default].<br \/>\nКоманды разрешённые для выполнения:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">allowed         : ['ls','echo','cd','ll','rsync','mkdir']<\/code><\/pre><p>В allowed нельзя вписывать программы которые умеют бродить по каталогам например mc, т.к из lshell выполнение передается в bash и такие программы смогут выйти за пределы домашнего каталога. Поэтому тут будьте внимательны.<\/br><br \/>\nКоманды которые можно выполнять через ssh:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">overssh         : ['ls','rsync']<\/code><\/pre><p>В конце конфигурационного файла можно указать индивидуальные настройки для определенного юзера примерно так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">[user]\nallowed: ['ls','echo','cd','ll','rsync','mkdir','cp','mv']\npath: ['\/backups']\noverssh: ['ls', 'rsync']<\/code><\/pre><p>Тут например мы разрешили пользователю user выполнять команды указанные в allowed, кроме домашней папки он может ходить в \/backups, и может выполнять по ssh ls и rsync.<\/br><br \/>\nПосле редактирования сохраняемся и и закрываем файл.<br \/>\nТеперь нужно изменить shell у пользователей, которых мы ограничиваем.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># chsh -s \/usr\/bin\/lshell user\n# chsh -s \/usr\/bin\/lshell user1\n# chsh -s \/usr\/bin\/lshell user2\n.....<\/code><\/pre><p>Теперь пробуем зайти по ssh user’ом и проверяем, что он изолирован в домашней папке и может выполнять только команды указанные в allowed.<\/p>\n",
            "date_published": "2015-04-01T16:20:07+03:00",
            "date_modified": "2015-04-01T16:29:10+03:00",
            "tags": [
                "centos",
                "debian",
                "lshell",
                "ssh",
                "ubuntu"
            ],
            "_date_published_rfc2822": "Wed, 01 Apr 2015 16:20:07 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "54",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "14",
            "url": "https:\/\/anikin.pw\/all\/pravilnaya-nastroyka-denyhosts-zaschita-ssh-razban-ip-ochistka-p\/",
            "title": "Правильная настройка denyhosts. Защита ssh, разбан ip, очистка правил. Или как не забанить самого себя.",
            "content_html": "Denyhosts - это скрипт для защиты в основном ssh от взлома брутфорсом. Он анализирует число неудачных попыток коннекта к серверу и после определённого их количества блокирует ip с которого пытаются приконектится. Блокирует путём добавления ip в \/etc\/hosts.deny.<p>\r\n\r\nУстановка довольно простая. В большинстве дистрибутивов linux скрипт есть в репозиториях. Во freebsd она есть в портах.<p>\r\n\r\nУстановка для debian\/ubuntu:<p>\r\n\r\n<code># apt-get install denyhosts<\/code><p>\r\n\r\nУстановка для freebsd:<p>\r\n<code>\r\n# cd \/usr\/ports\/security\/denyhosts<p>\r\n# make install clean<p>\r\n<\/code>\r\nМногие в интернете пишут, что скрипт работает из коробки без дополнительных настроек. Это действительно так, но в один прекрасный день вы рискуете быть забаненым. Если например забудете пароль или введёте его неправильно. Разберём основные настройки конфига. Конфигурационный файл находится в \/usr\/local\/etc\/denyhosts.conf(для freebsd) или \/etc\/denyhosts.conf(для debian\/ubuntu).<p>\r\n<code>\r\nHOSTS_DENY = \/etc\/hosts.deny #Список забаненых ip<\/br>\r\nPURGE_DENY = 4w #Время бана в формате: m - минуты, h - часы, d - дни, w - недели, y - годы.<\/br>\r\nBLOCK_SERVICE = sshd #сервисы с которыми работает denyhosts<\/br>\r\nDENY_THRESHOLD_INVALID = 5 #Число неудачных попыток входа c несуществующим логином до бана<\/br>\r\nDENY_THRESHOLD_VALID = 5 #Число попыток входа с существующим логином, но неверным паролем до бана<\/br>\r\nDENY_THRESHOLD_ROOT = 1 #Число неудачных попыток входа до бана для пользователя root(по умолчанию эта директива равна одной попытке, права на ошибку у вас нет. Вкупе с временем бана выставленным на продолжительное время, в случае ошибки ввода пароля это даст интересный результат :-) ).<p>\r\n<\/code>\r\nОстальные настройки описаны достаточно хорошо в комментариях конфигурационного файла. Это все настройки на которые я хотел бы обратить внимание.<p>\r\n\r\nТеперь разберёмся что делать если вас всё таки забанили. Всё описаное ниже можно сделать сложнее, выискивая ваш ip  в списках забаненых и убирая его. Я считаю что это нецелесообразно, т.к в случае повторного перебора все \"плохие ip\" повторно будут забанены и ничего страшного неслучится. Так что мы просто будем делать очистку забаненых ip. Ну во-первых вам нужно хоть как-то подключится к серверу. Т.е вы должны знать пароль и подключатся с уникального ip, который ещё не забанен в denyhosts. Если вы не помните пароль к серверу, его можно <a href=\"http:\/\/anikin.pw\/linux-recovery-system-server4you.html#passwd\" target=\"_blank\">сбросить с livecd или recovery.<\/a> Итак, подключаемся к серверу по ssh и первое что делаем останавливаем denyhosts и очищаем файл hosts.deny<p>\r\n<code>\r\n# \/etc\/init.d\/denyhosts stop<p>\r\n# cp \/dev\/null \/etc\/hosts.deny<p>\r\n<\/code>\r\nЗатем в конфигурационном файле denyhosts ищем директиву WORK_DIR и смотрим в какой каталог она ведёт. Переходим в этот каталог и удаляем все файлы кроме allowed-hosts. Открываем этот файл и добавляем в него ваш ip. Поясню, в этом файле находятся исключения, т.е если вы добавите туда ваш ip, то скрипт больше не будет вас банить. Запускаем демон denyhosts<p>\r\n\r\n<code># \/etc\/init.d\/denyhosts start<\/code><p>\r\n\r\nВсё пробуем подключится, подключение должно пройти успешно.",
            "date_published": "2013-10-23T14:10:34+03:00",
            "date_modified": "2014-04-04T14:12:32+03:00",
            "tags": [
                "denyhost",
                "ssh",
                "защита",
                "очистка правил",
                "разбан ip"
            ],
            "_date_published_rfc2822": "Wed, 23 Oct 2013 14:10:34 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "14",
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}