полезное по линуксу и iphone собрано все интересное мне лично (методом copy-paste из инета и не пыхтите насчет копирайта я ссылки на источник ставлю)

Показаны сообщения с ярлыком iptables. Показать все сообщения
Показаны сообщения с ярлыком iptables. Показать все сообщения

понедельник, 9 апреля 2012 г.

Zentyal — сервер all-in-one для SMB

Лет 6 назад, в мою бытность сисадмином в одной конторе, мне приходилось обслуживать несколько серверов на FreeBSD — прокси, почтовик, web-сервер, ftp, ipfw, в общем, все как у всех. Работало все на двух физических серверах, и было у меня желание заиметь какую-нибудь универсальную графическую оболочку для удобства управления всем этим хозяйством. Ну и, конечно же, таковой нигде не было. Были попытки разных умельцев создать свои GUI для управления подсистемами по отдельности: один для squid, другой для sendmail и т. д. Конечно, можно было какую-то часть управления выполнять и в webmin, но это не доставляло никакого удовольствия. Как говорили мне — неправильно работать с *nix-системами через GUI. Нет, естественно работа в командной строке не доставляла неудобства, но хотелось чего-то более универсального. В итоге, я написал несколько скриптов, которые вызывали псевдографику на черном экране, где можно было добавлять/удалять правила, рулить пользователями и т. д., на чем как-то все остановилось, хотя интерес к удобству управления через GUI и не пропал.



Выбор и описание системы



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

На этот раз все было гораздо проще — за это время появилось множество систем, позволяющих управлять теми или иными сервисами. Сначала мой выбор, несмотря на не очень благозвучное для русскоязычного человека название, пал на eBox Platform. И хотя продукт на тот момент казался сыроватым, в принципе отвечал всем требованиям заказчика. Затем интерес к теме снова поутих — работа, другие дела и задачи…

И вдруг опять срочно понадобилась «управлялка всего и вся». За прошедшее время eBox переродился в дистрибутив под названием Zentyal, про который кто-то говорил плохо (памятуя баги из eBox), а кто-то не скрывал удовольствия от использования.

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

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

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



Ставить для теста отдельно пакеты неинтересно, поэтому ставим сразу все!



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

Сначала настраиваем сеть. Сразу оговорюсь, что для дальнейшего использования сервера удобнее всего иметь 2 сетевых интерфейса.



После настройки сети, необходимо определиться с тем, в каком режиме будет работать сервер — просто выделенный сервер или как slave (при условии, что уже есть первый — master). Смысл затеи сводится к разнесению служб на разные физические хосты. В дальнейшем, при масштабировании к мастер-серверу можно подключать slave-серверы, которые будут выполнять свою роль/роли в общей ферме.



Настройка первичного почтового домена:



Окно подключения «подписки». Очень интересная вещь!



Вы можете зарегистрироваться и купить поддержку либо же воспользоваться возможностями бесплатного варианта. В первом случае, вы получаете возможность установки расширенных патчей безопасности и поддержку по телефону, во втором — стандартные патчи и обращение в службу поддержки с оплатой по факту. Но и в первом, и во втором случае есть отличная возможность контролировать состояние сервера через интернет. После регистрации на сайте Zentyal и выбора типа подписки в окне ниже нужно ввести свои данные. Хотя это можно сделать и позднее при дальнейшем конфигурировании сервера. После ввода своих регистрационных данных, сервер устанавливает VPN-соединение с сервером поддержки, и вы получаете доступ к дашборду, где можете контролировать состояние своей системы. В случае платной поддержки функционал будет побогаче.

Итак, установка и начальная конфигурация прошли успешно…



… и у нас всё готово для дальнейшей пальпации.



Админ-панель





Панель администрирования. Удобно, красиво, ничего не раздражает. Слева меню модулей, по центру виджеты (кстати их можно перетаскивать мышью и расставлять по своему усмотрению). Тут же видно, что система нашла 18 обновлений. Нажав на это уведомление, мы увидим перечень, из которого можно выбрать устанавливаемые компоненты.

Я отметил все и нажал «Сохранить изменения».



Пошла установка апдейтов.



Описание модулей



Кратко пробегусь по модулям. В меню настройки статуса модулей можно выбрать, что именно должно работать, а какой сервис будет выключен. Поскольку DHCP-сервер, как правило, в сети уже существует, то данную службу не трогаем.



Меню бэкапа. Тут тоже все просто и понятно. Расписание-что-куда-откуда-исключения и прочее…



Импорт/экспорт конфигурации и вкл/выкл системы — стандартные опции, не думаю, что на них стоит заострять внимание.

Опция DynDNS — опять же все стандартно.



В окно мониторинга строятся красивые разноцветные графики загрузки системы.



Есть где почитать логи.



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



Firewall — здесь все красиво! Через GUI можно настроить практически любое правило. Рисунки на странице не дадут запутаться при выборе.



…может понадобиться опция перенаправления портов.



Интересной возможностью дистрибутива является создание и запуск виртуальных машин — куда же в наше время без виртуализации? Здесь все просто — создаем виртуальную машину, описываем сеть, добавляем диски и стартуем. В качестве CD/DVD можно использовать предварительно скопированные на сервер образы операционных систем.







Настройки SAMBA тоже не сложные — все как обычно.





Кстати, есть удобная фишка — «Корзина». Логирует все удаления файлов с файловых шар. Можно посмотреть, кто и когда удалил тот или иной файл и восстановить его в случае необходимости.

А теперь самое интересное: инструменты групповой работы. Настройки серверной части просты — включаем почту, заводим пользователей, разрешаем/запрещаем пересылку сообщений.









Кроме всего прочего, можно настроить сервер VoIP.



Пользовательский интерфейс



Итак, настройка сервера завершена. Что же получил в свое распоряжение пользователь? Понятно, что есть сетевые шары, сервер VoIP, шлюз работает, прокси пишет логи. Логинимся на адрес, который был указан после настройки GroupWare:



И после входа получаем…



Ничего не напоминает? Правильно, интерфейс MS Outlook. Не знаю, зачем разработчики сделали похожий интерфейс, наверное, для удобства работы конечного пользователя. Заодно вот окно создания сообщения для сравнения:





Календарь тоже очень похож на творение от MS.



Выводы



Ну, вот и все, в общем-то. Обзор получился не очень-то коротким, но в целом можно составить представление о продукте.

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

Для «взрослых» компаний данный продукт вряд ли подойдет, так как там другие деньги крутятся, а вот для уровня small business — очень даже неплохой выбор.

Взято с хабра

вторник, 30 ноября 2010 г.

Еще один способ отбиться от небольшого DDOS

Все нижеописанное относится к GNU/Linux 2.6.x. ДДОС совершенно тупой, разномастный: syn/tcp/udp/icmp flood тупо на все открытые порты, мегабит на 60. UDP срали вообще куда попало. Но основная атака конечно на HTTP. По этому, тушим сервисы и пишем….

Немного sysctl…

vm.min_free_kbytes=70000
net.core.somaxconn=65536
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.ip_local_port_range = 2000 61000
net.ipv4.tcp_fin_timeout = 25
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_timestamps = 0
net.core.rmem_max=16777216
net.core.wmem_max=32777216
net.ipv4.tcp_no_metrics_save=0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 187380 32777216
net.core.netdev_max_backlog=16384
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.ip_conntrack_max=600000
net.ipv4.icmp_echo_ignore_all=1
net.ipv4.netfilter.ip_conntrack_max=500000
net.netfilter.nf_conntrack_max=500000
Не забываем перезапустить Network.

Немного iptables….

# Форвард нам нэ нада
iptables -P FORWARD DROP
# BAN – цепочка для помещения туда айпи хостов, ведущих себя не правильно ) Ну типа
# iptables – I BAN -s 123.123.123.123 -j DROP
iptables -N BAN
# TRUSTED – цепочка для помещения туда правильных хостов и хостов откуда мы сидим в шелле. Типа
# iptables -I TRUSTED -s 111.111.111.111 -j ACCEPT
iptables -N TRUSTED
# Стандартный заголовок, eth1 – наш интерфейс внешний
# если есть еще интерфейсы, надо их тоже запрячь правилами разрешения как у lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -m state –state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -m state –state RELATED -j ACCEPT
# Проход по белым и черным цепочкам
iptables -A INPUT -i eth1 -j TRUSTED
iptables -A INPUT -i eth1 -j BAN
# У меня висит только сервис http, по этому здесь такая себе мини защита по данному порту
# Насчет –seconds 10 –hitcount 10, курим маны, экспериментируем, ставим то, что подойдет.
# Режем всех TCP на порту 80, которые за последние 10 секунд сделали 10 попыток открыть соединение
# (кому то может не подойти!)
iptables -A INPUT -p tcp -m tcp –dport 80 -m state –state NEW -m recent –update –seconds 10 –hitcount 10 –name httpd –rsource -j DROP
# А остальных разрешаем
iptables -A INPUT -i eth1 -p tcp -m tcp –dport 80 -j ACCEPT
# Вот по этой теме ддосеры тоже затрахали, по этому был категоричен
iptables -A OUTPUT -p udp -j DROP
iptables -A OUTPUT -p icmp -j DROP
# Здесь добавить разрешения на прочие порты, у меня прочих не было
# …
# Здесь добавить (!!!) свои айпи, с которых сидишь в шелле
iptables -A TRUSTED -s 111.111.111.111 -j ACCEPT
# Хорошо подумаем, покурим, затаим дыхание и напишем….
iptables -P INPUT DROP
# Что означает зарезать все, что не разрешили на INPUT’е
А теперь запускаем nginx/httpd и прочую лабуду. Надеюсь заработает. У меня заработало, как будто ничего и не происходило :) 
 
Оригинал: http://www.pentarh.com/wp/2010/08/11/%d0%95%d1%89%d0%b5-%d0%be%d0%b4%d0%b8%d0%bd-%d1%81%d0%bf%d0%be%d1%81%d0%be%d0%b1-%d0%be%d1%82%d0%b1%d0%b8%d1%82%d1%8c%d1%81%d1%8f-%d0%be%d1%82-%d0%bd%d0%b5%d0%b1%d0%be%d0%bb%d1%8c%d1%88%d0%be%d0%b3/

пятница, 26 ноября 2010 г.

Повышение производительности netfilter, использование ipset

iptables — интерфейс к файрволу Linux (netfilter). При большом количестве правил iptables нагрузка может быть достаточно высокой и создавать проблемы. В этой заметке я постараюсь описать, что влияет на производительность iptables и как ее повысить.

Основная причина нагрузки


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



На схеме видно через какие цепочки пройдет тот или иной пакет и можно оценить нагрузку. Возьмем одно простейшее правило:

-A INPUT -s 10.1.1.1/32 -p tcp --dport 25 -j DROP

Это правило указывает файрволлу отбрасывать все пакеты с IP-адреса 10.1.1.1 на порт 25 локальной машины. Таблицу (-t) я не указываю, поэтому будет использоваться дефолтная (-t filter), что нам и нужно. Понятно, что действие DROP выполняется далеко не всегда. Однако, сравнение IP-адреса источника будет проходить любой входящий на локальную машину пакет. А если таких правил тысяча?

Что делать?


Теперь подумаем, как можно ускорить работу файрволла. Первый ответ очевиден — сокращать количество правил. Но вряд ли удастся серьезно оптимизировать записи, особенно если они изначально составлялись грамотно. Где-то вместо правил на несколько IP-адресов можно написать одно правило на подсеть. Где-то вместо правил на несколько портов можно использовать -m multiport и --dports/--sports a,b,c (a,b,c — номера портов). И так далее.

Ветвление правил, дополнительные цепочки


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

-A INPUT -s 10.1.1.1/32 -p icmp -j ACCEPT
-A INPUT -s 10.1.1.2/32 -p icmp -j ACCEPT
-A INPUT -s 10.1.1.3/32 -p icmp -j ACCEPT


Что объединяет эти правила? Одинаковый протокол — icmp. Вот по этому признаку и стоит сгруппировать правила. Вообще в данном случае эффективнее использовать ipset, но об этом дальше. Для группировки необходимо создать новую цепочку, а затем создать правило, которое будет отправлять пакеты в эту цепочку.
Создать цепочку PROT_ICMP:

iptables -N PROT_ICMP

Определить правила в этой цепочке:

-A PROT_ICMP -s 10.1.1.1/32 -j ACCEPT
-A PROT_ICMP -s 10.1.1.2/32 -j ACCEPT
-A PROT_ICMP -s 10.1.1.3/32 -j ACCEPT


Как видите, протокол (-p) в этой цепочке мы уже не проверяем, т.к. отправлять в эту цепочку будем только ICMP пакеты. И наконец отправить все пакеты ICMP в эту цепочку:

-A INPUT -p icmp -g PROT_ICMP

Теперь входящий пакет, если он не ICMP, будет проходить лишь через одно правило вместо трех.

ipset


А теперь предположим следующую ситуацию:

-A INPUT -s 10.1.1.1/32 -j DROP
-A INPUT -s 10.1.1.2/32 -j DROP
-A INPUT -s 10.1.1.3/32 -j DROP


Несколько однотипных правил, но сгруппировать их или сделать дополнительную цепочку не представляется возможным. В таких случаях, когда необходимо делать проверку по большому количеству IP-адресов и/или портов, на помощь приходит ipset. ipset представляет из себя модуль ядра ip_set, ряд вспомогательных библиотек и утилиту ipset для задания параметров. Наверняка есть в репозиториях вашего дистрибутива, так что с установкой не должно быть проблем.
Используется следующим образом:
* Создается список:

ipset -N dropips iphash
dropips — название списка, iphash — тип списка. Типы списков можно посмотреть в man ipset, они есть на любой вкус — для работы с ip-адресами, подсетями, портами, mac-адресами. iphash служит для хранения IP-адресов, использование хэширования предотвращает добавление в список дублирующих IP-адресов.
* Добавляется IP-адрес в список:

ipset -A dropips 10.1.1.1

* Создается правило для использования списка:

iptables -A INPUT -m set --set dropips src -j DROP
-m set указывает на использование модуля ipset, --set dropips указывает список IP-адресов, src указывает на то, что сверять нужно только IP-источника. Таким образом, будут отбрасываться все пакеты с IP-адресов, указанных в списке dropips.

В статье я не стал описывать тюнинг сетевых параметров ядра, а сделал упор на рациональную организацию правил файрволла. Информации о тюнинге очень много можно найти в сети, это различные net.*mem*, в случае большого количества соединений и использования conntrack — параметры net.netfilter.nf_conntrack_max, net.netfilter.nf_conntrack*timeout и т.д.

Источник http://habrahabr.ru/blogs/sysadm/108691/

вторник, 9 марта 2010 г.

Vuurmuur — боевые коты на страже вашей сети


Vuurmuur — боевые коты на страже вашей сети

image

Vuurmuur — за таким «кошачьим» именем скрывается довольно мощная GUI надстройка для iptables. Основным отличием от других iptables-надстроек является наличие консольного интерфейса написанного на Ncurses. Поэтому администрирование всё также легко возможно посредством SSH или консоли. Vuurmuur умеет работать с шейпингом, поддерживает функции мониторинга трафика, ведёт отдельные логи, прекрасно работает как на 2.4 так и на 2.6 ядрах и даже «говорит» на русском.



Возможности


Администрирование

  • как всегда — знания iptables не требуются. Совсем :)
  • понятный обычному человеку синтаксис правил
  • шейпинг
  • Ncurses GUI, нет необходимости в X Window.
  • легкое перенаправление портов
  • легкая настройка NAT
  • безопасная политика по-умолчанию
  • полное управление через ssh или консоли (в том числе через PuTTY для Windows)
  • скрипты для интеграции с другими инструментами
  • возможность сборки bash-скрипта для установки правил iptables на системе без vuurmuur
  • средства противодействия IP-спуфингу
  • возможность обрыва нежелательных соединений
  • работа со Snort с помощью QUEUE или NFQUEUE
  • поддерживаемые языки: английский, немецкий, норвежский, французский, голландский, португальский и русский
  • понятная и удобная справка на русском

Мониторинг

  • удобный просмотр логов в реальном времени
  • удобный просмотр соединений в реальном времени
  • фильтрация при просмотре логов
  • базовый подсчёт трафика
  • поиск по старым логам

Учёт

  • аудит: все изменения записываются
  • запись всех новых соединений и подозрительных пакетов
  • подсчёт трафика

Установка


Gentoo

emerge -av layman
layman -f && layman -a sunrise
ACCEPT_KEYWORDS="~ARCH" emerge -av net-firewall/vuurmuur


Debian/Ubuntu

#Debian
echo "deb ftp://ftp.vuurmuur.org/debian/ etch main" >> /etc/apt/sources.list
#Ubuntu
echo "deb ftp://ftp.vuurmuur.org/ubuntu/ feisty main" >> /etc/apt/sources.list

apt-get update
apt-get install libvuurmuur vuurmuur vuurmuur-conf


Для любителей ручной установки: deb-пакеты лежат на официальном FTP

Картинки


Просмотр логов

image

Просмотр соединений

image

Просмотр трафика

image

Правила

image

Шейпинг

image

Мультики


Добавление интерфейса
Добавление зоны
Добавление правил
Добавление хоста
Добавление перенаправления
Добавление службы

 Взято здесь