пятница, 23 апреля 2010 г.

Запрет ssh

Тут мне только что пришла идея что стоит некоторым пользователям закрыть доступ по ssh
не задавайте вопросов зачем) вот так захотелось... что я сделал для этого:
есть у нас пользователь vasia и я его очень не люблю как админа) я ему делаю такую пакость
в фаил




/etc/ssh/sshd_config

дописываю такие строки

match user vasia PasswordAuthentication no
KbdInteractiveAuthentication no

после этих строк Вася очень нервничает, но что делать, плохой он человек)
успехов вам в закрытии консоли от нежелательных пользователей!

четверг, 22 апреля 2010 г.

Простой BASH скрипт для BACKUP

Вот мне довелось написать малюсенький скриптик чисто для себя и чисто для своего домашнего сервера.

задачи стояли самые простые:
1-сделать бекап баз данных и сайта;
2-удалять бекапы которые уже устарели.

вот собственно скрипт:

#!/bin/bash
filename=`date +%d_%m_%y`.tar.bz2
cd /var/backup
tar cvpjf $filename /var/www/ /var/lib/mysql
countday=10
day=`date +%d`
let "delday = day - countday"
dday=`echo $delday`
dfilename=`printf $dday`_`date +%m_%y`.tar.bz2
rm /var/backup/$dfilename


И конечно же краткое объяснение что и к чему)
буду объяснять построчно:
1-ну с этого начинается баш скрипт, рассказывать нечего
2-этой переменной мы присваиваем значение такое, каким хотим видеть название архива(бекапа). В данном случае это дата бекапа.
3-здесь мы идем в директорию куда хотим сохранять бекапы
4-здесь мы создаем архив тех папок, которых нам нужны бекапы(пишем их через пробел)
5-здесь присваивается значение сколько дней храниться наш бекап
6-10 -это строки что удаляют старые бекапы

Вот впрочем все....
успешных бекапов

и конечно же совсем забыл)
в /etc/crontab добавляем строчку
30 4    * * *   root    /(НАШ СКРИПТ)

где 30 - мин
4-часы
звездочки означают что в любой день в любой месяц
вот теперь все)

четверг, 15 апреля 2010 г.

Q in Q Catalyst


Q-in-Q, так же это называют dot1q tunneling, это система двойного тегирования вланов. То есть, допустим у нас есть канал на некую техплощадку, на которой подключены клиенты, клиенты должны быть изолированы друг от друга с помощью vlan, но транспорт не позволяет обеспечить нужное количество вланов на каждого клиента, а владельцы транспорта дают один влан и как говорится крутись как хочешь. Вот для таких случаев замечательно подходит dot1q тунелирование, когда внутрь одного влана на входе упаковываются вланы, а на выходе транспорта распаковываются. Остается добавить, что не все виды коммутаторов поддерживают Q-in-Q, среди коммутаторов Cisco поддерживают Q-in-Q 35хх, 37xx, 45xx. Среди продуктов D-Link поддерживает Des-3825, тут Q-in-Q называется Double Vlan. И все коммутаторы производства ExtremeNetworks, они называют эту технологию vMan.

Схема коммутации для создания Q-in-Q будет выглядеть так:
net
На сервере (он является маршрутизатором для клиентов) терминируются все клиентские вланы(11,12, 13, 14, 15), порт GigabitEthernet 1/0/1 Switch 1, находится в режиме транка, и имеет такую конфигурацию:
interface GigabitEthernet1/0/1  switchport trunk encapsulation dot1q  switchport trunk allowed vlan 11-15  switchport mode trunk  speed nonegotiate  no cdp enable  spanning-tree bpdufilter enable  spanning-tree bpduguard enable !
Порт GigabitEthernet1/0/2 соенденен со Switch 2 порт GigabitEthernet1/0/1, нужно это для того, что бы отдать пакеты в порт который будет заворачивать весь трафик в Q-in-Q и имеет такую конфигурацию:
interface GigabitEthernet1/0/2  switchport trunk encapsulation dot1q  switchport trunk allowed vlan 11-15  switchport mode trunk  speed nonegotiate  no cdp enable  spanning-tree bpdufilter enable  spanning-tree bpduguard enable !
Порт Switch2 GigabitEthernet1/0/1 находится в режиме Q-in-Q, то есть все приходящие пакеты инкапсулирует во влан 10, и для всех устройств находящихся далее по цепочке виден только один влан, в нашем случае влан 10. А конфигурация порта GigabitEthernet1/0/1 на втором свитче будет такая:
configure terminal
interface GigabitEthernet1/0/1
description -== Q-IN-Q ==-
switchport access vlan 10
switchport mode dot1q-tunnel
switchport nonegotiate no mdix auto no cdp 
enable spanning-tree bpdufilter 
enable spanning-tree 
bpduguard enable
Теперь все приходящее на этот порт будет упаковываться внутрь 10-го влана и соответственно выходить через порт GigabitEthernet1/0/28, его настройки будут такие:
interface GigabitEthernet1/0/28  switchport trunk encapsulation dot1q  switchport trunk allowed vlan 10  switchport mode trunk  speed nonegotiate  no cdp enable  spanning-tree bpdufilter enable  spanning-tree bpduguard enable !
Далее идет оборудование компании предоставляющей транспорт до нашей техплощадки, на схеме это все оборудование обозначено как некое облако, о содержимом которого мы ничего не знаем, да и знать нам не надо.
На удаленной техплощадке наш влан приходит в порт GigabitEthernet1/0/28 Switch3 с конфигурацией идентичной настроенной на Switch 2 порт GigabitEthernet1/0/28.
interface GigabitEthernet1/0/28  switchport trunk encapsulation dot1q  switchport trunk allowed vlan 10  switchport mode trunk  speed nonegotiate  no cdp enable  spanning-tree bpdufilter enable  spanning-tree bpduguard enable !
Трафик приходит на порт GigabitEthernet1/0/28 Switch3 имеющий двойной тег, то есть Q-in-Qшный, теперь его надо распаковать, соответственно порт GigabitEthernet1/0/1 находится в режиме Q-in-Q. Настройки его такие:
interface GigabitEthernet1/0/1 description -== Q-IN-Q ==- switchport access vlan 10 switchport mode dot1q-tunnel switchport nonegotiate no mdix auto no cdp enable spanning-tree bpdufilter enable spanning-tree bpduguard enable
Остался последний свитч Switch4, в который и включаются все клиенты. Со Switch3 он соенденен через порт GigabitEthernet1/0/1 со своей стороны и в GigabitEthernet1/0/1 на Switch3.
Настройки GigabitEthernet1/0/1 на Switch4 такие:
interface GigabitEthernet1/0/1  switchport trunk encapsulation dot1q  switchport trunk allowed vlan 11-15  switchport mode trunk  speed nonegotiate  no cdp enable  spanning-tree bpdufilter enable  spanning-tree bpduguard enable
А настройки клиентских портов будут, для первого клиента во влан 11, порт GigabitEthernet1/0/2:
interface GigabitEthernet1/0/2  description -== FirstClient ==-  switchport access vlan 11  switchport mode access
второго, подключенного в GigabitEthernet1/0/3, и ходящего по 12 влану, такие:
interface GigabitEthernet1/0/2  description -== SecondClient ==-  switchport access vlan 12  switchport mode access
Ну и так далее, идентично для остальных клиентов.
На этом настройка закончена. Остается только добавить, что схему можно немного упростить физически, построив ее на основе 2 свичей вместо 4-х, для этого необходимо соорудить так называемый Q-in-Q Loop. Об этом я расскажу несколько позднее. И совсем необязательно применять для терминации клиентов равнозначные свитчи, им хватит и свитча попроще, но Q-in-Q прийдется строить все равно на базе как минимум Cisco Catalyst 35xx. Причем функция Q-in-Q в них не документирована, но работает.

Option 82 DHCP



Инсталляция и настройка DHCP сервера ISC-DHCP

Будем использовать dhcp-сервер ISC-DHCP (v3). ISC DHCP Server — наиболее распространнённый DHCP-сервер, из использующихся в UNIX/Linux-системах. Для нас сейчас важно и то, что это один из серверов, умеющих распознавать опцию 82.
Будем предполагать, что инсталляция и настройка сервера выполняется в Debian GNU/Linux. Пользователи других систем должны учесть, что процедура инсталляции и местоположение конфигурационных файлов могут несколько отличаться.


[править]Установка DHCP-сервера с поддержкой опции 82

В обычном случае установить откомпилированный DHCP-сервер из репозитория пакетов можно было бы с помощью команды:
%# apt-get install dhcp3-server 
и можно было бы считать, что на этом инсталляция сервера закончена, и можно переходить к его настройке. Однако, в том случае, если предполагается использование DHCP-ретранслятора (что обязательно, если будет использоваться опция 82), может потребоваться сборка пакета с включённой директивой USE_SOCKETS. Подробнее эта процедура описана ниже.


[править]Сборка с включённой директивой USE_SOCKETS

По умолчанию DHCP-сервер ожидает услышать запросы клиентов на широковещательном адрес 255.255.255.255. Однако, когда запрос перенаправляет DHCP-ретранслятор, запрос приходит непосредственно на адрес DHCP-сервера. Для того чтобы DHCP-сервер корректно обрабатывал информацию от DHCP-ретранслятора, его необходимо скомпилировать с использованием директивы
#define USE_SOCKETS  
и указать в конфигурационном файле local-address.
Скачиваем исходники DHCP-сервера:
%# apt-get source dhcp3-server 
Перед началом сборки исходников необходимо установить все пакеты, необходимые для успешной сборки пакета, для чего выполнить:
%# apt-get build-dep dhcp3-server 
Теперь необходимо в файле site.h раскомментировать директиву #define USE_SOCKETS:
%# vi dhcp3-3.0.6.dfsg/includes/site.h 
Перейти в каталог dhcp3-3.0.6.dfsg:
%# cd dhcp3-3.0.6.dfsg/ 
Для того чтобы собрать пакет необходимо выполнить:
%$ dpkg-buildpackage -rfakeroot -b 
или, если сборка производится root'ом:
%# dpkg-buildpackage -b 
После сборки пакеты должны быть установлены в системе (инсталлируем только common и server, так как нам не нужен DHCP-ретранслятор и DHCP-клиент):
%# dpkg -i dhcp3-common_3.0.6.dfsg-1_i386.deb dhcp3-server_3.0.6.dfsg-1_i386.deb  


[править]Настройка DHCP-сервера

Изображение:Dhcp_82.jpeg
Сразу же после инсталляции пакета, сервер может не заработать — сначала необходимо отредактировать его конфигурационный файл /etc/dhcp3/dhcpd.conf.
# Укажите адрес, на который DHCP-сервер ожидает получать запросы (адрес DHCP-сервера)  local-address 192.168.2.9;  # Укажите подсеть интерфейса, на котором запущен DHCP-сервер  subnet 192.168.2.0 netmask 255.255.255.0 { }  # Если сервер получит запрос, содержащий опцию 82, он сгенерирует сообщение в системный журнал #   if exists agent.circuit-id {  log ( info, concat( " Lease for ",                       binary-to-ascii (10, 8, ".", leased-address),                      " Switch port: ",                       binary-to-ascii (10, 8, ".", option agent.circuit-id),                       " Switch MAC: ",                      binary-to-ascii(16, 8, ".", option agent.remote-id))); }  # Запросы, пришедшие с 5го порта коммутатора:  class "port-5" {  match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "5"; }  # Адрес для 5го порта:  pool {   range 192.168.1.55;   allow members of "port-5"; } 
Интерфейс, на котором будет работать DHCP-сервер, передается ему в качестве аргумента при вызове.
В Debian GNU/Linux аргументы и ключи вызова программ принято указывать в соответствующих файлах в каталоге /etc/default, в частности, конфигурационный файл, в котором находятся опции для нашего сервера, называется /etc/default/dhcp3-server.
При условии, что сервер будет слушать запросы на интерфейсе eth0, файл будет выглядеть так:
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth0" 
Можно указать несколько интерфейсов, запросы с которых будет обрабатывать сервер. Они должны быть разделены пробелом.
Теперь можно запускать сервер:
%# /etc/init.d/dhcp3-server start 
После сборки сервера с #define USE_SOCKETS:
udp     0   0 192.168.2.9:67    0.0.0.0:*   863/dhcpd3 udp     0   0 192.168.2.9:67    0.0.0.0:*   863/dhcpd3


Пример конфигурационного файла DHCP-сервера

ddns-update-style none; default-lease-time 600; max-lease-time 7200; log-facility local7; local-address 192.168.2.9; if exists agent.circuit-id {   log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address),   " raw option-82 info is CID: ", binary-to-ascii (10, 8, ".", option agent.circuit-id), " AID: ",  binary-to-ascii(16, 8, ".", option agent.remote-id))); } subnet 192.168.2.0 netmask 255.255.255.0 {         range 192.168.2.20 192.168.2.40;         allow unknown-clients; }  subnet 192.168.1.0 netmask 255.255.255.0 {     class "port-5" {          match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "5";     }     class "port-3" {         match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "3";     }     class "port-45" {         match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "45";     }      pool {         range 192.168.1.155;         allow members of "port-5";     }     pool {         range 192.168.1.133;         allow members of "port-3";     }     pool {         range 192.168.1.45;         allow members of "port-45";     } }

Brctl - оригинальный перевод man


Имя

brctl - управление ethernet-мостом


Синтаксис

brctl [command]


Описание

Программа brctl предназначена для создания, сопровождения и просмотра конфигурации модуля Ethernet-моста birdge в ядре Linux.

Ethernet-мост это устройство используемое для соединения разных Ethernet-сетей между собой так, что эта сеть видится как единая членов сети.

Каждая сеть, участвующая в соединении, соответствует одном интерфейсу, подключённому к мосту. Эти отдельные сети ethernet связываются в большую логическую сеть. Этой сети соответствует сетевой интерфейс моста.

Экземпляры

Команда brctl

addbr

создаёт новый экземпляр ethernet-моста. Сетевой интерфейс, соответствующий этому мосту, будет называться name. Команда brctl
delbr

удаляет экземпляр моста, который называется name. Сетевой интерфейс, соответствующий мосту, нужно сначала выключить, прежде чем удалять этот мост. Команда brctl
show

показывает все экземпляры ethernet-мостов.

Порты

У каждого моста есть подключённые к нему порты. Трафик, который приходит через любой из этих портов, прозрачно отправляется на другие; мост остаётся невидимым для остальной сети (в частности, его не видно через traceroute).

Команда brctl

addif

делает сетевой интерфейс портом моста . Это означает, что все кадры, полученные через интерфейс будут обрабатываться, как если они пришли на этот мост. И наоборот, когда кадр приходит на мост , интерфейс рассматривается как потенциальный порт для отправки трафика. Команда brctl
delif

отключает интерфейс от бриджа .
Команда brctl

show

показывает информацию про мост подключённые к нему порты.

Время жизни

Мост отслеживает какие адреса были на каждом порту. Когда нужно передать кадр, адрес получателя (заданный в кадре) которого был замечен на каком-то порту, он передаётся только на этот порт. В результате не создаётся множество лишних кадров.

Местоположение ethernet это не статические данные. Машины могут переходить на другие порты, сетевые карты могут меняться (и соответственно, будут меняться MAC-адреса) и т.д. brctl

showmacs

показывает список изученных (learned) MAC-адресов для этого моста.
brctl

setageingtime

setgcint

Протокол spanning tree можно выключить совсем (в тех случаях, когда в его использовании нет никакого смысла, например, когда Linux-машина это единственный мост в сети или если если вы уверены, что петель в топологии не будет наверняка). Программа brctl может настраивать некоторые параметры протокола spanning tree. Объяснение, что обозначают эти параметры можно найти в спецификации IEEE 802.1d. Настройки по умолчанию должны хорошо работать в большинстве случаев. Если вы не знаете, что означают эти параметры, скорее всего вы и не захотите их менять.

* brctl stp управляет тем, будет ли мост принимать участие в работе протокола spanning tree (STP). Если состояние это "on" или "yes", STP будет включён; во всех остальных случаях он будет выключен. При выключенной опции мост не будет отправлять или принимать BPDU и не будет никак участвовать в работе протокола spanning tree. Если этот мост не единственный в сети, или если возможны циклы в сетевой топологии, эту опцию выключать не стоит. Опцию нужно отключать, только если точно представляешь, что делаешь. .br
* brctl setbridgeprio устанавливает приоритет моста равным . Параметр priority это 16-битное беззнаковое целое без размерности (число между 0 и 65535). Чем ниже приоритет, тем "лучше". Мост с наименьшим приоритетом будет выбран как корневой. .br
* brctl setfd

* brctl sethello

* brctl setmaxage
* brctl setpathcost задаёт стоимость порта равным . Это метрика без единиц измерений. .br
* brctl setportprio устанавливает приоритет порта 's равным . Значение priority это беззнаковое 8-битное целое (число между 0 и 255) и без единиц измерения. Эта метрика используется при выборе корневого моста (root bridge) и корневого порта (root port).

Замечания

brctl используется вместо старой утилиты brcfg.

Начало

Для начала я ничего полезного не напишу....)
но ничего, это ведь только начало))))