среда, 12 ноября 2008 г.

Монтирование FTP в файловую систему

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

Features:

* SSLv3 and TLSv1 support
* connecting through tunneling HTTP proxies
* automatically reconnection if the server times out
* transform absolute symlinks to point back into the ftp file system

Програмка базируется на FUSE и libcurl, и доступна в universe-репозитории.

Для установки откроем терминал, и наберем следующие:

sudo apt-get install curlftpfs

Для монтирования ФТП-раздела к примеру в папку /media/ftp набираем в терминале следующие:

curlftpfs ftp://[user]:[passwort]@ftpserver.net /media/ftp

После чего можно редактировать, копировать, удалять содержимое раздела с соответствием прав.

Отмонтировать раздел можно привычным umount:
sudo umount /media/ftp

воскресенье, 20 июля 2008 г.

Шифрование всего через SSL

Шифрование отдельного файла
[править] Шифрование

Если нужно зашифровать отдельный файл (к примеру архив или документ) - можно воспользоваться утилитой openssl.

Шифрование файла file будет выглядеть так:

openssl enc -e -aes-256-cbc -k ПАРОЛЬ -in ./file -out ./file.encoded

или так:

cat ./file | openssl enc -e -aes-256-cbc -k ПАРОЛЬ > file.encoded

Параметр -k и пароль можно не указывать, тогда он будет запрошен во время выполнения команды.
[править] Дешифрование

Расшифровать обратно файл можно будет командой:

openssl enc -d -aes-256-cbc -k ПАРОЛЬ -in ./file -out ./file.encoded

(параметр -e меняется на -d) ну или соответственно:

cat ./file.encoded | openssl enc -d -aes-256-cbc -k ПАРОЛЬ > ./file

Параметр -k и пароль можно не указывать, тогда он будет запрошен во время выполнения команды.
[править] Комбинирование (Создание шифрованого архива, разбиение на тома)

Естественно команды можно комбинировать, и к примеру создание архива директории dir со сжатием gzip и шифрованием openssl aes будет выглядеть так:

tar -czf - ./dir | openssl enc -e -aes-256-cbc -k ПАРОЛЬ > archive.tar.gz.encoded

Рашифровываем (в обратном порядке):

openssl enc -d -aes-256-cbc -in ./archive.tar.gz.encoded | tar -xz


Плюс если шифрованный архив надо разбить на куски - добавляем split, все ограничивается только вашей фантазией :)

tar -czf - ./dir | openssl enc -e -aes-256-cbc -k ПАРОЛЬ | split -db 4M - arc

Склеиваем, дешифруем, разжимаем, разворачиваем:

cat arc* | openssl enc -d -aes-256-cbc | tar -xzf -

Вот это я понимаю unix-way! Не то что всякие там rar-ы! ;)

суббота, 15 марта 2008 г.

Переход на нестабильный дебиан

Для перехода надо подключить репозитории Lenni
deb http://mirror.yandex.ru/debian lenny main contrib non-free
Потом
apt-get dist-upgrade

четверг, 17 января 2008 г.

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

Подъём виртуальных bridg интерфейсов для Virtualbox

1. Создаем мост (что это такое так и не вкурил)
sudo /sbin/brctl addbr br0

2. Убираем IP адрес у интерфейса
sudo /sbin/ifconfig eth0 0.0.0.0 promisc

3. Добавляем интерфейс к мосту
sudo /sbin/brctl addif br0 eth0

4. Даем адрес мосту
sudo /sbin/ifconfig br0 192.168.1.74

5. Чтобы работал интернет
sudo /sbin/route add default gw 192.168.1.1

6. Создаем фиктивный интерфейс
sudo /usr/lib/virtualbox/VBoxTunctl -t vbox0 -u

7. Добавляем его к мосту
sudo /sbin/brctl addif br0 vbox0

8. Поднимаем фиктивный интерфейс (одной из команд)
а) sudo /sbin/ifconfig vbox0 192.168.1.75 up
б) sudo /sbin/ifconfig vbox0 192.168.2.75 up

9. В Virtual Box указываем Host Interface и говорим какой интефейс используем - vbox0.

10. Смотрим результат:

Для правильного разрешения экрана, для автоматического захвата мыши, для общего буфера обмена (не заработало, а читать инструкцию и лазить у них по сайту я поленился) можно поставить эти дополнения. Для установки выберите в меню гостевой ОС пункт Устройства / Установить Дополнения гостевой ОС, далее просто подмонтируйте CD-привод. На нем будут лежать файлы для Windows и Linux. Если вы эмулируете Linux, то обязательно пропишите в /etc/X11/xorg.conf

Section "ServerFlags"
Option "Xinerama" "true"
EndSection

Отличная консолька! консоль

Исчезающая в верху консоль
yakuake

Менеджер пакетов APT

Менеджер пакетов APT

Warderer
при участии представителей коллективного разума Линуксфорума:
Vladislav, Topper, zhik, Genie, t.t, clx, ValKov, Demetrio
Версия 2, 2005.11.24

Q: Что такое apt?
A: apt - это Advanced Packaging Tool, система управления пакетами, то есть набор программ для установки, удаления, поиска бинарных пакетов определенных форматов.

Q: В каких дистрибутивах используется apt?
A: apt первоначально был разработан для дистрибутива Debian и формата пакетов deb. Ныне используется во всех клонах Debian (Ubuntu, Kubuntu, Mepis, Xandros), а также в некоторыхх rpm based дистрибутивах (например, в Altlinux).

Q: Какие утилиты входят в состав пакета apt?
apt-cache - средство для работы с кэшами пакетов (например, поиса пакетов по ключевым словам), apt-extracttemplates, apt-sortpkgs, apt-cdrom, apt-ftparchive, apt-key, apt-config, apt-get - средство установки и удаления пакетов, apt-setup

Q: Как обновить список пакетов?
A: apt-get update пройдет по всему списку указанному у вас в /etc/apt/sources.list и обновит списки пакетов по всем репозиториям.

Q: Списки я обновил, как теперь обновить сами пакеты?
A: apt-get upgrade - менее "интеллектуальный" вариант, обновляющий пакеты, которые есть в системе;
apt-get dist-upgrade - более "интеллектуальный" вариант, который следит за тем, не сменили ли пакеты имя и пытающийся обновлять более важные пакеты даже ценой удаления менее важных.

Q: А я не хочу все обновлять, как мне обновить только один пакет?
A: Точно так же, как и установка пакета: apt-get install <пакет>

Q: Как удалить пакет?
A: apt-get remove <пакет>

Q: А после удаления точно ничего от пакета не останется?
A: Для того, чтобы точно не осталось, лучше пользоваться apt-get remove --purge <пакет>

Q: Как мне узнать, как называется пакет для какой-то определенной цели?
A: Попробуйте поиск по ключевым словам при помощи apt-cache search <слова>

Q: Мне принесли компакты дистрибутива, которых у меня не было, как мне их добавить?
A: apt-cdrom add должно помочь

Q: Мне кажется, что меня взломали и что-то сделали с <пакетом>
A: apt-get install --reinstall вернет пакет к изначальному состоянию, то есть такому, какой он был на свежеустановленной системе.

Q: Очень хочется создать локальное зеркало, в какую сторону смотреть?
A: apt-move скорее всего решит полностью вашу проблему, для него достаточно указать, где лежит архив файлов и куда выложить ваше зеркало.

Q: А подробнее про apt-move можно?
А: Можно:
apt-move update - переносит из /var/cache/apt/archives пакеты в директорию локального зеркала (указывается в /etc/apt-move.conf как переменная LOCALDIR=path_to).
По сути apt-move update является выполнением последовательности команд 
$ apt-move get
$ apt-move move
$ apt-move delete
$ apt-move packages
apt-move get - формирует мастер-файл;
apt-move move - переносит пакеты из кэша apt в локальное зеркало;
apt-move delete - удаляет устаревшие пакеты;
apt-move packages - создает Packages.gz и Sources.gz дерева локального зеркала


Q: У меня пакеты все уже удалени из кэша, а друг тоже хочет весь "свежак", который у меня установлен...
A: Простой скрипт, выполненный в пустом каталоге, соберет в нем пакеты, которые установлены в системе:
dpkg --get-selections | \
grep -v "deinstall" | \
awk '{print $1}' | \
xargs dpkg-repack

Q: Есть подозрение, что из-за моих экспериментов в системе много мусора...
A: Попробуйте пакет debfoster, он при первом запуске спросит у вас о необходимости пакетов и удалит все лишнее.

Q: Где по умолчанию лежат пакеты, которые мне скачал apt-get?
A: в /var/cache/apt/archives

Q: Как мне поставить один *.deb пакет в систему?
A: При условии того, что удовлетворены все зависимости, dpkg -i <пакет> приведет к желаемому результату.

Q: Как заставит apt работать через proxy-сервер?
A: Либо установив переменную окружения при помощи 
export "http://login:password@xxx.xxx.x.xx:yyyy"
либо прописав в файл /etc/apt/apt.conf строку 
Acquire::http::Proxy "http://xxx.xxx.xx:yyyy"
где xxx.xxx.xx - имя вашего прокси, yyyy - порт


Q: Я хочу определить в каком пакете необходимый мне файл (например, libodbc.so).
А:
apt-file - утилита поиска по содержимому пакетов.
apt-file update - получает файл Contents-.gz, следует учесть, что исходя из того, что проект Debian довольно большой, то и файл получится соответствующий. apt-file search <файл> - поиск пакета с указанным файлом.
Пример: 
apt-file search libodbc.so
unixodbc: usr/lib/libodbc.so.1
unixodbc: usr/lib/libodbc.so.1.0.0
unixodbc-dev: usr/lib/libodbc.so

 

Q: А как просмотреть полный список содержимого пакета?
А: apt-file list <пакет> - отображает содержимое указанного пакета

Q: Я больше не собираюсь использовать apt-file, а Contents-.gz занимает место на диске.
А: apt-file purge удалить все Contents-.gz.
По поводу дополнительных опций - man apt-file

Q: Как мне найти неиспользуемые (осиротевшие) пакеты?
А: deborphan без указания ключа осуществляет поиск в разделе библиотек, с указанием ключа -a поиск ведется во всех разделах. Имеется и интерфейс к deborphan - orphaner, поставляются в одном пакете.

Q: есть локальный репозиторий из дистрибутивных дисков. Packages.gz сделал, а вот как сделать Contents-.gz для того, чтобы apt-file'ом можно было пользоваться?
A: 
apt-ftparchive contents . | gzip > Contents-i386.gz
также с помощью apt-ftparchive можно создавать Sources.gz и Packages.gz 
apt-ftparchive sources . | gzip > Sources.gz
apt-ftparchive packages .| gzip > Packages.gz

Q: хочется создать дистрибутив некоторых выбранных пакетов и залить его на болванки. При этом хочется поместить на болванки и пакеты, не установленные в моей системе. Как это объяснить apt-move?
A: Вариант номер один - посмотреть в сторону jidgo, возможно, он вас устроит, вариант номер два - получить недостающие пакеты, но не устанавливать их в систему с помощью аpt-get install -d <пакеты>.

Q: У меня стоит мешанина из stable, testing, unstable и даже кое-что из experimental установил. Как мне сделать, чтобы все в таком виде и обновлялось?
A: Чтобы этого добиться, поместите следующую строку в /etc/apt/apt.conf: 
 
APT::Default-Release "testing";
Затем, при установке пакетов из, например, нестабильного дистрибутива, просто используйте ключ -t: 
$ apt-get -t unstable install имя_пакета

Синхронизация времени в Debian

Ставим пакет
ntpdate
Потом делаем
ntpdate-debian
Смена часового пояса через
tzselect
или
tzconfig - вот это! Первое что то не то!
вроде второе вернее

воскресенье, 13 января 2008 г.

TV-тюнер avertv cardbus plus

Начинаем эпопею с ноутбучным pcmci ТВ тюнером.
Тюнер основан на чипе
Philips Semiconductors SAA7133/SAA7135 Video Broadcast Decoder (rev d1)
Посмотреть что у нас можно командой lspci
После этого необходимо подгрузить модули ядра (команда modconf) наиболее соответствующие нашей карте по чипу.
В моем случае это saa7134
Раздел kernel/drivers/media/video/saa71
После этого в /dev появится устройство video0 и dsp1
это интерфейсы тюнера.
Есть одна особенность. При инициализации тюнера должно включаться его питание, о чём свидетельствует синяя лампочка. Пока это не случиться карточка при выполнении скана эфира не будет ничего видеть.
Для правильного включения тюнера надо либо в /etc/modprobe.conf либо /etc/modprobe.d/saa1734
надо записать параметры инициализации модуля

options saa7134 card=46 tuner=12 alsa=1
options tda9887 secam=d
install saa7134 /sbin/modprobe tda9887; /sbin/modprobe --ignore-install saa7134; /sbin/modprobe saa7134-alsa && /usr/sbin/alsactl restore >/dev/null 2>&1 || : remove saa7134-alsa { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove saa7134-alsa

Сохраняем.
После перезагрузки компьютера и загрузки модуля на тюнере загорится синяя лампочка. После этого с помощью программы
tvtime
уже можно смотреть телевизор. У меня правда работает только чернобелый режим, с этим пока не разобрался увы.
tvtime-scanner - запускает скан эфира

Звука тоже нет. Радио не работает, и пульт бесполезен)
Звук удалось получить с помощью пробрасывания при отключенной звуковой системы звука напрямую со звукового выхода тюнера на вход компьютера.
ставим программу sox
далее командуем
sox -c 2 -s -w -r 32000 -t ossdsp /dev/dsp1 -t ossdsp -w -r 32000 /dev/dsp

в теории можно поставить звуковой сервер и правильно всё закомутировать. Перед выполнением команды надо отключить звуковую систему. иначе будет ругаться на занятые устройства.
Еу вот пока что всё.
Всё гениальное просто! Не надо отключать звуковую систему! вот так правильно...
play -c 2 -s -w -r 32000 -t ossdsp /dev/dsp1

пятница, 11 января 2008 г.

Излечение бага парковки головок в ubuntu

Запускаем команду

sudo smartctl -a /dev/sda | grep Load_Cycle

и смотрим сколько раз у нас уже происходила реинициализация. В моём случае это 67171 (столько натикало фактически за пару недель, работы в Gutsy со щелчками). У каждого жесткого диска заявленное максимальное количество реинициализаций разное, но в среднем это от 200 000 до 600 000. Так что делайте выводы.

Решение для меня такое:
Редактируем /etc/hdparm.conf, добавляем в него следующие строки:

/dev/sda {
apm = 255
spindown_time = 0
}

Затем

sudo update-rc.d hdparm defaults

чтобы эти изменения применялись после каждого ребута.

Это эквивалентно выполнению следующих команд:

hdparm -B255 /dev/sda
hdparm -S0 /dev/sda

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

четверг, 10 января 2008 г.

Чистые ссылки в Apache2

Сперва скопировать rewrite.load из /etc/apache2/mods-availabl в /etc/apache2/mods-enabled
а httpd.conf должен выглядеть примерно так

Alias /www /home/accura/www


AllowOverride All
RewriteEngine on
RewriteBase /www
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
AllowOverride All




Alias /phpmyadmin /var/www/phpmyadmin

AllowOverride All

среда, 9 января 2008 г.

DNS прокси

PDNSD – это маленький кэширующий сервер доменных имен идеальный для наших условий потому как:


1.

Не требователен к ресурсам
2.

Очень быстр
3.

Прост в настройке
4.

Надёжен
5.

Штатно хранит кэш на диске
6.

Постоянно развивается и дорабатывается


Домашняя страница проекта http://www.phys.uu.nl/~rombouts/pdnsd.html . Пакеты для своего дистрибутива вы можете найти на http://rpm.pbone.net .


И так, ставим пакет: urpmi -a pdnsd


Идём в / etc и редактируем файл pdnsd.conf


В секции global описываются глобальные параметры

global {

debug=on;

Включаем режим отладки (на время тестирования потом установить в off)

verbosity=2;

Детализация отладки (2 вполне достаточно)

perm_cache=8192;

Максимальное количество постоянно хранящихся в кэше

cache_dir="/ opt / pdnsd / var / cache / pdnsd";

Путь где будут находиться pdnsd.cache и pdnsd.debug (файлы должны существовать)

pid_file = / var / run / pdnsd.pid;

Путь к к pid файлу

run_as="pdnsd";

Включаем параноидальный режим (подробности man pdnsd.conf)

paranoid=on;

Разрешаем запрсы по tcp и udp

query_method=tcp_udp;

Минимальное время жизни записи в кэше в секундах (2 недели многовато но при условии GPRS самое оно)

min_ttl=1209600;

Максимальное время жизни записи (1 месяц, комментарий тот же)

max_ttl=2419200;

Таймаут операций (1на минута, опятьже исходя из GPRS)

timeout=60;

}


Локальные источники:

source {

Время жизни в кэше

ttl=1209600;

Родительский домен

owner="sadnet.lo";

Поддержка альясов

serve_aliases=on;

Файл источник в формате hosts (может быть указано несколько источников путём дублирования секции).

file="/etc/hosts";

}


Внешние источники

server {

Название источника (задать произвольно)

label="dns-1";

Список внешних адресов DNS серверов (желательно указать DNS вашего провайдера)

ip=

81.211.47.1,

193.124.83.69;

Таймаут ответа источников (1 минута для ГПРС самое оно)

timeout=60;

Не проверять источник (значительно экономит трафик, если у вас хороший канал установите uptest=ping)

uptest=none;

Разрешаем кэширование

caching=on;

Только проксируем (запрещает экспорт собственных зон)

proxy_only=on;

}


Описание прямой и обратной локальных зон (если нет собственного реального домена и не требуется поддержка экспорта данных во вне, достаточно указать прямые зоны для localhost и вашдомен.lo)


rr {

name=localhost;

reverse=on;

a=127.0.0.1;

owner=localhost;

soa=localhost,root.localhost,42,86400,900,86400,86400;

}


rr {

name = sadnet.lo;

a = 10.0.0.254;

}


Вот во общем-то этого и хватит для начала. перезапускам pdnsd (service pdnsd restart).

Если Все настроено верно то nslookup <имя сервера> вернёт ip адрес.


P.S. В следующий раз расскажу, как организовать динамическое обновление имен машин локальной сети в DNS из WINS.

суббота, 15 декабря 2007 г.




Молния
А что в логах сервера и клиента во время невозможности переподключения? Если там нет ничего интересного - увеличьте параметр verb

Добавление от 27.06.2007 05:57:

islink
Вот скрипт аутентификации auth.vbs. Использование:

В конфиге клиента указать:
auth-user-pass

В конфиге сервера указать:
auth-user-pass-verify "auth.vbs" via-file
У процесса openvpn.exe должно хватать прав для создания временного файла в текущем каталоге, скорее всего это будет "c:\Program Files\OpenVPN\config"

Вероятнее всего там же, в "c:\Program Files\OpenVPN\config" надо положить файл users.pw (если не там или иное имя - изменить это в скрипте). Файл состоит из требуемого количества пар строк:
имя
пароль
Между этими парами пустые строки (именно абсолютно пустые) игнорируются. Например:

код
user01
pass01
user02
pass02

TEST-client01
1

example_of_user_with_blank_password

user03
pass03

Вот сам скрипт auth.vbs:
код (во всю высоту: 55 строк)
'VBscript auth.vbs для аутентификации в OpenVPN - auth-user-pass-verify auth.vbs via-file
'(c) 2007 vinni http://forum.ixbt.com/users.cgi?id=info:vinni
'Support: http://forum.ixbt.com/topic.cgi?id=14:40906#1

' в скрипте производится сравнение имени пользователя без учёта регистра.
' Если нужно иначе - уберите UCase(...) в 2 или 4 местах

On Error Resume Next

' открываем файл, имя которого передано OpenVPN-ом в скрипт через параметр
Set fso = CreateObject("scripting.filesystemobject")
Set CurrentUserPasswordFile = fso.OpenTextFile(WScript.Arguments(0),1) '1 = for reading
if Err.Number<>0 Then WScript.Quit(1)

' читаем из этого файла 2 строки - имя и пароль, которые ввёл пользователь "на том конце"
if CurrentUserPasswordFile.AtEndOfStream then WScript.Quit(1)
UserName=CurrentUserPasswordFile.ReadLine
if CurrentUserPasswordFile.AtEndOfStream then WScript.Quit(1)
Password=CurrentUserPasswordFile.ReadLine
CurrentUserPasswordFile.Close

' открываем переменную окружения common_name (это CN предъявленного клиентом сертификата)
' и сравниваем её с введенным именем пользователя.
' если это сравнение не нужно, то следующие 2 строки удалить или закомменировать
CurrentCommonName = CreateObject("Wscript.Shell").ExpandEnvironmentStrings("%common_name%")
if UCase(CurrentCommonName) <> UCase(UserName) then WScript.Quit(1)

' открываем наш файл с базой логинов и паролей
' по умолчанию это Users.pw в текущем каталоге
Set UserPasswordFileBase = fso.OpenTextFile("Users.pw",1) '1 = for reading
if Err.Number<>0 Then WScript.Quit(1)

' читаем в цикле пары строк, пропуская пустые МЕЖДУ ЭТИМИ ПАРАМИ,
' и сравниваем их с тем, что ввёл пользователь.
Do while not(UserPasswordFileBase.AtEndOfStream)
NextUserName=UserPasswordFileBase.ReadLine
if Err.Number<>0 Then WScript.Quit(1)
if NextUserName<>"" then
' если имя пользователя надо сравнивать с учётом регистра, то удалите здесь UCase(...)
if UCase(UserName)=UCase(NextUserName) then
if Password=UserPasswordFileBase.ReadLine then
' если имя и пароль совпали с парой из базы, то завершаем скрипт с результатом 0
' так нужно для OpenVPN'a, это признак успешной аутентификации
UserPasswordFileBase.Close
WScript.Quit(0)
end if
else
UserPasswordFileBase.ReadLine
end if
end if
Loop

' если поиск завершился безуспешно, то завершаем скрипт с результатом 1
' так нужно для OpenVPN'a, это признак НЕуспешной аутентификации
UserPasswordFileBase.Close
WScript.Quit(1)

Опция для пропуска по common name в Openvpn

Переведи всех на сертификаты и используй crl, например. Еще один вариант, есть
опция ccd-exclusive, если файла с именем пользователя нет в ccd-подкаталоге, то
доступ ему запрещается, если есть - то там могут быть дополнительные настройки
(но могут и не быть - пустого файла достаточно чтоб пускало). Hо crl действует
на момент обновления ключей (то есть и в начале сессии и в середине),
ccd-exclusive - только в начале, то есть что делать с теми, кто уже соединился,
надо решать отдельно.

суббота, 8 декабря 2007 г.

Настройка сети в Virtualbox

Настройка сети

Если нам нужно использовать для настройки сети не NAT, а host interface с явным IP адресом, то нужно проделать следующие операции. Договоримся, что все команды будем отдавать из-под пользователя root, а не из под sudo. Так как последняя команда не пройдёт из-под sudo.

Первым делом нам понадобится пакет bridge-utils. Далее создаём файл /etc/sysconfig/network-scripts/ifcfg-br0 следующего содержания:

DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes

Добавляем в файл /etc/sysconfig/network-scripts/ifcfg-eth0 последней строкой BRIDGE=br0 и перезапускаем сеть

/etc/init.d/network restart

После этого отдаём команду

VBoxAddIF vbox0 пользователь(из-под которого будет запускаться VirtualBox) br0

Осталось только выбрать в настройках сети вместо NAT хост-интерфейс и в поле “Имя интерфейса” указать vbox0. Последнюю команду судя по всему придётся пускать каждый раз после перезагрузки системы (не гостевой).

воскресенье, 2 декабря 2007 г.

Скрипты для создания SSL сертификатов Под Openvpn сервер

Для сервера
-------------------------------------------------------------------------------------------------------
#!/bin/sh
#cp /etc/ssl/openssl2.cnf ./openssl.cnf
vim openssl.cnf
touch serial
echo 01 > serial
mkdir crl newcerts private
touch index
echo -n "введите имя хоста(Имя сгенерированного сертификата) "
read HOST
echo -n "введите имя сервера(Имя Linux компьютера) "
read MOST
export MOST="$MOST"
openssl req -new -nodes -config openssl.cnf -x509 -keyout private/ca-key.pem -out ca-cert.pem -days 3650
openssl genrsa -out $HOST.key
openssl req -new -nodes -config openssl.cnf -key $HOST.key -out $HOST.csr
openssl ca -batch -config openssl.cnf -in $HOST.csr -out $HOST.cert
openvpn --genkey --secret ta.key
openssl dhparam -out dh1024.pem 1024
mkdir $HOST
cp $HOST.* $HOST
cp ca-cert.pem $HOST
cp ta.key $HOST
cp dh1024.pem $HOST
rm $HOST.*


--------------------------------------------------
Для клиента
--------------------------------------------------
#!/bin/sh
#cp /etc/ssl/openssl2.cnf ./openssl.cnf
#vim openssl.cnf
echo Сколько сертификатов делать?
read CEND
SU=1
MOST=0
#export MOST="$MOST"
mkdir ./client-sert
while test $MOST -lt $CEND
do
MOST=$SU
export MOST="$MOST"
openssl genrsa -out client_$MOST.key
openssl req -new -nodes -config openssl.cnf -key client_$MOST.key -out client_$MOST.csr
openssl ca -batch -config openssl.cnf -in client_$MOST.csr -out client_$MOST.cert
mkdir ./client-sert/$MOST
mv ./client_$MOST.* ./client-sert/$MOST
cp ./dh1024.pem ./client-sert/$MOST
cp ./ta.key ./client-sert/$MOST
cp ./ca-cert.pem ./client-sert/$MOST
let SU=$MOST+1
done
echo Всё готово

-----------------------------------------------------------------------------------------------------------------------
Необходимо немного отредактировать файл openssl.cnf
В моём пакете используется уже отредактированный и адоптированный файл конфигурации.

Создание Deb пакета

dpkg --build DIRECTORY ovpncreat.deb
Необходим файл ./DEBIAN/control
в нём описываются данные о пакете
После первого слова обозначающего раздел описания ставим двоеточию.
Система сама скажет чего ей не хватает в этом файле.

четверг, 29 ноября 2007 г.

Включение звука и wifi в ноутбуке Acus A6RP Включение mp3 в kubunta и настройка впн.

Накопилось много не записанной информации. Включение звука и wifi в ноутбуке Acus A6RP Включение mp3 в kubunta и настройка впн.

Во первых включение звука на ноутбуке asus A6RP.
Проблема данной модели в отсутствии специфичного драйвера. Но для работы звука можно использовать стандартный выявляемый по умолчанию драйвер snd-hda-intel. Данный драйвер необходимо подстроить указав в файле /etc/modprobe.d/alsa-base (это для ubunta, в red-hat дистрах в другом месте а в мандриве вообще в мандривовском дрейке)
Так вот нужно прописать в вышеуказанном конфиге или просто прописать следующие параметры options snd-hda-intel model=uniwill-m31 (как видите важно указать модель карты, что по неизвестной причине автоматически определяется неправильно)
Всё после перезагрузки будет работать звук, правда только через встроенные динамики так как внешний выход как то не врубается. Микрофон и линейный вход не пробовал но всёже лучше чем ничего/

Для поднятия звука в полном объёме с наушникаи и всем всем всем надо скачать c
http://www.alsa-project.org/
последнею версию alsa-drivers скомпилить и поставить(она попросит заголовки ядра и компилятор для компиляции). В моём случае версия алсы была 1.0.0.14rs4 а вместо hda-intel model=uniwill-m31
пишем hda-intel model=asus
У меня всё заработало!


Во вторых для ноута asus A6RP для включения wi-fi необходимо подсунуть системе бинарный драйвер от виндузов. Основная сложность надо знать как он называется.
BCMWL5.sys
А лежит он в папке windows/system32/drivers
Но всё просто в мандриве. В ней вам автоматически предложат указать на файл драйвера.

В ubunta всё несколько сложнее. Придётся прикручивать специальную програмулину для поднятия вайфайных нестандартных дров.
Для начала скачаем по адресу
http://boredklink.googlepages.com/wl_apsta.o
файл wl_apsta.o
После чего установим bcm43xx-fwcutter
sudo apt-get install bcm43xx-fwcutter
После чего командой
sudo bcm43xx-fwcutter -w /lib/firmware ~/Desktop/wl_apsta.o
скопируем через программу данные из ранее скаченного файла wl_apsta.o (в данном случае он у меня лежал на рабочем столе) в папку прошивок.
Далее делаем
sudo bcm43xx-fwcutter -w /lib/firmware/`uname -r` ~/Desktop/wl_apsta.o

В принципе всё. После данного шаманства и махания бубном карточка завелась и нормально работает. Дальнейшее управление производиться стандартными убунтовскими средствами.



Включение в кубунте проигрывания mp3 после установки.
просто
apt-get install libxine-extracodecs




Дальнейшая информация только для меня и касается она настройки доступа в инет по впн, в моей сетке.
Устанавливаем клиент для ВПН pptp
sudo apt-get install pptp-linux
Меняем содержимое двух файлов
В options.pptp
пишем
lock noauth nobsdcomp nodeflate

И создаём файл с настройками впн подключения, который пихаем в
/etc/ppp/peers/

а в нём пишем
pty "pptp 192.168.0.3 --nolaunchpppd"
name имя пользователя
remotename PPTP
#require-mppe-128
file /etc/ppp/options.pptp
ipparam i-net

Ну и канешна прописываем в chap-secrets
логин и пароль юзера
Ну дальше по необходимости прописываем шлюзы и т.п.

Включаться ВПН будет по команде
sudo pon i-net
(будет создано соединение ppp0
ну и последний штришок указание впн подключения дефолтным
sudo route add default ppp0
данная штука указывает соединение дефолтным. Можно конечно прописать в конфиге впн подключения чтобы ppp0 было автоматом дефолтным но я так не люблю.
Выключение делаем по команде
sudo poff i-net

Настройка раскладок и смены языков в XORG+индикатор

Добавить в Xorg.conf

Option "XkbLayout" "us,ru"
Option "XkbVariant" "basic,winkeys"
Option "XkbOptions" "grp:ctrl_shift_toggle"

Индикатор включенного языка называется
kkbswitch

Создание OpenSSL Сертификатов для Openvpn

Сперва необходимо подготовить почву

Отредактировать файл openssl.cnf
Необходимо подправить дефолтные настройки сертификатов(чтоб не забивать каждый раз руками, и ОБЯЗАТЕЛЬНО увеличить срок действия сертификата)

Создаем файл /usr/local/openssl/serial c содержимым '01'

# touch serial
# echo 01 > serial


Создаем каталоги /crl, /newcerts, /private

# mkdir crl newcerts private


Для каталога private, в целях безопастности частного ключа сервера,
рекомендую установить права только для пользователя root

# chmod go-rwx private


Создаем пустой файл /usr/local/openssl/index:

# touch index


И наконец создаем сертификат CA

openssl req -new -nodes -x509 -keyout private/CA_key.pem -out CA_cert.pem -days 3650

Команда req заставляет OpenSSL создать сертификат, ключи: -new - cоздать запрос на сертификат, -nodes - не шифровать закрытый ключ, -x509 (совместно с -new) - создать самоподписной сертификат (CA), -keyout - задает местонахождение закрытого ключа, -out - задает местонахождение самоподписного сертификата, -days - задает время действия сертификата (365x10 дней, что приблизительно равно десяти годам). В процессе выполнения команды на экран будут выданы запросы о вводе таких параметров как: Country Name, State or Province Name; Locality Name; Organization Name; Organizational Unit Name; Common Name; Email Address. Самым важным параметром является значение Common Name. В данном случае оно должно совпадать с FQDN-именем сервера.

Теперь, когда мы имеем CA, мы можем создавать сертификаты и ключи для
машин, образующих туннель. Вместо host_x и client_x рекомендую
указывать осмысленное имя вашей машины-сервера и клиентов, что бы потом
не запутаться самому.

Сгенерируем частный ключ для сервера, его настоятельно рекомендуется
хранить в тайне:

# openssl genrsa -out host_x.key


Генерируем сертификат:

# openssl req -new -nodes -key host_x.key -out host_x.csr
# openssl ca -batch -config openssl.cnf -in host_x.csr -out host_x.cert


Теперь повторим то же самое, но только для клиента:

# openssl genrsa -out client_x.key
# openssl req -new -nodes -key client_x.key -out client_x.csr
# openssl ca -batch -config openssl.cnf -in client_x.csr -out client_x.cert


И в конце создаем ключик ta.key. Этот ключ используется для
предотвращения DoS атак и UDP port flooding

# openvpn --genkey --secret ta.key


Таким образом мы получили подписанный нами же сертификат X.509.
Необходимо повторить эти действия для всех имеющихся у нас машин.


Далее создать ключ Диффи Хельман
# openssl dhparam -out dh1024.pem 1024