<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Аникин: заметки с тегом APF-Firewall</title>
<link>https://anikin.pw/tags/APF-Firewall/</link>
<description>Блог об администрировании Linux, BSD и не только</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Блог об администрировании Linux, BSD и не только</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Ошибка при запуске apf-firewall</title>
<guid isPermaLink="false">47</guid>
<link>https://anikin.pw/all/oshibka-pri-zapuske-apf-firewall/</link>
<pubDate>Fri, 30 Jan 2015 20:07:32 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/oshibka-pri-zapuske-apf-firewall/</comments>
<description>
&lt;p&gt;Если при запуске apf получаем ошибку:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apf(23061): {glob} activating firewall
libkmod: ERROR ../libkmod/libkmod-module.c:1567 kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory
Error: could not get list of modules: No such file or directory&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;или&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;то в файле /etc/apf-firewall/conf.apf надо изменить значение директивы с&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;SET_MONOKERN=&amp;quot;0&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;на&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;SET_MONOKERN=&amp;quot;1&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После этого apf-firewall должен запустится без ошибок.&lt;/p&gt;
</description>
</item>

<item>
<title>Установка и настройка apf-firewall + ddos-deflate.</title>
<guid isPermaLink="false">18</guid>
<link>https://anikin.pw/all/ustanovka-i-nastroyka-apf-firewall-ddos-deflate/</link>
<pubDate>Wed, 08 Jan 2014 19:57:40 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ustanovka-i-nastroyka-apf-firewall-ddos-deflate/</comments>
<description>
Как защитить linux сервер? Естественно с помощью iptables. Можно конечно написать скрипт с кучей правил iptables и добавить его в автозагрузку. Но мне больше нравятся готовые решения. В качестве фаервола мы будем использовать apf-firewall. Мне он нравится за простоту и за то что его можно быстро развернуть.
Apf-firewall - это очень удобная надстройка над iptables, которая на основе собственного простого и понятного конфига генерирует список правил и добавляет их в iptables, заменяя там уже прописанные. Работает в режиме демона. Так что если вы пользуетесь этим фаерволом, правила добавляйте только через него.
Так же в качестве небольшого бонуса к нашей защите мы установим скрипт ddos-deflate. Конечно от серьезных атак он не защитит, но всяких школьников-кулцхакеров :-) отпулит на раз.&lt;p&gt;

Установка apf на ubuntu/debian&lt;p&gt;

&lt;code&gt;# apt-get install apf-firewall -y&lt;/code&gt;&lt;p&gt;

По окончанию установки появится сообщение, что для запуска демона требуется изменить переменную RUN с no на yes в файле /etc/default/apf-firewall. Откройте файл с помощью nano, например.&lt;p&gt;

&lt;code&gt;# nano /etc/default/apf-firewall&lt;/code&gt;&lt;p&gt;

И измените значение переменной.&lt;p&gt;
Затем откройте конфигурационный файл apf.&lt;p&gt;

&lt;code&gt;# nano /etc/apf-firewall/conf.apf&lt;/code&gt;&lt;p&gt;

В этом файле нужно указать порты, которые вы хотите оставить открытыми.&lt;p&gt;
Правим следующие переменные:&lt;p&gt;
&lt;code&gt;IG_TCP_CPORTS="22,80"&lt;/code&gt; - в этой переменной через запятую в кавычках описываются входящие tcp порты.&lt;p&gt;
&lt;code&gt;EG_TCP_CPORTS="21,25,80"&lt;/code&gt; - в этой аналогично исходящие tcp порты.&lt;p&gt;

Тоже самое для udp:&lt;p&gt;
&lt;code&gt;IG_UDP_CPORTS="53"&lt;p&gt;
EG_UDP_CPORTS="20,21,53"&lt;/code&gt;&lt;p&gt;

Сохраняем файл и пробуем запустить фаервол:&lt;p&gt;

&lt;code&gt;# apf -s&lt;/code&gt;&lt;p&gt;

Вполне вероятно что при запуске вы получите ошибку о неизвестном ядре и фаервол не запустится. Ничего страшного, выполните действия из &lt;a href="http://anikin.pw/kak-zastavit-rabotat-apf-firewall-na-yadre-versii-3-x.html" target="_blank"&gt;этой статьи&lt;/a&gt; и попробуйте ещё раз. Всё должно запустится.&lt;p&gt;
Также иногда можно получить ошибку которая описана в &lt;a href="http://anikin.pw/all/oshibka-pri-zapuske-apf-firewall/" target="_blank"&gt;этой статье&lt;/a&gt;.&lt;p&gt;
Возможно, если вы что-то не так сделали, то после запуска фаервола вы заблокируете себе доступ к серверу. Не пугайтесь, apf автоматически отключится через 5 минут и вы сможете исправить нужные настройки в конфиге.&lt;p&gt;
Если всё в порядке, фаервол работает нормально и доступ к серверу вы не потеряли то измените значение переменной DEVEL_MODE на 0 в конфиге /etc/apf-firewall/conf.apf. По умолчанию у неё значение 1, это режим когда apf запускается для проверки и отключается через 5 минут.&lt;p&gt;
Всё, apf установлен.&lt;p&gt;
Так же в каталоге /etc/apf-firewall есть множество конфигурационных файлов для более тонкой настройки фаервола. Внутри почти всех файлов есть комментарий для чего данный конфиг и описан синтаксис. Можно например открыть доступ к определённому порту только с определённого ip или добавить обычное правило iptables. В общем apf очень гибок в настройке и понятен в использовании.&lt;p&gt;

Теперь установим ddos-deflate. Это скрипт который раз в минуту проверяет количество подключений к серверу с каждого ip. И если какой то ip превышает количество разрешённых подключений, то скрипт его банит на определённое время.&lt;p&gt;

Установка скрипта довольно простая:&lt;p&gt;

&lt;code&gt;# wget http://www.inetbase.com/scripts/ddos/install.sh&lt;p&gt;
# chmod 0700 install.sh&lt;p&gt;
# ./install.sh&lt;/code&gt;&lt;p&gt;

После выполнения этих команд файлы скрипта установятся в /usr/local/ddos/. В debian/ubuntu требуется изменить интерпретатор скрипта /usr/local/ddos/ddos.sh с:&lt;p&gt;
&lt;code&gt;#!/bin/sh&lt;/code&gt;&lt;p&gt;
на&lt;p&gt;
&lt;code&gt;#!/bin/bash&lt;/code&gt;&lt;p&gt;
Иначе работать не будет. В тексте скрипта также есть "/bin/sh", тоже нужно изменить.&lt;p&gt;
Подправим конфиг скрипта:&lt;p&gt;

&lt;code&gt;# nano /usr/local/ddos/ddos.conf&lt;/code&gt;&lt;p&gt;

Исправим несколько переменных:&lt;p&gt;
NO_OF_CONNECTIONS=100 - количество подключений с одного ip, при превышении этого значения - бан&lt;p&gt;
APF_BAN=1 - банить с помощью apf&lt;p&gt;
BAN_PERIOD=600 - время бана&lt;p&gt;

Сохраняем и закрываем конфиг.&lt;p&gt;
Теперь нужно добавить скрипт в крон. Выполняем&lt;p&gt;

&lt;code&gt;# crontab -e&lt;/code&gt;&lt;p&gt;

И в конец добавляем&lt;p&gt;

&lt;code&gt;*/1 * * * * nice -n -5 /usr/local/ddos/ddos.sh &gt; /dev/null 2&gt;&amp;1&lt;/code&gt;&lt;p&gt;

Сохраняем и выходим.&lt;p&gt;
Всё скрипт будет выполнятся раз в минуту и банить хулиганов.)&lt;p&gt;

P.S. чтобы скрипт ddos-deflate нормально работал возможно понадобится изменить в конфиге путь до бинарника apf. По умолчанию он указан как /etc/apf/apf. Это не верно. Чтобы узнать где у вас находится бинарник выполните:&lt;p&gt;
&lt;code&gt;# whereis apf&lt;/code&gt;&lt;p&gt;
И измените директиву APF в конфиге скрипта.&lt;p&gt;</description>
</item>

<item>
<title>Как заставить работать apf-firewall на ядре версии 3.x</title>
<guid isPermaLink="false">11</guid>
<link>https://anikin.pw/all/kak-zastavit-rabotat-apf-firewall-na-yadre-versii-3-x/</link>
<pubDate>Sun, 20 Oct 2013 20:23:38 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/kak-zastavit-rabotat-apf-firewall-na-yadre-versii-3-x/</comments>
<description>
Установил apf-firewall на один из серверов, столкнулся с проблемой. При запуске фаервола получил ошибку:&lt;p&gt;

Kernel version not equal to 2.4.x or 2.6.x, aborting.&lt;p&gt;

Фаервол не запустился и правила в iptables не добавились. Путём долгого гуления выяснилось что в коде скрипта стоит проверка версии ядра и на ядрах отличных от 2.4.х и 2.6.х apf отказывается работать. Обойти данное досадное недоразумение, как оказалось, достаточно просто. В файле /etc/apf-firewall/internals/functions.apf находим строку 68 и приводим условие к такому виду:&lt;p&gt;

&lt;code&gt;elif [ "$KREL" == "3.2" ]; then&lt;p&gt;
MEXT="ko"&lt;/code&gt;&lt;p&gt;

Где 3.2 ваша версия ядра. Версию ядра можно узнать выполнив:&lt;p&gt;

&lt;code&gt;# uname -a&lt;/code&gt;&lt;p&gt;

После этих изменений apf запустился без проблем и правила добавились в iptables. Нормальная работа apf проверена на версии ядра 3.2.х и по информации в интернете 3.0.х. Решение вроде простое, но найти эту информацию оказалось довольно трудно. Поэтому сделал эту запись, возможно кому-то поможет.</description>
</item>


</channel>
</rss>