Безопасность с 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, а все попытки входа с адресов, не указанных явно, будут жестоко пресекаться...