четверг, 8 октября 2015 г.

Utraff

Понадобилась мне как-то простенькая система учета трафика (просмотр за произвольный период с какого ip адреса сколько входящего и исходящего трафика).
Быстро написал такую систему. В ней все довольно просто, система состоит из трех компонентов: 
1) Демона ipcad (написан не мной), который собирает статистку; 
2) Скрипта, который по крону запускается и сбрасывает всю накопленную ipcad'ом статистику в таблицу базы sqlite, в конце дня статистика суммируется и результат записывается в другую таблицу;
3) И простенького web интерфейса для просмотра статистики.

Оговорюсь сразу, данная система не решает проблемы аутентификации пользователя.
Как вариант, возможна привязка ip к mac через arp таблицу, например как это сделано здесь (да и вообще в сети полно манов на эту тему, гуглить по фразе static arp on centos).

Итак, приступим к установке:

yum install -y httpd php php-pdo libpcap rsh awk sqlite
rpm -ihv ipcad-3.7.3-7.x86_64.rpm
rpm -ihv utraff-1.1-0.noarch.rpm

Далее необходимо поправить два конфига: /etc/ipcad.conf и /etc/utraff.conf
В /etc/ipcad.conf нужно исправить:aggregate 192.168.1.0/24 strip 32; на Вашу подсеть и изменить интерфейс локальной сети (параметр interface eth0;), на котором ipcad cобирает статистику (по-умолчанию eth0).
В /etc/utraff.conf достаточно поправить параметр local_net (изменив его на Вашу подсеть) и прописать в секции [users] какому пользователю, какой ip принадлежит.
Все остальные параметры интуитивно понятны.

Далее в консоли:

systemctl enable ipcad
systemctl enable httpd 
systemctl start httpd
systemctl start ipcad
systemctl restart crond

Вот собственно и все, на следующее утро заходим в web  интерфейс (логин и пароль прописаны в конфиге utraff) выбираем день и смотрим статистику.



P.S.  Пакеты здесь.


понедельник, 24 июня 2013 г.

Haveged

 И снова здравствуйте, в этот раз речь пойдет о такой весьма интересной вещи как демон haveged. Во-первых - что это такое? Демон является реализацией алгоритма HAVEGE для linux систем. О том что это за алгоритм можно почитать здесь(анг) и здесь(рус).
Во-вторых - для чего он нужен. Сам по себе haveged является всего лишь способом получения криптостойкой энтропии при помощи CPU, для ускорения криптографических операций.
Проще говоря шифрование будет работать быстрее.

Перед инсталяцией выполните:
cat /proc/sys/kernel/random/entropy_avail
и запомните циферку

Итак для установки нам понядобятся: подключенный репозитарий epel и команда:
yum install -y haveged

Далее:
service haveged start
chkconfig haveged on

После чего вновь выполните:
cat /proc/sys/kernel/random/entropy_avail
Видите разницу?

DenyHosts

Наверно ни для кого не новость, но все же напишу о такой замечательной штуке как denyhosts. Это небольшой скрипт написаный на питоне, который анализирует сообщения в системном журнале безопасности (/var/log/secure), выискивает с каких хостов идут неудачные попытки зайти на наш сервер по ssh и блокирует данные хосты, добавляя их ip адреса в файл /etc/hosts.deny .
Сам пакет можно установить из репозитария epel простой командой:
yum install -y denyhosts

Для защиты ssh после установки его необходимо лишь запустить и добавить в автозагрузку при старте системы.
service denyhosts start
chkcofig denyhosts on

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

вторник, 5 февраля 2013 г.

GRID на благо человечества

Да именно так, сегодня поговорим о том, что делать с неиспользуемым процессорным временем и как с помощью нехитрых манипуляций можно помочь ученым в разработке новых лекарств, источников энергии и т. д.
Делать мы это будем при помощи технологии GRID.
Для начала идем сюда и регистрируемся. Переходим на вкладку My profile,  находим там Account Key и копируем его.

Далее:
yum install -y boinc-client
chkconfig boinc-client on
service boinc-client start
cd /var/lib/boinc
boinccmd --project_attach http://worldcommunitygrid.org ВАШ_ACCOUNT_KEY

Все, через 5-10 минут активно начнутся расчеты.
Ну и ссылка на описание WorlCommunityGrid проекта на википедии.

среда, 16 января 2013 г.

OpenVPN (Site To Site)

Пример построения siste-to-site VPN с использованием OpenVPN.

Итак предположим у нас есть два офиса (A и B), в каждом офисе есть по шлюзу (Router_A и  Router_B). 
За каждым из роутеров находится соответствующая локальная сеть (Network_A - 192.168.1.0/24  и  Network_B - 192.168.2.0/24). 
Еще у роутеров есть по внешнему Ip адресу(1.1.1.1 и 2.2.2.2 соответственно).



Необходимо сделать так чтобы пользователи сети А могли получить доступ к сети В и наоборот.
Роутер А у нас будет сервером (будет принимать подключение), роутер В - клиентом (будет подключаться к серверу).
На обоих серверах:

yum install -y wget
wget http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ihv epel-release-6-8.noarch.rpm
rm -f epel-release-6-8.noarch.rpm
yum install -y openvpn
chkconfig openvpn on

Далее на сервере А:

cp -R /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/ /root/PKI
chmod +x /root/PKI/*
cp /root/PKI/openssl-1.0.0.cnf /root/PKI/openssl.cnf
cd /root/PKI/

правим ./vars , задаем следующие параметры:
export KEY_COUNTRY="ваша страна"
export KEY_PROVINCE="ваша область"
export KEY_CITY="город"
export KEY_ORG="организация"
export KEY_EMAIL="ваш e-mail"

source ./vars
./clean-all
./build-ca (при генерации жмем везде Enter)
./build-key-server server (Также жмем Enter на все вопросы)
./build-dh
./build-key router_b (генерим ключи клиентов)(все также жмем Enter)
ln -s /root/PKI/keys /etc/openvpn/keys
mkdir /etc/openvpn/ccd

Конфиг Router_A(/etc/openvpn/server.conf):

port 1194
proto tcp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#========================
server 10.10.0.0 255.255.255.0
#(виртуальная сеть которую будет использовать сервер для назначения клиенту ip адреса )
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"
# отдаем клиенту(router_b) маршрут до сети за router_A (в нашем случае 192.168.1.0/24)
route 192.168.2.0 255.255.255.0
# маршрут до сети Router_B
client-config-dir ccd
# используем папку ccd для хранения настроек клиентов
#========================
keepalive 10 120
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3

Копируем следущие файлы с router_a:
/root/PKI/keys/ca.crt
/root/PKI/keys/router_b.crt
/root/PKI/keys/router_b.key
на router_b в директорию /etc/openvpn/keys/

Конфиг Router_B(/etc/openvpn/client.conf)

client
dev tun
proto tcp
remote 1.1.1.1 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/router_b.crt
key /etc/openvpn/keys/router_b.key
ns-cert-type server
comp-lzo
verb 3

Далее на Router_A:
в директории /etc/openvpn/ccd
создаем файлик: router_b
и пишем в него следующее:
iroute 192.168.2.0 255.255.255.0

На обоих серверах в файле /etc/sysctl.conf включаем ip_forward:
меняем строку
net.ipv4.ip_forward = 0
на
net.ipv4.ip_forward = 1

После команду:
sysctl -p

Соответственно настраиваем iptables.
И команда:
service openvpn start