Смекни!
smekni.com

Исследование уровня безопасности операционной системы Linux (стр. 8 из 15)

Если же пакет адресован другому компьютеру, то есть является транзитным, то после маршрутизации он попадает в цепочку FORWARD таблиц mangle и filter, в которой осуществляются все необходимые действия по управлению доступом для всех транзитных пакетов. Далее, как и пакет локального процесса, перед отправкой в сеть транзитный пакет проходит через цепочки POSTROUTING таблиц mangle и nat.

Этих трех таблиц с заранее закрепленным функциональным назначением вполне достаточно для реализации всех перечисленных ранее возможностей. Количество таблиц является определенным и не может быть изменено ни при каких условиях. При настройке брандмауэра в таблицы могут быть добавлены другие цепочки в дополнение к уже существующим, что позволяет создавать более гибкую систему управления доступом, нежели просто добавление правил в заранее определенные цепочки. В отличие от цепочек, созданных администратором, системные цепочки INPUT, OUTPUT, FORWARD, PREROUTING и POSTROUTING не могут быть удалены ни при каких условиях.

Для настройки и управления брандмауэром в составе ОС Linux поставляется программный пакет iptables. Этот пакет помимо файлов документации и модулей, подгружаемых в ядро и используемых для осуществления фильтрации по различным критериям, включает следующие исполняемые файлы:

iptables – основная программа пакета, с помощью которой производится манипулирование правилами в цепочках. Эта программа позволяет совершать с правилами и пользовательскими цепочками все доступные действия.

iptables-save – программа, которая позволяет сохранять все текущие правила в одном файле для последующего их восстановления. По умолчанию этим файлом является /etc/sysconfig/iptables. В файле /etc/sysconfig/iptables хранится вся конфигурация брандмауэра и из этого файла она считывается при загрузке системы.

iptables-restore – эта программа позволяет считывать правила и цепочки, сохраненные ранее программой iptables-save. По умолчанию эта программа пытается загрузить файл /etc/sysconfig/iptables, если он существует.

Более подробная информация о программном пакете iptables содержится в файлах документации, а также в соответствующих man-руководствах.

Практическое применение рассмотренной информации приводится в приложении в примере 6.

2.5. Удаленное управление

Потребность в удаленном управлении возникла с момента появления сети и систем, которые необходимо было администрировать на расстоянии.

Чтобы лучше представить, в чем заключается удобство от использования программ удаленного управления, возьмем простой пример. Организация имеет свой собственный сервер, на котором располагается почтовая система и почтовые ящики всех сотрудников организации. Организация арендует помещение на двадцатом этаже высотного здания, в котором помимо нее функционирует еще десяток-другой таких же организаций. В этом здании имеется специализированное подвальное помещение с хорошо организованной системой охлаждения, в котором располагаются коммуникационные средства, системы связи и сервера. Сервер рассматриваемой организации также располагается в этом помещении. За работоспособностью сервера следит специальное лицо, выполняющее функции администратора сети, которое помимо этого выполняет необходимые изменения в конфигурации предоставляемых сервисов. А теперь представим, какие действия необходимо совершить администратору, если, например, какому-то пользователю почтовой системы нужно поменять пароль. При отсутствии удаленного управления администратор вынужден каждый раз спускаться с двадцатого этажа в подвальное помещение, открывать локальную консоль на сервере и, выполнив необходимые действия, возвращаться обратно. В принципе, ситуация не такая уж безвыходная. А если организация арендует сервер в другой стране или на другом континенте?

В таких случаях идеальным решением является организация полнофункционального управления сервером посредством сетевого доступа. Существует несколько очень распространенных протоколов удаленного администрирования, позволяющих управлять системой посредством сети. Самым старым и самым распространенным, но в то же время самым небезопасным, является протокол Telnet. Это самый первый протокол удаленного взаимодействия, появившийся на заре развития вычислительных сетей, когда проблеме безопасности при передаче информации не уделялось практически никакого внимания. При передаче информации по протоколу Telnet все данные передаются в открытом незашифрованном виде, в том числе имена и пароли пользователей. Любой, даже малоопытный в компьютерных делах, пользователь, имея программу под общим названием network sniffer (с англ. «сетевой анализатор пакетов»), может получить имя и пароль при передаче их по сети.

Помимо протокола Telnet в UNIX-системах существует целое семейство так называемых r-программ. К ним относятся rsh, rlogin (начальная буква r трактуется как remote) и другие, позволяющие производить различные операции, связанные с удаленным администрированием. Однако уровень безопасности при использовании r-программ, как и уровень безопасности при использовании Telnet, также оставляет желать лучшего.

Существует еще один протокол для управления некоторыми параметрами системы и получения информации о ней. Это протокол SNMP (Simple Network Management Protocol). Протокол SNMP имеет ограниченный спектр возможностей и не лишен тех же недостатков в плане безопасности, что и протокол Telnet.

Эти протоколы могут служить хорошим решением для таких локальных сетей, где требования, предъявляемые к безопасности, являются не очень высокими. Однако, при передаче данных по такой сети, как Интернет, где пакет, прежде чем достичь адресата, проходит несколько небезопасных узлов, их использование может служить потенциальной угрозой безопасности и основной причиной успешного проникновения в систему.

На сегодняшний день одним из самых распространенных и безопасных протоколов удаленного администрирования, использующих шифрование при передаче данных, является протокол SSH (Secure SHell). Рассмотрим поподробнее, в чем же состоит преимущество протокола SSH перед другими протоколами удаленного управления.

Протокол SSH появился в 1995 году и с самого начала в основу была положена идея создания средства организации безопасного доступа к компьютерам при работе по небезопасным каналам связи, таким как сеть Интернет. В протоколе SSH для организации безопасного доступа применяется процедура аутентификации с использованием асимметричного шифрования с открытым ключом. Это обеспечивает более высокую безопасность, чем при использовании симметричного шифрования, хотя и порождает дополнительную вычислительную нагрузку. При последующем обмене данными применяется уже симметричное шифрование, более экономичное в смысле затрат процессорного времени. Также SSH поддерживает возможность работы с уже упомянутым протоколом Telnet, безопасную работу по протоколу графического уровня X11, благодаря возможности перенаправления соответствующих данных по надежным SSH-каналам, предоставляет безопасную замену многим r-программам UNIX, с которыми традиционно связаны проблемы обеспечения безопасности.

Проект стандарта SSH описывает протоколы SSH и состоит из нескольких документов, которые описывают общую архитектуру протокола, а также протоколы трех уровней: протокол транспортного уровня, протокол аутентификации и протокол соединения. Их задача - обеспечивать безопасную сетевую службу наподобие Telnet поверх небезопасной сети.

Протокол транспортного уровня обеспечивает аутентификацию сервера, конфиденциальность и целостность. Протокол аутентификации обеспечивает аутентификацию клиента для сервера. Наконец, протокол соединения SSH мультиплексирует безопасный шифруемый канал, представляя его в виде нескольких логических каналов, которые используются для различных целей или различных видов служб. Помимо этого протокол транспортного уровня предусматривает возможность сжатия данных, что является бесспорным преимуществом по сравнению с протоколом Telnet при передаче данных по низкоскоростному каналу. Протокол транспортного уровня работает поверх соединения TCP/IP, в свою очередь протокол аутентификации работает поверх протокола транспортного уровня, а протокол соединения – поверх протокола аутентификации. В итоге получается жесткая взаимосвязь протоколов, обеспечивая в сумме наиболее безопасную и эффективную передачу данных.

С целью повышения безопасности в протоколе SSH осуществляется не только аутентификация клиента для сервера, к которому обращается клиент, но и аутентификация сервера клиентом - другими словами, происходит аутентификация обеих сторон. Клиент шлет запрос на обслуживание в первый раз, когда устанавливается безопасное соединение транспортного уровня SSH. Второй запрос направляется уже после завершения аутентификации клиента.

В дистрибутивах Linux и в большинстве UNIX-подобных ОС возможность работы по протоколу SSH предоставляет бесплатный и свободно-распространяемый программный продукт OpenSSH, в который включены как серверная программа, так и клиентское приложение. Настройка программ пакета OpenSSH осуществляется отчасти при установке пакета, некоторая настройка производится посредством изменения в конфигурационных файлах.

При установке пакета из исходных файлов при запуске программы конфигурирования configure можно задать целый ряд ключей. В частности, можно указать, какие методы шифрования сеанса будут использованы при работе SSH: IDEA, DES, тройной DES, ARCFOUR и BLOWFISH. По умолчанию основным является алгоритм IDEA, использующий 128-разрядные ключи. Если он исключен соответствующим ключом, основным алгоритмом становится 3DES - трехкратное последовательное DES-шифрование c 56-разрядным ключом. Можно выделить также метод BLOWFISH, который при той же длине ключа (от 32 до 448 разрядов) работает быстрее IDEA и DES. Можно задать также замену стандартных команд rlogin и rsh соответствующими одноименными модулями из дистрибутива SSH. Тогда для соединений будет использоваться протокол SSH, конечно, если удаленный компьютер его поддерживает. В противном случае после предупреждения будет осуществлен переход к обычным r-средствам. Все возможные ключи конфигурационной программы можно узнать из документации, идущей с дистрибутивом, или запуском программы с ключом –help.