Как работает iptables. Iptables: сетевая безопасность и фильтрация пакетов. Некоторые особенности протоколов

В сегодняшнем соединённом мире, данные и системы, управляющие данными, должны быть постоянно защищёны, но и доступны пользователям. С SQL Server 2005 пользователи и профессионалы информационных технологий выиграют от снижения времени простоя приложений, увеличения масштабируемости и производительности, надёжных и гибких механизмов управления безопасностью. SQL Server 2005 также содержит много новых и улучшенных возможностей, помогающих персонал вашего отдела информационных технологий более продуктивным. SQL Server 2005 включает главные улучшения управления данными предприятия в следующих областях: управляемость, доступность, масштабируемость, безопасность, управляемость.

SQL Server 2005 упрощает развёртывание, управление и оптимизацию данных предприятия и аналитических приложений. Как платформа управления данными предприятия, он предоставляет единую консоль управления, которая позволяет администраторам данных, находящимся в любом месте вашей организации, отслеживать, управлять и настраивать все базы данных и связанные службы по всему предприятию. Он предоставляет расширяемую инфраструктуру управления, которая может быть легко запрограммирована при помощи SQL Management Objects (SMO), позволяя пользователям переделывать и расширять их среду управления и независимым поставщикам программных продуктов (ISV) создавать дополнительные инструменты и функциональность для дальнейшего расширения возможностей, поставляемых по умолчанию.

SQL Server 2005 упрощает управление путём предоставления единой интегрированной консоли управления для мониторинга и управления реляционной базой данных SQL Server, Integration Services, Analysis Services, Reporting Services, Notification Services и SQL Mobile на большом числе распределённых серверов и баз данных. Администраторы баз данных могут выполнять несколько задач одновременно, включая следующие: создание и выполнение запроса, просмотр серверных объектов, управление объектом, отслеживание активности системы и просмотр оперативной справки. SQL Server Management Studio содержит среду разработки для создания, редактирования и управления сценариев и хранимых процедур, используя Transact-SQL, многомерные выражения (MDX), XMLA и SQL Server Mobile Edition. Management Studio легко интегрируется с системой контроля версий. Management Studio также содержит инструменты для планирования задач Агента SQL Server и управления Планами Технического Обслуживания для автоматизации ежедневных задач обслуживания. Объединение задач управления и создания в одном инструменте в соединении со способностью управлять всеми типами серверов обеспечивает улучшенную производительность для администраторов баз данных.

SQL Server 2005 предоставляет более 70 новых мер внутренней производительности базы данных и использования ресурсов от памяти, блокировок и планирования до транзакций и операций сетевого и дискового ввода-вывода. Эти Динамические Представления Управления (Dynamic Management Views - DMV) обеспечивают большую прозрачность и видимость состояния базы данных и мощную инфраструктуру для упреждающего мониторинга жизнеспособности и производительности базы данных.

Объекты Управления SQL (SMO) являются новым набором объектов для программирования, которые предоставляет полную функциональность для управления базой данных SQL Server. Фактически, Management Studio построена на Объектах Управления SQL. SMO реализована в виде сборки Microsoft .NET Framework. SMO можно использовать для автоматизации распространённых задач администрирования SQL Server, таких как программное получение конфигурационных настроек, создание баз данных, выполнение сценариев Transact-SQL, создание заданий Агента SQL Server и планирование резервного копирования. Объектная модель SMO является более безопасной, надёжной и масштабируемой заменой Распределённым Объектам Управления (DMO), которые входят в состав предыдущих версий SQL Server.

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

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

Кластеры с восстановлением после отказа являются решением высокой готовности, которое использует службы кластеризации Microsoft Windows® для создания устойчивых к сбоям виртуальных серверов, обеспечивающих быстрое восстановление в случае сбоя сервера баз данных. В SQL Server 2005 поддержка кластеров с восстановлением после отказа была расширена для Analysis Services, Notification Services и служб репликации SQL Server. Максимальное количество узлов кластера было увеличено до восьми. Кластеры с восстановлением после отказа SQL Server теперь являются полноценным устойчивым к сбоям серверным решением.

SQL Server 2005 даёт администраторам баз данных возможность создавать мгновенные, доступные только для чтения снимки базы данных. Моментальный снимок базы данных предоставляет устойчивый снимок без накладных расходов на время и хранение на создание полной копии базы данных. Когда основная база данных расходится со снимком, последний добавляет свои собственные копии страниц, по мере того, как они изменяются. Таким образом, снимок может быть использован для быстрого восстановления от случайного изменения базы данных путём простого применения исходных страниц из снимка к основной базе данных.

SQL Server 2005 улучшает доступность баз данных SQL Server при помощи новой опции быстрого восстановления. Пользователи могут снова подключиться к восстанавливающейся базе данных после того, как журнал транзакций применён. Предыдущие версии SQL Server требуют отката незавершённых транзакций до начала работы пользователей, даже если им не требуется доступ к данным, которые затрагивают эти транзакции.

SQL Server 2005 привносит выделенное административное соединение для доступа к серверу даже если он не отвечает или недоступен по иной причине. Это позволяет вам выполнять диагностические функции или операторы Transact-SQL для разрешения проблем на сервере. Административное соединение активируется членами фиксированной серверной роли sysadmin и доступно только через утилиту командной строки SQLCMD либо локально, либо с удалённой машины.

Способность оперативно создавать, перестраивать или удалять индекс является улучшенной функцией SQL Server 2005, которая увеличивает возможности предыдущих версий SQL Server по работе с индексами. Опция оперативного индекса позволяет одновременно производить модификацию (вставки, изменения, удаления) таблицы или данных кластерного индекса и любых связанных индексов во время выполнения команды DDL. С поддержкой оперативных индексных операций можно добавлять индексы без помех доступу к таблицам или другим существующим индексам. В дополнение объём работы сервера позволяет индексным операциям использовать преимущество параллельной обработки.

SQL Server 2005 также привносит возможность выполнять операцию восстановления во время работы экземпляра SQL Server. Возможность оперативного восстановления улучшает доступность SQL Server, так как недоступны только восстанавливаемые данные. Остальная часть базы данных остаётся доступной. Предыдущие версии SQL Server требуют перевода базы в автономное состояние до того, как будет произведено восстановление.

Репликация разработана для увеличения доступности данных путём распределёния данных на нескольких серверах. Доступность увеличивается путём распределения доступа приложений на чтение на несколько баз данных. SQL Server 2005 предоставляет усовершенствованный механизм репликации, использующий новую одноранговую модель, с новой топологией, в которой базы данных могут быть синхронизованы транзакционным способом с любой идентичной равной базой данных.

Достижения масштабируемости, такие как секционирование таблиц, уровень изоляции "снимок", и поддержка 64-х битной работы позволят создавать и развёртывать наиболее необходимые приложения, используя SQL Server 2005. Секционирование больших таблиц и индексов существенно улучшает производительность запросов в очень больших базах данных.

Секционирование таблиц и индексов облегчает управление большими базами данных посредством управления малыми, более управляемыми частями базы данных. Хотя идея секционирования данных по таблицам, базам данных и серверам не является новой в мире баз данных, SQL Server 2005 предоставляет новую возможность для секционирования таблиц по файловым группам в базе данных. Горизонтальное секционирование разделяет таблицу на меньшие группы, основываясь на схеме секционирования. Секционирование таблиц создано для очень больших баз данных, размером от сотен гигабайт до терабайт и более.

Когда данные скопированы, преобразованы и помещены в базу данных для анализа, она должна поддерживаться и/или периодически перестраиваться. Пользователи определённо выиграют от работы с транзакционно непротиворечивой версией базы, однако версия, с которой они работают не будет являться актуальной. На создание индекса могут уйти часы и это может оказаться не тем, что требуется пользователям на самом деле. Здесь и используется уровень изоляции "снимок". Он позволяет пользователям получить доступ к последней подтверждённой записи, используя транзакционно непротиворечивый снимок базы данных. Новый уровень изоляции имеет следующие выгоды:

Монитор Репликации является инструментом, который устанавливает новый стандарт простоты использования в управлении сложными операциями репликации данных с интуитивно понятным интерфейсом пользователя и большим количеством метрик данных.

SQL Server 2005 имеет существенные улучшения в модели безопасности платформы базы данных, с намерением предоставить более точный и гибкий контроль для обеспечения безопасности данных. Значительные вложения были сделаны в большое количество функций для обеспечения высокого уровня безопасности данных вашего предприятия, включая:

Применение политик для паролей учётных записей SQL Server в области аутентификации.

Обеспечение большей модульности для указания разрешений на различных уровнях в области авторизации.

Новая модель безопасности SQL Server 2005 позволяет администраторам управлять разрешениями на модульном уровне и в указанной области, делая управление разрешениями проще, а также обеспечивает выполнения принципа наименьших привилегий. SQL Server 2005 позволяет указать контекст, в котором будут выполняться операторы модуля. Эта функция также работает как отличный механизм для модульного управления разрешениями.

Кластеры SQL Server 2005 поддерживают аутентификацию Kerberos для виртуальных серверов SQL Server 2005. Администраторы могут указать политики типа Windows для стандартных учётных записей, так что единообразная политика применяется ко всем учётным записям домена.

SQL Server 2005 поддерживает шифрование внутри базы данных, полностью интегрированное с инфраструктурой управления ключами. По умолчанию, коммуникации между клиентом и сервером шифруются. Для того, чтобы концентрировать гарантии безопасности, может быть определена серверная политика, которая будет отвергать незашифрованные коммуникации.

Так как общеязыковая среда выполнения (CLR) размещена внутри ядра базы данных, разработчики могут выбрать из множества знакомых языков при разработке приложений баз данных, включая Transact-SQL, Microsoft Visual Basic® .NET и Microsoft Visual C#® .NET. В дополнение, размещение CLR даёт разработчикам повешенную гибкость через использование пользовательских типов и функций. CLR также предоставляет возможности для использования кода сторонних производителей для быстрой разработки приложений.

С выпуском Microsoft SQL Server 2005 программисты баз данных могут воспользоваться всеми преимуществами библиотеки классов Microsoft .NET Framework и современных языков программирования для реализации функциональности в рамках сервера. Используя интеграцию с Общеязыковой Средой Выполнения (CLR), можно кодировать хранимые процедуры, функции и триггеры на любом языке.NET Framework. Языки Microsoft Visual Basic .NET и C# предлагают объектно-ориентированные конструкции, структурную обработку исключений, массивы, пространства имён и классы. В дополнение, в составе.NET Framework поставляются сотни классов и методов, обладающие обширными возможностями, которые можно использовать на стороне сервера. Многие задачи, которые было сложно выполнить на Transact-SQL могут быть лучше выполнены на управляемом коде. Также доступны два новых типа объектов базы данных - агрегаты и пользовательские типы. Теперь можно с большей пользой использовать свои знания и навыки при написании внутрипроцессного кода. Вкратце, SQL Server 2005 позволяет расширять сервер баз данных для более лёгкого выполнения соответствующих вычислений и операций на сервере.

Улучшенная модель программирования: языки программирования, совместимые с.NET Framework во многих отношениях богаче, чем Transact-SQL, имеют конструкции и возможности, ранее не доступные разработчикам SQL.

Улучшенная безопасность: управляемый код выполняется в среде CLR, размещённой в ядре базы данных. Это делает.NET Framework объекты базы более безопасными по сравнению с расширенными хранимыми процедурами, доступными в предыдущих версиях SQL Server.

Определяемые пользователем типы и агрегаты: два новых объекта базы данных, расширяющие возможности хранения и опроса SQL Server, становятся доступны благодаря размещению CLR.

Общая среда разработки: разработка проектов баз данных интегрирована в среду Microsoft Visual Studio 2005. Можно применять те же инструменты для разработки и отладки объектов базы, данных и сценариев, которые используются для создания компонентов и служб.NET Framework промежуточного и клиентского уровня.

Производительность и масштабируемость: благодаря компиляции управляемого кода в родной для процессора до выполнения можно достичь существенного увеличения производительности в некоторых случаях.

Используя такие языки, как Visual Basic .NET и C#, можно воспользоваться интеграцией с CLR для создания кода с более сложной логикой и более подходящего для вычислительных задач. В дополнение, Visual Basic .NET и C# предоставляют объектно-ориентированные возможности, такие как инкапсуляция, наследование и полиморфизм. Можно легко объединить родственный код в классы и пространства имён, что означает более простую организацию и сопровождение при работе с большим количеством кода. Возможность логически и физически разместить код в сборках и пространствах имён является огромным преимуществом.

Управляемый код эффективнее Transact-SQL при обработке числовых данных и управлении сложной логикой выполнения и имеет обширную поддержку работы со строковыми данными, регулярными выражениями и так далее. Благодаря функциональности библиотеки классов.NET Framework, существует полноценный доступ к тысячам предустановленных классов и методов, которые доступны из любой хранимой процедуры, триггера или пользовательской функции. Всё, начиная от улучшенных функций для работы со строковыми данными, математических функций, операций с датами, доступа к системным ресурсам, развитых алгоритмов шифрования, доступа к файлам, обработки изображений и работы с XML данными легко доступно из управляемых хранимых процедур, триггеров и агрегатов.

Одним из главных преимуществ управляемого кода является безопасность типов. До того, как управляемый код будет выполнен, CLR выполняет несколько проверок, известных как верификация для того, чтобы гарантировать безопасность выполняемого кода. Например, код проверяется на предмет того, что он не читает из области памяти, куда не писал.

Долгое время Transact-SQL был основой для всего программирования SQL Server. SQL Server 2005 предоставляет много новых языковых возможностей для разработки масштабируемых приложений баз данных. Эти улучшения затронули обработку ошибок, новые рекурсивные запросы, и поддержку новых функций механизма баз данных SQL Server. Улучшения Transact-SQL в SQL Server 2005 увеличивают возможности при написании запросов, позволяя повысить производительность кода и расширить управление обработкой ошибок. Постоянные усилия на улучшение Transact-SQL показывают твёрдую уверенность в его значимой роли в рамках SQL Server.

Пользовательские типы в SQL Server 2005 не являются объектно-реляционным механизмом расширения. Они служат для расширения системы скалярных типов базы данных. Скалярная система типов включает типы полей, которые поставляются с SQL Server (такие типы, как int , nvarchar , uniqueidentifier и так далее). При помощи пользовательских типов можно создавать новые типы полей, например. Это следует сделать в том случае, если ваш тип действительно является неделимым значением, которое можно представить в виде поля.

Пользовательские типы можно использовать, если требуется определить свой собственный скалярный тип. Примерами таких сценариев являются специальные типы даты/времени в различных календарях и типы данных для хранения денег. При помощи пользовательских типов можно создать один объект, который обладает поведением, присущим типу и инкапсулировать или скрыть низлежащие данные, хранящиеся в типе. Для доступа к этим данным будет использоваться программный интерфейс. Если есть возможность воспользоваться функциональностью.NET Framework (такой, как интернационализация или календарная функциональность), то это является ещё одной хорошей причиной для рассмотрения возможности реализации ваших

Объекты Управления SQL (SMO) представляют собой объектную модель управления SQL Server 2005. SMO предоставляет существенные проектные и архитектурные улучшения объектной модели управления SQL Server. Она проста в использовании и в то же время богата и основана на управляемом коде.NET Framework. SMO является главным средством для разработки приложений, управляющих базой данных, построенных на.NET Framework. SMO используется каждым диалогом SQL Server Management Studio и каждое действие по администрированию, доступное в SQL Server Management Studio, можно осуществить при помощи SMO.

Новая объектная модель SMO и интерфейсы прикладного программирования Microsoft Windows Management Instrumentation (WMI) заменяют SQL-DMO. Где это возможно, для простоты использования SMO содержит сходные с SQL-DMO объекты. SQL-DMO всё ещё можно использовать с SQL Server 2005, но SQL-DMO не будет обновляться для управления функциями, специфичными для SQL Server 2005.

Analysis Management Objects (AMO) позволяют клиентским приложениям получить доступ к широкому набору административных команд и возможностей, существующих в Analysis Services, при помощи объектной библиотеки, которая может предоставить проверку объектов вместо ручного создания сценариев DDL для команд Analysis Services и часто длинного содержимого объекта ObjectDefinition языка сценариев Analysis Services (ASSL). Использующие AMO приложения могут либо соединиться и работать непосредственно с объектами экземпляра Analysis Services, либо создать такие объекты без соединения и сохранить метаданные для последующего развёртывания.

Преимущества

Язык SQL является основой многих СУБД, т.к. отвечает за физическое структурирование и запись данных на диск, а также за чтение данных с диска, позволяет принимать SQL-запросы от других компонентов СУБД и пользовательских приложений. Таким образом, SQL – мощный инструмент, который обеспечивает пользователям, программам и вычислительным системам доступ к информации, содержащейся в реляционных базах данных.

Основные достоинства языка SQL заключаются в следующем:

− стандартность – как уже было сказано, использование языка SQL в программах стандартизировано международными организациями;

− независимость от конкретных СУБД – все распространенные СУБД используют SQL, т.к. реляционную базу данных можно перенести с одной СУБД на другую с минимальными доработками;

− возможность переноса с одной вычислительной системы на другую – СУБД может быть ориентирована на различные вычислительные системы, однако приложения, созданные с помощью SQL, допускают использование как для локальных БД, так и для крупных многопользовательских систем;

− реляционная основа языка – SQL является языком реляционных БД, поэтому он стал популярным тогда, когда получила широкое распространение реляционная модель представления данных. Табличная структура реляционной БД хорошо понятна, а потому язык SQL прост для изучения;

− возможность создания интерактивных запросов – SQL обеспечивает пользователям немедленный доступ к данным, при этом в интерактивном режиме можно получить результат запроса за очень короткое время без написания сложной программы;

− возможность программного доступа к БД – язык SQL легко использовать в приложениях, которым необходимо обращаться к базам данных. Одни и те же операторы SQL употребляются как для интерактивного, так и программного доступа, поэтому части программ, содержащие обращение к БД, можно вначале проверить в интерактивном режиме, а затем встраивать в программу;

− обеспечение различного представления данных – с помощью SQL можно представить такую структуру данных, что тот или иной пользователь будет видеть различные их представления. Кроме того, данные из разных частей БД могут быть скомбинированы и представлены в виде одной простой таблицы, а значит, представления пригодны для усиления защиты БД и ее настройки под конкретные требования отдельных пользователей;

− возможность динамического изменения и расширения структуры БД – язык SQL позволяет манипулировать структурой БД, тем самым обеспечивая гибкость с точки зрения приспособленности БД к изменяющимся требованиям предметной области;

− поддержка архитектуры клиент-сервер – SQL – одно из лучших средств для реализации приложений на платформе клиент-сервер. SQL служит связующим звеном между взаимодействующей с пользователем клиентской системой и серверной системой, управляющей БД, позволяя каждой из них сосредоточиться на выполнении своих функций.

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

Язык SQL – первый и пока единственный стандартный язык для работы с базами данных, который получил достаточно широкое распространение. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо с SQL-интерфейсом.

Недостатки

Несоответствие реляционной модели данных . Создатели реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем Манифестеони излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.

Сложность . Хотя SQL и задумывался как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста.

Отступления от стандартов. Несмотря на наличие международного стандарта ANSI SQL-92, многие компании, занимающиеся разработкой СУБД (например, Oracle, Sybase, Microsoft, MySQL AB), вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом, появляются специфичные для каждой конкретной СУБД диалекты языка SQL.

− Сложность работы с иерархическими структурами

IPTables — утилита, с помощью которой происходит управление межсетевым экраном в Linux. Это мощный и удобный инструмент для и нежелательных соединений. Весь процесс заключён в правилах iptables, которые можно редактировать и просматривать. Более подробная информация представлена в статье.

История создания

До IPTables в системе Linux использовался файрвол IPFW, позаимствованный из BSD. Затем, с версии ядра 2.4 Linux, она стала поставляться с межсетевым экраном Netfilter и утилитой IPTables для управления им. В методике её работы были сохранены все аспекты и немного расширены функционально.

Строение и устройство IPTables

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

Теперь немного о цепочках. Каждая из них содержит в себе несколько таблиц. Их имена могут повторяться, но это никак не влияет на работу, так как они не взаимосвязаны между собой.

Таблицы в свою очередь содержат несколько правил. По сути, правило — это некое условие, которому должен соответствовать проверяемый пакет. В зависимости от исхода, над пакетом выполняется определённое действие.

Таким образом, проходя все этапы сети, пакет последовательно посещает все цепочки и в каждой проверяется на соответствие условию определённого правила. Если таблица не сформирована пользователем, то выполняется действие по умолчанию, в основном, это ACCEPT, позволяющий продолжить движение дальше или же DROP, останавливающий пакет.

Предустановленные цепочки бывают следующих категорий:

  • PREROUTING . Первоначальная обработка всех приходящих пакетов.
  • INPUT . Сюда попадают те пакеты, которые направлены непосредственно в локальный компьютер.
  • FORWARD . Применяется для «транзитных пакетов», которые следуют таблице маршрутизации.
  • OUTPUT . Используется для исходящих пакетов.
  • POSTROUTING . Последний этап в прохождении исходящим пакетом всех цепочек.

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

Просмотр правил IPTables и управление ими

Как уже было сказано ранее, все цепочки содержат определённые условия для пакетов. Для просмотра правил IPTables и управления ими и используется утилита IPTables. Каждое отдельное правило представляет собой строку с набором условий для пакетов, а также действия над ними, в зависимости от исхода.

Формат команды выглядит таким образом: iptables [-t название обрабатываемой таблицы] вызываемая команда [критерии] [выполняемое действие].

Все, что заключено в может быть опущено. Если это параметр с указанием таблицы, то будет использоваться filter. Для применения какого-то определённого имени нужно добавить ключ -t. Вызываемая команда позволяет вызвать необходимое действие, например, добавить правило IPTables или удалить его. В «критериях» указываются параметры, по которым будет происходить отбор. И в «действии» применяется действие, которое нужно выполнить, если условие соблюдено.

Команды для создания и просмотра правил IPTables

  • Append (-A). При использовании команды указывается цепочка и таблица, в которые нужно добавить необходимое правило. Ценность команды в том, что делает она это в конце всего списка.
  • Delete (-D). Как можно понять из названия, производит удаление правила. В качестве параметров можно указать как полное наименование, так и присвоенные им номера.
  • Rename-chain (-E). Меняет название цепочки. В команде указывается старое, затем новое имя.
  • Flush (-F). Очистка абсолютно всех правил определённой таблицы.
  • Insert (-I). Данная команда вставляет в указанное номером место, нужное правило.
  • List (- L). Просмотр правил Iptables. Если не указана таблица, то будет использована filter по умолчанию.
  • Policy (-P). Используется политика по умолчанию для указанной цепочки.
  • Replace (-R). Меняет правило под указанным номером, на необходимое.
  • Delete-chain (-X). Эта команда производит удаление всех созданных цепочек. Останутся только предустановленные.
  • Zero (-Z). Сбросит счётчики переданных данных в указанной цепочке.

Немного о параметрах отбора пакетов

Их можно условно разделить на три разновидности:

  • Общие критерии . Их можно указывать для любых правил. Они не требуют подключения особых расширений и модулей, а также не зависят от того, какой протокол будет задействован.
  • Не общие критерии. Они становятся доступны при использовании общих критериев.
  • Явные. Для того, чтобы воспользоваться данным типом, нужно подключать специальные плагины для netfilter. К тому же в команде необходимо применить ключ -m.

Стоит немного рассказать о часто встречающихся параметрах, применяемых при анализе пакетов:

  • Protocol (-p). Указывает на протокол.
  • Source (-s). Данный параметр определяет IP адрес источника, с которого пришёл пакет. Его можно указать несколькими способами. Конкретный хост, адрес или же целую подсеть.
  • Destination (-d). Адрес назначения пакета. Также, как и предыдущий, может быть описан несколькими способами.
  • In-interface (-i). Указывает входящий интерфейс пакета. В основном используется для NAT или на системах с несколькими интерфейсами.
  • Out-interface (-o). Исходящий интерфейс.

Несколько примеров

Для того, чтобы выполнить просмотр правил IPTables nat? нужно воспользоваться командой - «iptables -L -t nat». Узнать общий статус файрвола - «iptables -L -n -v». К тому же данная команда позволяет посмотреть правила IPTables, имеющиеся во всей системе. Вставить правило в определённое место таблицы, например, между первой и второй строкой - «iptables -I INPUT 2 -s 202.54.1.2 -j DROP». Затем просмотреть, добавилось ли оно - «iptables -L INPUT -n --line-numbers».

Чтобы заблокировать определённый адрес, например, 12.12.12.12 - «iptables -A INPUT -s 12.12.12.12 -j DROP».

Справка по iptables - «man iptables». Если нужна информация по конкретной команде - «iptables -j DROP -h».

В заключение

Использовать команды IPTables нужно с осторожностью, так как неправильная настройка (по незнанию) может привести к сбоям в сети или полном выходе её из строя. Поэтому стоит подробно изучить мануалы и инструкции перед конфигурацией. В умелых же руках IPTables можно превратить в надёжного защитника сетевых соединений. Системные администраторы активно используют утилиту для создания подключений, изолированных от несанкционированного доступа.

Определение i ptables - утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) netfilter для ядер Linux версий 2.4, 2.6, 3.x, 4.x . Для использования утилиты iptables требуются привилегии суперпользователя (root).

Мы будем разбираться с iptables и без небольшого теоритического вступления не обойтись.

Что бы правильно составлять правила брандмауэра нужно понимать как вообще идут пакеты и что с ними происходит.

Порядок движения транзитных пакетов

Шаг Таблица Цепочка Примечание
1
2 mangle PREROUTING Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр..
3 nat PREROUTING Эта цепочка используется для трансляции сетевых адресов (). выполняется позднее, в другой цепочке.
4 Принятие решения о дальнейшей маршрутизации, т.е. в этой точке решается куда пойдет пакет — локальному приложению или на другой узел сети.
5 mangle FORWARD Далее пакет попадает в цепочку FORWARD таблицы mangle.
6 Filter FORWARD В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации.
7 mangle POSTROUTING Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации.
9 nat POSTROUTING Эта цепочка предназначена в первую очередь для Source Network Address Translation . Здесь же выполняется и маскарадинг (Masquerading ).
9 Выходной сетевой интерфейс (например, eth1).

Для локального приложения(входящие пакеты)

Шаг Таблица Цепочка Примечание
1 Входной сетевой интерфейс (например, eth0)
2 mangle PREROUTING Обычно используется для внесения изменений в заголовок пакета, например для установки битов TOS и пр.
3 nat PREROUTING Преобразование адресов (Destination Network Address Translation ).
4 Принятие решения о маршрутизации.
5 mangle INPUT Пакет попадает в цепочку INPUT таблицы mangle. Здесь вносятся изменения в заголовок пакета перед тем как он будет передан локальному приложению.
6 filter INPUT Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили.
7 Локальный процесс/приложение (т.е., программа-сервер или программа-клиент)

От локальных процессов(исходящие пакеты)

Шаг Таблица Цепочка Примечание
1 Локальный процесс (т.е., программа-сервер или программа-клиент).
2 Принятие решения о маршрутизации. Здесь решается куда пойдет пакет дальше — на какой адрес, через какой сетевой интерфейс и пр.
3 mangle OUTPUT Здесь производится внесение изменений в заголовок пакета. Выполнение фильтрации в этой цепочке может иметь негативные последствия.
4 nat OUTPUT Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра.
5 Filter OUTPUT Здесь фильтруется исходящий траффик.
6 mangle POSTROUTING Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра.
7 nat POSTROUTING Здесь выполняется Source Network Address Translation . Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP .
8 Сетевой интерфейс (например, eth0)

Как мы поняли есть основные три таблицы:

  • mangle Данная таблица предназначена для операций по классификации и маркировке пакетов и соединений, а также модификации заголовков пакетов (поля TTL и TOS).
  • filter — основная таблица для фильтрации пакетов, используется по умолчанию. Собственно в этой таблице и происходит фильтрация пакетов.
  • nat — обеспечивает работу nat, если вы хотите использовать компьютер в качестве маршрутизатора. Здесь задаются правила для маршрутизации.

Для таблицы nat применимы действия:

  • MASQUERADE

Действие DNAT (Destination Network Address Translation) производит преобразование адресов назначения в заголовках пакетов. Другими словами, этим действием производится перенаправление пакетов на другие адреса, отличные от указанных в заголовках пакетов.

SNAT (Source Network Address Translation) используется для изменения исходных адресов пакетов. С помощью этого действия разделить единственный внешний IP адрес между компьютерами локальной сети для выхода в Интернет. В этом случае брандмауэр, с помощью SNAT , автоматически производит прямое и обратное преобразование адресов, тем самым давая возможность выполнять подключение к серверам в Интернете с компьютеров в локальной сети.

Маскировка (MASQUERADE ) применяется в тех же целях, что и SNAT , но в отличие от последней, MASQUERADE дает более сильную нагрузку на систему. Происходит это потому, что каждый раз, когда требуется выполнение этого действия — производится запрос IP адреса для указанного в действии сетевого интерфейса, в то время как для SNAT IP адрес указывается непосредственно. Однако, благодаря такому отличию, MASQUERADE может работать в случаях с динамическим IP адресом, т.е. когда вы подключаетесь к Интернет, скажем через PPP , SLIP или DHCP .

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Выполнить MASQUERADE для всех пакетов идущих из сети 10.8.0.0 на интерфейс eth0 . Для понятности, допустим у нас две сетевые карточки и две сети. Нам надо что бы сеть 10.8.0.0/24 (первая сетевая карточка)могла выйти скажем в интернет через eth0(вторая сетевая карточка)

  • raw — Предназначена для выполнения действий с пакетами до их обработки системой.

Собственно таблица по умолчанию filter .

  • INPUT - обрабатывает трафик, поступающий непосредственно самому хосту.
  • FORWARD - позволяет фильтровать транзитный трафик.
  • OUTPUT - позволяет фильтровать трафик, исходящий от самого хоста.

Действие с пакетом.

  • ACCEPT - пропуск пакета. Пакет покидает текущую базовую цепочку и следует дальше.
  • REJECT - заблокировать пакет и сообщить его источнику об отказе.
  • DROP - заблокировать пакет, не сообщая источнику об отказе. Более предпочтительна при фильтрации трафика на интерфейсах, подключенных к интернету, так как понижает информативность сканирования портов хоста злоумышленниками.
  • LOG — сделать запись о пакете в лог файл.

Получается у нас цепочка [таблица — filter ] — [ трафик — INPUT ] — [действие — DROP ] логика действий только кажется сложной. Думаю мы с вами на примерах разберемся и станет все просто.

Команд iptables:

  • -A добавить правило в конец цепочки.
  • -D удалить правило.
  • -I вставить правило с нужным номером.
  • -L вывести все правила в текущей цепочке.
  • -S вывести все правила.
  • -F очистить все правила.
  • -N создать цепочку.
  • -X удалить цепочку.
  • -P установить действие по умолчанию.

Начнем разбираться на конкретных примерах.

iptables -A INPUT -p tcp —dport 80 -j ACCEPT

-A добавить новое правило, INPUT для входящих пакетов, -p протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
mh, — — dport порт назначения 80(опция только для протокола), -j выбрать действие, если правило подошло, ACCEPT разрешить. То есть разрешить входящий трафик по протоколу tcp на порт 80.

Перечисленные ключи также поддерживают конструкцию с использованием знака ! . Он инвертирует условие, например:

iptables -A INPUT -s ! 192.168.0.50 -j DROP

-s адрес источника - имя хоста(www.help.com), IP-адрес или подсеть в нотации CIDR(192.168.0.1/16) , ! инверсия, DROP запретить. Запретить весь входящий трафик, кроме источника 192.168.0.50 (если бы не было ! , то запретить только с 192.168.0.50 )

iptables -A INPUT -s 192.168.0.50 -j DROP

Запретить входящий трафик с ip — 192.168.0.50 .

Список критериев правил:

  • -p Протокол, протокол также можно указать с помощью номера или названия согласно перечислению, приведенному в /etc/protocols . Значение «любой протокол» можно указать с помощью слова all или числа 0 . Так же для протокола есть дополнительные параметры : —sport (—source-port) Позволяет указать исходящий порт (или их диапазон). —dport (—destination-port) Позволяет указать порт назначения (или их диапазон).
  • -s Определяет адрес отправителя . В качестве адреса может выступать IP-адрес (возможно с маской), доменное имя (в последних двух случаях перед добавлением правила в цепочку имя резольвится в IP-адрес).
  • -i Определяет входящий сетевой интерфейс. Если указанное имя интерфейса заканчивается знаком «+» (например, eth +), то критерию соответствуют все интерфейсы, чьи названия начинаются на указанное имя(etho,eth1).
  • -d Определяет адрес получателя . Синтаксис аналогичен -s .
  • -o Определяет исходящий сетевой интерфейс. Синтаксис аналогичен -i .

Так же критерия можно комбинировать.

iptables -A INPUT -i eth0 -s 192 .168.0.0 -j DROP

Запретить входящие пакеты с интерфейса eth0 и ip 192 .168.0.0 . А на интерфейс eth1 пакеты пройдут.

А что делать если вы за ранние не знаете какой порт открывать , например хотите что бы FTP сервер работал в пассивном режиме. Модуль conntrack о состоянии соединения поможет, а конкретней критерий - ctstate. Модуль подключается тэгом -m .

iptables -A INPUT -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m conntrack —ctstate NEW -p tcp —dport 21 -j ACCEPT # Разрешаем открывать соединения на 21 TCP-порт.

Возможные состояния:

  • NEW - соединение не открыто, то есть пакет является первым в соединении.
  • ESTABLISHED - пакет относится к уже установленному соединению. Обычно такие пакеты принимаются без дополнительной фильтрации, как и в случае с RELATED.
  • RELATED - пакет открывает новое соединение, логически связанное с уже установленными, например, открытие канала данных в пассивном режиме FTP. Соединение получает статус RELATED если оно связано с другим соединением, имеющим признак ESTABLISHED .
  • INVALID — Признак INVALID говорит о том, что пакет не может быть идентифицирован и поэтому не может иметь определенного статуса.

iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

State и деологический предшественник conntrack, имеет единственный параметр --state , аналогичный параметру --ctstate модуля conntrack (но, в отличие от него, не поддерживающий состояния DNAT и SNAT).

Кратко рассмотрим таблицу таксировщика, которую можно найти в файле /proc/net/ip_conntrack . Здесь содержится список всех активных соединений.

Tcp 6 300 ESTABLISHED src=128.*.*.* dst=194.*.*.* sport=52524 dport=2223 src=194.*.*.* dst=128.*.*.* sport=2223 dport=52524 mark=0 use=2

Первое как понятно это протокол, потом десятичное число(что значит не знаю),потом идет время жизни соединения. Далее состояние ESTABLISHED то есть соединение уже установлено, бывает еще UNREPLIED что значит что ответного трафика еще не было. Далее расположены адреса отправителя и получателя, порт отправителя и получателя. Далее все наоборот соответственно, ASSURED этот флаг сообщает о том, что соединение установлено уверенно и эта запись не будет стерта по достижении максимально возможного количества трассируемых соединений.

Некоторые особенности протоколов.

TCP соединение всегда устанавливается передачей трех пакетов, которые инициализируют и устанавливают соединение, через которое в дальнейшем будут передаваться данные. Сессия начинается с передачи SYN пакета, в ответ на который передается SYN/ACK пакет и подтверждает установление соединения пакет ACK .

Как только трассировщик увидел первый (SYN ) пакет, то присваивает ему статус NEW . Как только через трассировщика проходит второй пакет (SYN/ACK ), то соединению присваивается статус ESTABLISHED .

С протоколом UDP немного все по другому этот протокол не предусматривает установления и закрытия соединения, но самый большой недостаток — отсутствие информации об очередности поступления пакетов. Но с точки зрения трасировщика все так же как с TCP. Первому пришедшему пакету присваивает ему статус NEW. Как только вы отправляете ответный пакет присваивается статус ESTABLISHED. Единственное отличия что статут ASSURED присваиваться только когда обменялись уже несколькими пакетами.

Логирование применений правил.

iptables дает возможность вести логи отдельных пакетов и событий. Для этого применяется действие LOG .

iptables -A INPUT -p tcp —syn -j LOG —log-level info —log-prefix «INPUT packets «

—log-level Используется для задания уровня журналирования (log level). Полный список уровней вы найдете в руководстве (man) по syslog.conf. Обычно, можно задать следующие уровни: debug , info , notice , warning , warn , err , error , crit , alert , emerg и panic . Логи пишутся в файл syslog.

—log-prefix Ключ задает текст (префикс), которым будут предварять все сообщения iptables . Сообщения со специфичным префиксом затем легко можно найти, к примеру, с помощью grep . Префикс может содержать до 29 символов, включая и пробелы.

Jun 1 17:12:20 debian kernel: INPUT packets IN=eth0 OUT= MAC=02:1e:6d:00:e2:1c:00:01:e8:11:73:69:08:00 SRC=125.94.12.95 DST=194.87.239.104 LEN=40 TOS=0x00 PREC=0x00 TTL=52 ID=38690 PROTO=TCP SPT=12557 DPT=23 WINDOW=1460$ RES=0x00 SYN URGP=0

Популярные команды управления iptables.

iptables -L -n —line-numbers Посмотреть список правил.

-n номер портов и ip в цифровом варианте.

—line-numbers номер строки.

iptables -F Полностью сбросить правила.

iptables -P INPUT ACCEPT Правила по умолчанию для таблицы INPUT .
iptables -P OUTPUT ACCEPT Правила по умолчанию для таблицы OUTPUT.
iptables -P FORWARD DROP Правила по умолчанию для таблицы FORWARD.

iptables -D INPUT 1 Удаление правила по его номеру в цепочке.

iptables -D INPUT -s 123.45.67.89 -j DROP Удаление правила на основе того, что оно делает.

iptables -I INPUT … Вставка (insert) правила в начало цепочки.

iptables -I INPUT 3 … Или можно указать конкретную позицию.

REDIRECT

Действие REDIRECT предназначено для перенаправления пакетов с одного набора портов на другой внутри одной системы, не выходя за пределы хоста .
Работает REDIRECT только в цепочках PREROUTING и OUTPUT таблицы nat . Таким образом, область применения сводится только к перенаправлению. Чаще всего это используется для прозрачного прокси, когда клиент из локальной сети коннектится на 80 порт, а шлюз редиректит пакеты на локальный порт прокси:

iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-port 3128

Новые правила автоматически не сохраняются и после перезагрузки сервера не будут действовать. Поэтому после изменения iptables нам нужно сохранить изменения.

iptables — restore > /etc/iptables Загрузить правила из файла.

Способ сохранять и загружать правила на ваше усмотрение. Мы с вами познакомились только с основами теории iptables, возможности настройки конечно гораздо больше. Более подробно о которых расскажем в другой статье.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: