Ubuntu Server 18. Уж модула е инсталиран, но в логовете се виждат ей такива грешки: # warning: pcre:/etc/postfix/domains.pcre is unavailable. unsupported dictionary type: pcre
Все пак проверяваме:
# postconf -m | grep pcre
pcre
Ръчно събитието може да се повтори ето така:
# postmap -q foo pcre:/etc/postfix/domains.pcre
postmap: warning: unsupported dictionary type: pcre (/usr/lib/postfix/dict_pcre.so: No such file or directory)
postmap: fatal: unsupported dictionary type: pcre
И тук вече се изяснява картинката. Библиотеката е инсталирана, просто файла е с друго име.
Поправяме конфигурацията ей така:
# sed -i 's/\/dict_pcre/\/postfix-pcre/g' /etc/postfix/dynamicmaps.cf
Наложи ми се да копирам големи файлове от уиндоус към линукс през SSH. Обикновнео ползвам WinSCP за подобни дейности. За малки файлове или отдалечено редактиране е приемливо и удобно, но когато стане дума за много гигабайти – по-скоро не. Проблемът му е, че дори при достатъчно бърза връзка, скоростта на копиране пак се колебае между 1 и 3 МВ/с. Ползвайки последната към момента версия.
В чудене и безброй проби с подреждания и размествания на крипто алгоритмите на клиента и на сървъра, в крайна сметка стигнах до най-бързото решение (за мен). Уловката е, че е линукс-линукс. В уиндоус вероятно с cygwin може да се измисли нещо, но нямам доказателства.
Самото копиране: tar -zcvf - /path | ssh user@1.2.3.4 "cd /tmp && tar -zxvf -"
Това ще вземе директорията /path и ще я излее на 1.2.3.4 в /tmp. Явно да се прекара през тарване и зипване дава положителни резултати.
ldapmodify е основен инстурмент с който могат да се редактират обекти в една активна директория (АД) посредством *nix среда.
За едно сравнително популярно действие, като смяна на парола, обаче нещата не са толкова лесни, или поне на пръв поглед не са. Смяната на паролата в LDIF формат изглежда така:
Kомандата се изпълнява успешно и редактира съответния атрибут, но ефект от това няма. Т.е. никаква парола не сме сменили.
Оказва се, че в Windows Active Directory, userPassword полето по подразбиране не е разрешено. Разрешаването му е лесно с ADSI Edit:
Стойността на dsHeuristics трябва да е точно 000000001 (не 1). След промяната е необходима и актуализация на схемата:
И сега вече нещата се случват! Пример: LDAPTLS_REQCERT=never ldapmodify -D 'CN=Admin,OU=Admins,DC=corp,DC=local' -w AdminPwd -p 389 -ZZ -x -h 192.168.1.1 -f ldif.txt
Admin е администраторския акаунт, който има права да редактира чужди пароли.
LDAPTLS_REQCERT=never е необходимо, поради тази грешка: TLS: peer cert untrusted or revoked (0x42).
-ZZ -x са необходими, за да се закачим към ЛДАП сървъра по сигурен/криптиран канал. Иначе действието не е позволено.
192.168.1.1 е домейн контролера.
ldif.txt са ЛДАП командите подобно на тези по-горе в статията.
*ADSI Edit е страхотен инструмент, с който, ако не се внимава, може напълно и завинаги да бъде сасипана една Активна Директория.
С конфигурацията на Carbon по подразбиране, Whisper база данни файловете пазят информация само за последните 24часа. Промяната на този период е лесно да се направи в конфигурацията на Carbon: /etc/carbon/storage-schemas.conf
Важна е стойността на pattern – в примера ще се отнася за всички броячи, но могат да се правят и шаблони по имената им. Другото важно е, че тези промени се отансят само за новосъздадени броячи. Всички вече създадени бази данни с броячи, трябва да се актуализират ръчно:
Преравя всички WSP файлове, които са в директорията по подразбиране (ако не са там, да се види в carbon.conf къде са) и променя схемата им за съхранение.
Понеже всички редактирани фйалове са собственост на root, ги връща обратно на потребителя _graphite.
Както всички телефони, и моят се препълни със снимки и клипове.
Включвам го с УСБ кабел към компютъра и започвам да копирам. По най-стандартния уиндоусовски начин – копи от телефона, пасте на диска на компютъра. Да, ама върви със скорост все едно през телефонна линия го правя. Беше късно, не ми се занимаваше, реших да го оставя да се изкопира през нощта. На другия ден поглеждам какво става и за около 10 часа беше изкопирало 9%. А данните общо са около 30ГБ. Надушвам конспирация! Нарочно са го направили така, за да не могат хората да си копират файловете, а да им ползват облаците. Прекратих го. Обмислях варианта просто да извадя картата памет от телефона и да си взема файловете директно от нея, но исках да опитам и още нещо.
Необходимо е да се активира “Отстраняване на УСБ грешки”, което се намира в “Настройки > Опции на програмиста”. Менюто “Опции на програмиста” по принцип е скрито, и за да се покаже е необходимо първо да отворим “Всичко за телефона” и да натискаме бързо 10-15 пъти върху “Номер на версията”.
ADB e разархивиран някъде на компютъра. Пускам командния ред (cmd) и отивам в директорията на ADB.
Първо влизам в телефона и проверявам къде точно са снимките или файловете, които ще копирам:
След няколко секунди става ясно, че скоростта на копиране е коренно различна. Сега е сравнимо с нормална USB2 флашка. 30те ми ГБ се изкопираха за по-малко от час.
Има и противоположна команда push, с която пък могат да бъдат копирани файлове в другата посока – към телефона.
В този сайт е събрана база данни от всички известни изтичания на потребителски данни в Интернет. Можете да проверите дали ваш акаунт е бил засегнат от подобен ВиК проблем.
Друго, което сайта предлага е възможност да проверите дали паролата ви е изтичала някога от някъде. Та, ако си мислите, че сте си измислили ултра мега сигурна парола, която се окаже, че някой някъде е използвал и акаунта му е изтекъл, ще разберете даже колко пъти се е случвало това. Проблемът с това е, че щом е изтекла, то най-вероятно тя е включена в базите данни с думи, които се ползват основно за речникови атаки. И ако някой вземе, че реши да ви хаква, шанса му да успее е значително по-висок, ако паролата ви е в подобен речник.
А сега кой ще си напише паролата в някакво поленце в някакъв сайт, за да му каже колко е добра? 🙂 Ми аз не бих.
Все пак е възможна проверка по сигурен начин. Сайта има АПИ интерфейс, към който можем да подадем само първите 5 символа от паролата, а той ще върне всички съвпадения (може да са 5 или 500), за да може ние сами да си търсим пълния хеш. Е да, ама е малко неудобно и изисква някакъв ръчен труд.
Направил съм малък баш скрипт, който пита за парола, обръща я в SHA1, пита онлайн базата за съвпадение с първите 5 символа от хеша, после сравнява върнатия резултат и сервира проверената информация. Паролата не се подава, като аргумент на скрипта, за да се записва в историята на командите.
Качен е публично в GitHub тук.
Маршрутизаторите и комутаторите също имат нужда от архивиране! Не че това ще направи подмяната на изгорял рутер удоволствие, но ще е значително по-лесно. А и решението е почти контрол на версиите – с един commit на ден, което помага и при синдрома “вчера работеше”.
Най-лесния начин, за който се сещам е автоматична бекъпвачка с Ansible.
Попълваме инвентара в текстов файл горе-долу по тоя пример (ios-inventory):
Добавяйки абсолютните пътища до файловете, тоя ред го мушваме в крон за ежедневно изпълнение и с това връзваме гащите.
Ако имената и паролите за достъп до техниката са различни, то, където е необходимо, променливите с името и паролата ги слагаме на реда с ИП адреса, разделени с интервал.
Ретеншън може да се поддържа с logrotate.
Сега може да си пиете бирата все едно мрежата е архивирана 🙂
Наздраве!
Сървъра няма out-of-band управление (iLO, LOM, IPMI и т.н.).
Сървъра разполага с ethernet връзка към Интернет.
На място (при сървъра) има човек, който може да окаже някакво съдействие. Ще го наречем бай Иван.
План за действие
Ще направим имидж (ISO), който ще изпратим на бай Иван, за да го качи на флашка и да зареди сървъра от него.
От флашката ще се заредят достатъчно “неща”, които да ни осигурят отдалечен и сигурен достъп до машината, за да продължим инсталацията.
Изпълнение
Ще използваме minimal образ на Ubuntu 20.04 LTS, защото е изключително малък и ще бъде лесно да бъде изпратен на бай Иван.
Образа е наличен тук.
Отваряме ISO-то и редактираме txt.cfg. Той би трябвало да съдържа следните редове:
label install
menu label ^Install
menu default
kernel linux
append vga=788 initrd=initrd.gz --- quiet
Редактираме последният ред (всичко е на един ред): append vga=788 initrd=initrd.gz console-setup/layoutcode=us locale=en_US.UTF-8 keyboard-configuration/layoutcode=us languagechooser/language-name=English countrychooser/shortlist=BG localechooser/supported-locales=en_US.UTF-8 hostname=ubuntuserver domain=local interface=auto url=http://kamenitza.org/files/preseed.cfg ipv6.disable=1 ---
Нещата, които този ред върши са сравнително ясни и самообясняващи се. По-интересни са
interface=auto – Автоматична настройка на мрежовия интерфейс (DHCP).
url=http://kamenitza.org/files/preseed.cfg – Съдържа предврителен избор на опции от инсталацията.
Ако в мрежата няма DHCP сървър и IP-то трябва да се настрои ръчно, interface=autо се замества със следните примерни параметри: netcfg/get_ipaddress=192.168.150.111 netcfg/get_netmask=255.255.255.0 netcfg/get_gateway=192.168.150.1 netcfg/get_nameservers=8.8.8.8 netcfg/disable_dhcp=true
За редакция на ISO файл в Уиндоус няма особено работещи безплатни програмчета. Аз ползвах WinISO, което в триал/демо режим върши работа за малки образи.
По наша преценка се прави бутваща USB флашка (с Rufus) или CD или DVD.
Горещо препоръчвам ползването на възможно най-пълен preseed.cfg, за да се елиминира ръчния труд при повторно изпълнение на задачата:
Опциите са достатъчно говорящи и самообясняващи се. Основна опция тук е network-console/authorized_keys_url. Представлява URL адрес до SSH ключа, който ще се ползва за автентикация при инсталацията. Трябва да е достъпен по HTTP (не HTTPS). Друго интересно е създаването на потребител, задаването на парола, добавянето на SSH ключ, включването на този потребител в sudoers и забраняването за ползване на пароли при влизане през SSH. Паролата на потребителя се генерира ето така: mkpasswd -m sha-256
Сега бай Иван трябва да буутне сървъра с нашия имидж и да избере опцията за инсталация по подразбиране. След няколко минути всичко спира на следния екран:
Може да си знаем адреса, а може и бай Иван да ни го изпрати по някакъв начин. Инструкциите са ясни. Свързваме се с дадения IP адрес по SSH с потребител installer, като се автентикираме с личния си ключ. Довършваме инсталацията с всичко, което липсва от preseed фйла.
Ползвал съм собственоръчно направени НАС-ове, било то полу-готови с Freenas, изградени от стандартна Linux дистрибуция или напълно готови хардуерни решения, за които съм писал и преди. В крайна сметка най-доволен останах от Synology. Не защото е перфектно, а защото има най-малко проблеми и бъгове.
Разбира се че е пълно с бъгове! Пакетът му с основни приложения е абсолютен качамак! Нито снимките можеш да си архивираш по някакъв полезен начин, нито файловете. Но целта на поста не е да правя ревю на продукта, а да споделя един особено дразнещ и неприятен дефект.
Притежавам един от малките модели – DS218+. Машинката е закачена за APC UPS, има и комуникационен кабел между нея и UPS-a, за да ѝ е по-ясно каква е ситуацията с тока. Включена е 24/7, като е разрешено единствено да гаси дисковете, ако не се ползват известно време.
Няколко пъти намирам НАС-а загасен. Ама все едно съм му натиснал копчето и се е изключил. А още по-неприятното е, че не може и да се включи. След натискане на бутона, светва, развърта вентилатора, но не развърта дисковете и след 10сек се изключва отново. После пак натискам бутона и стискам палци. И така понякога от 5-тия, понякога от 10-тия опит, вземе, че развърти дисковете и тръгне.
Актуализирах софтуера. Сканирах за грешки. Проверявах захранващия блок. Не открих проблем.
Единствената закономерност, която открих е, че, ако извадя единия или и двата диска, след като се е самозагасил, и натисна копчето, зарежда веднага. Не открих в Интернет някой да е писал за дискова несъвместимост, а и ползвам доста стандартни дискове – 4TB HGST (HDN726040ALE614).
Все още не се предавам и не звъня в гаранционния сервиз за рекламация!
След поредната проверка на конфигурацията и търсене на скрити детайли или каквито и да е улики за проблема из интерфейса на устройството се натъквам на следната опция:
Естествено това беше включено. Даже кой би си помислил, че такава екстра няма да си я има бай-дизайн вградена и ще се налага ръчно да я пускаш и спираш!?
Ами изключих я и проблемите изчезнаха! Вече повече от година не се е самоизключвало.
Натъкнах се на неочаквана мотика при комуникацията от контейнер към самия себе си, но през публичния му адрес.
Очаквано тук трябва да се случат някои гимнастики с iptables, за да има двупосочна транслиране, известно още като nat reflection или hairpin nat. Да, обаче пак не работи!
В крайна сметка се оказва, че Docker си прави всичко сам, ама само, ако си поискаме 🙂
Вградената userland proxy услуга трябва да бъде спряна, за да се получи това, което желаем, а именно, ако контейнера ни е с адрес 172.17.0.2, който от Интернет е достъпен на 70.80.90.100, да можем от самия контейнер да се свържем към адреса 70.80.90.100 и това да бъде правилно транслирано от хоста обратно към контейнера.
На кратко:
Създаваме файл /etc/docker/daemon.json със следното съдържание:
{
"userland-proxy": false
}
И рестартираме докер услугата:
systemctl restart docker
Дали се е получило можем да видим от следния параметър на ядрото на ОС съдържаща контейнерите (трябва да е със стойност 1):
Като млад, зелен и бесен метъл пишех разни щуротии на Паскал и Делфи. Прости инструментчета или шеговити програми от сорта на тази в чиято памет е този пост. Писана е някъде 1999-2000-та година – сиреч преди ДВАЕСЕ години! Т.е. аз съм вече чичка…
Компютъра ми по онова време беше Cyrix 6×86 PR166 с 16MB RAM и чернобял монитор. Уиндоуса беше ’95, а линукса – Red Hat 5 (Hurricane) с ядро 2.0. Най бързата връзка с Интернет беше 2.5КБ/с през домашния телефон на дядо ми и съм чакал по цяла нощ, за да сваля новата песен на Гуано Ейпс от Напстера…
Качвам си играта ТУК, да ми седи за спомен, че хостинга на официалния ѝ сайт фалира преди години. Бахур Хак Тийм също се оказаха няк’ви несериозници…
Онлайн скенерите, с които Интернет е претъпкан са основна отправна точка за “втвърдяването” (hardening) на всеки уеб сървър. Много от препоръките, които дават са ясни, точни и лесни за изпълнение. Голяма част от тях обаче правят така, че някои уеб страници спират да работят или в най-добрия случай започват да се държат неадекватно.
ServerSignature Off
ServerTokens Prod
Header set X-Frame-Options: "sameorigin"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "no-referrer"
Header set X-Content-Type-Options: "nosniff"
SSLStrictSNIVHostCheck On
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
SSLOpenSSLConfCmd DHParameters /etc/apache2/dhparam
Options -Indexes -FollowSymLinks
SSLProtocol TLSv1.2
А следното трябва да фигурира в конфигурацията на всеки виртуален сайт:
Изтегляне на правилните Дифи-Хелман параметри (файла вече сме го посочили по-горе): curl https://ssl-config.mozilla.org/ffdhe4096.txt > /etc/apache2/dhparam
Изтеглянето на този файл наистина е важно и има значение. По последни данни саморъчното генериране на DH е пълна скръб и не трябва да се практикува. Задълбано инфо по темата има тук.
Примера е за Апач, но хедърите са същите какъвто и да е уеб сървъра. Разлика има единствено в това, как се подават в конфигурацията.
Що пък да не си направим LAMP (linux+apache+mysql+php) в докер контейнер?
Портативно
Съвместимо
Лесно за размножаване и разкрасяване
Винаги подходящата версия за претенциозни приложения
Започнах с Alpine Linux, като един от най-подходящите за подобни цели, но се оказа че пакета на Апач има редица проблеми, а и разнообразието от готови допълнителни пакети е леко бедно и щеше да се наложи ръчна компилация на това-онова.
В крайна сметка се спрях на последния наличен Ubuntu Server, който към този момент е 18.04. А до няколко дни ще излезе 20.04 и ще актуализирам.
Готов контейнер качвам в Docker Hub. А изходния код и рецептата за забъркване, в Github.
На кратко:
Файловете на уеб сайтовете, базата данни, логовете и сертификатите са съхранени извън контейнера.
Контейнера онаследява часовата зона на основния сървър.
Ползва се PHP-FPM. Процеса е сравнително оптимизиран за стандартно ползване.
MariaDB работи в режим TCP/IP, като поддържа SSL/TLS криптиране на трафика. Конфигурацията е оптимизирана.
Ежедневна крон задача проверява сертификатите на уеб сайтовете и автоматично издава Letsencrypt сертификати при нужда.
Конфигурацията на Апач е оптимизирана по всички основни препоръки за сигурност и съвместимост.
Ще се радвам, ако свърши работа и на някой друг, освен мен 🙂
След многобройни промени през годините и подскачане от шрифт на шрифт, винаги с частичен и никога задоволителен успех, попаднах на подходящ, който мога да приема за стандарт в сайта. Шрифта се нарича Iosevka и е с отворен код. Чист, ясен и лесен за очите.
Изглежда ми много добре! Доволен съм!
Според издателя на квалифицирания електронен подпис, инсталацията му в линукс е предизвикателство от различно ниво. Приемам, че подписа е коректно инсталиран според заводската му документация, и че плъгина на Firefox работи.
Това е достатъчно, за да се влезе в почти всеки сайт искащ удостоверяване с КЕП. Включително и в портала с електронни услуги, предоставяни от Националната Агенция по Приходите (НАП).
За да свършим някаква работа в този портал, обаче, само удостоверяването при влизане не е достатъчно. Всичко, което се попълва и изпраща, трябва да е допълнително подписано. А това става с… Java приложение разбира се 🙂
В Linux Mint 19.03 е необходимо да се инсталира icedtea-netx:
sudo apt install icedtea-netx
След това вече jnlp-то може да се изпълни, за да видим това:
Всичкото търсене води до стари документи обясняващи как да ползваме вече не съществуващи плъгини и методи. Firefox ликвидира Java плъгина преди време, защото е твърде голяма дупка.
Необходимо е да се инсталира “оригиналният” пакет Oracle Java.
Kamenitza.org е блог тип тетрадка с бележки и напътствия около работата и хобитата ми. Решения на текущи проблеми и т.н. Отговори на повечето от въпросите разбира се има безброй в гООгле. Топлата вода вече е открита, колелото е изобретено и аз не пиша нищо ново и революционно тук. Ще се радвам, ако намерите нещо полезно […]more →
Последни коментари