Skip to content

By Тодор in Linux

Най-бързия начин за генериране на частен ключ и SSL сертификат известен на човечеството:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 42000
И съответно да се конвертира във формат разбираем от Windows:
openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem

By Тодор in Mikrotik

Вероятно много “колеги” ще си помислят, че да се конфигурира IPSec/L2TP тунелче е далеч по-съвместимо откъм клиентксата част – поддържа се “извън кутията” от всичко от Windows XP насам. Андроид, IOS, Windows имат вграден клиент за такъв тип тунел, което значи, че не е необходимо да се инсталира допълнителен софтуер. Не, че не може, но не е задължително.
Напрактика обаче, не е толкова сладко, колкото звучи 🙂
Ще го обясня максимално разбираемо и минимално подробно – ipsec-esp, ike и l2tp трафика е гаден за рутиране и често нещата изобщо не се случват, ако в мрежата има NAT. Най-обичайната ситуация е да седнете в заведение с наличен свободен безжичен Интернет, който изглежда като да работи, обаче VPN тунела не успява да се закачи. И всичко това, защото са сложили рутер, който се е паднал от пакет зрънчо или нарочно са блокирали nat-traversal, без който ще видим ipsec само през крив макарон.

И така, следващото достатъчно съвместимо, достъпно, безплатно и т.н. решение се явява OpenVPN. Има клиенти за всякакви устройства и операционни системи. Може да се ползва в режим dial-up за пътуващи “работници”, а може и като site-to-site, свързвайки цели мрежи. Изключително гъвкав протокол, може да работи по TCP или по UDP на порт по избор. Минава през всякакви рутери, нескопосано маршрутизиране и куци NAT-ове.
Сървър може да се конфигурира на OpenWRT, Mikrotik и други достъпни решения, както за вкъщи, така и за офиса.

Ще опиша пример със сървър на Mikrotik.

Създаване на пул от адреси за клиентите:
/ip pool add name=remote-pool ranges=10.10.10.100-10.10.10.120

Добавяме профил:
/ppp profile add local-address=10.10.10.1 name=openvpn remote-address=remote-pool use-encryption=required
10.10.10.1 е ИП-то на LAN (вътрешния) интерфейса.

Създаваме си потребител:
/ppp secret add name=todor password=p4ssW00 profile=openvpn

Без сертификат, обаче няма да минем:

/certificate add name=vpn-cert common-name=vpn.kamenitza.org days-valid=3650
/certificate sign 0
/certificate export-certificate 0

С тези команди ще бъде издаден, подписан и експортнат 10 годишен сертификат за домейна vpn.kamenitza.org. Изнесения сертификат е съхранен във файл на рутера.

Вземаме публичния ключ:

/file print detail
 0 name="flash" type="disk" creation-time=jan/01/1970 02:00:03
 1 name="cert_export_vpn-cert.crt" type=".crt file" size=1192 
   creation-time=nov/28/2018 22:34:18 contents=
     -----BEGIN CERTIFICATE-----
     MIIDQzCCAiugAwIBAgIIS74buY1yHXAwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UE
     AwwRdnBuLmthbWVuaXR6YS5vcmcwHhcNMTgxMTI4MjAzMzIyWhcNMjgxMTI1MjAz
     MzIyWjAcMRowGAYDVQQDDBF2cG4ua2FtZW5pdHphLm9yZzCCASIwDQYJKoZIhvcN
     AQEBBQADggEPADCCAQoCggEBAMBP8cDeknHKYPXCvgZkT+KeNXmjazXmcShNtGY6
     uUcuVbPBOn6FcqA/VwSAdVeNnkY0IqZM1zHCr/kXtgWVGNld2/GnkGCoNgm6SrkZ
     O6dZraC/B3LRIRLp0OR0aZ8/vTO3TwSP+/M/3rWKcs5LdpS8SoheHZBbcK43/qB1
     dR2si5sWJ4l34ketjuJrduzxxD+TE4QLwovMzNyE9S+tKidBBN+/PEJDv3njUZwe
     II+CN0JwosEZ2FfW7MYsx1kUyYZtrBUjCjxerMom9iQR9gWUpsey3yhNKGCDHe/v
     z1h3vkZ5znDAjf/uRbnwGRHkUbIiZ1XKIhmOnPnlgqw4qasCAwEAAaOBiDCBhTAP
     BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBtjAdBgNVHSUEFjAUBggrBgEF
     BQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFBHDtmEAUdv54tr/tRHkHWu9BA5lMCQG
     CWCGSAGG+EIBDQQXFhVHZW5lcmF0ZWQgYnkgUm91dGVyT1MwDQYJKoZIhvcNAQEL
     BQADggEBACa76JK+oUgYddfrfABWGEQDDvSUv37Sfo4WqqokM1r4xuQsF8V+/oEO
     ifdTTX4r/48tohct+jRBCW5vh6Jkx5mVie8MlhFG5oY1dxtd/M9F1Kc6PpyRipCw
     yvuJFOU8ESxEQSwFsElckvaamc09fw55rUgaFmMebuhleXUuyg7WAPUlLSgeGqyd
     RB4lOitA4qmOgEBIUs7Y6jiUe44orWzgGrQGP9zoI8aPwRGvKJoe11PCocrEJvIM
     xMcHyOdrqECY4LlgNLoDGRXJYASWSqTzPvl4TAH1ffKhdp+aUP3/EoHYaF2nu8fD
     wYHuD/lP0Cy21zbobDaFPF4iKdAk2qc=
     -----END CERTIFICATE-----

Всичко между BEGIN CERTIFICATE и END CERTIFICATE, включително, ще ни трябва за конфигурирането на клиента.

Остана и интерфейса:

/interface ovpn-server server
set auth=sha1 certificate=vpn-cert cipher=aes256 default-profile=openvpn 
    enabled=yes mode=ip netmask=24 port=1194 require-client-certificate=no

Евентуално ще трябва да отворим tcp/1194 на фиревала.

Харесва ми възможността отдалечените клиенти да са в същата мрежа, в която са и LAN клиентите, но за да работи изобщо тази екстра, която е на ръба на стандартите, трябва да се активира proxyarp на вътрешния интерфейс.

Клиенската конфигурация изглежда по следния начин:

dev tun
persist-tun
persist-key
cipher AES-256-CBC
auth SHA1
tls-client
client
auth-user-pass
resolv-retry infinite
remote vpn.kamenitza.org 1194 tcp-client
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIDQzCCAiugAwIBAgIIS74buY1yHXAwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UE
AwwRdnBuLmthbWVuaXR6YS5vcmcwHhcNMTgxMTI4MjAzMzIyWhcNMjgxMTI1MjAz
MzIyWjAcMRowGAYDVQQDDBF2cG4ua2FtZW5pdHphLm9yZzCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAMBP8cDeknHKYPXCvgZkT+KeNXmjazXmcShNtGY6
uUcuVbPBOn6FcqA/VwSAdVeNnkY0IqZM1zHCr/kXtgWVGNld2/GnkGCoNgm6SrkZ
O6dZraC/B3LRIRLp0OR0aZ8/vTO3TwSP+/M/3rWKcs5LdpS8SoheHZBbcK43/qB1
dR2si5sWJ4l34ketjuJrduzxxD+TE4QLwovMzNyE9S+tKidBBN+/PEJDv3njUZwe
II+CN0JwosEZ2FfW7MYsx1kUyYZtrBUjCjxerMom9iQR9gWUpsey3yhNKGCDHe/v
z1h3vkZ5znDAjf/uRbnwGRHkUbIiZ1XKIhmOnPnlgqw4qasCAwEAAaOBiDCBhTAP
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBtjAdBgNVHSUEFjAUBggrBgEF
BQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFBHDtmEAUdv54tr/tRHkHWu9BA5lMCQG
CWCGSAGG+EIBDQQXFhVHZW5lcmF0ZWQgYnkgUm91dGVyT1MwDQYJKoZIhvcNAQEL
BQADggEBACa76JK+oUgYddfrfABWGEQDDvSUv37Sfo4WqqokM1r4xuQsF8V+/oEO
ifdTTX4r/48tohct+jRBCW5vh6Jkx5mVie8MlhFG5oY1dxtd/M9F1Kc6PpyRipCw
yvuJFOU8ESxEQSwFsElckvaamc09fw55rUgaFmMebuhleXUuyg7WAPUlLSgeGqyd
RB4lOitA4qmOgEBIUs7Y6jiUe44orWzgGrQGP9zoI8aPwRGvKJoe11PCocrEJvIM
xMcHyOdrqECY4LlgNLoDGRXJYASWSqTzPvl4TAH1ffKhdp+aUP3/EoHYaF2nu8fD
wYHuD/lP0Cy21zbobDaFPF4iKdAk2qc=
-----END CERTIFICATE-----
</ca>

Съхранява се във файл с разширение .ovpn и се импортира в желания клиент или устройство. При свързване ще попита за име и парола.

С тази конфигурация през тунела ще има връзка единствено до отдалечената вътрешна мрежа.
Към момента Микротик не поддържа “route-push” – възможността да изпрати към клиента маршрути за допълнителни мрежи, които да се рутират през тунела. И така, ако има нужда от рутиране на допълнителни мрежи през тунела или изобщо за целия Интернет трафик, ще трябва към клиентската конфигурация да се добавят следните редове:
route 10.0.0.0 255.0.0.0
или
route 0.0.0.0 0.0.0.0 vpn_gateway 0

Дано не съм забравил нещо 🙂

By Тодор in Mikrotik

След купищата натрошени Микротици трябва на всички да е станало ясно, че тая работа не е като оная работа 🙂 Полянката си трябва малко косене и поливане.
Как да си направим фиревала вече писах. Ето още един копи/пасте мурафет, който ще върже гащите за известно време:

/ip service disable telnet,ftp,www,api,api-ssl
/ip service set ssh port=2222
/tool mac-server set allowed-interface-list=none
/tool mac-server mac-winbox set allowed-interface-list=none
/tool mac-server ping set enabled=no
/ip neighbor discovery-settings set discover-interface-list=none 
/tool bandwidth-server set enabled=no 
/ip proxy set enabled=no
/ip socks set enabled=no
/ip upnp set enabled=no
/ip cloud set ddns-enabled=no update-time=no
/ip ssh set strong-crypto=yes
/user set [find name=admin] name=mincho

Главното за отбелязване, което се случва след изпълнението на тези команди за който не му се чете е:
– спира се всякакъв достъп до рутера/свича освен за SSH и Winbox
– SSH порта се сменя от 22 на 2222
admin потребителското име се сменя на mincho (на галено от админчо)

Наздраве!

By Тодор in Linux, Mikrotik

Все по-често започнах да се сблъсквам с динамични ИП адреси, което понякога прави някои мероприятия като GRE/VPN тунели, предизвикателство,
Ще опиша основно конфигурацията на сървърната част (bind). Клиентските скриптове са въпрос на фантазия, но по-късно ще добавя няколко.
– Дистрибуция CentOS и вградения bind9
– Зоната, в която ще се добавят динамичните записи е dyn.kamenitza.org

Генериране на ключа за актуализацията:
dnssec-keygen -a hmac-md5 -b 128 -n HOST dyn.kamenitza.org.
Ще създаде 2 файла, от които взимаме ключа и го добавяме в named.conf следното:

key "my-key" {
    algorithm hmac-md5;
    secret "4SHxlLTukl587eafb4wxvg==";
};

В named.conf ще добавим и зоната:
zone "dyn.kamenitza.org" IN {
        type master;
        file "dyn.kamenitza.org";
        allow-update { key my-key; };
};

Това е съдържанието на файла със зоната:
$ORIGIN .
$TTL 86400      ; 1 day
dyn.kamenitza.org          IN SOA  ns1.kamenitza.org. admin.kamenitza.org. (
                                2018051200 ; serial
                                7200       ; refresh (2 hours)
                                900        ; retry (15 minutes)
                                1209600    ; expire (2 weeks)
                                3600       ; minimum (1 hour)
                                )
                        NS      ns1.kamenitza.org.
                        NS      ns2.kamenitza.org.

Файла със зоната, както и директорията, в която се намира трябва да са с достатъчни права, за да може bind/named потребителя да пише.

Проба може да направим със следния скрипт:

nsupdate -y 'my-key:4SHxlLTukl587eafb4wxvg==' -d
>update add test.dyn.kamenitza.org 300 A 1.2.3.4
>send

На екрана би трябвало да излезе детайлна информация за това, какво се случва. Ако няма грешки, това ще създаде А запис test.dyn.kamenitza.org, с живот 5 минути, сочещ към 1.2.3.4.

Скриптче за Микротик:

:local ownip [ /ip address get [/ip address find interface=WAN ] address ]
:local ownip [:pick $ownip 0 [:find $ownip "/"]]
/tool dns-update name=mikrotik zone=dyn.kamenitza.org address=$ownip key-name=dyn-key key="4SHxlLTukl587eafb4wxvg==" dns-server=1.1.1.1
:log info ("Dynamic DNS updated to $ownip") ttl=300

By Тодор in Windows

Алгоритъм    Win7  Vista  WinXP
40-bit RC4   no    no     yes
56-bit RC4   no    no     yes
128-bit RC4  yes   yes    yes
DES          no    no     yes
3DES         yes   yes    yes
128-bit AES  yes   *      no
196-bit AES  yes   *      no
256-bit AES  yes   *      no
MD5          no    no     yes
SHA1         yes   yes    yes
256-bit SHA  yes   *      no
384-bit SHA  yes   *      no

* Означава, че конфигурацията е възможна смао с netsh.

DHT library bugs

27.01.2018
By Тодор in Arduino/Espressif

DHT библиотеката на Adafruit има дефект от доста време, който все още не е поправен. Резултата е твърде много грешки при четенето на DHT сензори.
Решението е във файла dht.cpp, където е декларирана функцията boolean DHT::read(bool force), да се закоментират редовете:

// End the start signal by setting data line high for 40 microseconds.
//digitalWrite(_pin, HIGH);
//delayMicroseconds(40);

И да се промени точно след тях:
// Now start reading the data line to get the value from the DHT sensor.
pinMode(_pin, INPUT_PULLUP);
delayMicroseconds(50);  // Delay a bit to let sensor pull data line low.

By Тодор in Linux

Конкретния пример е с Centos 7.3 64bit и mongodb 3.4
При инсталацията по подразбиране демона се стартира, но следните предупреждения лъсват при влизане в mongo през конзолата:

** WARNING: Access control is not enabled for the database.
**          Read and write access to data and configuration is unrestricted.
** WARNING: You are running on a NUMA machine.
**          We suggest launching mongod like this to avoid performance problems:
**              numactl --interleave=all mongod [other options]
** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
**        We suggest setting it to 'never'
** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
**        We suggest setting it to 'never'

За да се оттървем от последните 3 от тези предупреждения правим следното:
Във файла /usr/lib/systemd/system/mongod.service променяме:
User=mongod
да стане:
User=root
И още:
ExecStart=/usr/bin/mongod $OPTIONS run
да стане:
ExecStart=/usr/bin/numactl --interleave=all runuser -s /bin/bash mongod -c '/usr/bin/mongod --quiet -f /etc/mongod.conf run'
Презареждаме промените с:
# systemctl daemon-reload
Във файла /etc/sysctl.conf добавяме:
vm.zone_reclaim_mode = 0
Във файла /etc/security/limits.d/20-nproc.conf добавяме реда:
mongod       soft    nproc     unlimited
Файла /etc/rc.local по подразбиране вече не е изпълним, но все пак е оставен за съвместимост. Правим го изпълним с:
# chmod +x /etc/rc.local
И в него добавяме:
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

Сега е необходим рестарт на сървъра и след влизане в mongo, всико би трябвало да изглежда по-добре.

By Тодор in Mikrotik, Openwrt

Mikrotik рутерите поддържат (някаква) виртуализация. Не е кой знае колко ползваема, но е достатъчно да се инсталира openwrt с asterisk и виртуалната машина да служи за телефонна централа с красив уеб интерфейс и поддръжка на SIP и IAX.

Ето параметрите на виртуалната машина:

/metarouter
add memory-size=48MiB name=mr1
/metarouter interface
add dynamic-bridge=LAN type=dynamic virtual-machine=mr1

Изтеглете openwrt от тук.
Качете файла на рутера. От winbox избирате “Import Image” и внасяте gz файла.
Виртуалката тръгва и ако всичко е наред трябва да има и мрежа с Интернет.

Инсталаторът на пакети има счупен линк в списъка с хранилищата си, който трябва да се премахне:
В /etc/opkg.conf сложете коментар пред последния ред:
#src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/packages/mr-mips/packages

Следва инсталацията на Asterisk:

opkg update
opkg install libopenssl asterisk18 asterisk18-codec-alaw asterisk18-chan-iax2 asterisk-gui
/etc/init.d/asterisk enable

Сменете паролата на admin потребителя в /etc/asterisk/manager.conf и стартирайте демона:
/etc/init.d/asterisk start

Уеб интерфейса е достъпен на порт 8088.

Хав фун!

By Тодор in Mikrotik

Динамичните ИП адреси са гадни, но са добър начин Интернет доставчиците да пестят средства и ресурси. На стандартния домашен клиент това не се отразява особено. Вероятно повече от 90% от хората нямат и идея какво е ИП адрес.
Та на темата – “прокарването” на VPN тунел между клиенти с динамични адреси е предизвикателство, което може лесно да бъде ликвидирано. Необходимо е все пак обаче да имаме някакъв начин да открием адреса на крайната точка. Удобни са всевъзможните dyndns услуги, предлагани от самите Интернет доставчици или от купища сайтове.
Скрипта може да се ползва и от двете страни на тунела с малки изменения:

:global rip [:resolve kamenitza.ddns.net]
:log info "IP resolved: $rip"
/int gre set gre-to-pst remote-address=$rip
/ip ipsec policy set [/ip ipsec policy find comment="vpn1"] dst-address="$rip/32" sa-dst-address=$myip
/ip ipsec peer set [/ip ipsec peer find comment="vpn1"] address=$rip

В случая се отнася за IPSec криптиран GRE тунел.
След това се прави scheduler задача:
/system scheduler 
add interval=1h name=dyn-vpn on-event="/system script run dyn-vpn" policy=ftp,reboot,read,write,policy,test,password,sniff,

Понеже в конфигурацията на такъв тунел влиза и локалния WAN ИП адрес, може да се наложи и той да бъде автоматично открит и корегиран, където е необходимо на динамичния рутер:

:global myip [/ip address get [find interface=WAN] address]
:global myip [:pick $myip 0 [:find $myip "/"]]
/ip ipsec policy set [/ip ipsec policy find comment="vpn"] src-address="$myip/32" sa-src-address="$myip"

Това също трябва да влезе в scheduler-а по същия начин.

By Тодор in Linux

Една бърза бележка за нещо необходимо най-често при копиране на файлове от windows към *nix.
Премахване на Х атрибута на всички файлове в текущата директория и поддиректориите:
find . -type f -exec chmod -x {} +
Добавяне на Х атрибута на всички директории в текущата, рекурсивно:
find . -type d -exec chmod +x {} +

By Тодор in Mikrotik

Най-елементарното против навлеци, което май го има даже и в официалната документация. За ползване тип copy/paste:

/ip firewall filter
add action=drop chain=input comment=”Drop all blacklisted” src-address-list=blacklist
add action=add-src-to-address-list address-list=blacklist address-list-timeout=1w3d chain=input comment=’Add to blacklist’ connection-state=new dst-port=22 log=yes log-prefix=Blacklisted protocol=tcp src-address-list=stage3
add action=add-src-to-address-list address-list=stage3 address-list-timeout=30m chain=input comment=’Add to stage3′ connection-state=new dst-port=22 protocol=tcp src-address-list=stage2
add action=add-src-to-address-list address-list=stage2 address-list-timeout=5m chain=input comment=’Add to stage2′ connection-state=new dst-port=22 protocol=tcp src-address-list=stage1
add action=add-src-to-address-list address-list=stage1 address-list-timeout=1m chain=input comment=’Add to stage1′ connection-state=new dst-port=22 protocol=tcp

By Тодор in Linux

В случай, че се налага postfix да праща писма, като се аутентикира пред друг пощенски сървър, ползвайки един потребител за всичката изходяща кореспонденция.

В /etc/postfix/generic се добавя:

root@localhost.localdomain realuser@domain.tld
nagios@localhost.localdomain realuser@domain.tld
root@hostname realuser@domain.tld
nagios@local.domain   realuser@domain.tld
root@local.domain     realuser@domain.tld

Всеки локален потребител се описва тук. Срещу него пишем с какъв адрес да се замени, преминавайки през postfix. След това postmap /etc/postfix/generic.

В /etc/postfix/main.cf:

mydomain = local.domain
myorigin = $mydomain
relayhost = mail.domain.tld
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_generic_maps = hash:/etc/postfix/generic
sender_canonical_maps = hash:/etc/postfix/sender_canonical

/etc/postfix/sasl_passwd:
mail.domain.tld realuser:password
След това postmap /etc/postfix/sasl_passwd.

/etc/postfix/sender_canonical:
*       realuser@domain.tld
След това postmap /etc/postfix/sender_canonical.
Postfix ще тръгне след тази конфигурация, но вероятно няма да изпраща писма, докато не бъдат инсталирани съответните пакети cyrus-sasl… Ще познаете по грешките във /var/log/maillog при опит за изпращане на писмо.

By Тодор in Linux

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

Postfix конфигурацията.
/etc/postfix/main.cf:

smtpd_banner = mail.kamenitza.org ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/postfix.crt
smtpd_tls_key_file=/etc/ssl/postfix.key
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = mail.kamenitza.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = kamenitza.org, mail.kamenitza.org
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
message_size_limit = 50000000
recipient_delimiter = +
inet_interfaces = all
home_mailbox = Maildir/
virtual_alias_maps = hash:/etc/postfix/virtual
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    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
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
disable_vrfy_command = yes

/etc/postfix/virtual:
todor@kamenitza.org        todor
t@kamenitza.org       todor

Да не се забрави и postmap /etc/postfix/virtual след това.

Dovecot
/etc/dovecot/conf.d/10-auth.conf:

disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-system.conf.ext

/etc/dovecot/conf.d/10-mail.conf:
mail_location = maildir:~/Maildir
mbox_write_locks = fcntl

/etc/dovecot/conf.d/10-master.conf:
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }
}

/etc/dovecot/conf.d/10-ssl.conf:
ssl = yes
ssl_cert = </etc/ssl/postfix.crt
ssl_key = </etc/ssl/postfix.key

Opendkim – подписването на писмата.
/etc/opendkim.conf:

PidFile         /var/run/opendkim/opendkim.pid
Mode            s
Syslog          yes
SyslogSuccess   yes
LogWhy          yes
UserID          opendkim:opendkim
Socket          inet:8891@localhost
Umask           002
Canonicalization        relaxed/simple
Domain          kamenitza.org
Selector        default
KeyFile         /etc/opendkim/keys/default.private

Генериране на сертификата в /etc/opendkim/keys/
opendkim-genkey -d kamenitza.org

Ако има нужда с -s се посочва селектора. В случая ползваме default.
Съдържанието на default.txt се добавя като TXT запис в DNS конфигурацията на домейна:
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MI..."

By Тодор in Linux

То това е валидно не само за тази дистрибуция но и за всички с по-нови ядра.
В общи линии проблема е в така нареченото “reverse path filtering”, което с прости думи казано пречи на трафика да влиза през един интерфейс, а да излиза през друг. Подобно на анти-спуфинг защита. Най-често това е сценарий с резервирани връзки, динамично рутиране с няколко доставчика и подобни. Аз го забелязах при BGP рутиране, при което Интернет и БГ трафик идват по различни интерфейси.
В подобни сценарии е необходимо това филтриране да бъде спряно със следния ред в /etc/sysctl.conf:
net.ipv4.conf.default.rp_filter = 0

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

By Тодор in Linux, Openwrt

Давам пример за създаването на оптималната RRD база данни за събиране на мрежов трафик:

rrdtool create router.rrd --step 300 --start N  \
  DS:in:COUNTER:600:0:37500000000    \
  DS:out:COUNTER:600:0:37500000000    \
  RRA:AVERAGE:0.5:1:288      \
  RRA:AVERAGE:0.5:12:8760

Това означава, че:
– стъпката на графиката е 5мин
– двете полета за данни, in и out могат да приемат стойности от 0 до 37500000000
– ако повече от 10мин няма данни, се приема UNKNOWN
– първият архив съдържа последните 288 измервания – 288 * 300сек = 86400сек (24ч)
– вторият архив съдържа 8760 броя от осреднената стойност на всеки 12 измервания, т.е. средната скорост за всеки час (12*300сек=1ч); 8760часа=1година

Да взема да кажа и какво е 3750000000 🙂 Това е теоретичният максимум байтове, които могат да се навъртят от брояча на гигабитов порт за 5 минути.
Сметката е на база стандартен COUNTER64 брояч (от snmp), който брои octets (байтове).

1000000000bps/8=125000000Bps*300сек=37500000000байта

bps – bits per second (1000bits=1kbit)
Bps – bytes per second (1024bytes=1Kbyte)

Да се има предвид, че при мерене на COUNTER32 тази цифра е извън обхвата на брояча (4294967295) и при скорост от 1Gbps, за 5мин този брояч може да се превърти повече от 8 пъти 🙂

Tags: