Шукати в цьому блозі

середа, 30 січня 2013 р.

Ограничение входа по SSH с конкретных IP адресов

Многие используют вход по ssh с использованием ключей авторизации (в блоге немного рассказывалось об этом), но мало кто знает о том, что при этом можно ограничить вход с заведомо доверенных ip-адресов.
В принципе если есть права администратора то подобные ограничения легко и просто вносятся при помощи незабвенного iptables-а. Однако если прав администратора нет, а ограничение ввести надо то на помощь может прийти нижеследующий механизм.
Для введения ограничений доступа с конкретного ip, как и для авторизации по ключу, используется .ssh/authorized_keys. Например если мы хотим чтобы доступ с конкретным ключом авторизации осуществлялся только лишь с ip-адреса 1.2.3.4 то в начало соответствующей ключу строки файла .ssh/authorized_keys необходимо добавить значение from:
from="1.2.3.4" ssh-rsa  ....
Если хочется чтобы таких адресов было несколько или это была сеть то перечисляем нужные значения:
from="1.2.3.0/24,44.55.66.77" ssh-rsa ...
Таким-же образом можно ввести и другие ограничения, например:
from="1.2.3.4",no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa ...
это ограничит agent-forwarding, port-forwarding и т.д., оставив только интерактивный вход в систему. ssh можно ограничить ещё больше, например запретив интерактивный вход, заставив выполнить заданную команду:
command="/usr/local/bin/my-prog" ssh-rsa ..
Это может быть полезным для организации удалённого резервного копирования rsync + ssh, когда будет запущен строго определённый скрипт и ничего более.

середа, 23 січня 2013 р.

Bonding - резервирование каналов на Layer 2

Устанавливаем пакеты согласно Debian Wiki.


Типы агрегации (объединения) интерфейсов в Linux

mode=0 (balance-rr)
Этот режим используется по-умолчанию, если в настройках не указано другое. balance-rr обеспечивает балансировку нагрузки и отказоустойчивость. В данном режиме пакеты отправляются "по кругу" от первого интерфейса к последнему и сначала. Если выходит из строя один из интерфейсов, пакеты отправляются на остальные оставшиеся.При подключении портов к разным коммутаторам, требует их настройки.

mode=1 (active-backup)
При active-backup один интерфейс работает в активном режиме, остальные в ожидающем. Если активный падает, управление передается одному из ожидающих. Не требует поддержки данной функциональности от коммутатора.

mode=2 (balance-xor)
Передача пакетов распределяется между объединенными интерфейсами по формуле ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.

mode=3 (broadcast)
Происходит передача во все объединенные интерфейсы, обеспечивая отказоустойчивость.

mode=4 (802.3ad)
Это динамическое объединение портов. В данном режиме можно получить значительное увеличение пропускной способности как входящего так и исходящего трафика, используя все объединенные интерфейсы. Требует поддержки режима от коммутатора, а так же (иногда) дополнительную настройку коммутатора.

mode=5 (balance-tlb)
Адаптивная балансировка нагрузки. При balance-tlb входящий трафик получается только активным интерфейсом, исходящий - распределяется в зависимости от текущей загрузки каждого интерфейса. Обеспечивается отказоустойчивость и распределение нагрузки исходящего трафика. Не требует специальной поддержки коммутатора.

mode=6 (balance-alb)
Адаптивная балансировка нагрузки (более совершенная). Обеспечивает балансировку нагрузки как исходящего (TLB, transmit load balancing), так и входящего трафика (для IPv4 через ARP). Не требует специальной поддержки коммутатором, но требует возможности изменять MAC-адрес устройства.

середа, 16 січня 2013 р.

Сборка Razor-qt, как альтернативы KDE, под Debian GNU/Linux Wheezy

Скачиваем:
git clone git://github.com/Razor-qt/razor-qt.git
cd razor-qt/
или
wget http://razor-qt.org/downloads/razorqt-0.5.2.tar.bz2
tar xjf razorqt-0.5.2.tar.bz2
cd razorqt-0.5.2/
Устанавливаем пакеты:
sudo aptitude install cmake libqt4-dev libmagic-dev libxrender-dev libxcomposite-dev libxdamage-dev libqt4-dbus libqt4-webkit  libxcursor-dev zlib1g-dev libstatgrab-dev libqt4-xml libsensors4-dev liblightdm-qt-dev libqtwebkit4 libpolkit-qt-1-dev libpolkit-agent-1-dev libudev-dev libpulse-dev debian-edu-config
Собираем:
cd cmake/
cmake ../
cd ..
distr/deb/makeDeb.sh -r wheezy -d Debian .
Пакеты соберутся в домашней директории в каталоге ~/razorqt_0.5.2_deb.
cd ~/razorqt_0.5.2_deb
dpkg -i libqtxdg0_0.5.2-1_amd64.deb librazorqt0_0.5.2-1_amd64.deb razorqt-data_0.5.2-1_all.deb razorqt-appswitcher_0.5.2-1_amd64.deb razorqt-autosuspend_0.5.2-1_amd64.deb razorqt-config_0.5.2-1_amd64.deb razorqt-desktop_0.5.2-1_amd64.deb razorqt-globalkeyshortcuts_0.5.2-1_amd64.deb razorqt-notificationd_0.5.2-1_amd64.deb razorqt-panel_0.5.2-1_amd64.deb razorqt-power_0.5.2-1_amd64.deb razorqt-runner_0.5.2-1_amd64.deb razorqt-session_0.5.2-1_amd64.deb lightdm-razorqt-greeter_0.5.2-1_amd64.deb razorqt-policykit-agent_0.5.2-1_amd64.deb razorqt-openssh-askpass_0.5.2-1_amd64.deb razorqt_0.5.2-1_all.deb
Сайт проекта http://razor-qt.org/
How-to по сборке https://github.com/Razor-qt/razor-qt/wiki/How-to-build

вівторок, 18 грудня 2012 р.

Juniper: vpls, l2 point-multipoint

Задача: есть 2 маршрутизатора Cisco и один маршрутизатор Juniper MX-80, собрать на втором уровне трафик на джунипере, третий уровень клиент себе настроит так как захочет.

Cisco маршрутизаторы rc0 и rc1. Juniper маршрутизатор rj0.

Конфигурация rc0 (xx.xx.171.185), Gi0/1.2222:
rc0#sh run int Gi0/1.2222
interface GigabitEthernet0/1.2222
 description junos vpls test
 encapsulation dot1Q 2222
 xconnect xx.xx.120.69 2222 encapsulation mpls
end
Конфигурация rc1 (xx.xx.171.187), Gi0/1.2222:
rc1#sh run int Gi0/1.2222
interface GigabitEthernet0/1.2222
 description junos vpls test
 encapsulation dot1Q 2222
 xconnect xx.xx.120.69 2222 encapsulation mpls
end
Конфигурация rj0 (xx.xx.120.69):
rj0> show configuration interfaces ge-1/1/0.2222
set interfaces ge-1/1/0 unit 2222 description "vpls test"
set interfaces ge-1/1/0 unit 2222 encapsulation vlan-vpls
set interfaces ge-1/1/0 unit 2222 vlan-id 2222
set interfaces ge-1/1/0 unit 2222 family vpls
rj0> show configuration routing-instances vpls_test | display set
set routing-instances vpls_test instance-type vpls
set routing-instances vpls_test vlan-id all
set routing-instances vpls_test interface ge-1/1/0.2222
set routing-instances vpls_test protocols vpls no-tunnel-services
set routing-instances vpls_test protocols vpls mtu 2000
set routing-instances vpls_test protocols vpls mesh-group l2ccc vpls-id 2222
set routing-instances vpls_test protocols vpls mesh-group l2ccc local-switching
set routing-instances vpls_test protocols vpls mesh-group l2ccc neighbor xx.xx.171.187 encapsulation-type ethernet-vlan
set routing-instances vpls_test protocols vpls mesh-group l2ccc neighbor xx.xx.171.185 encapsulation-type ethernet-vlan

пʼятниця, 14 грудня 2012 р.

Juniper: аналог cisco global в vrf.

Задача: вывести маршрут из vrf в глобальную таблицу (например для живущих внутри vrf sip-абонентов). Например, из vrf необходимо получить доступ к внешним ресурсам 2xx.xx.xx1.0/28, 2xx.xx.xx0.2/32 и 2xx.xx.xx0.27/32.

Описываем routing-instances:
routing-instances {
    ANOTHER_CLIENT {
        description "ANOTHER CLIENT";
        instance-type vrf;
        interface ge-1/0/1.210;
        interface ge-1/0/7.207;
        interface ge-1/1/0.209;
        route-distinguisher xxxxx:10008;
        vrf-target target:xxxxx:10008;
        vrf-table-label;
        routing-options {
            static {
                route 0.0.0.0/0 next-hop 10.255.xxx.6;
                route 2xx.xx.xx1.0/28 next-table inet.0;
                route 2xx.xx.xx0.2/32 next-table inet.0;
                route 2xx.xx.xx0.27/32 next-table inet.0;
            }
            auto-export {
                family inet {
                    unicast {
                        rib-group Export_VRF_VoiceDevice_to_inet.0;
                    }
                }
            }
        }
    }
}
На маршрут 0.0.0.0/0 не обращаем внимания, это из другой оперы, не относящейся к теме данной статьи.
После этого нарисуем policy-options который затем будет использоваться в rib-groups-е:
policy-options {
    policy-statement VoiceDevice_in_VRF {
        term vd {
            from {
                route-filter 10.255.xxx.4/30 exact;
            }
            then accept;
        }
        then reject;
    }
}
И завершающий штрих, рисуем rib-groups:
routing-options {
    rib-groups {
        Export_VRF_VoiceDevice_to_inet.0 {
            import-rib inet.0;
            import-policy VoiceDevice_in_VRF;
        }
    }
    router-id 9x.xxx.xxx.x9;
    autonomous-system xxxxx;
}

середа, 14 листопада 2012 р.

Обновить все установленные модули Perl с CPAN

Обновить с CPAN-а все установленные в системе perl-модули можно одной командой:
sudo perl -MCPAN -e 'CPAN::Shell->notest(install => CPAN::Shell->r)'
при этом останется лишь ответить на ряд вопросов и дождаться окончания процесса ;)