{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Аникин: заметки с тегом APF-Firewall",
    "_rss_description": "Блог об администрировании Linux, BSD и не только",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/anikin.pw\/tags\/APF-Firewall\/",
    "feed_url": "https:\/\/anikin.pw\/tags\/APF-Firewall\/json\/",
    "icon": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884",
    "authors": [
        {
            "name": "Петр Аникин",
            "url": "https:\/\/anikin.pw\/",
            "avatar": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884"
        }
    ],
    "items": [
        {
            "id": "47",
            "url": "https:\/\/anikin.pw\/all\/oshibka-pri-zapuske-apf-firewall\/",
            "title": "Ошибка при запуске apf-firewall",
            "content_html": "<p>Если при запуске apf получаем ошибку:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">apf(23061): {glob} activating firewall\nlibkmod: ERROR ..\/libkmod\/libkmod-module.c:1567 kmod_module_new_from_loaded: could not open \/proc\/modules: No such file or directory\nError: could not get list of modules: No such file or directory<\/code><\/pre><p>или<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">kmod_module_new_from_loaded: could not open \/proc\/modules: No such file or directory<\/code><\/pre><p>то в файле \/etc\/apf-firewall\/conf.apf надо изменить значение директивы с<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">SET_MONOKERN=&quot;0&quot;<\/code><\/pre><p>на<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">SET_MONOKERN=&quot;1&quot;<\/code><\/pre><p>После этого apf-firewall должен запустится без ошибок.<\/p>\n",
            "date_published": "2015-01-30T20:07:32+03:00",
            "date_modified": "2015-01-30T20:07:28+03:00",
            "tags": [
                "Advanced Policy Firewall",
                "APF",
                "APF-Firewall",
                "debian",
                "ubuntu"
            ],
            "_date_published_rfc2822": "Fri, 30 Jan 2015 20:07:32 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "47",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "18",
            "url": "https:\/\/anikin.pw\/all\/ustanovka-i-nastroyka-apf-firewall-ddos-deflate\/",
            "title": "Установка и настройка apf-firewall + ddos-deflate.",
            "content_html": "Как защитить linux сервер? Естественно с помощью iptables. Можно конечно написать скрипт с кучей правил iptables и добавить его в автозагрузку. Но мне больше нравятся готовые решения. В качестве фаервола мы будем использовать apf-firewall. Мне он нравится за простоту и за то что его можно быстро развернуть.\r\nApf-firewall - это очень удобная надстройка над iptables, которая на основе собственного простого и понятного конфига генерирует список правил и добавляет их в iptables, заменяя там уже прописанные. Работает в режиме демона. Так что если вы пользуетесь этим фаерволом, правила добавляйте только через него.\r\nТак же в качестве небольшого бонуса к нашей защите мы установим скрипт ddos-deflate. Конечно от серьезных атак он не защитит, но всяких школьников-кулцхакеров :-) отпулит на раз.<p>\r\n\r\nУстановка apf на ubuntu\/debian<p>\r\n\r\n<code># apt-get install apf-firewall -y<\/code><p>\r\n\r\nПо окончанию установки появится сообщение, что для запуска демона требуется изменить переменную RUN с no на yes в файле \/etc\/default\/apf-firewall. Откройте файл с помощью nano, например.<p>\r\n\r\n<code># nano \/etc\/default\/apf-firewall<\/code><p>\r\n\r\nИ измените значение переменной.<p>\r\nЗатем откройте конфигурационный файл apf.<p>\r\n\r\n<code># nano \/etc\/apf-firewall\/conf.apf<\/code><p>\r\n\r\nВ этом файле нужно указать порты, которые вы хотите оставить открытыми.<p>\r\nПравим следующие переменные:<p>\r\n<code>IG_TCP_CPORTS=\"22,80\"<\/code> - в этой переменной через запятую в кавычках описываются входящие tcp порты.<p>\r\n<code>EG_TCP_CPORTS=\"21,25,80\"<\/code> - в этой аналогично исходящие tcp порты.<p>\r\n\r\nТоже самое для udp:<p>\r\n<code>IG_UDP_CPORTS=\"53\"<p>\r\nEG_UDP_CPORTS=\"20,21,53\"<\/code><p>\r\n\r\nСохраняем файл и пробуем запустить фаервол:<p>\r\n\r\n<code># apf -s<\/code><p>\r\n\r\nВполне вероятно что при запуске вы получите ошибку о неизвестном ядре и фаервол не запустится. Ничего страшного, выполните действия из <a href=\"http:\/\/anikin.pw\/kak-zastavit-rabotat-apf-firewall-na-yadre-versii-3-x.html\" target=\"_blank\">этой статьи<\/a> и попробуйте ещё раз. Всё должно запустится.<p>\r\nТакже иногда можно получить ошибку которая описана в <a href=\"http:\/\/anikin.pw\/all\/oshibka-pri-zapuske-apf-firewall\/\" target=\"_blank\">этой статье<\/a>.<p>\r\nВозможно, если вы что-то не так сделали, то после запуска фаервола вы заблокируете себе доступ к серверу. Не пугайтесь, apf автоматически отключится через 5 минут и вы сможете исправить нужные настройки в конфиге.<p>\r\nЕсли всё в порядке, фаервол работает нормально и доступ к серверу вы не потеряли то измените значение переменной DEVEL_MODE на 0 в конфиге \/etc\/apf-firewall\/conf.apf. По умолчанию у неё значение 1, это режим когда apf запускается для проверки и отключается через 5 минут.<p>\r\nВсё, apf установлен.<p>\r\nТак же в каталоге \/etc\/apf-firewall есть множество конфигурационных файлов для более тонкой настройки фаервола. Внутри почти всех файлов есть комментарий для чего данный конфиг и описан синтаксис. Можно например открыть доступ к определённому порту только с определённого ip или добавить обычное правило iptables. В общем apf очень гибок в настройке и понятен в использовании.<p>\r\n\r\nТеперь установим ddos-deflate. Это скрипт который раз в минуту проверяет количество подключений к серверу с каждого ip. И если какой то ip превышает количество разрешённых подключений, то скрипт его банит на определённое время.<p>\r\n\r\nУстановка скрипта довольно простая:<p>\r\n\r\n<code># wget http:\/\/www.inetbase.com\/scripts\/ddos\/install.sh<p>\r\n# chmod 0700 install.sh<p>\r\n# .\/install.sh<\/code><p>\r\n\r\nПосле выполнения этих команд файлы скрипта установятся в \/usr\/local\/ddos\/. В debian\/ubuntu требуется изменить интерпретатор скрипта \/usr\/local\/ddos\/ddos.sh с:<p>\r\n<code>#!\/bin\/sh<\/code><p>\r\nна<p>\r\n<code>#!\/bin\/bash<\/code><p>\r\nИначе работать не будет. В тексте скрипта также есть \"\/bin\/sh\", тоже нужно изменить.<p>\r\nПодправим конфиг скрипта:<p>\r\n\r\n<code># nano \/usr\/local\/ddos\/ddos.conf<\/code><p>\r\n\r\nИсправим несколько переменных:<p>\r\nNO_OF_CONNECTIONS=100 - количество подключений с одного ip, при превышении этого значения - бан<p>\r\nAPF_BAN=1 - банить с помощью apf<p>\r\nBAN_PERIOD=600 - время бана<p>\r\n\r\nСохраняем и закрываем конфиг.<p>\r\nТеперь нужно добавить скрипт в крон. Выполняем<p>\r\n\r\n<code># crontab -e<\/code><p>\r\n\r\nИ в конец добавляем<p>\r\n\r\n<code>*\/1 * * * * nice -n -5 \/usr\/local\/ddos\/ddos.sh > \/dev\/null 2>&1<\/code><p>\r\n\r\nСохраняем и выходим.<p>\r\nВсё скрипт будет выполнятся раз в минуту и банить хулиганов.)<p>\r\n\r\nP.S. чтобы скрипт ddos-deflate нормально работал возможно понадобится изменить в конфиге путь до бинарника apf. По умолчанию он указан как \/etc\/apf\/apf. Это не верно. Чтобы узнать где у вас находится бинарник выполните:<p>\r\n<code># whereis apf<\/code><p>\r\nИ измените директиву APF в конфиге скрипта.<p>",
            "date_published": "2014-01-08T19:57:40+03:00",
            "date_modified": "2015-01-30T20:09:52+03:00",
            "tags": [
                "Advanced Policy Firewall",
                "APF",
                "APF-Firewall",
                "ddos-deflate"
            ],
            "_date_published_rfc2822": "Wed, 08 Jan 2014 19:57:40 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "18",
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "11",
            "url": "https:\/\/anikin.pw\/all\/kak-zastavit-rabotat-apf-firewall-na-yadre-versii-3-x\/",
            "title": "Как заставить работать apf-firewall на ядре версии 3.x",
            "content_html": "Установил apf-firewall на один из серверов, столкнулся с проблемой. При запуске фаервола получил ошибку:<p>\r\n\r\nKernel version not equal to 2.4.x or 2.6.x, aborting.<p>\r\n\r\nФаервол не запустился и правила в iptables не добавились. Путём долгого гуления выяснилось что в коде скрипта стоит проверка версии ядра и на ядрах отличных от 2.4.х и 2.6.х apf отказывается работать. Обойти данное досадное недоразумение, как оказалось, достаточно просто. В файле \/etc\/apf-firewall\/internals\/functions.apf находим строку 68 и приводим условие к такому виду:<p>\r\n\r\n<code>elif [ \"$KREL\" == \"3.2\" ]; then<p>\r\nMEXT=\"ko\"<\/code><p>\r\n\r\nГде 3.2 ваша версия ядра. Версию ядра можно узнать выполнив:<p>\r\n\r\n<code># uname -a<\/code><p>\r\n\r\nПосле этих изменений apf запустился без проблем и правила добавились в iptables. Нормальная работа apf проверена на версии ядра 3.2.х и по информации в интернете 3.0.х. Решение вроде простое, но найти эту информацию оказалось довольно трудно. Поэтому сделал эту запись, возможно кому-то поможет.",
            "date_published": "2013-10-20T20:23:38+03:00",
            "date_modified": "2014-04-04T13:51:33+03:00",
            "tags": [
                "Advanced Policy Firewall",
                "APF",
                "APF-Firewall",
                "debian",
                "iptables",
                "Kernel",
                "Linux",
                "ubuntu"
            ],
            "_date_published_rfc2822": "Sun, 20 Oct 2013 20:23:38 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "11",
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}