пятница, 27 июня 2014 г.

SQL. Select - выборка значений

Практика:
Когда набор содержит значения номеров а не символов, одиночные кавычки опускаются. Давайте найдем все значения относящихся к пакету имеющих значения snum = 1001, 1007, и 1004. Вывод для следующего запроса:     
    Select * From sm_pckg_servcie_map Where package_id In ( 522, 520 );

Теория: 


SQL. Order by - сортировка данных

Практика:
1) Запрос, выполняющий сортировку может выглядеть примерно следующим образом.
   
SELECT * FROM articles ORDER BY a_title ASC, a_date DESC
В этом случае записи из таблицы articles будут отсортированы в возрастающем порядке по полю a_title, а для записей у которых совпадают значения в поле a_title – по полю a_date в убывающем порядке.

Сортировка текста с учетом регистра:
  SELECT * FROM articles ORDER BY BINARY a_title 
     BINARY - включает режим учета регистра;


Сортировка по фрагменту строки:
  SELECT SUBSTRING_INDEX(a_title, ' ', -1) AS at FROM wp_5_posts ORDER BY at

Сортировка записей по заданному списку значений:
  SELECT * FROM articles ORDER BY FIELD(a_season, "весна","лето","осень","зима")

Сортировка строк по их длине:
  
SELECT * FROM articles ORDER BY CHAR_LENGTH(a_title)


Теория:





четверг, 26 июня 2014 г.

Маршрутизация в linux. Forward, default, stateful firewall

 Теория:  
  Форвардинг пакетов.
     NAT-правила не обеспечивают форвардинг трафика между интерфейсами, они непосредственно имеют дело с перезаписыванием адресов отправителя/получателя и портов. Для продвижения трафика используется цепочка FORWARD таблицы filter:
# iptables -A FORWARD -i <входящий интерфейс> -о <исходящий интерфейс> -j ACCEPT
     Форвардинг - это прямое перенаправление пакетов с одно­го интерфейса на другой. Поскольку по умолчанию используется таблица filter, ее не нужно указывать с помощью опции -t.
     На практике используется форвардинг не всех пакетов, а только определенных, к примеру пакетов с определенным номером порта (в частности, 80 и 443 для Web-сервера):
# iptables -A FORWARD -i <входящий интерфейс> -о <DMZ-интерфейс> -d <IP Web-сервера> --dport 80,443 -j ACCEPT
     C помощью опции -р можно указать протокол, например -р tcp.
     Политики по умолчанию.
     Для каждой таблицы нужно определить политику по умолчанию, то есть действие, которое будет выполнено над пакетом, если он не совпал ни с од­ним правилом.      Здесь возможны два варианта:
  • По умолчанию можно принимать все пакеты, а позже создать пра­вила, блокирующие нежелательные пакеты.
  • По умолчанию отбрасывать все пакеты и создать правила, разреша­ющие определенные пакеты.
     В первом случае работы будет меньше, но с точки зрения безопасности такой способ никуда не годится.      Второй метод является наиболее безопасным, следовательно, нужно использовать его, несмотря на сложность во­площения данного метода.      Stateful firewall.
     Термин "stateful firewall" в применении к IPTables применяется довольно часто. Что это означает и что он дает? Обычно фильтрацию рассматривают на базе пакетов: идет сравнение ад­ресов отправителя/получателя и портов, и, в зависимости от результата сравнения, выполняются определенные действия.
     Модуль состояний (state) дает дополнительные возможности по фильтрации пакетов. Кроме адресов отправителя/получателя и портов, можно отслеживать контекст пакета: можно определить, какой это пакет, новый или ответ на уже посланный. Модуль состояний смотрит каждое соедине­ние и определяет его состояние. Соединение бывает в одном из четырех состояний:
  • NEW (новое) - попытка нового соединения. До этого не было пакетов, относящихся к этому соединению.
  • ESTABLISHED (установленное) - соединение установлено, отмечается поток пакетов в обоих направлениях.
  • RELATED (связано) - пакет связан с уже установленным со­единением. Наиболее типичным примером является ICMP-coобщение, которое было создано в ходе соединения, но не явля­ется его частью.
  • INVALID (недопустимый): пакет не идентифицирован. Как правило, эти пакеты отбрасываются.
     Отслеживание соединений отлично работает с TCP, так как он ориентирован на соединение протоколом. С UDP-дейтаграммами, которые отправляются без установки соединения, модуль состояний, если разобраться, отклоняется от определения соединения, представляя его как простую последовательность пакетов.      Следовательно, ICMP-сообщение «эхо ответ» относится к ICMP-сообщению «эхо запрос» и рассматривается как часть «соединения», такое соединение будет помечено как установленное. Эти соединения называют «псевдосоединениями».      Модуль state включается с помощью опции -m state, затем будет доступна опция -state, дающая возможность определять состояния соединений:
# iptables -A FORWARD -i <внешний интерфейс> -о <внутренний интерфейс> -d <IP Web-сервера> --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
     Состояние NEW описывает SYN-пакеты, но любой пакет может быть расценен как новый, если он не является частью установленного соединения. Это нежелательное поведение фильтра пакетов нужно обязательно пресекать:
# iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
     Для отслеживания каждого соединения нужно 350 байтов оперативной памяти - в один мегабайт оперативной памяти «поместится» едва меньше 3000 соединений.
     Чтобы модуль состояний не использовал всю оперативную память, на загруженных брандмауэрах вводят ограничение на количество соединений. Текущее максимальное количество соединений указано в файле
/proc /sys/net/ipv4/ip_conntrack_max:
$ cat /proc/sys/net/ipv4/ip_conntrack_max
32712
     Когда максимальное число соединений будет превышено, в протоколе syslog появится сообщение в формате:
ip_conntrack: maximum limit of XXXX entries exceeded.
     На современных компьютерах, где оперативной памяти стоит обычно больше 1 Гб, эта проблема не так критична, как раньше.
     Вспомогательные модули.
     Пакет Netfilter содержит вспомогательные модули, позволяющие решить некоторые проблемы: например, ip_conntrack_ftp (для отслеживания соединений) и ip_nat_ftp (для NAT). Загрузить модули можно с помощью команды modprobe:
# /sbin/modprobe ip_conntrack_ftp
# /sbin/modprobe ip_nat_ftp
     После загрузки этих модулей FTP-данные будут помечены как RELATED, позволяя использовать состояния в правилах IPTables для ftp-данных.

http://webacademyexpert.blogspot.com/2014/06/linux-iptables.html

Маршрутизация в linux. Iptables

Практика:
iptables --list
\\ просмотр всей таблицы маршрутизации

iptables -A INPUT -s 85.25.71.227 -j REJECT
\\ добавить по ключу А (append) в хвост таблицы правило о Входящих пакетах. Цель правила указывают с помощью -j.
  
    Наиболее часто используемыми действиями являются:
  • ACCEPT - если пакет совпадает с правилом, он будет принят.
  • REJECT - отклонить пакет и отправить ICMP-сообщение об ошиб­ке назад отправителю.
  • DROP - отбросить пакет и ничего не посылать в ответ.
  • LOG - протоколировать детали пакета, если пакет совпадает с правилом. Данное действие является пассивным - нужно оп­ределить еще одно действие ACCEPT/DROP, если нужно, чтобы пакет был принят/отброшен.
iptables --flush OUTPUT
\\ сброс настроек таблицы маршрутизации сессии на Выходе;

service iptables save
\\ команда для сохранения правил. Ибо после перезагрузки правила обнулятся.
 
Теория:
1. Основы;
2. Таблицы (table);
3. Команды (command);

Основы
Как уже говорилось выше, каждое правило — это строка, содержащая в себе критерии определяющие, подпадает ли пакет под заданное правило, и действие, которое необходимо выполнить в случае выполнения критерия. В общем виде правила записываются примерно так:
iptables [-t table] command [match] [target/jump]
Нигде не утверждается, что описание действия (target/jump) должно стоять последним в строке, мы, однако, будем придерживаться именно такой нотации для удобочитаемости.
Если в правило не включается спецификатор [-t table], то по умолчанию предполагается использование таблицы filter, если же предполагается использование другой таблицы, то это требуется указать явно. Спецификатор таблицы так же можно указывать в любом месте строки правила, однако более или менее стандартом считается указание таблицы в начале правила.
Далее, непосредственно за именем таблицы, должна стоять команда. Если спецификатора таблицы нет, то команда всегда должна стоять первой. Команда определяет действие iptables, например: вставить правило, или добавить правило в конец цепочки, или удалить правило и т.п.
Раздел matches задает критерии проверки, по которым определяется подпадает ли пакет под действие этого правила или нет. Здесь мы можем указать самые разные критерии — и IP-адрес источника пакета или сети, и сетевой интерфейс и т.д. Существует множество критериев, которые мы рассмотрим в данной главе.
И наконец target указывает, какое действие должно быть выполнено при условии выполнения критериев в правиле. Здесь можно заставить ядро передать пакет в другую цепочку правил, "сбросить" пакет и забыть про него, выдать на источник сообщение об ошибке и т.п.

Таблицы
Опция -t указывает на используемую таблицу. По умолчанию используется таблица filter. С ключом -t применяются следующие опции.
nat       Таблица nat используется главным образом для преобразования сетевых адресов (Network Address Translation). Через эту таблицу проходит только первый пакет из потока. Преобразования адресов автоматически применяется ко всем последующим пакетам. Это один из факторов, исходя из которых мы не должны осуществлять какую-либо фильтрацию в этой таблице. Цепочка PREROUTING используется для внесения изменений в пакеты на входе в брандмауэр. Цепочка OUTPUT используется для преобразования пакетов, созданных приложениями внутри брандмауэра, перед принятием решения о маршрутизации. Обратите внимание на то, что в настоящее время эта цепочка не работает. И последняя цепочка в этой таблице — POSTROUTING, которая используется для преобразования пакетов перед выдачей их во вне.
mangle            Эта таблица используется для внесения изменений в заголовки пакетов. Примером может служить изменение поля TTL, TOS или MARK. Важно: в действительности поле MARK не изменяется, но в памяти ядра заводится структура, которая сопровождает данный пакет все время его прохождения через машину, так что другие правила и приложения на данной машине (и только на данной машине) могут использовать это поле в своих целях. Таблица имеет две цепочки PREROUTING и OUTPUT. PREROUTING используется для внесения изменений на входе в брандмауэр перед принятием решения о маршрутизации. OUTPUT — для внесения изменений в пакеты, поступающие от приложений внутри брандмауэра. Заметьте, что таблица mangle ни в коем случае не должна использоваться для преобразования сетевых адресов или маскарадинга (Network Address Translation, Masquerading), поскольку для этих целей имеется таблица nat.
filter    Таблица filter используется главным образом для фильтрации пакетов. Для примера, здесь мы можем выполнить DROP, LOG, ACCEPT или REJECT без каких либо сложностей, как в других таблицах. Имеется три встроенных цепочки. Первая — FORWARD, используемая для фильтрации пакетов, идущих транзитом через брандмауэр. Цепочку INPUT проходят пакеты, которые предназначены локальным приложениям (брандмауэру). И цепочка OUTPUT — используется для фильтрации исходящих пакетов, сгенерированных приложениями на самом брандмауэре.
Выше мы рассмотрели основные отличия трех имеющихся таблиц. Каждая из них должна использоваться только в своих целях, и вы должны это понимать. Нецелевое использование таблиц может привести к ослаблению защиты брандмауэра и сети, находящейся за ним. Позднее, в главе Порядок прохождения таблиц и цепочек, мы подробнее остановимся на этом.

Команды
Ниже приводится список команд и правила их использования. Посредством команд мы сообщаем iptables что мы предполагаем сделать. Обычно предполагается одно из двух действий — это добавление нового правила в цепочку или удаление существующего правила из той или иной таблицы. Далее приведены команды, которые используются в iptables.
Пример
Пояснения
-A, —append
iptables -A INPUT ...
Добавляет новое правило в конец заданной цепочки.
-D, —delete
iptables -D INPUT —dport 80 -j DROP, iptables -D INPUT 1
Удаление правила из цепочки. Команда имеет два формата записи, первый — когда задается критерий сравнения с опцией -D (см. первый пример), второй — порядковый номер правила. Если задается критерий сравнения, то удаляется правило, которое имеет в себе этот критерий, если задается номер правила, то будет удалено правило с заданным номером. Счет правил в цепочках начинается с 1.
-R, —replace
iptables -R INPUT 1 -s 192.168.0.1 -j DROP
Данная команда заменяет одно правило другим. В основном она используется во время отладки новых правил.
-I, —insert
iptables -I INPUT 1 —dport 80 -j ACCEPT
Вставляет новое правило в цепочку. Число, следующее за именем цепочки указывает номер правила, перед которым нужно вставить новое правило, другими словами число задает номер для вставляемого правила. В примере выше, указывается, что данное правило должно быть 1-м в цепочке INPUT.
-L, —list
iptables -L INPUT
Вывод списка правил в заданной цепочке, в данном примере предполагается вывод правил из цепочки INPUT. Если имя цепочки не указывается, то выводится список правил для всех цепочек. Формат вывода зависит от наличия дополнительных ключей в команде, например -n, -v, и пр.
-F, —flush
iptables -F INPUT
Сброс (удаление) всех правил из заданной цепочки (таблицы). Если имя цепочки и таблицы не указывается, то удаляются все правила, во всех цепочках.
-Z, —zero
iptables -Z INPUT
Обнуление всех счетчиков в заданной цепочке. Если имя цепочки не указывается, то подразумеваются все цепочки. При использовании ключа -v совместно с командой -L, на вывод будут поданы и состояния счетчиков пакетов, попавших под действие каждого правила. Допускается совместное использование команд -L и -Z. В этом случае будет выдан сначала список правил со счетчиками, а затем произойдет обнуление счетчиков.
-N, —new-chain
iptables -N allowed
Создается новая цепочка с заданным именем в заданной таблице В выше приведенном примере создается новая цепочка с именем allowed. Имя цепочки должно быть уникальным и не должно совпадать с зарезервированными именами цепочек и действий (DROP, REJECT и т.п.)
-X, —delete-chain
iptables -X allowed
Удаление заданной цепочки из заданной таблицы. Удаляемая цепочка не должна иметь правил и не должно быть ссылок из других цепочек на удаляемую цепочку. Если имя цепочки не указано, то будут удалены все цепочки, определенные командой -N в заданной таблице.
-P, —policy
iptables -P INPUT DROP
Определяет политику по умолчанию для заданной цепочки. Политика по умолчанию определяет действие, применяемое к пакетам не попавшим под действие ни одного из правил в цепочке. В качестве политики по умолчанию допускается использовать DROP, ACCEPT и REJECT.
-E, —rename-chain
iptables -E allowed disallowed
Команда -E выполняет переименование пользовательской цепочки. В примере цепочка allowed будет переименована в цепочку disallowed. Эти переименования не изменяют порядок работы, а носят только косметический характер.
Команда должна быть указана всегда. Список доступных команд можно просмотреть с помощью команды iptables -h или, что тоже самое, iptables —help. Некоторые команды могут использоваться совместно с дополнительными ключами. Ниже приводится список дополнительных ключей и описывается результат их действия. При этом заметьте, что здесь не приводится дополнительных ключей, которые используются при построении критериев (matches) или действий (targets). Эти опции мы будем обсуждать далее.
Команды, с которыми используется
Описание
-v, —verbose
—list, —append, —insert, —delete, —replace
Данный ключ используется для повышения информативности вывода и, как правило, используется совместно с командой —list. В случае использования с командой —list, в вывод этой команды включаются так же имя интерфейса, счетчики пакетов и байт для каждого правила. Формат вывода счетчиков предполагает вывод кроме цифр числа еще и символьные множители K (x1000), M (x1,000,000) и G (x1,000,000,000). Для того, чтобы заставить команду —list выводить полное число (без употребления множителей) требуется применять ключ -x, который описан ниже. Если ключ -v, —verbose используется с командами —append, —insert, —delete или —replace, то то на вывод будет выдан подробный отчет о произведенной операции.
-x, —exact
—list
Для всех чисел в выходных данных выводятся их точные значения без округления и без применения множителей K, M, G. Важно то, что данный ключ используется только с командой —list и не применяется с другими командами.
-n, —numeric
—list
Заставляет iptables выводить IP-адреса и номера портов в числовом виде предотвращая попытки преобразовать их в символические имена. Данный ключ используется только с командой —list.
—line-numbers
—list
Ключ —line-numbers включает режим вывода номеров строк при отображении списка правил командой —list. Номер строки соответствует позиции правила в цепочке. Этот ключ используется только с командой —list.
-c, —set-counters
—insert, —append, —replace
Этот ключ используется при создании нового правила для установки счетчиков пакетов и байт в заданное значение. Например, ключ —set-counters 20 4000установит счетчик пакетов = 20, а счетчик байт = 4000.
—modprobe
All
Ключ —modprobe определяет команду загрузки модуля ядра. Данный ключ используется в случае, если ваша команда modprobe находится вне пути поиска (searchpath). Этот ключ может использоваться с любой командой.

Маршрутизация в linux. Forward, default, stateful firewall

SEO: Эксперимент: как Яндекс и Google учитывают ключевые слова в URL

Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Дата пу...