Skip to content

By Тодор in Uncategorized

При ъпдейта на Firefox до версия 4.0, започнах да получавам следното съобщение, при опит да посетя сайт, който ползва за идентификация на клиентите си неофициален (самоподписан) сертификат.

Error code: ssl_error_renegotiation_not_allowed

Наскоро беше открита дупка в сигурността при “договарянето” на криптирана по този начин сесия, която позволява атака от типа man-in-the-middle. Това накара Mozilla да забранят по подразбиране ползването на този тип връзка. Ако все пак желаете да я разрешите – отворете адреса “about:config” и направете следната корекция:

security.ssl.allow_unrestricted_renego_everywhere__temporarily_available_pref = true

Tags: , , , ,

By Тодор in Uncategorized

Каква е максималната скорост, която можете да измерите чрез Counter32 брояч от SNMP?
Ами зависи през колко време правите отчитанията. Максималната стойност на този брояч е 4294967295 (2^32-1). Нормално е отчитанията било то за MRTG или RRD да се правят през 5минути.
Ето формулата, с която можете да изчислите каква е максималната скорост, която можете да отчетете:

4294967295*8/1024/1024/300=<strong>109</strong>Mbps

Цифрите, които очастват са:
максимална цифра за брояча преди да се нулира
превръщаме в битове
превръщаме в килобити
превръщаме в мегабити
секундите през които отчитаме

Краен резултат е, че за скорости по-големи от 109Mbps ще получавате грешни отчитания, което е следствие от достигането на максималната стойност за брояча и нулирането му преди да сте го отчели.

Какво можете да направите, за да решите проблема?
а) да ползвате Counter64 броячи (които не винаги са налични)
б) да намалите интервала на отчитане

С Counter64 и отчитане през 5мин ще можете да отчитате фантастичната скорост от около 436Pbps (петабита).

Ако намалим интервала на отчитане с Counter32 брояч:
за 4мин: 4294967295*8/1024/1024/240=136Mbps
за 3мин: 4294967295*8/1024/1024/180=182Mbps
за 2мин: 4294967295*8/1024/1024/120=273Mbps
за 1мин: 4294967295*8/1024/1024/60=546Mbps

Естествено при по-големи отчитащи скриптове отчитането през 1мин може и да не е практично, поради това, че изпълнението на самия скрипт може да отнеме повече време.

Имайте предвид, че при ползване на RRDtool, променяйки интервала на отчитане, трябва да се създаде и нов RRD файл с коректна стъпка на отчитане.

Правете си сметката! :)

Tags: , , , , , , , , , , ,

By Тодор in Фун

Някак си моето разбиране за “безплатно” се разминава доста с това на хостинг компанията fcolor.bg…
Обърнете внимание на текста в червеното правоъгълниче:

Tags: , , ,

By Тодор in Linux

След като вече имаме работещ пощенски сървър със що-годе прилична спам-защита е добре да помислим и за антивирусна защита.
Давам пример отново с CentOS 5.5, Postfix и доста популярната безплатна Clamav.

Инсталация на антивирусната:
# yum install clamav clamav-milter

Редакция на /etc/clamav-milter.conf:

MilterSocket inet:7357
MaxFileSize 100M
AddHeader Replace
ReportHostname mx.kamenitza.org

Показвам само редовете, които аз съм редактирал. Конфигурационният файл е много добре коментиран и описан така, че всеки може да пипа според нуждите си.

Стартираме демоните на антивирусната:

#/etc/init.d/clamd start
#/etc/init.d/clamav-milter start

Ще се покаже съобщение, че вирусните дефиниции са стари. Задължително е да ги обновим:
#freshclam

Добра идея е това да го сложим в cron, за да опреснява периодично:
#crontab -e

И добавяме реда:
0 1 * * * /usr/bin/freshclam

Следва настройката на Postfix, така, че да “прекара” писмата през антивирусната.
Добавяне в /etc/postfix/main.cf:

smtpd_milters = inet:127.0.0.1:7357
milter_default_action = accept

В случай, че има конфигуриран и друг milter (както е при мен) – просто ги разделете със запетая:
smtpd_milters = inet:localhost:10027, inet:127.0.0.1:7357

Начин да проверите дали писмо е минало през антивирусната е като разгледате хедъра. Там ще видите нещо от сорта на:

X-Virus-Scanned: clamav-milter 0.96.5 at mx.kamenitza.org
X-Virus-Status: Clean

Tags: , , , , , , ,

By Тодор in Linux

Един много добър вариант да покажете, че писмата излизащи от вашият пощенски сървър не са спам е използването на така наречения domainkey. Идеята е следната:
Публичен ключ се съхранява в ТХТ запис на DNS-a на домейна от който ще изпращаме писмата, а с личният ключ се подписва всяко изпратено писмо. Така всеки спам филтър може да сравни двата ключа и да се увери, че писмото е автентично и не е спам. Подобен спам филтър ползва и Google.

Изтегляне на dk-milter:
#rpm -Uvh http://www.topdog-software.com/oss/dk-milter/dk-milter-1.0.2-1.i386.rpm

Генериране на ключовете:

#/usr/share/doc/dk-milter-1.0.2/gentxt.sh

Където
е име по избор, аз използвах “mx”:
#/usr/share/doc/dk-milter-1.0.2/gentxt.sh mx kamenitza.org

Това ще генерира няколко файла:
mx.txt:
mx._domainkey IN TXT "g=; k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMDcC/ip9pXcyRy6H9lw2Nl5aRjeg8KiIeL71tFsg+ja3P4Zm2aCCtjQevStFBKEAZG7cxIMY7mNdnum1dJj55cCAwEAAQ=="

mx.public:

-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMDcC/ip9pXcyRy6H9lw2Nl5aRjeg8Ki
IeL71tFsg+ja3P4Zm2aCCtjQevStFBKEAZG7cxIMY7mNdnum1dJj55cCAwEAAQ==
-----END PUBLIC KEY-----

mx.private:

-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBAMDcC/ip9pXcyRy6H9lw2Nl5aRjeg8KiIeL71tFsg+ja3P4Zm2aC
CtjQevStFBKEAZG7cxIMY7mNdnum1dJj55cCAwEAAQJAE/Ov2V3cAM0CkVJAEUK3
bGg/Ey+R+gTD9LORGcFcNC6h21sClpYV0mrIS1PkXX1cUZgQ9jl/gFzAXORL2E56
IQIhAP8+HmAS8RT+dCOCnioWa2kSmkwmITHnCdePrHVYl6l9AiEAwW6Kyks76ecG
TT8nPegYObAMqokM9fF3XBp4nLcHgaMCIQCGoDYXSIZeI2QQgsl3u4GF1ykJNydV
Ed5wEzjMYCEGZQIgHIs6ceWuPrL3zBhgqxL/2CtxgwzcW8K5MV86oy2jLu8CIQDA
kXZ6SyJvhJsw3KwhLsKU4IKAu1VM/YLzkKaffWVYBw==
-----END RSA PRIVATE KEY-----

Преместете liчният ключ (mx.private) в /etc/mail/domainkeys. След това:
#chown dk-milter:dk-milter mx.private
#chmod 600 mx.private

След това добавете в DNS конфигурацията на зоната на домейна
_domainkey IN TXT "t=y; o=~"
Съдържанието на текстовия файл mx.txt също трябва да бъде добавено в DNS зоната на домейна.

Следва редактиране на /etc/sysconfig/dk-milter:

USER="dk-milt"
PORT="inet:10027@127.0.0.1"
SIGNING_DOMAIN="domain.tld"
SELECTOR_NAME="mx"
KEYFILE="/etc/mail/domainkeys/mx.private"
SIGNER=yes
VERIFIER=yes
CANON=simple
REJECTION="bad=r,dns=t,int=t,no=a,miss=r"
EXTRA_ARGS="-h -l -D"
MILTER_GROUP="mail"

Стартиране на демона:
#/etc/init.d/dk-milter start

И на края редакция на /etc/postfix/main.cf:

smtpd_milters = inet:localhost:10027
non_smtpd_milters = inet:localhot:10027

И рестартирате postfix.

За да се тества дали работи тази конфигурация изпратете празно писмо до test@dktest.jason.long.name.

Информацията за тази статия е синтезирана от http://jason.long.name/dkfilter/

Tags: , , , , , ,

By Тодор in Linux

Много е удобно да се ползват виртуални потребители за пощенски сървър, а е и много по-сигурно.
В тази конфигурация ще ползвам операционна система CentOS 5.5 и демоните dovecot, postfix, postgresql. Косвено участва и Apache, като уеб сървър за уеб интерфейса postfixadmin.

1. Инсталиране на postgresql server:
#yum -y install postgresql-server

След стартиране на postgresql – продължаваме.
Създаване на потребител и база за postfix:

#su postgres
$psql
postgres=# create user postfix with password 'password';
postgres=# create database postfix owner postfix;
postgres=# \q
$exit

2. Инсталиране на Postfix с поддръжка на база данни.
Ако до сега сте имали инсталиран Postfix, той трябва да бъде деинсталиран:
#yum erase postfix

Редактира се /etc/yum.repos.d/CentOS-Base.repo:
В раздел [base] и [updates] се добавя реда:
exclude=postfix
В раздел [centosplus]:
enabled=1

Проверка дали пакета на Postfix с поддръжката на бази данни се “вижда”:

#yum list postfix
...
...
postfix.x86_64  2:2.3.3-2.1.centos.mysql_pgsql

Това, което ни трябва се вижда на края – “…mysql_pgsql”.
Инсталираме:
#yum -y install postfix

Това, което ни трбява в /etc/postfix/main.cf:

myhostname = mail.mydomain.tld
inet_interfaces = all
transport_maps = pgsql:/etc/postfix/transport.cf
virtual_alias_maps = pgsql:/etc/postfix/virtual.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_minimum_uid = 5000
virtual_minimum_gid = 5000
virtual_mailbox_domains = pgsql:/etc/postfix/transport.cf
virtual_mailbox_base = /home/mail
virtual_mailbox_maps = pgsql:/etc/postfix/mailboxes.cf
virtual_mailbox_limit = 1073741824

Последния ред означава, че имаме лимит от 1GB на пощенска кутия.

/etc/postfix/transport.cf:

hosts = localhost
user = postfix
password = password
dbname = postfix
table = domain
select_field = transport
where_field = domain

/etc/postfix/virtual.cf

hosts = localhost
user = postfix
password = password
dbname = postfix
table = alias
select_field = goto
where_field = address

/etc/postfix/mailboxes.cf

hosts = localhost
user = postfix
password = password
dbname = postfix
table = mailbox
select_field = maildir
where_field = username

След като всички конфигурационни файлове са готови, стартираме демона:
#/etc/init.d/postfix start

3. Инсталиране на dovecot:
#yum -y install dovecot

В /etc/dovecot.conf:

auth default {
    mechanisms = plain
    passdb sql {
        args = /etc/dovecot-pgsql.conf
    }
    userdb sql {
        args = /etc/dovecot-pgsql.conf
    }
    socket listen {
        client {
            path = /var/run/dovecot/auth-client
            mode = 0660
            user = postfix
            group = postfix
        }
    }
}
first_valid_uid = 5000
first_valid_gid = 5000

/etc/dovecot-pgsql.conf:

driver = pgsql
connect = host=localhost dbname=postfix user=postfix password=password
default_pass_scheme = crypt
password_query = SELECT password FROM mailbox WHERE username='%u' AND active='1'
user_query = SELECT '/home/mail/'||maildir AS home, '/home/mail/'||maildir AS mail, 5000 as uid, 5000 as gid FROM mailbox WHERE username='%u' AND active='1'

Стартиране на dovecot:
#/etc/init.d/dovecot start

Поглеждаме в /var/log/maillog за евентуални грешки. Ако всичко е наред може би дори ще се вижда и поток от спам към несъществуващи пощенски кутии.

4. Postfixadmin
Инсталацията му се свежда до разархивирането на архива в папка достъпна през уеб и редакцията на config.inc.php, като в него единствено трябва да са попълни конфигурацията за достъп до базата данни.

След като създадем потребители чрез postfixadmin, те вече ще могат да получават поща, както и ще имат достъп до пощенските си кутии чрез IMAP/POP3.

5. Изпращане на електронна поща – SMTP
Елементарен начин това да стане е като се опишат мрежите, които е разрешено да релейват през този пощенски сървър в /etc/postfix/main.cf:
mynetworks = 127.0.0.0/8 192.168.0.0/24

Това не е най-сигурният метод, понеже не използва никаква идентификация на ниво потребител.
По-добрият вариант е потребителят да трябва да се идентифицира, за да изпрати успешно писмо.
Добавяме в /etc/postfix/main.cf следните няколко реда:

smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Вече можете и да изпращате през този сървър ;)

Добре ще е да сложим и елементарна спам-защита. Необхоримо е да преработим smtpd_recipient_restrictions записа в main.cf, така, че да се получи следното:

smtpd_recipient_restrictions =
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    permit_mynetworks,
    permit_sasl_authenticated,
    check_client_access hash:/etc/postfix/whitelist,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client 0spam.fusionzero.com,
    reject_rbl_client bl.spamcannibal.org,
    reject_rbl_client blackholes.five-ten-sg.com,
    reject_rbl_client blackholes.intersil.net,
    reject_rbl_client dnsbl.sorbs.net,
    reject_rbl_client dnsbl-0.uceprotect.net,
    reject_rbl_client dnsbl-1.uceprotect.net,
    reject_unauth_destination

Като файлът /etc/postfix/whitelist съдържа хостове изпращащи поща, които не желаете да преминат през спам-филтрите. Обикновено това са пощенски сървъри на мързеливи администратори, които не отговарят на някое или всички изисквания за легитимно изпращане на поща. Ето примерно съдържание на файла:

212.39.90.88  OK
mbox.contact.bg  OK
sts-tech.com  OK
87.121.24.7  OK

Това е всичко необходимо за напълно работещ сървър с виртуални потребители. За въпроси – ползвайте коментарите. Скоро ще пусна статия как да подсигурим същият този сървър с помощта на SSL.

Tags: , , , , , ,

By Тодор in Linux

Digital Living Network Alliance – Нещо модерно и удобно, което набира популярност с доста голяма скорост ;)
Телевизорът ни има DLNA клиент, та трябваше да му спретна и съответен сървър от където да идва и видеото.
Операционна система CentOS 5.5 32bit.
Задължително е да сте добавили rpmforge хранилищата за yum!

# yum -y install ushare

Следва бърза редакция на /etc/ushare.conf:

USHARE_NAME=My_Server
USHARE_IFACE=
USHARE_PORT=
USHARE_TELNET_PORT=
USHARE_DIR=/mnt/md1/files/Movies
USHARE_OVERRIDE_ICONV_ERR=
ENABLE_WEB=
ENABLE_TELNET=
ENABLE_XBOX=
ENABLE_DLNA=yes

И стартиране на услугата:
# /etc/init.d/ushare start

Tags: , , , ,

By Тодор in Linux

Ето как можете да приложите chmod само върху директориите:
find . -type d -exec chmod 755 {} \;

А ето така върху файловете:
find . -type f -exec chmod 644 {} \;

Tags: , , , , ,

By Тодор in FreeBSD, Linux, Solaris, Windows

Налагало ли ви се е да достъпите адрес, който не е достъпен от мрежата в която се намирате, но да е напълно достъпен от друга мрежа (в която имате разположен Apache сървър)?
Ето как:

ProxyRequests Off
ProxyPass / http://foo.example.com/
ProxyPassReverse / http://foo.example.com/

или

ProxyRequests Off
ProxyPass / http://100.110.120.130/
ProxyPassReverse / http://100.110.120.130/

или

ProxyRequests Off
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar

Така, когато се обърнете към http://IP-адреса-на-Apache-сървъра/, той ще препрати заявката ви към крайната точка. По желание може да се ползва запис в HOSTS файла на локалния компютър, за да не се обръщате към Apache сървъра с IP адрес, а с името на недостъпния сайт.

Tags: , , , , ,

By Тодор in Windows

За въведем настройки за прокси на всички потребители в Windows XP/2003/3008/7 е необходимо следното:

Start > Run > gpedit.msc

Като се отвори, в него избираме:

User Configuration > Windows Settings > Internet Explorer Maintenance > Connection

И от дясната страна грейва опцийката Proxy Settings.

Tags: , , ,

By Димо Димов in Windows
  1. Инсталираме Windows server 2008 R2 (виж ръководство за инсталация на Windows 2008 R2)
  2. От мениджмънта на сървъра избираме Add Roles –> Next –> Print and Documents Service

От опцията Add Roles Services можем да избираме какви функции ще изпълнява нашият сървър. В нашият случай ще инсталираме само Print Server  ролята.

  1. Вече имаме работещ сървър сега ще трябва да инсталираме принтери .

За всеки принтер ползваме два вида драйвери 32-битови и 64-битови, които обикновено идват в един пакет с универсални драйвери. Някой ще попита защо 64 и защо  32- битови , защото  R2 е 64-битова ОС а повечето ПК са 32-битови и ще ни трябват драйвери за тях.

Пример :

-Ще  инсталираме принтер HP LaserJet M1522n , който се намира на  IP адрес 192.168.2.8

а) стартираме Print Management от Start menu  на сървъра от появилият се прозорец избираме :

Print Servers –> Print Server (local) –>Printers

Десен бутон с мишката и се отваря меню от което избираме :

Add Printer…

б) Следваме следните стъпки :

Search the  network for printers

От изкочилото меню избираме принтера който желаем

Променяме името на принтера според нашите желания (HPLaserJet8)

В следващите два прозореца  избираме  Next  и след това  Finish

в) Сега трябва да се промрни  64-битовия драйвер от универсалният пакет,   който сме свалили предварително от страницата на НР .

Посочваме новият драйвер  като следваме  менюто (десен бутон в/у принтера –> свойства) НЕ го избираме от листа а избираме опцията Have Disk и избираме съответния драйвер  за 64 битова ОС

г) От менюто (десен бутон в/у принтера –> свойства) избираме плаващият бутон Sharing >  Additional Drivers  и избираме същият драйвер но за 32 битова ОС . Завършваме с инсталацията ОК.

2. Сега трябва да добавим принтера към предварително създадено правило .

а) създаване на правило

- Group Policy Management –> Forest –> Domains –> Домейна.на.фирмата –> Droup Policy Objects десен бутон  NEW кръщаваме политиката  Printer Policy

-  след като сме я създали десен бутон и избираме Edit

- избираме Computer configuration –> Windows settings –> Scripts –> Startup

- от появилото се меню избираме Add и добавяме Pushprinterconnections.exe можете да го свалите от тук.

!!! Можем да го направим по същият начин и за User Configuration

б) добавяме  GPO Обекта към  компютъра , групата или към каквото решим.

Рестартираме ПК на , които очакваме да се добавят принтерите

Tags: , ,

By Тодор in Фун

Tags: , ,

By Тодор in Uncategorized, Windows, Мрън-мрън

Та освен, че са доста неудобни за работа с една ръка HTC телефоните с тъч скрийн (Windows mobile) имат и друг ОГРОМЕН пропуск – сортират телефонния указател по “Фамилия, Име” – доста непрактично според мен.
Единият вариант е да се редактират всички контакти един по един, като за всеки се посочи в опцията “File as” как желаем да го виждаме.
Имало и малко по-лесенв ариант как да “преобразим” всички – Contact Changer.
Прикачам и копие на програмчето, за да пробвате.

Contact_changer_v1.3

(Конкретно се възмущавам от HTC Diamond)

Tags: , , , , ,

By Тодор in Linux

За линукс рутери е много добра идея да се следи състоянието на ip_conntrack_count таблциата. Препълни ли се – повече не се препращат заявки. А и чисто статистически е добре да имате идея колко се товари рутера.
Най удобния инструмент за отдалечен мониторинг е SNMP, да но ip_conntrack_count по подразбиране го няма там.
Ето как да си го направим:

Пишем едноредово скриптче, което ще проверява колко конекции са заети (ip_conntrack_count):

#!/bin/bash
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count

Записваме скрипта в /root/ctrack.sh
Правим го изпълним:
chmod +x /root/ctrack.sh

Някъде към края на snmpd.conf се добавя:
exec conntrac_count /root/ctrack.sh

Правим проверка:

# snmpwalk -v2c -c public localhost .1.3.6.1.4.1.2021.8
UCD-SNMP-MIB::extIndex.1 = INTEGER: 1
UCD-SNMP-MIB::extNames.1 = STRING: conntrac_count
UCD-SNMP-MIB::extCommand.1 = STRING: /root/ctrack.sh
UCD-SNMP-MIB::extResult.1 = INTEGER: 0
UCD-SNMP-MIB::extOutput.1 = STRING: 44234
UCD-SNMP-MIB::extErrFix.1 = INTEGER: 0
UCD-SNMP-MIB::extErrFixCmd.1 = STRING:

Изхода от скриптчето вече се вижда в UCD-SNMP-MIB::extOutput.1.

Сигурно стопляте колко мощен е този инструмент. Може да се добави и роботче за проверка на температурата на хард дисковете с нещо от сорта на:
/usr/sbin/smartctl -A /dev/hdа | grep -i temperaturе | awk '{print  $10}'

Въпрос на фантастика ;)
Честито на успелите!

Tags: , , , , ,

By Тодор in Мрън-мрън

Tags: ,