Linux-сервер своїми руками

Linux

У книзі докладно розглянуто налаштування мережевих сервісів, що дозволяють створити сервер необхідної конфігурації та функціональності на основі ОС Linux. Ви зможете налаштувати сервер будь-якого типу: від сервера локальної мережі до Інтернет-сервера та сервера віддаленого доступу. Детально описано адміністрування Linux.

Виклад матеріалу побудовано на основі дистрибутивів Red Hat та Mandrake. Багато унікальної інформації: запуск Windows-ігор під Linux та створення Linux-сервера для ігрового залу, налаштування антивірусів Dr. Web та AVP під Linux, програма обліку трафіку MRTG, система захисту та виявлення атак LIDS, а також багато іншого. Особливу увагу приділено безпеці Linux-серверів. Досить докладно описано саму ОС Linux і наведено довідник її команд. Прочитавши книгу, ви станете володарями знань з налаштування та компілювання ядра, створення власних rpm-пакетів, командного інтерпретатора bash, використання масивів RAID. Ви дізнаєтесь про внутрішній світ Linux. Книга підійде як для професійних, так і для адміністраторів-початківців, оскільки виклад матеріалу починається з установки ОС Linux, а в першому розділі дано опис основних мережевих технологій і протоколів (Курс Молодого Адміністратора).

Всі наведені в книзі лістинги перевірені на практиці і розміщені на CD, що додається. Крім цього, на ньому міститься багато довідкової інформації (HOWTO, RFC), а також статей, присвячених Linux. Розміщений багатий набір допоміжних утиліт та програмного забезпечення для сервера (Apache, MySQL, MRTG та ін.).

Linux-сервер своїми руками

8.2. Віддалений доступ: ssh та telnet

Розділи на цій сторінці:

8.2. Віддалений доступ: ssh та telnet

Сервіс Telnet забезпечує базову емуляцію терміналів віддалених систем,що підтримують протокол Telnet над протоколом TCP/IP. Забезпечується емуляція терміналів Digital Equipment Corporation VT 100, Digital Equipment Corporation VT 52, TTY. Протокол Telnet описаний у документі RFC 854, який ви знайдете на компакт-диску, що додається.

Будь-які команди, які виконуються за допомогою Telnet, обробляються telnet-сервером, а не локальним комп'ютером. Користувач лише бачить результат виконання цих команд.

Для використання Telnet на віддаленому комп'ютері необхідно встановити telnet-демон. На комп'ютері користувача потрібно встановити програму-клієнт. Практично у кожній операційній системі існує утиліта telnet, яка є клієнтом для протоколу telnet (див. рис. 8.2).

Сервіс Telnet був і залишається одним із найпопулярніших способів віддаленої реєстрації та роботи на віддаленій машині. Основним його недоліком є ​​те, що будь-яка інформація, в тому числі і паролі, передається у відкритому вигляді без кодування.

SSH (Secure Shell) — програма, яка дозволяє вам зареєструватися на віддалених комп'ютерах та встановити зашифроване з'єднання. Існує також "безпечна" версія telnet - stelnet.

SSH використовує криптографію відкритого ключа для шифрування з'єднання між двома машинами, а також для розпізнавання користувачів.

Мал. 8.2.Telnet-клієнт для Windows

Оболонку ssh можна використовувати для безпечної реєстрації на віддаленому сервері або копіювання даних між двома машинами, запобігаючи атакам шляхом приєднання посередині (session hijacking) і обманом сервера імен (DNS spotting).

Оболонка Secure Shell підтримує такі алгоритми шифрування:

BlowFish - це 64-розрядна схема шифрування. Цей алгоритм часто використовується дляшвидкісного шифрування даних великих обсягів.

Потрійний DES (Data Encryption Standard) - стандарт для шифрування даних. Цей алгоритм досить старий, тому не рекомендується його використовувати. Зазвичай, DES використовується для шифрування несекретних даних.

IDEA (International Data Encryption Algorithm) - міжнародний алгоритм шифрування інформації. Цей алгоритм працює зі 128-розрядним ключем і тому він більш захищений, ніж BlowFish та DES.

RSA (Rivest-Shamir-Adelman algorithm) - алгоритм Рівеста-Шаміра-Адельмана. Являє собою схему шифрування з відкритим та секретним ключами.

При виборі алгоритму шифрування потрібно виходити з конфіденційності інформації, яку потрібно передати. Якщо інформація є секретною, краще використовувати алгоритми IDEA або RSA. Якщо ви просто не хочете передавати дані у відкритому вигляді, використовуйте алгоритм BlowFish, оскільки він працює значно швидше, ніж DES.

Оболонка ssh незамінна в тих випадках, коли віддалено потрібно адмініструвати сервер або сервер не має власного монітора. При використанні telnet усі дані, які передаються через telnet-з'єднання, доступні у відкритому вигляді. Отже, імена користувачів та паролі будуть доступні всім, хто прослуховує трафік за допомогою аналізатора. Шифрування ssh виконує, використовуючи кілька різних алгоритмів, включаючи DES та 3DES.

Програма складається з демона sshd, який запускається на Linux/UNIX-машині, та клієнта ssh, який поширюється як Linux, так Windows. Щоб встановити ssh, візьміть вихідні тексти та помістіть їх за традицією до каталогу /usr/src/. Потім розпакуйте архів та встановіть програму, виконавши таку послідовність дій:

cd /usr/src/ tar xzfssh-2.4.0.tar.gz cd ssh-2.4.0 ./configure make make install

Щоб ssh почав працювати, необхідно запустити демон sshd на машині, до якої передбачається підключення. Бажано додати команду запуску до сценарію завантаження системи для автоматичного запуску. Демон sshd працює по 22 порту (див. листинг 8.6). Якщо не помиляюся, ssh неможливо використовувати разом з xinetd/inetd — його потрібно запускати подібно до сервера httpd в режимі standalone.

Лістинг 8.6. Фрагмент файлу /etc/services

ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol

Зазвичай з налаштуванням sshd немає ніяких неприємних моментів. Докладно налаштування демона буде розглянуто трохи нижче у цьому розділі. Тепер спробуйте зареєструватись на цій машині через ssh. Для цього потрібно встановити цей пакет на іншу машину під керуванням Linux/UNIX (або встановити Windows-клієнт ssh) і ввести команду:

ssh запросить вас ввести пароль користувача. Як ім'я користувача для встановлення з'єднання буде використано ім'я поточного користувача, тобто ім'я, під яким ви зараз зареєстровані в системі. Якщо автентифікація пройде успішно, розпочнеться сеанс зв'язку. Припинити сеанс можна комбінацією клавіш Ctrl+D.

Якщо потрібно вказати інше ім'я користувача, використовуйте параметр –l програми ssh:

ssh -l user hostname.ru

Так можна вказати програмі ssh, від імені якого користувача потрібно реєструватися на віддаленій машині (рис. 8.3).

При використанні Windows-клієнта ім'я комп'ютера, ім'я користувача та пароль потрібно ввести у діалоговому вікні програми. Якщо з'єднання не встановлюється, спробуйте вибрати метод кодування blowfish. Якщо це не допоможе, виберіть 3DES.

Робота у ssh аналогічна роботі у telnet. Ви можете адмініструвати віддалену машину так само легко, як і локальну. Опції програми ssh вказані у табл. 8.5.

Рис.8.З. Реєстрація на віддаленій машині

Опції програми ssh Таблиця 8.5

Оболонка ssh використовує два конфігураційні файли ssh_conf і sshd_conf. Думаю, що немає сенсу говорити, що вони знаходяться в директорії /etc/ssh. Рекомендую у файлі sshd_conf прописати наступний рядок:

allowedadress 10.1.1.1 10.1.2.1 10.1.3.1

Програма stelnet у всьому повністю аналогічна до програми telnet, але вона виконує шифрування трафіку, який передається під час telnet-з'єднання.

Демон sshd – це програма-демон для оболонки ssh. Зазвичай sshd запускається машиною, до якої підключаються клієнти ssh. Останні версії демона sshd підтримують дві версії протоколу ssh - ssh версія 1 і ssh версія 2.

Протокол SSH версія 1

Кожен вузл має свій RSA-ключ (зазвичай 1024 біт), який використовується для ідентифікації вузла. Цей ключ ще називається відкритим. Додатково при запуску демона генерується ще один RSA-ключ - ключ сервера (зазвичай 768 біт). Цей ключ створюється заново щогодини і ніколи не зберігається на диску.

Щоразу під час встановлення з'єднання з клієнтом демон відправляє йому у відповідь свій відкритий ключ і ключ сервера. Клієнт порівнює отриманий відкритий ключ зі своєю базою даних, щоб перевірити, чи він не змінився. Потім клієнт випадково генерує 256-розрядне число і кодує його, використовуючи одночасно два ключі - відкритий ключ і ключ сервера. Обидві сторони використовують цей випадковий номер як ключ сесії, який використовується для кодування всіх даних, що передаються під час сесії.

Потім клієнт намагається автентифікувати себе,використовуючи .rhosts-аутентифікацію, аутентифікацію RSA або аутентифікацію з використанням пароля.

Зазвичай .rhosts-автентифікація є небезпечною і тому вона відключена.

Протокол SSH версія 2

Версія 2 працює аналогічно: кожен вузол має певний ключ DSA, який використовується для ідентифікації вузла. Однак під час запуску демона ключ сервера не генерується. Безпека з'єднання забезпечується завдяки угоді Діффі-Хелмана (Diffie-Hellman key agreement).

Сесія може кодуватися такими методами: 128-розрядний AES, Blowfish, 3DES, CAST128, Arcfour, 192-розрядний AES або 256-розрядний AES.

Опції демона sshd вказані у табл. 8.6.

Опції демона sshd Таблиця 8.6

Файл конфігурації демона /etc/ssh/sshd_config виглядає приблизно так, як це показано у лістингу 8.7