Безопасность с ssh

О том, что «враг не дремлет», знает каждый. Злые хакеры рыщут по Internetу, в надежде чем-нибудь поживиться. Поэтому каждый, кто ставит UNIX (читай Linux)-сервер тайно лелеет надежду, что его «пронесет». Но надежда — надеждой, а меры тоже надо принимать.
Конечно, самый простой и надежный способ обезопаситься от взлома — это убрать на компьютере все службы, отключить его от Сети, выключить питание и заклеить выключатель скотчем. Но если при этом еще требуется и дело делать? Тогда можно ограничиться полумерами:
  • снимаем все ненужные службы (ну в самом деле: у меня роутер, зачем же мне эта «прореха на секьюрити» — Sendmail?).
  • Качаем из Сети последние версии служб, устанавливаем;
  • Далее: грамотно конфигурируем работающие службы: Web-сервер - значит, конфигурируем Apache, почтовик — тяжело вздыхаем и правим sendmail.conf (глаза боятся — руки делают);
  • последнее: закрываем telnet, rlogin, rsh — входы;
      Хорошо, если Ваш сервер имеет собственную клавиатуру, монитор и Вы можете его администрировать локально, если же нет, то придется какой-то вход оставить…
      Чем же плох обычный telnet? Любой, обратившийся по порту 23, получает, в лучшем случае, приглашение
login:
а в худшем
Welcome to abc.def.ru!



Linux-1.2.13



login[root]:
Отсюда можно узнать тип системы, версию, может быть, даже аппаратную платформу сервера. Когда судили одного хакера, вломившегося в военную систему, его адвокаты пытались сослаться на то, что стандартный ответ системы приглашал их подзащитного войти (Welcome).
Кроме того, telnet-клиент обменивается с сервером незашифрованными сообщениями. Таким образом, все данные, в том числе и Ваш пароль, передаются по Сети в открытом виде. Если сервер избран объектом атаки, получить пароль, а потом его использовать «по назначению» не составляет труда.

Какой же выход?

Выход изобретен давно. Это secure shell (ssh). Особенность ее в том, что соединение устанавливается с аутентификацией, проверкой IP-адреса и доменного имени клиента, а общение ведется по каналу, зашифрованному с помощью различных алгоритмов, в числе которых DES и 3DES.
Система состоит из сервера sshd, который запускается на UNIX-машине, и клиента ssh, который может запускаться как на другой UNIX-, так и на Windows-машине. Клиент позволяет работать с удаленным сервером, как telnet.

Установка

  • Итак, берем исходные тексты здесь. По традиции UNIX, они представлены в архиве ssh-1.2.tar.gz. Кладем их куда-нибудь, скажем в каталог /usr/src.
  • Далее распаковываем архив командой
    tar xzf ssh-1.2.tar.gz
     
    и переходим в образовавшийся каталог
    cd ssh-1.2
     
  • Даем команду
    ./configure
     
    при этом происходит конфигурирование и настройка оболочки ssh на конкретную систему
  • Транслируем исходный текст командой
    make
     
  • Теперь устанавливаем:
    make install
     
После этого исходные тексты можно удалить, если у Вас, конечно, нет желания самому разработать какие-нибудь утилиты для ssh или исправить ошибки разработчиков :).

Конфигурирование

Собственно, оболочка ssh начинает работать сразу после запуска демона командой
sshd
Чтобы она запускалась при старте системы, эту команду нужно поместить в стартовый командный файл, лучше /etc/rc.d/rc.inet2 вместе с командами запуска служб inet. К сожалению, разработчики не предусмотрели совместную работу ssh и суперсервера inet, как, к примеру, это делает telnet.
Теперь, пробуем войти в эту машину через ssh. Для этого нужно либо поставить такой же пакет на другую Linux-машину, либо установить пакет ssh для Windows на какую-нибудь рабочую станцию Windows. Для входа из-под Linux достаточно выдать команду
ssh hostname
после этого происходит запрос пароля и соединение, которое можно прервать комбинацией клавиш Ctrl+D. В Windows-версии Вы вводите имя машины, имя пользователя и пароль в диалоговом окне, после чего устанавливаете соединение. Если соединение не устанавливается, попробуйте поставить метод кодирования сообщений blowfish (тройной DES будет позже!)
Далее работа в ssh аналогична работе с telnet.

После установки демона sshd в каталоге /etc Вашей Linux-машины появятся новые файлы конфигурации: ssh_conf и sshd_conf. Для того, чтобы теперь оградить свой сервер от незаконных вторжений извне, в sshd_conf можно прописать строчку
allowedadress адреса, с которых Вы будете заходить на сервер
Теперь связь можно организовывать с кодированием как по blowfish, так по DES и 3DES, а все попытки входа с адресов, не указанных явно, будут жестоко пресекаться…