Wszystkie wpisy, których autorem jest Krzysztof Jozwiak

apt-key: dlaczego trudno sprawdzić czy dany klucz jest już dodany?

Chciałem dodać do puppet-a dodawanie klucza dla repozytoriów apt ale okazało się żeby sprawdzić czy dany klucz jest już w bazie systemu to trzeba zrobić magię podobną do tej poniżej:

gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/$(mktemp)      --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --batch --list-keys 99D4C4262

Pewnie dopisze małego patch-a do apt-key aby nie musieć tak rzeźbić…

puppet: graficzne przedstawienie zależności

Czasem trudno dość, jakie zależności między obiektami / elementami stworzyliśmy dla naszego klienta (ang. node). Rozwiązanie jest proste, na kliencie dodajemy do pliku konfiguracyjnego dyrektywy:

[agent]
graph=true
graphdir=/tmp

Konwersja plików może być dokonana przy pomocy programu dot:

#! /bin/bash

DOT_DIR=/tmp
OUTPUT_DIR=/tmp

dot -Tpng $DOT_DIR/expanded_relationships.dot -o $DOT_DIR/expanded_relationships.png
dot -Tpng $DOT_DIR/relationships.dot -o $DOT_DIR/relationships.png
dot -Tpng $DOT_DIR/resources.dot  -o $DOT_DIR/resources.png

wskazówka: nie musisz tego robić na kliencie, możesz przegrać pliki na serwer centralny i tam skonwertować.

puppet: sprawdzanie co puppet chciałby zrobić

Większość administratorów, wolałaby wiedzieć co puppet chce zrobić zanim pozwoli mu mieszać na serwerach produkcyjnych. Można to w miarę łatwo zobaczyć korzystając z opcji –noop:

root@ziutus:~# puppetd  --test --noop
info: Caching catalog for gateway.linuxexpert.pl
info: Applying configuration version '1340171431'
notice: /Stage[main]//Node[gateway.linuxexpert.pl]/Phpldapadmin::Server[127.0.0.1]/Exec[/usr/local/bin/merge_config_files.sh /etc/phpldapadmin/config_main.php /etc/phpldapadmin/config.d/ /etc/phpldapadmin/config.php]/returns: is notrun, should be 0 (noop)
notice: /Stage[main]/Rsyslog/Service[rsyslog]/enable: is false, should be true (noop)
notice: /Stage[main]/Knockd/Service[knockd]/ensure: is stopped, should be running (noop)
notice: /Stage[main]//Node[gateway.linuxexpert.pl]/Ssh_authorized_key[root_ziutus]/ensure: is present, should be absent (noop)
notice: Finished catalog run in 6.35 seconds

sftponly + chroot – wbudowane w sshd rozwiązanie

Zmieniamy sftp-server dostępny standardowo na wbudowany sftp:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp -l VERBOSE

Następnie tworzymy grupę sftp, dodajemy do niej użytkowników i konfigurujemy zasady dla tych użytkowników:

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Wady rozwiązania:
* nie działa scp
* nie działa rsync (możesz oczywiście zbudować w chroot środowisko dla rsync ale nie o to chodzi w łatwych rozwiązaniach…)

Plusy:
* wbudowane rozwiązanie

Ubuntu: sendmail i cronjob który się nie usunął

Dostawałem dużo mail-i jak poniżej:

X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
Message-Id: <20120609180001.ADE45276C55@xxx.linuxexpert.pl>
Date: Sat,  9 Jun 2012 22:00:01 +0400 (MSK)

/usr/share/sendmail/sendmail: 1267: /usr/sbin/sendmail-msp: not found

Rozwiązaniem okazało się:

sudo apt-get --purge remove sendmail-base sendmail-cf sendmail-doc

Czemu nie robią dobrze pakietów jak kiedyś?

knockd: konfiguracja na VPS-ie opartym na OpenVZ

Na moim VPS-ie mam zainstalowanego Ubuntu. Podstawową sprawą w konfiguracji jest wskazanie karty sieciowej jako venet0:

root@ziutus:/var/log# egrep -v "^#|^$" /etc/default/knockd
START_KNOCKD=1
KNOCKD_OPTS="-d -i venet0:0"

Dalej standardowo konfigurujemy /etc/knockd.conf

root@ziutus:/var/log# cat /etc/knockd.conf
[options]
#       UseSyslog
        logfile = /var/log/knockd.log


[openSSH]
        sequence    =  9537,7496,3512
        seq_timeout = 5
        command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn

[closeSSH]
        sequence    = 3512,7496,9537 
        seq_timeout = 5
        command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags    = syn