Архив метки: ssh

Разрешить root`у вход по ssh на Ubuntu

По умолчанию в убунту пользователю root запрещен вход через ssh. Для открытия доступа нужно выполнить следующие действия:

Читать

🔐 Настройка входа по SSH без пароля для нескольких удаленных серверов с помощью скрипта

Аутентификация на основе ключей SSH (также известная как аутентификация с открытым ключом) позволяет использовать аутентификацию без пароля, и это более безопасное и гораздо лучшее решение, чем аутентификация по паролю.

Одним из основных преимуществ входа в систему без пароля по SSH, не говоря уже о безопасности, является то, что он позволяет автоматизировать различные виды межсерверных процессов.

В этой статье мы продемонстрируем, как создать пару ключей SSH и скопировать открытый ключ на несколько удаленных хостов Linux одновременно с помощью скрипта шелла.

Создайте новый ключ SSH на Linux

Сначала сгенерируйте пару ключей SSH (закрытый ключ / ключ идентификации, который SSH-клиент использует для аутентификации при входе на удаленный SSH-сервер, и открытый ключ, хранящийся в качестве авторизованного ключа в удаленной системе, на которой запущен SSH-сервер), используя ssh- keygen следующим образом:

# ssh-keygen




Создание скрипта bash для нескольких удаленных входов

Затем создайте скрипт, который поможет скопировать открытый ключ на несколько удаленных хостов Linux.

# vim ~/.bin/ssh-copy.sh

Скопируйте и вставьте следующий код в файл (замените следующие переменные соответственно USER_NAME – имя пользователя для подключения, HOST_FILE – файл, содержащий список имен хостов или IP-адресов, и ERROR_FILE – файл для хранения любых ошибок команды ssh).

#!/bin/bash

USER_NAME="root"

HOST_FILE="/root/hosts"

ERROR_FILE="/tmp/ssh-copy_error.txt"

PUBLIC_KEY_FILE="$1"



if [ ! -f  $PUBLIC_KEY_FILE ]; then

        echo "File '$PUBLIC_KEY_FILE' не найден!"

        exit 1

fi



if [ ! -f $HOST_FILE ]; then

        echo "File '$HOST_FILE' не найден!"

        exit 2

fi



for IP in `cat $HOST_FILE`; do

        ssh-copy-id -i $PUBLIC_KEY_FILE $USER_NAME@$IP 2>$ERROR_FILE

        RESULT=$?

        if [ $RESULT -eq 0 ]; then

                echo ""

                echo "Открытый ключ успешно скопирован на $IP"

                echo ""

        else

                echo "$(cat  $ERROR_FILE)"

                echo 

                exit 3

        fi

        echo ""

done

Сохраните файл и закройте его.

Затем сделайте скрипт исполняемым с помощью команды chmod, как показано далее:

# chmod +x ssh-copy.sh

Теперь запустите скрипт ssh-copy.sh и укажите свой файл открытого ключа в качестве первого аргумента, как показано ниже:

# ./ssh-copy.sh /root/.ssh/prod-rsa.pub

Затем используйте ssh-agent для управления своими ключами, который хранит ваш расшифрованный закрытый ключ в памяти и использует его для аутентификации логинов.

После запуска ssh-agent добавьте к нему свой закрытый ключ следующим образом:

# eval "$(ssh-agent -s)"

# ssh-add  ~/.ssh/prod_rsa

Вход на удаленный сервер Linux без пароля

Теперь вы можете войти на любой из своих удаленных хостов, не вводя пароль для аутентификации пользователя SSH.

Таким образом, вы можете автоматизировать межсерверные процессы.

# ssh root@10.2.32.12

Если у вас есть какие-либо особые возможности для улучшения скрипта, сообщите нам об этом через форму обратной связи ниже.

 





2020-10-05T11:36:32
Скрипты

Запуск команд или скрипта через SSH

Сегодня рассмотрим примеры для запуска команд или скрипта через SSH соединения. Научимся запускать наши команды/скрипты из одной рабочей станции Linux на другой удаленной Linux машине. Рассмотрим практические примеры использования мощного инструмента SSH в администрировании Linux.






Запуск команд через SSH




Если вы хотите удаленно запустить какую-либо команду на сервере через SSH, то нет ничего проще. Давайте рассмотрим пару примеров.




Узнайте аптайм удаленного сервера:




ssh root@10.5.5.1 'uptime'




Узнать проходит ли пинг на удаленном сервере до google DNS:




ssh root@10.5.5.1 'ping 8.8.8.8 -c 5'




Перезагрузить удаленную машину:




ssh root@10.5.5.1 'reboot'




Запуск нескольких команд через SSH




В большинстве случаем недостаточно удаленно запустить только одну команду по SSH. Намного чаще необходимо отправить сразу несколько команд на удаленный сервер, например, для сбора информации и получить результат обратно.




Запустить несколько команд на удаленном хосте по SSH:




ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР 'КОМАНДА1; КОМАНДА2; КОМАНДА3'




можно и так:




ssh ПОЛЬЗОВАТЕЛЬ@СЕРВЕР << EOF
КОМАНДА1
КОМАНДА2
КОМАНДА3
EOF




Практические примеры использования SSH




Узнайте аптайм и сколько свободного места на диске:




ssh root@10.5.5.1 'uptime; df -h'




Сколько используется памяти и среднюю нагрузку:




ssh root@10.5.5.1 'free -m ; cat /proc/loadavg'




Узнать версию ядра, количество ядер CPU и сколько всего RAM:




ssh root@10.5.5.1 << EOF
uname -a
lscpu  | grep "^CPU(s)"
grep -i memtotal /proc/meminfo
EOF




SSH: Запуск Bash Скрипта




Также бывает ситуация, когда на Linux сервере лежит какой-либо скрипт и его необходимо запустить по SSH на другом Linux сервере.




Основная идея заключается в том, чтобы подключиться на удаленный Linux сервер, дать скрипту выполнить свою работу и получить результат, при этом не копируя сам скрипт на удаленный сервер.




Эта задаче безусловно может быть выполнена и при этом довольно просто.




ssh root@10.5.5.1 'bash -s' < script.sh




Что если вы хотите выполнить сценарий с аргументом.




ssh root@10.5.5.1 'bash -s' < script.sh --argument




или




ssh root@10.5.5.1 'bash -s' < "script.sh --argument"




Если требуются привилегии sudo, то команда примет вид:




ssh root@10.5.5.1 'echo "passwords" | sudo -Sv && bash -s' < script.sh




  • password — пароль для пользователя root на удаленной машине.
  • script.sh — файл с вашим скриптом расположенный на станции с которой производите подключение.





2020-08-23T10:57:17
SSH

🐍 Брутим SSH удаленного сервера

Брутим SSH удаленного сервера

Для брута (атаки перебором паролей) будем использовать инструмент Hydra, который входит в состав дистрибутива Kali Linux. SSH присутствует на любом сервере Linux или Unix и, как правило, является основным способом использования администраторами для доступа к своим системам и управления ими.

Предупреждение: Hydra является инструментом для атак

«Используйте его только в собственных системах и сетях, если у вас нет письменного разрешения владельца. В противном случае, это незаконно.»

Для реализации атаки используем команду:

# hydra -s 22 -l root -P /usr/share/wordlists/fasttrack.txt 192.168.1.1 -t 4 ssh

Теперь разберем ее:

s – Флаг указывает на порт. Стоит отметить, что администраторы могут заменить дефолтный 22 порт для работы службы ssh, чтобы узнать на каком порту работает служба необходимо произвести первоначальное сканирование цели с помощью инструмента Nmap. О том как это сделать мы писали ранее в статье.

l – флаг указывает на логин, в нашем примере мы используем root и admin. (можем указать здесь ссылку на словарь)

P – флаг указывает на пароль, в нашем случае мы используем словарик fasttrack.txt из дистрибутива kali, который располагается в директории /usr/share/wordlists/

Стоит отметить, что для эффективного проведения атаки брутфорсом стоит должное внимание уделить подготовки словаря, а именно: учесть географические и лингвистические особенности, включить в словарь название компании, названия ее дочерних предприятий, названия работающих сервисов и приложений, фамилии работников и т. д.

192.168.1.1 – ip адресс цели, так как используемая нами цель имеет белый ip, он замазан

t — флаг указывает на число одновременно используемых потоков. Укажем 4

ssh — используемый протокол

По результатам работы команды видим, что пароли из словаря не подошли для логинов admin и root

Выводы

Hydra является удобным и простым инструментом для тестирования парольной политики SSH.

Инструмент способен просматривать массивные списки имен пользователей, паролей и целей для проверки, если вы или пользователь используете потенциально уязвимый пароль.

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

Для любого ибешника обеспечение безопасности паролей SSH должно быть главным приоритетом.

¯_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.



2020-06-15T09:29:09
Аудит ИБ

Как включить SSH в Ubuntu 20.04

Secure Shell (SSH) — это сетевой протокол, используемый для безопасного соединения между клиентом и сервером. Каждое взаимодействие между сервером и клиентом шифруется.

В этой статье объясняется, как включить SSH на компьютере с Ubuntu.

Включение SSH позволит вам удаленно подключаться к вашей системе и выполнять административные задачи. Вы также сможете безопасно передавать файлы через scp и sftp. Читать

Копирование файлов c архивированием по SSH на лету.

Копирование файлов по SSH c архивированием на лету.




Сегодня рассмотрим Копирование файлов c архивированием на лету по SSH протоколу, используя TAR.




Синтаксис команды tar




tar [-] A --catenate --concatenate | c --create | d --diff --compare | --delete | r --append | t --list | --test-label | u --update | x --extract --get [options] [pathname ...]




Копирование файлов через SSH c архивированием на лету.




Выполним следующею команду:




cd /local/dir; tar cf - . | ssh server "cd /destination/dir; tar xf -"




Теперь разберем, что же происходит в коде:




  1. cd /local/dir; – осуществляется переход к папке /local/dir, которая будет архивироваться;
  2. tar cf - . – утилита tar выполняет следующие операции:
    • -c говорит о том, что нужно создать новый архив;
    • -f говорит о том, что используется архивный файл (или устройство);
    • парамерт - говорит о том, что tar должен использовать стандартный вывод, а не записывать данные в файл
    • параметр . говорит о том, что архивироваться будет папка, в которой находится пользователь, и из которой выполняется команда tar (в данном случае это папка /local/dir из п.1)
  3. | ssh означает, что вывод утилиты tar будет передан в ssh-исполняемую следом команду;
  4. server обычно имеет вид [имя_пользователя]@[адрес_сервера] и означает, что команда будет выполнена на удаленном сервере;
  5. "cd /destination/dir; tar xf -" – в кавычки заключена последовательность команд для выполнения на удаленном сервере и в SSH вводится именно в кавычках, разберем ее в следующем пункте;
  6. cd /destination/dir; – осуществляется переход к папке, куда будут разархивированы файлы;
  7. tar xf - утилита tar выполняет следующие операции:
    • -x говорит о том, что будет происходить распаковка;
    • -f говорит о том, что используется архивный файл (или устройство);
    • параметр  -  говорит о том, что tar должен использовать не файл, а стандартный вывод.




Также можно использовать дополнительно следующие параметры с tar:




  1. параметр -v сообщает tar действовать вербально, т.е. отображая, либо получая исчерпывающую информацию о файлах в процессе обработки;
  2. -z – параметр сообщает tar использовать программу сжатия, когда работа будет вестись с файлами;
    или
    -j – параметр сообщает tar выполнять чтение или запись архивов, используя компрессор bzip2.



[endtxt]




RSS



Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.


2020-05-16T07:00:09
SSH