Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Скачать 3.69 Mb.
|
Глава 5 Администрирование В этой главе мы рассмотрим вопросы, с которыми администраторы Linux- систем ежедневно сталкиваются в своей нелегкой работе. Нам предстоит по- знакомиться с множеством команд Linux, научиться их использовать и узнать немало полезного о системе. Но разбором команд мы не ограничимся, потому что иначе книга превратит- ся в перевод руководства по Linux. Чтобы этого не случилось, я постарался подобрать готовые решения задач администратора, которые вам пригодятся в повседневной жизни. Надеюсь, что материалы этой главы помогут вам най- ти ответы на многие вопросы и избавиться хотя бы от части проблем. На просторах Интернета идет самая настоящая война между защитой и взло- мом , и побеждает тот, кто быстрее реагирует на действия противника и мень- ше спит. 5.1. Полезные команды Для начала познакомимся с некоторыми программами и командами, которые позволят вам упростить администрирование и сделать его эффективнее. Нач- нем с команд, необходимых для последующего понимания материала. 5.1.1. Сетевые соединения Графическая утилита настройки сети в Ubuntu далека от идеала и наглядно- сти . Подобные утилиты в Mandriva или в Suse намного интуитивно понятнее в работе. Но Ubuntu почему-то самый популярный. Для того чтобы начать настройку соединений, выберите Система | Параметры | Сетевые соедине- ния . В результате появится окно, в котором по разделам разбиты все сетевые устройства , которые могут вывести вас во внешний мир. Выберите устройство, Глава 5 182 параметры которого хотите настроить, и нажмите кнопку Изменить. Перед вами должно открыться окно, показанное на рис. 5.1 (если производители ничего не изменили). Рис . 5.1. Графическая программа настройки сети В этом окне и проводятся настройки сетевого соединения, параметры кото- рого должны быть понятны, если вы знакомы с принципами работы сетевых протоколов , а если что-то непонятно, то поищите в алфавитном указателе в конце книги или прочитайте до конца эту главу. 5.1.2. ping Одна из часто используемых администраторами команд — ping . Она посы- лает ICMP-пакеты в виде эхо-запросов на указанную систему для определе- ния пропускной способности сети. О таких запросах мы уже говорили, когда рассматривали сетевой экран (см. разд. 4.10). Администрирование 183 Например , выполните команду ping 195.18.1.41 , и в ответ вы получите сле- дующую информацию: PING 195.18.1.41 (195.18.1.41) from 195.18.1.41 : 56(84) bytes of data. 64 bytes from 195.18.1.41: icmp_seq=1 ttl=64 time=0.102 ms 64 bytes from 195.18.1.41: icmp_seq=2 ttl=64 time=0.094 ms 64 bytes from 195.18.1.41: icmp_seq=3 ttl=64 time=0.094 ms 64 bytes from 195.18.1.41: icmp_seq=4 ttl=64 time=0.095 ms --- 195.18.1.41 ping statistics --- 4 packets transmitted, 4 received, 0% loss, time 3013ms rtt min/avg/max/mdev = 0.094/0.096/0.102/0.007 ms В данном случае IP-адрес нужно заменить любым адресом в вашей сети или в Интернете, например: ping microsoft.com Первая строка информационная, в ней отображается IP-адрес компьютера, с которым будет происходить обмен сообщениями (если вы указали сим- вольное имя хоста, то простой командой ping можно узнать его IP-адрес). В конце строки указан размер пакетов данных, которые будут отправляться. Следом на экране начнут появляться строки типа: 64 bytes from 195.18.1.41: icmp_seq=1 ttl=64 time=0.102 ms Отсюда мы узнаем, что было получено 64 байта с адреса 195.18.1.41. После двоеточия отображаются следующие параметры: icmp_seq — номер пакета. Это значение должно последовательно увели- чиваться на 1. Если какой-либо номер отсутствует, то это означает, что пакет потерялся в Интернете и не дошел до адресата, или ответ не вернулся к вам. Это может происходить из-за неустойчивой работы оборудования, плохого кабельного соединения или в случае, когда один из маршрутиза- торов в сети между компьютерами выбрал неправильный путь, и пакет не достиг места назначения; ttl — время жизни пакета. При отправке пакета ему отводится опреде- ленное время жизни, которое задается целым числом. По умолчанию в большинстве версий ttl равен 64, но значение может быть изменено. Каждый маршрутизатор при передаче пакета уменьшает это число. Когда оно становится равным нулю, пакет считается заблудившимся и уничто- жается . Таким образом, по этому значению можно приблизительно ска- зать , сколько маршрутизаторов встретилось на пути; time — время, затраченное на ожидание ответа. По этому параметру можно судить о скорости связи и ее стабильности, если значение параметра не сильно изменяется от пакета к пакету. Но учитывайте, что время, затра- Глава 5 184 ченное на отправку и получение первого пакета, почти всегда выше, осо- бенно при указании имени, а не IP. Это связано с затратами на поиск в ба- зе DNS. Все остальные пакеты должны идти равномерно. Если ответ на какой-нибудь запрос не был получен, то вы увидите сообщение о его потере. Дождитесь, пока программа не отправит 7—10 пакетов, чтобы по их параметрам оценить качество связи, после чего можно прерывать сеанс на- жатием клавиш , а также минимальное, среднее и максимальное время обмена пакетами. Вот основные параметры, которые можно использовать в команде ping : -c n — завершение работы после отправки (и приема) n пакетов. Напри- мер , вы хотите послать пять запросов, тогда команда будет выглядеть сле- дующим образом: ping –c 5 195.10.14.18 ; -f — форсированная передача. Например, вам нужно быстро отпра- вить 50 запросов, тогда команда будет выглядеть следующим образом: ping -f -c 50 195.10.14.18 . Этот ключ в сочетании с большим количе- ством пакетов значительного размера может сильно загрузить сеть и ком- пьютер получателя, а в некоторых системах даже привести к временному отказу от обслуживания; -s n — размер пакета. Например, если вы хотите отправить пакет размером в 1000 байт, команда должна выглядеть так: ping –s 1000 195.10.14.18 В некоторых старых версиях ОС были ошибки, и при получении слишком большого пакета система зависала. В настоящее время погрешности тако- го рода отсутствуют, и встретить подобную систему в Интернете сложно. Это наиболее часто используемые параметры. Дополнительную информацию по команде можно получить в справочной системе, выполнив команду man ping В Н И МА Н И Е ! Не каждый сервер отзывается на эхо - запросы В некоторых системах сетевой экран может быть настроен так , чтобы не пропускать ICMP- трафик , и тогда от - вета не будет , хотя реально сервер работает в нормальном режиме и пакеты другого типа может воспринимать без проблем 5.1.3. netstat Эта команда показывает текущие подключения к компьютеру. Результат ее выполнения имеет примерно следующий вид: Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 FlenovM:ftp 192.168.77.10:3962 ESTABLISHED tcp 0 0 FlenovM:ftp-data 192.168.77.10:3964 TIME_WAIT Администрирование 185 Информация представлена в виде таблицы. Давайте рассмотрим ее колонки: Proto — базовый протокол, который использовался для соединения. Чаще всего здесь можно видеть unix или tcp ; Recv-Q — количество байтов, не скопированных пользовательской про- граммой из очереди; Send-Q — количество байтов в очереди на отправку удаленному компью- теру ; Local address — локальный адрес формата компьютер:порт . В качестве порта может использоваться как символьное имя, так и число. В приве- денном выше примере в первой строке показан порт ftp , что соответству- ет числу 21; Foreign address — удаленный адрес в формате IP:порт ; State — состояние соединения. У этой команды множество дополнительных параметров, и полное их описа- ние можно увидеть в файле справки, набрав команду man netstat В случае непредвиденной ситуации и подозрения на проникновение в систе- му извне вы с помощью этой команды сможете определить, через какой сер- вис произошло вторжение, и что хакер в данный момент может использовать. Например , если злоумышленник пробрался через FTP, то он, скорей всего, работает с файлами и может закачивать свои программы для дальнейшего взлома или удалять системные файлы (это зависит от прав доступа). 5.1.4. telnet Мощность Linux и его текстовой консоли заключается в том, что вы можете выполнять все действия, не только сидя непосредственно за терминалом, но и удаленно, за тысячи километров. Нужно лишь подключиться к компьютеру на порт Telnet-сервера с помощью Telnet-клиента, и можно считать, что вы в системе и используете мощности производительной техники, которая может быть недоступна домашнему пользователю. В Windows очень мало утилит, способных работать в командной строке, по- этому в этой ОС необходим (и широко используется) графический режим. Да и сама командная строка в Windows обладает незначительными возможно- стями . Для решения этой проблемы был создан терминальный доступ, кото- рый позволяет на клиентской машине видеть экран сервера и работать с ним так , как будто вы сидите непосредственно за сервером. Но этот метод отни- мает слишком много трафика и очень неудобен на медленных каналах связи. Командная строка Linux по сравнению с графическим режимом практически не расходует трафик и может приемлемо работать даже по самым медленным Глава 5 186 каналам , например, по соединениям GPRS сотового телефона или домашнего модема , где скорость достаточно мала. Как вы уже поняли, программное обеспечение Telnet состоит из серверной и клиентской частей. При запуске Telnet-сервера открывается порт 23, к ко- торому можно подключиться с клиентского компьютера и выполнять любые команды , которые позволяет удаленный сервер. Но это не все, с помощью Telnet-клиента можно подсоединяться и к любому сервису , протокол которого является текстовым (то есть команды читаемы и представляют собой текст). Например, можно подключиться на порт 25 и прямо из командной строки отправить E-mail-сообщение, подавая команды SMTP-сервера. Если у вас есть установленный FTP-сервер, то уже сейчас вы можете выпол- нить команду: telnet localhost 21 В данном случае первый параметр — это localhost , потому что я подразуме- ваю , что вы подключаетесь к локальному FTP-серверу. Если вы хотите рабо- тать с удаленным компьютером, то укажите его адрес. В качестве второго параметра указывается номер порта. Сервер FTP принимает управляющие команды на 21 порту, поэтому я указал это число. Я рекомендую применять Telnet-клиент только для отладки различных сер- висов , но не для управления реальным компьютером. Поэтому на всех бое- вых серверах отключайте сервер Telnet. Он небезопасен, потому что данные передаются в открытом виде и могут быть перехвачены. Все попытки сделать Telnet защищенным заканчивались неудачно и не приводили к желаемо- му результату. Один из относительно безопасных вариантов использования Telnet — это подключение через канал шифрования OpenSSL (от Secure Socket Layer, протокол защищенных сокетов). Но наибольшую популярность получило управление сервером через протокол SSH (OpenSSH, Open Secure Shell), который мы рассмотрим позже, в разд. 5.3. Таким образом, Telnet-клиент в системе необходим, а Telnet-сервер, если он у вас установлен, следует срочно удалить и забыть как страшный сон. Если вы все же решили использовать Telnet-сервер, то это необходимо делать только через протокол для безопасной связи по сети с применением откры- тых и секретных ключей (см. разд. 5.2). В этом случае весь трафик будет шифроваться , но надо принять еще некоторые меры для повышения безопас- ности Если у вас установлен Telnet-сервер, то попробуйте сейчас подключиться к нему, используя команду telnet localhost . Если сервер запущен и под- Администрирование 187 ключение разрешено сетевым экраном, то перед вами появятся похожие со- общения : Trying 127.0.0.1 Connected to localhost Escape character is '^]'. ASPLinux release 7.3 (Vostok) Kernel 2.4.18-15asp on an i686 Login: Ничего страшного не замечаете? А я вижу подробную информацию о дист- рибутиве и ядре. И все это становится известным еще до регистрации любо- му посетителю. Если хакер увидит открытый 23 порт, то ему уже не надо будет мучаться для выяснения, какая у вас ОС и версия ядра, достаточно подключиться к Telnet, и проблема решена. Излишняя болтливость Telnet — большая дыра, с которой надо бороться в первую очередь. Приветствие, которое вы можете видеть при подключении, находится в файлах /etc/issue и /etc/issue.net. Измените текст сообщения, на- пример следующим образом: echo Текст > /etc/issue echo Текст > /etc/issue.net Здесь Текст — это новое приветствие. Можно указать ложную версию ядра, чтобы запутать хакера: echo Debian Linux > /etc/issue echo Kernel 2.4.4 on an i686 > /etc/issue.net У меня установлен клон дистрибутива Red Hat с ядром 2.4.18-15asp, а хакер будет думать, что я использую Debian и старое ядро 2.4.4. Проблема в том, что после перезагрузки содержимое файлов восстановится, и Telnet в приветствии снова покажет всю информацию о системе. Чтобы этого не произошло, после изменения текста приветствия можно установить на файлы атрибут +i , который запрещает любые изменения: chattr +i /etc/issue chattr +i /etc/issue.net Но главная проблема — не болтливость, а отсутствие безопасности. Утилита передает все команды в открытом виде, без шифрования. Если хакеру удаст- ся каким-либо образом перехватить ваши пакеты, то он сможет увидеть не только выполняемые вами команды, но и пароли доступа. Глава 5 188 5.1.5. r- команды В Linux есть так называемые r-команды: rlogin , rsh , rcp , rsync , rdist . Мы не будем их рассматривать, потому что все они создают большие проблемы в безопасности. Если Telnet-клиент полезен для тестирования сервисов, то эти команды я включил в обзор только для того, чтобы вы удалили их из сис- темы , исключив тем самым соблазн их использовать и возможность их при- менения хакером. Все r-команды устарели и небезопасны, потому что позволяют подключаться к системе удаленно и при этом передают данные без шифрования. 5.2. Шифрование Во времена рождения Интернета и первых сетевых протоколов еще не заду- мывались о безопасности. О ней стали думать только тогда, когда начали происходить реальные взломы и целые эпидемии. Одним из самых больших упущений было то, что в большинстве протоколов данные по сети передают- ся в открытом виде, а сетевое оборудование позволяет прослушивать сетевой трафик В локальной сети есть свои особенности. Соединения могут осуществляться различными способами. От выбранного типа топологии зависит используе- мый вид кабеля, разъем и используемое оборудование. При подключении по коаксиальному кабелю могут использоваться две схемы: или все компьютеры объединяются напрямую в одну общую шину, или они соединяются в кольцо, когда крайние компьютеры тоже соединены между собой (разновидность первого варианта). При использовании общей шины (рис. 5.2) все компьюте- ры подключены последовательно, и посылаемый пакет приходит ко всем компьютерам сети, а установленные на них сетевые карты проверяют адреса- та : если пакет направлен им, то принять, иначе — пропустить. Рис . 5.2. Схема соединения компьютеров " Общая шина " Компьютер обрабатывает только свои пакеты, но сетевая карта может видеть абсолютно все, что через нее проходит. И если захотеть, то, воспользовав- Администрирование 189 шись утилитой для прослушивания трафика (сниффером), можно просмотреть все данные, проходящие мимо сетевой карточки, даже если они предназначены не вам. А так как большинство протоколов пропускают пакеты в открытом виде , то любой хакер может прослушать сеть и выявить конфиденциальную информацию , в том числе и пароли доступа. Соединение по коаксиальному кабелю встречается все реже, потому что оно ненадежно и позволяет передавать данные максимум на скорости 10 Мбит/с. Да и сама схема подключения в общую шину не внушает доверия. При выхо- де из строя одного из компьютеров может нарушиться работа всей сети. Замыкание в кольцо отчасти снимает вопросы надежности, но не решает проблемы скорости и неудобства построения, обслуживания и использования такой сети. При объединении компьютеров через центральное устройство хаб (hub) или коммутатор (switch) используется топология звезда (рис. 5.3). В этом случае компьютеры с помощью витой пары получают одну общую точку. Такая схема надежнее и позволяет работать на скорости в 100 Мбит/c и более. HUB SWITCH Рис . 5.3. Схема соединения компьютеров " Звезда " Если в центре стоит хаб (простое и дешевое устройство), то все пакеты, при- шедшие с одного компьютера, копируются на все узлы, подключенные к этому хабу. Таким образом, любой компьютер тоже может видеть пакеты других участников сети. В случае с коммутатором (более интеллектуальное и более дорогое устройст- во ) пакеты будет видеть только получатель, потому что коммутатор имеет Глава 5 190 встроенные возможности маршрутизации, которые реализуются в основном на уровне MAC-адреса (Media Access Control Address, адрес управления дос- тупом к среде), который называют физическим адресом. Маршрутизация — это слишком громко сказано, она доступна только в дорогих устройствах, а в более дешевых есть только коммутация. Физический адрес — это 48- разрядный серийный номер сетевого адаптера, присваиваемый производите- лем . Он уникален, потому что у каждого изготовителя свой диапазон адресов (однако не стоит думать, что его невозможно подделать). К каждому порту коммутатора подключен компьютер с определенным MAC-адресом. Пакет направляется только на порт адресата, и другие участники сети его не увидят. Существуют коммутаторы, которые умеют управлять передачей на уровне IP-адреса (логический адрес), как это делают маршрутизаторы (router). В этом случае пакеты будут отправляться исходя из логических, а не физиче- ских адресов, и коммутатор сможет объединять целые сети. Но даже в случае использования коммутатора есть возможность прослушать трафик на сервере. Такое положение дел никого не устраивает, особенно при работе с конфиденциальными данными. Переделывать существующие протоколы нереально, поскольку это накладно и в некоторых случаях просто невыполнимо, потому что потребует измене- ния всех существующих программ. Но было найдено более удобное и уни- версальное решение — туннелирование (tunneling), которое позволяет про- граммам удаленного доступа различных разработчиков взаимодействовать друг с другом, а также поддерживает несколько методов проверки подлинно- сти , сжатия и шифрования данных. В общих чертах, туннелирование выгля- дит следующим образом (на примере FTP): на клиентском компьютере на определенном порту (Порт 1) вы должны запустить программу для шифрования трафика. Теперь, вместо того чтобы передавать данные на удаленный компьютер, вы должны с помощью FTP- клиента соединиться с Портом 1 своего компьютера и направлять данные на него. Полученные данные будут шифроваться и передаваться по сети в закрытом виде программой шифрования; на удаленном компьютере на определенном порту запускается такая же программа , которая принимает зашифрованные данные, декодирует и пе- редает их в открытом виде на порт FTP-сервера. На рис. 5.4 показано, как происходит шифрование данных. Получается, что все пакеты передаются через посредника, который кодирует данные. В на- стоящее время наиболее распространенным протоколом шифрования являет- ся SSL (Secure Sockets Layer, протокол защищенных сокетов). Он зарекомен- довал себя как надежное средство обмена данными и уже многие годы Администрирование 191 защищает транзакции в Интернете. Например, когда вы покупаете в элек- тронном магазине какой-либо товар, то в этот момент используется безопас- ное соединение с шифрованием, чтобы ни один злоумышленник не смог под- смотреть информацию о кредитной карте. В момент подключения к серверу браузер автоматически запускает на компьютере клиента программу шифро- вания и через нее в зашифрованном виде передает на сервер данные и полу- чает ответы. Клиент Программа шифрования Дешифрование Сервер Интернет Открытые данные Зашифрованные данные Зашифрованные данные Открытые данные |