|
||
Ответить |
|
|
#1
|
|
Вес репутации:
0
Регистрация: 27.02.2009
Адрес: Москва
Сообщений: 7,248
Сказал(а) спасибо: 574
Спасибок 2,673
в 1,898 сообщениях |
Ssh и vnc - удаленный доступ к компьютеру -
27.09.2009, 16:37
Как разрешить управление вашим компьютером с другой машины сети или даже через Интернет. Есть несколько причин, по которым у вас может возникнуть такое желание:
С помощью VNC в окне windows можно увидеть рабочий стол Linux, или наоборот. Сделать это можно разными способами, начиная с открытия терминальной сессии на удаленном компьютере и заканчивая полным воспроизведением его рабочего стола на вашем. Многие из этих технологий доказали свою эффективность на практике, а потому не ограничены только одной платформой. Иными словами, значительная часть того, что мы сегодня рассмотрим, позволит вам получить доступ к Windows-системе с Linux-компьютера, и наоборот. Защитная оболочка Простейший способ получить доступ к другому компьютеру по сети - это открыть удаленную оболочку. Довольно долго стандартной программой для этого была Rsh, но она небезопасна, потому что все данные, включая имя пользователя и пароль, передаются по сети в открытом виде. Альтернатива, и единственный вариант, используемый сегодня, это SSH (Secure Shell). SSH передает все данные по зашифрованному соединению. Во многих дистрибутивах пакет OpenSSH разделен на две части: клиент и сервер, и по умолчанию часто устанавливается только клиент, поэтому первым делом нужно убедиться, что сервер наличествует и настроен на запуск при загрузке системы. Потом нужно позаботиться о его безопасности. SSH - популярная мишень для взломщиков, потому что, хотя сам протокол безопасен, он использует стандартные методы аутентификации, и если у вас слабый пароль, то вы уязвимы для атаки по словарю. В принципе, все это общие меры по защите компьютера, но прежде чем запускать SSH, нужно дополнительно оградить его от физического доступа. Для подключения к серверу SSH,выполните команду PHP код:
PHP код:
Для повышения защищенности можно кое-что изменить в конфигурационном файле сервера (/etc/ssh/sshd_config). Для начала запретим вход в систему под пользователем root, установив параметр PHP код:
Для ограничения доступа используются и другие директивы: DenyUsers, AllowUsers, DenyGroups и AllowGroups. Их назначение понятно из названия. Каждая из них принимает разделенный пробелами список имен пользователей или групп (не числовых идентификаторов), доступ для которых нужно разрешить или запретить. Директивы обрабатываются в приведенном порядке, до первого совпадения. Если ни одна директива не задана, попытаться войти может любой пользователь. Имена пользователей могут задаваться как просто имена или в виде user@host, тогда проверяются и имя пользователя, и хост. Учтите, имя пользователя сравнивается с именем пользователя, под которым вы входите в систему, а хост сравнивается с именем удаленного компьютера, с которого вы пытаетесь зарегистрироваться. Это позволяет разрешить доступ только с определенных компьютеров: скажем, заходить на домашний ПК с работы. Можно применять шаблоны: например, директива PHP код:
Если только вы не задали вход в систему без пароля! Да почему же, после стольких лекций по безопасности? Потому что на самом деле это безопаснее. Сложность пароля ограничена - ведь вы должны его помнить, а файл ключа может быть больше и иметь в миллиарды раз больше перестановок, чем пароль. Для начала создайте пару файлов ключей с помощью команды PHP код:
gen создать ключ DSA) и id_ rsa_pub. Первый файл - это закрытый ключ, и его нужно хранить в безопасном месте, а второй - открытый, его нужно добавить в файл ~/.ssh/authorized_keys на удаленном компьютере. Файл можно скопировать на флэшку, вставить ее в удаленный компьютер и добавить с помощью команды PHP код:
PHP код:
PHP код:
Как показано выше, вход в систему с паролем можно отключить совсем, требуя обязательного использования ключа (возможно, в сочетании с парольной фразой) - добавкой в файл sshd_ config следующих строк: PHP код:
Обычно ключ хранится в каталоге ~/.ssh, и это хорошо, если вы подключаетесь со своего компьютера. Чтобы подключаться откуда угодно, закрытый ключ можно записать на флэшку и указать SSH, где его искать, опцией -i. PHP код:
Весь этот разговор о перезапуске службы может вызвать у вас вопрос: «А что будет, если я испорчу конфигурационный файл на удаленном компьютере и перезапущу службу?». Ну, плохая новость - вы не сможете войти до тех пор, пока не поправите его. А хорошая новость - существующие соединения не затрагиваются перезапуском. Так что, изменив конфигурационный файл иперезапустив sshd, не закрывайте текущую сессию и попробуйте открыть новую с другого терминала. Если сделать это не получится, у вас остается открытая сессия, в которой можно исправить ошибки. Прочь, малолетние хакеры! Один из недостатков сервера SSH, открытого для входа через Интернет, в том, что это популярная мишень для атак «грубой силы». Пока у вас сильные пароли и запрещен вход в систему от имени root (или он происходит по ключу), вы находитесь в сравнительной безопасности. Впрочем, когда файлы журналов полны сообщений о неудавшихся попытках входа по SSH, иногда до нескольких тысяч в день, это раздражает. Есть пара способов, которые помогут избавиться от этого. Один из них - это запуск сервера на порте, отличном от стандартно атакуемого 22. Потом порт 22 можно закрыть на маршрутизаторе, и все попытки доступа к SSH будут бесплодны. В файле sshd_config установите следующий параметр: PHP код:
PHP код:
PHP код:
PHP код:
Также можно запустить программу просмотра системного журнала на предмет повторяющихся неудачных попыток входа по SSH и добавить адрес источника в правила брандмауэра, застопорив все дальнейшие соединения с этого адреса на заданное время. Одна из делающих это программ - Denyhosts (www.denyhosts. net); другая - Sshutout (www.techfinesse.com/sshutout/sshutout. html). Пакеты Sshutout существуют для большинства дистрибутивов; установите его и отредактируйте файл /etc/sshutout.conf в соответствии со своими настройками. Для начала можете сменить только местоположение журнала, оставив остальные параметры в покое. После настройки запуска программы при загрузке системы, повторные попытки регистрации будут автоматически заблокированы. Как насчет моего GUI? SSH хорош для терминальных сессий, но что делать, если вы хотите получить доступ к GUI удаленного компьютера? Есть пара способов сделать это, и один из них - снова SSH. Нужно разрешить А-проброс (X forwarding) в файле sshd_config: PHP код:
PHP код:
Или всего рабочего стола? А-проброс прекрасно работает, если на удаленном компьютере стоит Linux и вы запускаете только одно приложение. Если хотя бы одно из этих условий не верно, лучше попробовать VNC (Virtual Network Computing). VNC открывает в окне на вашем компьютере весь рабочий стол удаленной машины, и это кросс-платформенная технология, так что на компьютере с VNC может стоять Windows или MacOS. Существуют два варианта VNC: оригинальный с RealVNC - RealVNC remote control software и TightVNC c www.tightvnc. com. TightVNC изначально разрабатывался ради большей производительности на более медленных соединениях, отсюда и название, но обладает и дополнительными возможностями. Обе программы используют стандарт VNC, и вы можете брать любую, включенную в состав вашего дистрибутива. Однако для получения дополнительных возможностей TightVNC ее надо использовать и на клиенте, и на сервере. Ни одну из версий VNC настраивать не надо - просто установите ее и запускайте при загрузке системы. При первом старте у вас спросят пароль, и после этого все будет готово к использованию. Однако следует убедиться, что брандмауэр не блокирует трафик VNC, поэтому откройте порт 5900 или разрешите удаленный рабочий стол (Remote Desktop) в настройках брандмауэра Windows на вкладке Exceptions [Исключения]. В KDE имеется встроенная поддержка VNC и для сервера, и для клиента. Сервер настраивается в разделе Desktop Sharing [Разделение рабочего стола] в Control Center > System Settings [Центр управления > Параметры системы], а клиент скрывается в пункте меню Remote Desktop [Удаленный рабочий стол] раздела Internet [Интернет] меню KDE. В KDE в конец адреса нужно добавлять :0, для указания, что вы хотите подключиться к первому рабочему столу (родной VNC Viewer обрабатывает это автоматически). VNC предоставляет большую гибкость, поскольку работает так, как будто вы сидите за компьютером. Он удобен для удаленной диагностики проблем с чужой машиной, хотя основной совет по безопасности справедлив и здесь: не открывайте порты в Интернет, не имея сильные пароли. Вам также потребуется настроить маршрутизатор на перенаправление порта VNC, обычно это 5900, на ваш компьютер. VNC - отличная штука, когда ваша мама звонит по поводу проблемы на ее компьютере, потому что гораздо проще найти и решить проблемы, когда вы можете попробовать все сами. Но если VNC не установлен, а правила перенаправления маршрутизатора нужно настроить, то как получить к нему удаленный доступ, чтобы это сделать? Есть несколько онлайн-сервисов, позволяющих установить удаленный доступ просто после заполнения web-формы. Обычно они работают медленнее, чем VNC или TightVNC, и лично меня малость нервирует передача информации через третьих лиц, но могут обеспечить соединение, достаточно долгое для установки одного из вариантов VNC и прямого соединения. Я пользовался одним из таких сервисов - LogMeIn на сайте www.logmein.com. Для удаленных рабочих столов есть еще один вариант: NX с сайта www.nomachine. com. Это несвободный клиент, использующий VNC и протокол компании NX. Хотя это не открытый проект (впрочем, свободно распространяемая версия клиента доступна на сайте http://freenx.berlios.de), зато самый быстрый вариант для медленных интернет-соединений. Универсальный графический интерфейс Webmln годится для настройки SSH через web-браузер. Выручит, если вы испортите настройки на удаленном компьютере. Передача файлов SSH поддерживает не только терминальные сессии, но и передачу файлов. Команда scp очень похожа на обычную cp. Отличие в том, что источник или получатель должен содержать имя хоста, например: PHP код:
PHP код:
Традиционный способ передачи файлов - FTP, но он небезопасен, потому что пароли и данные передаются в незашифрованном виде. OpenSSH включает сервер SFTP (SecureFTP), обычно запускаемый по умолчанию. Большинство FTP-клиентов, как и многие файловые менеджеры, сейчас поддерживают SFTP. Попробуйте соединиться с sftp://user@hostname, чтобы просмотреть домашний каталог пользователя. SFTP и scp используют такой же способ аутентификации, как SSH, а если вы настроите ключи, они тоже будут работать. Пока что мы узнали, как с помощью SSH настроить безопасный удаленный терминал или удаленно запускать X-приложения, но у него в запасе есть еще кое-что (на самом деле, много чего; на все и места не хватит) - канал SSH можно использовать как туннель для другого соединения, даже если это другое соединение передает данные в открытом виде. Поскольку данные проходят через шифрованный канал, они защищены от посторонних глаз. Это особенно удобно при пользовании беспроводным соединением, защищенным только WEP-шифрованием. Установить SSH-туннель можно так: PHP код:
Хотите - перенаправьте трафик на другой сервер, хотя данные будут шифроваться только на первом участке маршрута (до SSH-сервера). Этим можно воспользоваться, если ваш брандмауэр или прокси-сервер запрещает подключение к конкретному хосту или порту. Например, следующая команда позволит подключиться к Googletalk настройкой вашего IM-клиента на использование localhost и порта 5432: ssh -f -N -L 5432: PHP код:
SSH умеет делать больше, и все через защищенные, аутенти-фицированные соединения. Например, можно запустить сеанс SSH, затем сессию Screen и программы в ней. Потом можно выйти из обеих сессий и переподключиться с другого компьютера, чтобы убедиться, что программы все еще выполняются. Есть еще масса неизведанного - чего же вы ждете? SSH для Windows Putty -самостоятельная SSH-программа для Windows. Она не требует установки, и ее можно запустить с USB-брелка. Все эти разговоры о доступе к компьютеру извне предполагали, что «снаружи» установлен Linux (или некий вариант Unix). Как вы могли заметить, на многих компьютерах стоит эта странная проприетарная система по имени Windows. Не волнуйтесь, клиент SSH для Windows существует и даже не нуждается в установке. Он называется Putty, и запустить его можно прямо с USB-брелка. Зайдите на сайт www.chiark. greenend.org.uk/~sgtatham/putty, скачайте файл putty.zip и распакуйте его на флэшку. Там будет несколько файлов; из них нам интереснее всего putty.exe, SSH-клиент. Запустите его, введите имя хоста или IP-адрес сервера, и он должен запросить пароль для входа. Единственная хитрость здесь - когда имя пользователя не совпадает с именем пользователя на сервере, просто добавьте его к названию хоста, как обычно (user@hostname). Putty умеет работать с ключами, но в другом формате. Чтобы преобразовать в этот формат ключ OpenSSH, запустите Puttygen, импортируйте ключ RSA или DSA из SSH и сохраните секретный ключ там же, где находится Putty. Теперь ключ можно выбрать в меню SSH > Auth в основном окне Putty. Вам понадобится сделать это только для закрытого ключа, потому что открытый ключ, который вы уже добавили в файл authorized_keys, работает с OpenSSH и Putty. Приведенная выше рекомендация по использованию парольной фразы слюбым переносимым ключом здесь также применима. Инфо из LinuxFormat |
Ответить |
Опции темы | |
Опции просмотра | |
|
|