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

суббота, 14 января 2012 г.

Настройка OpenVPN с использованием сертификатов X.509 (На примере FreeBSD и роутера на DD-WRT)

Понадобилось создать VPN сервер с поддержкой шифрования.
В качестве основного материала была использована статья по настройке Openvpn на FreeBSD - FreeBSD: Настройка OpenVPN с использованием сертификатов X.509

Для других *nix подобных ОС настройка может незначительно отличаться.

Также опишу, как настроить openvpn server в прошивке DD-WRT на роутере
Asus RT N-16.

В общих чертах:
Есть сервер с LAN - 192.168.0.0/24, нужно чтоб подключившийся получал ip из 10.0.0.0/24. Подключаться могут множество клиентов и должны иметь доступ друг к другу и в LAN, вот собственно и все..

пятница, 23 декабря 2011 г.

Восстановление openssh public key из private key

Случается, что теряется (удаляется или перезаписывается по ошибке) публичная часть ключа (та, которая обычно имеет суффикс ".pub"),
но если секретная часть жива ("id_rsa" или "id_dsa") то восстановить публичную очень просто:

Если ключ RSA
$ ssh-keygen -y -f id_rsa > id_rsa.pub

или если DSA
$ ssh-keygen -y -f id_dsa > id_dsa.pub
Ссылки:
Восстановление openssh public key из private key
Основы работы с OpenSSL

пятница, 30 сентября 2011 г.

Мониторинг системы под FreeBSD. Полезные команды.


Системные команды, которыми можно проверить ресурсы системы, текущую нагрузку и просто просматривать различную информацию.

четверг, 15 сентября 2011 г.

Сетевые Intel во FreeBSD

EM
Драйвер для гигабитных сетевых карточек
Можно увеличить размеры очередей в карточке (в данном случае до 4 Мб).

### EM net
hw.em.rxd=4096
hw.em.txd=4096
hw.em.max_interrupt_rate=32000

Примечание: желательно посмотреть, какой буфер в реальности имеет ваша сетевая карточка. При возникновении проблем можно уменьшить его в 2 или 4 раза.
Для нормальной работы сетевой особо больше ничего не нужно. Драйвер em в FreeBSD уже очень давно и большинство глюков уже отловлено.
Можно разве что, еще немного заняться тюннингом sysctl.

IGB
Это драйвер для более новых гигабитных сетевых карточек (чипы 82575, 82576, 82580).
Поведение данного драйвера при первоначальном внедрении не очень радовало многих(FreeBSD 7.x). Особенно проблемы возникали с новыми "фичами".
Можно вместо базовых драйверов:
Скачать последнюю версию драйвера igb с офф.сайта Intel
Либо использовать драйвера от Yandex
Драйвера от Yandex более грамотно раскладывают нагрузку по ядрам процессора.
Добавляем в /etc/rc.conf

ifconfig_igb0="-rxcsum -txcsum -lro -tso up"
Это отключает LRO TSO и checksum.
Работать с LRO на данный момент при большом потоке не реально.
Добавляем в /boot/loader.conf

hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000
hw.igb.lro=0

Можно также внести изменения в ядро.
Рекомендуемые:

## Убирать, т.к. выкладывает проц в полку без прироста в производительности
#options                FLOWTABLE  
#Для создания дополнительных буферов под копирование сокетов
options         ZERO_COPY_SOCKETS # man 9 zero_copy_sockets
## Несколько таблиц маршрутизации.
## Полезно при использовании jail
#options         ROUTETABLES=10
options         HZ=4000
options         PANIC_REBOOT_WAIT_TIME=16
device lagg
А также подтюнить sysctl(параметры подбираются индивидуально под задачу)

net.inet.ip.forwarding=1 #включаем форвардинг пакетов
net.inet.ip.fastforwarding=1 #эта опция действительно ускоряет форвардинг
net.inet.tcp.blackhole=2 #ядро убивает tcp пакеты, приходящие в систему на непрослушиваемые порты
net.inet.udp.blackhole=0 #как и выше, только не убивает ибо traceroute пакеты не покажут этот хоп
net.inet.icmp.drop_redirect=1 #не обращаем внимания на icmp redirect
net.inet.icmp.log_redirect=0 #и не логируем их
net.inet.ip.redirect=0 #не реагируем на icmp redirect
net.inet.ip.sourceroute=0 #отключение маршрутизации от источника
net.inet.ip.accept_sourceroute=0 #старый и бесполезный механизм
net.inet.icmp.bmcastecho=0 #защита от SMURF атак
net.inet.icmp.maskrepl=0 #не отдавать по icmp паску своей подсети
net.link.ether.inet.max_age=30 #переспрашиваем каждые 30 секунд mac адреса в своём arp пространстве
net.inet.ip.ttl=226 #почему бы не поставить ttl побольше ;)
net.inet.tcp.drop_synfin=1 #небольшая защита
net.inet.tcp.syncookies=1 #от доса
kern.ipc.somaxconn=32768 #увеличиваем размер очереди для сокетов
kern.maxfiles=204800 #увеличиваем число открытых файловых дескрипторов
kern.maxfilesperproc=200000 #кол-во ф.д. на каждоый процесс
kern.ipc.nmbclusters=524288 #увеличиваем число сетевых буферов
kern.ipc.maxsockbuf=2097152 #
kern.random.sys.harvest.ethernet=0 #не использовать трафик и прерывания
kern.random.sys.harvest.interrupt=0 #как источник энтропии для random'a
net.inet.ip.dummynet.io_fast=1 #заставляет dummynet работать побыстрее
net.inet.ip.dummynet.max_chain_len=2048 #
net.inet.ip.dummynet.hash_size=65535 #
net.inet.ip.dummynet.pipe_slot_limit=2048 #
net.inet.carp.preempt=1 #включаем carp
net.inet.carp.log=2 #пишем логи карпа
kern.ipc.shmmax=67108864 #макс. размер сегмента памяти
net.inet.ip.intr_queue_maxlen=8192 #размер очереди ip-пакетов
net.inet.ip.fw.one_pass=0 #пакеты, прошедшие пайпы не вылетают из фаервола, а дальше идут по нему
dev.igb.0.enable_lro=0 #отключение large receive offloading 
dev.igb.1.enable_lro=0
dev.igb.0.enable_aim=0 #так нет аномалий с работой сетевушек
dev.igb.1.enable_aim=0
dev.igb.0.rx_processing_limit=2048 #адаптивный polling, разрешаем прерывания с сетевухи при достижении значения
dev.igb.0.flow_control=0 #отключение контроля потока
dev.igb.1.rx_processing_limit=2048
dev.igb.1.flow_control=0

Ссылки:
Intel® Gigabit ET Dual Port Server Adapter (чип 82576) и FreeBSD
Немного об использовании igb во FreeBSD 8
Тюнинг FreeBSD 8.2. Часть 2. Производительность.
FreeBSD 8 igb баги 
Производительный роутер на FreeBSD 


четверг, 1 сентября 2011 г.

dump restore

Необходимость дампить систему рано или поздно появляется у Всех. Я не исключение...
Преимущестов утилит dump/restore в том, что они есть на любой юникс системе.
На основе этих утилит постоено достаточно много различных систем бекапирования, которые по сути являются просто надстройками над ними.
Я рассмотрю, как сделать дамп с какого либо раздела на FreeBSD.

snapshot UFS2 во FreeBSD

Начиная с FreeBSD 5.0 появилась возможность генерация мгновенных копий файловых систем.
Я приведу пару способов, как это можно сделать.
Рассмотрим их.

воскресенье, 14 августа 2011 г.

Мелкие полезности в shell

Иногда нужно что-то сделать, находишь простое решение - однострочную команду
Лучше себе его записать....
Вот здесь и будут храниться вот такие вот мелочи

Получение номеров вланов и сортировка их по возрастанию (FreeBSD)
ifconfig | grep vlan: | awk '{print $2}' | sort -n

Просмотр лога апача, чтоб определить, кто-то пытается получить доступ, полезно для определения различных видов атак. Выводит количество конектов и соответствующий ip.
Аналогичным образом можно анализировать не только логи апача..
tail -5000 /var/log/apache2/access_log | awk '{print $1}' | sort | uniq -c | sort -r | head
206    71.126.170.114
198    85.228.153.247
196    78.168.184.111
...

вторник, 26 июля 2011 г.

fail2ban - базовая настройка

fail2ban - утилита, которая парсит логи и выполняет определенные действия на некоторые повторяющиеся события в течении какого-то времени..
Например за несколько неудачных попыток авторизоваться по ssh за некоторое время забанить источник.
Очень полезна для предотвращения перебора паролей и различных зловредных действий.
Методов блокировки также несколько: ipfw, iptables, hosts.deny .
Есть уже много готовых примеров для ssh, exim, postfix,cyrus-imap, apache, lighttpd, named и тд (!!!). Можно их составлять и самим, для этого Вам понадобится некоторое знание регулярных выраженией в python. Сама настройка очень проста и логична.
Рассмотрю базовую установку на FreeBSD и настройку блокировки брутфорса ssh.

четверг, 9 июня 2011 г.

Apache - Failed to enable the 'httpready' Accept Filter

Стандартная ошибка при попытке первый раp стартануть apache на FreeBSD

# apachectl start
[Thu Jun 09 15:45:08 2011] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
# kldload accf_http
Решается очень просто...
Если Вы не планируете использовать фильтр, то можно добавить в httpd.conf строчки:

 AcceptFilter http none 
 AcceptFilter https none
Если он Вам нужен, то добавляем в /boot/loader.conf:

accf_http_load="YES"
Это сработает после только перезагрузки сервера. Чтоб подгрузить модуль без перезагруки, нужно выполнить клманду:

kldload accf_http
Все :), теперь можно запускать apache

пятница, 3 июня 2011 г.

SSH авторизация по ключам.

Одним из самых надежных способов аторизации и одновременно удобных является авторизация по ключам.
Естественно при условии безопасного хранения приватных ключей (а для этого можно использовать например программу Truecrypt, вот заметка по использованию..)
Такой способ авторизации часто используется в скриптах, например с такими программами как sftp, scp и др.

пятница, 27 мая 2011 г.

nice Badly formed number

При использовании утилиты nice в csh выдавалась ошибка. Это же сообщение и выдавалось и на пример из man

# nice -n 5 date
nice: Badly formed number.
Выяснилось, что данный вариант действует в sh, а для оболчек csh,tcsh актуален следующий вариант:

# nice +5 date
# nice -5 date

вторник, 17 мая 2011 г.

Cannot dump. Device not defined or unavailable.

Сегодня при возникновении Kernel panic обнаружил что не используется swap.

Cannot dump. Device not defined or unavailable.
Как оказалось по-умолчанию в FreeBSD 8.x отключено создание дампов. Для решения этой проблемы нужно было добавить всего лишь одну строку в /etc/rc.conf:

dumpdev="AUTO"
P.S. для применения параметра требуется перезагрузка.

понедельник, 18 апреля 2011 г.

Установка PostgreSQL на FreeBSD


PostgreSql - очень мощная свободная объектно-реляционная система управления базами данных (СУБД).
Существует в реализациях для следующих платформ: Linux, Solaris/OpenSolaris, Win32, Mac OS X, FreeBSD, QNX 4.25, QNX 6
PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2003
Сильными сторонами PostgreSQL считаются:
 - поддержка БД практически неограниченного размера;
 - мощные и надёжные механизмы транзакций и репликации;
 - расширяемая система встроенных языков программирования: в стандартной поставке поддерживаются PL/pgSQL, PL/Perl, PL/Python и PL/Tcl; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme и PL/sh, а также имеется поддержка загрузки C-совместимых модулей[5];
 - наследование;
 - легкая расширяемость.

В общем это очень достоя СУБД для корпоративных приложений.
Рассмотрим установку на FreeBSD

пятница, 8 апреля 2011 г.

Wake-on-LAN

Wake-on-LAN (WOL; в переводе с англ. — «пробуждение по [сигналу из] локальной сети») — технология, позволяющая удалённо «пробудить» (включить) компьютер посредством отправки через локальную сеть специальным образом сформированного пакета данных (так называемого «magic packet» — «„волшебного“ пакета», см. ниже)
Принцип работы
Управляемый компьютер находится в дежурном режиме (англ. stand-by) и выдаёт питание на сетевой адаптер. Сетевой адаптер находится в режиме пониженного энергопотребления, просматривая все пакеты, приходящие на его MAC-адрес, и ничего не отвечая на них. Если одним из пакетов окажется magic packet, сетевой адаптер выдаст сигнал на включение питания компьютера. На встроенных сетевых эту опцию нужно включать в BIOS.
Поднять хост возможно только в одном бродкаст сегменте.

четверг, 7 апреля 2011 г.

Установка FreeBSD с корнем на ZFS, используя GPT

В версии FreeBSD 8.0 и выше ZFS уже является стабильным, поэтому уже можно смело переходить на нее. В данном случае установка идет на один жесткий диск, поэтому дополнительные возможности и преимущества ZFS рассмотрены не будут.

Вообще говоря для ZFS рекомендуется более 8Гб оперативной памяти, чтобы она смогла себя раскрыть.
Приходится настраивать ZFS на машинах с маленьким объемом оперативной памяти например с 1Гб и даже меньше.
Минимальный объем который необходим для работы ZFS это 512Мб.
В статье приведены параметры для слабых машин. В противном случае система может уходить в kernel panic.

Причины перехода серверов на ZFS(для меня):

  • Скорость работы выше в ZFS . по сравнению с UFS (посмотреть можно здесь)
  • Нет необходимости делать fsck -y в Single User mode (честно говоря уже достало), да и время поднятия сервера зачастую очень критично.
  • Контрольная сумма блоков + использование принципа транзакций - как результат большая надежность данных.
  • Возможность быстрого клонирования на другой диск системы.
  • При данной интсаляции, все равно в какой SATA разъем Вы втыкнули свой HDD. Также без разницы в каком из режимов работает SATA (AHCI/IDE) 

Встала задача перенести роутер на новое железо, решил в качестве файловой системы выбрать ZFS. За основу взял руководство.
Установка выполняется FreeBSD 8.2 RELEASE на HDD.

Поехали...

вторник, 29 марта 2011 г.

PPPoE client FreeBSD

Задача простая - настроить соединение с вышестоящим провайдером по PPPoE.
Адрес получается по DHCP (динамически).
Пример настройки стандартными средствами FreeBSD

пятница, 25 марта 2011 г.

Error: Vulnerability check disabled, database not found

ОС FreeBSD 8.1 amd64.
Столкнулся неожиданно для себя с такой вот ошибкой

Vulnerability check disabled, database not found

Ошибка возникала при попытке установить порты.
Погуглив немного, нашел решение нужно поставить portaudit.
Из порта ставиться не захотела, вылетала с этой же ошибкой, пришлось поставить пакетом
# pkg_add -r portaudit

После чего, скачиваем базу уязвимостей с серверов FreeBSD
# portaudit -Fd
auditfile.tbz                                 100% of   67 kB   64 kBps
New database installed.
Database created: Fri Mar 25 17:00:01 EET 2011
Вот фактически и все решение проблемы :)

 Можно также посмотреть, какие есть уязвимости, что нужно обновить в системе.
# portaudit -a
0 problem(s) in your installed packages found.

понедельник, 28 февраля 2011 г.

Создание vlan’ов

В данной заметке будет описано, как настроить vlan'ы на разных системах.

пятница, 25 февраля 2011 г.

SNMPv3

Про SNMPv3
SNMP – протокол прикладного уровня. Он предназначен для обмена информацией между сетевыми устройствами. При помощи этого протокола, сетевой администратор может производить анализ сетевого оборудования, находить и решать множество сетевых проблем. В Декабре 1997 года с выходом SNMPv3, пользователям стали доступны новые службы, такие как: ограничение доступа, защита данных и аутентификация пользователя<* см. стандарты RFC 2271-2275>. Кроме этого, стоит отметить, что SNMPv3 перенял модульную архитектуру от своих предшественников. Это обеспечивает поддержку предыдущих версий SNMPи, не смотря на то, что SNMPv1 и SNMPv2 не поддерживают аутентификацию и шифрование, у Вас будет возможность управления устройствами, которые поддерживают эти версии.
      Для каждого сетевого устройства пароль преобразуется в некоторый уникальный ключ. Это обеспечивает дополнительную безопасность т.к. даже в том случае, если ключ будет перехвачен, злоумышленник получит доступ только к одному сетевому устройству. Для шифрования пароля используется алгоритм MD5, но разработчики видимо решили, что это не обеспечит достаточной сохранности пароля и поэтому блок данных (PDU) дважды хэшируется при помощи двух разных ключей, которые в свою очередь генерируются из закрытого ключа. Позже, первые 12 октетов используются как код аутентификации сообщения, который добавляется к сообщению. Такой же процесс приходится производить на другой стороне, но только в обратном порядке. Несмотря на всю сложность и энергоемкость процесса передачи данных между сущностями SNMP, по мнению разработчиков, алгоритм шифрования (DES) на самом деле не обеспечивает достаточной защиты информации, поэтому в дальнейшем предполагается использовать другие алгоритмы. Например, алгоритм Диффи-Хиллмана (Diffie-Hillman)

           Разработчиками предусмотрено 3 уровня безопасности:
- noAuthNoPriv – пароли передаются в открытом виде, конфиденциальность данных отсутствует.
- authNoPriv – аутентификация без конфиденциальности. Большинство пользователейиспользует именно этот уровень т.к уровень защищенности в нем уже достаточно высок, а сетевые устройства не перегружаются шифрованием данных.
- authPriv – аутентификация и шифрование. Максимальный уровень защищенности. Для начала нужно поставить net-snmp.

Дальше я опишу, как настроить SNMP3 на разных системах и умных свитчах.

воскресенье, 30 января 2011 г.

UTF8 FreeBSD в консоли

Почему utf8:
- это удобно
- это кроссплатформенно (я, например, работаю на многих разных системах: freebsd, linux, windows и хочу везде иметь возможность беспроблемного доступа к своим файлам)
- utf8 это родная кодировка во многих системах (linux), а также в файловых системах.
- в базах данных давно самая беспроблемная кодировка - utf8 (особенно когда есть необходимость работы с несколькими языками)
- я думаю рано или поздно во freebsd все равно будет utf8 по умолчанию.

Изменения не затрагивают системную консоль!