18.01.2008

Google Error

Няколко пъти вече чета при Ясен за това как повечето новости в Google не му харесват и ще се преонриентира към друга търсачка, но досега общо взето не споделях мнението му.
Преди малко обаче това много ме издразни:

google error

Ефекта се получава само при излизане от определен ip адрес. Информация обаче защо Google са го филтрирали няма. Няма въобще и никаква друга информация относно това съобщение, поне аз не намерих такава. От отделни форуми където и други хора са обсъждали същата ситуация може само да се гадае каква е причината.

12.01.2008

Netscape е мъртъв, да живее Firefox!

На 1-ви февруари тази година AOL спира поддръжката на Netscape. За браузъра съществуващ от 1994 г. няма да излизат нови версии, а ъпдейти и кръпки за старите няма да се разработват. Това на практика означава, че Netscape спира да съществува. Разработчиците съветват потребителите да преминат на Firefox, а носталгично настроените да го ползват с инсталирана тема наподобяваща Netscape.
Замисляйки се аз лично никога не съм бил фен на Netscape. Освен при първите ми сблъсъци с Линукс, когато го ползвах върху Red Hat 7/8 впоследствие винаги съм предпочитал Opera или Mozillla и след това Firefox. Също така си спомням и многобройните часове прекарани в мъки да се подкара някой сайт да изглежда нормално под Netscape 4, въпреки че за последното доста от проблемите да са били и в мен самия и недодяланите ми познания по HTML.
След придобиването на Netscape от AOL браузърът все повече и повече изпадаше в немилост. Неофициално той отдавна вече е мъртъв и тази новина рано или късно се очакваше. Netscape си отива, за да остави конкурентите на Internet Explorer с един по-малко, но и с един в повече.
Netscape Communications бяха едни от първите по-големи производители на софтуер, които отвориха кода на продукта си и това е и една от причините днес да имаме Firefox. Отива си един гигант, който в средата на 90-те се радваше на потребление от 90% сред браузърите.
Netscape е мъртъв, да живее Firefox!

6.07.2007

Openswan: The Internet as a big subnet

Ако решите да свързвате две отдалечени точки с openswan ползвайки NETKEY по начина описан тук, то конфигурацията би следвало да е нещо такова:

точка 1

conn main
    left=a.b.c.d
    leftsubnet=0.0.0.0/0
    leftsourceip=192.168.1.1
    leftnexthop=
    leftrsasigkey=
    right=w.x.y.z
    rightsubnet=10.1.10.0/24
    rightsourceip=10.1.10.1
    rightnexthop=
    rightrsasigkey=
    auto=start

точка 2

conn main
    right=a.b.c.d
    rightsubnet=0.0.0.0/0
    rightsourceip=192.168.1.1
    rightnexthop=
    rightrsasigkey=
    left=w.x.y.z
    leftsubnet=10.1.10.0/24
    leftsourceip=10.1.10.1
    leftnexthop=
    leftrsasigkey=
    auto=start

По този начин най-вероятно ще се сблъскате с два проблема. Първият, е че при тази конфигурация в точка 2 openswan-а ще праща всичко през тунела, включително и заявките на компютрите от подмрежа 10.1.10.0/24 към 10.1.10.1. Вторият проблем е, че най-вероятно връзката между подмрежите от двете страни ще е толкова бавна, че няма да можете да достъпвате почти нищо. Причината е, че пакетите между двете модмрежи се фрагментират. Пускайки tcpdump на външния интерфейс на която и да е от двете точки ще видите много съобщения като това:
IP 10.1.10.1 > 10.1.10.27: ICMP 192.168.1.1 unreachable - need to frag (mtu 1428), length 55
И двата проблема се разрешават като се добави следната нова връзка в конфигурацията на точка 2:

conn passthrough
    right=192.168.1.1
    rightsubnet=10.1.10.0/24
    left=10.1.10.1
    leftsubnet=10.1.10.0/24
    type=passthrough
    authby=never
    auto=route

15.04.2007

Удостоверяване на потребител в Apache към Microsoft Active Directory

Ако трябва да правим удостоверяване към Apache сървър работещ под линукс в Windows базирана мрежа използването на вече съществуващите акаунти на потребителите в активната директория на Windows сървъра ще улесни потребителите ни и няма да се налага да ги караме да помнят по две или повече потребителски имена и пароли. Тук ще опиша как може да стане това.
Конфигурациите по-долу са тествани на Ubuntu 5.10 Breezy Badger и Fedora Core release 6 (Zod). Ползвана е инсталация на Microsoft Windows Server 2003 Enterprise Edition Service Pack 1 с инсталиран Microsoft Exchange Server 2003 Service Pack 2. Командите и конфигурациите важат за Ubuntu 5.10 Breezy Badger, но не би трябвало да има проблем да се пригодят и за други дистрибуции.

ToDo: Да се тества дали конфигурациите работят към Windows 2000 Server.

Вариант I - ползване на mod_auth_ldap

Инсталираме си apache и openldap, ако нямаме вече инсталирани:

apt-get install apache2 libldap2

За да позволим удостоверяване, във файла ‘/etc/apache2/sites-enabled/000-default’ в секцията ‘<Directory /var/www/>’ трябва да променим реда ‘AllowOverride None’ на ‘AllowOverride AuthConfig None’.
Активираме mod_auth_ldap в конфигурацията на apache:

cd /etc/apache2/mods-enabled/
ln -s /etc/apache2/mods-available/auth_ldap.load

Създаваме директория, за която ще искаме удостоверяване:

mkdir /var/www/ldap_test

и я описваме в конфигурацията на apache:

touch /etc/apache2/conf.d/ldap_test

Файлът ‘/etc/apache2/conf.d/ldap_test’ трябва да съдържа следното:

<Directory /var/www/ldap_test>
    AuthType Basic
    AuthName “LDAP”
    AuthLDAPURL ldap://ldap.domain.com:3268/DC=domain,\
DC=com?samAccountName?sub?(objectClass=*)
    AuthLDAPBindDN DOMAIN\username
    AuthLDAPBindPassword password
    Require valid-user
</Directory>

Директивата ‘AuthLDAPURL’ ни дава адреса на ‘LDAP’ сървъра, като съответно трябва да замените ‘ldap.domain.com’ със хоста на Windows сървъра, а също така и ‘DC=domain’ и ‘DC=com’ със тези във вашата структура. За директивата ‘AuthLDAPBindDN’ ползвайте активен акаунт в MS Active Directory, като синтаксиса е от вида DOMAIN\username, а за директивата ‘AuthLDAPBindPassword’ - паролата на акаунта. Последните две са нужни, защото активната директория не позволява анонимни връзки. За порт ползвайте 3268 - порта на Global Catalog-а, защото при използването на стандартния LDAP порт 389 активната директория връща препратки, с които има проблеми.
След рестартиране на Apache-то:

/etc/init.d/apache2 restart

вече всичко би трябвало да работи и адреса “http://the_linux_box/ldap_test” да ни удостовери с валиден потребител към активната директория.

За да използваме удостоверяване по принадлежнаст към група, трябва да направим следните промени в конфигурацията - закоментираме или махаме директивата ‘Require valid-user’ и я заменяме със следното:

Require group cn=GroupName,cn=Users,dc=domain,dc=com

където ‘GroupName’ е името на групата, а domain и com заменяте с тези във вашата структурата.
Горното поради някаква причина не работи за потребители, за които дефинираната група е ‘Primary Group’. По подразбиране в активната директория ‘Primary Group’ е ‘Domain Users’. Също така то не работи и ако потребителят не е член директно на групата (например член е на група, която от своя страна е член на дефинираната група).

ToDo: Да се провери за възможност горните проблеми да се преодолеят.

Ако искаме да удостоверяваме към група Administrators синтаксисът е по-различен, тъй като тя се намира в Builtin структурата на активната директория:

Require group CN=Administrators,CN=Builtin,DC=domain,DC=com

Вариант II - ползване на mod_auth_pam

Инсталираме libapache2-mod-auth-pam и libpam-ldap, ако нямаме вече инсталирани:

apt-get install libapache2-mod-auth-pam libpam-ldap libnss-ldap

Създаваме директория, за която ще искаме удостоверяване:

mkdir /var/www/pam_test

и я описваме в конфигурацията на apache:

touch /etc/apache2/conf.d/pam_test

Файлът ‘/etc/apache2/conf.d/pam_test’ трябва да съдържа следното:

<Directory /var/www/pam_test>
    AuthPAM_Enabled on
    AuthType Basic
    AuthName “PAM”
    Require valid-user
</Directory>

Във файла ‘/etc/pam.d/apache2′ закоментираме всичко и добавяме следните два реда:

auth required pam_ldap.so
account required pam_permit.so

Във файла ‘/etc/pam_ldap.conf’ закоментираме всичко и добавяме следните редове:

host ldap.domain.com
base dc=domain,dc=com
binddn username@domain.com
bindpw password
port 3268
scope sub
pam_filter objectclass=*
pam_login_attribute sAMAccountName

Конфигурацията е аналогична с варианта с mod_auth_ldap. ‘host’ трябва да сочи към Windows хоста, ‘binddn’ и ‘bindpw’ съдържат активни потребителско име и парола от активната директория, като потребителското име е от вида ‘username@domain.com’. За порт пак ползваме порта на Global Catalog-а.
След рестартиране на Apache-то:

/etc/init.d/apache2 restart

вече всичко би трябвало да работи и адреса “http://the_linux_box/pam_test” да ни удостовери с валиден потребител към активната директория.

ToDo: Да се провери за възможност да се имплементира аутентикация по принадлежност към група.

Вариант III - ползване на mod_auth_kerb

За да ползваме удостоверяване чрез Kerberos първо трябва да направим няколко неща на Windows сървъра.
Първото нещо е да добавим хоста на Apache сървъра към DNS-а на Windows сървъра. Трябва да създадем A-запис за линукс машината, например ubuntu.domain.com, който да сочи към IP адреса на Apache сървъра. След това трябва да създадем т.н. kerberos ticket, с който ще извършваме аутентикацията. Командата, която трябва да изпълним в Windows от команден ред е следната:

ktpass -princ HTTP/ubuntu.domain.com@DOMAIN.COM -mapuser DOMAIN\username -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass password -out C:\keytab

Съответно заменяме ‘ubuntu.domain.com’ и ‘DOMAIN.COM’ с тези в нашата структура, а за ‘DOMAIN\username’ и ‘password’ използваме активен потребител от активната директория. След това трябва да копираме файла keytab някъде на линукс машината, например в ‘/etc/apache2/auth’ и да рестриктираме правата върху него, така че само Apache сървъра да има достъп:

chown www-data.www-data /etc/apache2/auth/keytab
chmod 400 /etc/apache2/auth/keytab

На Apache сървъра инсталираме mod-auth-kerb и krb5-config, ако вече нямаме инсталирани:

apt-get install libapache2-mod-auth-kerb krb5-config

Файлът ‘/etc/krb5.conf’ трябва да съдържа следното:

[libdefaults]
    default_realm = DOMAIN.COM
[realms]
    DOMAIN.COM = {
        admin_server = kdc.domain.com
        kdc = kdc.domain.com
    }

Като трябва да замените ‘DOMAIN.COM’ с името на домейна във вашата структура, а вместо ‘kdc.domain.com’ да сложите хоста на Windows сървъра.

Създаваме директория, за която ще искаме удостоверяване:

mkdir /var/www/krb_test

и я описваме в конфигурацията на apache:

touch /etc/apache2/conf.d/krb_test

Файлът ‘/etc/apache2/conf.d/krb_test’ трябва да съдържа следното:

<Directory /var/www/krb_test>
    AuthType Kerberos
    AuthName “KERBEROS”
    KrbServiceName HTTP
    KrbMethodNegotiate On
    KrbMethodK5Passwd On
    KrbAuthRealms DOMAIN.COM
    Krb5KeyTab /etc/apache2/auth/keytab
    require valid-user
</Directory>

като съответно заменяме ‘DOMAIN.COM’ с нашия домейн.
След рестартиране на Apache-то:

/etc/init.d/apache2 restart

вече всичко би трябвало да работи и адреса “http://the_linux_box/krb_test” да ни удостовери с валиден потребител към активната директория.

ToDo: Да се провери за възможност да се имплементира аутентикация по принадлежност към група.

Вариант IV - ползване на mod_auth_imap

Това не е точно удостоверяване към активната директория, защото се прави удостоверяване към IMAP сървъра на Windows-а, но може да свърши работа, ако имаме инсталиран Microsoft Exchange Server и потребителите, които удостоверяваме имат активни пощенски кутии на Exchange-а. Тук удостоверяването става по следния начин - потребителите подават към Apache-то потребителско име и парола, а Apache-то от своя страна пробва да се свърже с тях към IMAP сървъра. Ако IMAP сървъра удостовери потребителя, то и Apache-то от своя страна го удостоверява.

На Apache-то ще ползваме mod_auth_imap и тъй като единствената дистрибуция, който има пакет за него е Mandriva 2007 ще го свалим и компилираме от официалната му станица, но първо за да го компилираме ще ни трябва dev пакета на Apache сървъра:

apt-get install apache2-threaded-dev

след това ще компилираме и инсталираме mod_auth_imap:

cd /tmp
wget http://ben.brillat.net/files/projects/mod_auth_imap2/\
mod_auth_imap2-current.tar.gz
tar xzf mod_auth_imap2-current.tar.gz
cd mod_auth_imap2-x.x.x
apxs2 -i -a -c mod_auth_imap.c

Създаваме директория, за която ще искаме удостоверяване:

mkdir /var/www/imap_test

и я описваме в конфигурацията на apache:

touch /etc/apache2/conf.d/imap_test

Файлът ‘/etc/apache2/conf.d/imap_test’ трябва да съдържа следното:

<Directory /var/www/imap_test>
    Auth_IMAP_Enabled on
    AuthName “IMAP”
    AuthType Basic
    Require valid-user
    Auth_IMAP_Authoritative on
    Auth_IMAP_Server imap.domain.com
    Auth_IMAP_Port 143
    Auth_IMAP_Log on
</Directory>

като за ‘imap.domain.com’ слагаме IMAP сървъра, а в ‘Auth_IMAP_Port’ - IMAP порта.
След рестартиране на Apache-то:

/etc/init.d/apache2 restart

вече всичко би трябвало да работи и адреса “http://the_linux_box/imap_test” да ни удостовери с валиден потребител към активната директория.

Ако ползвате mod_auth_pam и mod_auth_imap едновременно, добавете реда ‘AuthPAM_Enabled off’ в конфигурацията за директорията, за да забраните pam аутентикацията за тази директория, защото в противен случай ако pam модула се зарежда преди imap модула, то Apache-то винаги ще ползва удостоверяване чрез pam.
Тук няма вариант за имплементиране на удостоверяване по принадлежност към група.

ToDo: Всички конфигурации позволяват единствено ползване на потребителско име от вида ‘username’, но не и от вида ‘DOMAIN\username’ или ‘username@domain.com’. Да се провери за възможност това да се имплементира.

За неточности, забележки и всякакви мнения ползвайте коментарите.

21.06.2006

VLC

Въпреки че отдавна имах инсталиран VLC Media Player от някакъв пакет от Linux Packages, не го бях ползвал. До преди две седмици.
Проблемът - трябваше да се гледат мачовете от 16.00 часа, а тогава съм на работа. Тъй като у нас имах тв-тунер, идеята беше да го пусна по някакъв начин да излъчва Канала по мрежата, за да го гледам от работа.
Решението - VLC Media Player.
Инсталацията въобще не се оказа лесна работа. Пакетът, който имах не беше компилиран с поддръжка за v4l. Пакетът за Slackware от videolan.org/vlc/ също не запали. Компилирането на изходния код също даваше куп грешки. След усилено ровене и търсене из форуми и мейл листи най-накрая хубави хора ми казаха да компилирам wxWidgets с опцията ‘–enable-unicode’.
Воала. Перфектна картина, никакъв звук.
След един ден търсене къде е проблема със звука се оказах в задънена улица. Не че са ми много интересни коментарите на Петър Василев, но неща от рода на “… ето сега вратарят на Саудитска Алабия трябва да се прекръсти” не са за изпускане. В края на краищата подкарах звука като веднага след пускането на vlc пускам xawtv на същата схема, на която е Канала, в моя случай на ‘PAL-DK’. Някакси вече имам звук. Тъпо, но върши работа.
Изумен съм от качеството на сигнала въпреки относително бавната връзка, която имам у нас. VLC има ужасно много опции и с него може да се прави (почти) всичко. Програмата се използва едновременно като клиент и като сървър.
На работа вече един път прихванал излъчването, отново с VLC го пуснах да се стриймва втори път в локалната мрежа. Никаква загуба на качество.
Въпреки ентусиазма недостатъци има. Внимавайте с колонките! Вчера както съм ги оставил вкъщи на ‘max’, след това от работа отдалечено пуснах гореописаната система и я оставих да работи и след като си тръгнах. Малко преди да стигна входа на блока се чуваше как някой си беше надул телевизора. Оказа се, че съм бил аз…

28.12.2005

P3scan

След тестовете със SquidClam си поиграх и с P3scan - прокси за pop3 и pop3s, което перфектно се интегрира с ClamAV. Тръгна и работи без проблеми. В момента издирвам прокси за imap, но безуспешно. ImapProxy върши работа, но само като прокси, а на мен ми трябва интеграция с антивирусна програма.
Денят щеше да приключи прекрасно, ако за пореден път Пежото не се беше скапало. Хубавото този път, е че това стана на 100 метра от нас.

27.12.2005

SquidClam

Днес тествах SquidClam - приложение за Squid, което сканира интернет трафика през ClamAV. От няколкото подобни програми тази се оказа най-леката и елементарна за инсталиране и конфигуриране. Общо взето работи доста бързо, въпреки предупрежденията на автора да не се ползва в производствена среда. Аз обаче реших да я тествам и засега отчитам много добри резултати на доста слаба машина с около 40 потребители. Недостатъците обаче са, че има доста непълна и неточна документация, някои неща се налага да променяш директно в изходния код, не поддържа https и линукс sockets, както и че не можеш да ограничиш сканирането по файлови типове.