2016年8月17日水曜日

EAP-TLS で wpa_supplicant 失敗する。md5 の署名が原因だった。

Fedora 20 から Fedora 24 にジャンプアップしたら(アップデートサボりすぎ)
wpa_supplicant が CONNECTED にならん。

wlp3s0: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 13 (TLS) selected
wlp3s0: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=JP/ST=Tokyo/...' hash=...
TLS: Certificate verification failed, error 7 (certificate signature failure) depth 0 for '/C=JP/ST=Tokyo/...'
wlp3s0: CTRL-EVENT-EAP-TLS-CERT-ERROR reason=0 depth=0 subject='/C=JP/ST=Tokyo/...err='certificate signature failure'
SSL: SSL3 alert: write (local SSL3 detected an error):fatal:decrypt error
OpenSSL: openssl_handshake - SSL_connect error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm
OpenSSL: pending error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
wlp3s0: CTRL-EVENT-EAP-FAILURE EAP authentication failed

SSLv3 のせいかと思ったが、いろいろググると手元のクライアント証明書が MD5
で署名されているのが原因のようだ。手元の証明書を開けてみたら以下だった。

    Signature Algorithm: md5WithRSAEncryption

下記環境変数を設定して wpa_supplicantを実行すればイケた。

OPENSSL_ENABLE_MD5_VERIFY=1
NSS_HASH_ALG_SUPPORT=+MD5





2016年6月13日月曜日

password-crypt-salt-format の備忘

password-crypt-salt-format についてわかりやすく書いてくれている方が
いらっしゃったのでメモ。助かります...

http://ossexpo.blogspot.jp/2014/09/openldap_25.html

  • $5$はSHA256形式のハッシュ化を意味し、"%.8s"の部分が8文字のランダムなソルトを付与することを意味します。SHA512を利用したい場合は、$5$の代わりに$6$を指定します。
  • {CRYPT}形式で指定したパスワードは、glibcのcrypt(3)によってSHA256/SHA512のハッシュ化が行われますが、この 際、5000回のラウンド処理が行われます。ラウンド回数は salt-formatにroundsパラメーターで指定することが可能で、1000回以上を指定可能です。(1000回以下を指定すると、1000に設 定されます)
  • 8000回のラウンドを指定する場合は、password-crypt-salt-formatに"rounds=8000$"をソルト文字列の前に付与します。
  • password-crypt-salt-format "$5$rounds=8000$%.8s"
  • 2016年5月16日月曜日

    RHEL7 系の slapd では SLAPD_ULIMIT_SETTINGS は使えない

    RHEL6 系(CentOS 6, Scientific Linux 6 等)で、 /etc/sysconfig/slapd に
    SLAPD_ULIMIT_SETTINGS="-n 4096" とか指定して too many open files の対策
    をしていた人もいると思うが、RHEL7 だとこれは使えない。疑う人は
    /proc/<pid>/limits で確認してみる。

    この SLAPD_ULIMIT_SETTINGS は slapd が見る環境変数じゃなくて、RHEL6 系
    の init.d 下のスクリプトが見てちょこちょこやってただけということで。

    なので、systemd 的には ulimit -n な設定は /etc/systemd/system/slapd.service
    に LimitNOFILE で定義する。ファイル編集後は systemd daemon-reload を忘れずに。

    # /usr/lib/systemd/system/slapd.service を直してしまうと、おそらく update 時
    # に上書きされる。これは openldap-servers の config ファイル扱いになってない。

    # cp /usr/lib/systemd/system/slapd.service /etc/systemd/system/
    # vi /etc/systemd/system/
      : (snip) 
    [Service]
    Type=forking
      : (snip)
    ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS
    LimitNOFILE=4096 
      : (snip)  

    2016年5月12日木曜日

    RHEL7 で xinetd から起動してるプロセスからのコア吐き

    そもそも RHEL7 で xinetd 使うなってことは置いておいて、xinetd から起動している
    自作のプログラムからコアが吐けない。

    http://blog.urban-theory.net/2014/08/27/why_the_coredump_fails_or_removed_too_quickly

    /etc/abrt/abrt-action-save-package-data.conf

    いろいろ試して上記の情報で吐けるようにはなったのだが、試した中でどれがいらない
    要素かわかないのでとりあえず他にやった設定全部メモ。


    • /usr/lib/systemd/system/xinetd.service に LIMITCore=infinity を追加。
    • ソース自体に下記を追加

    struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
    setrlimit(RLIMIT_CORE, &rl);


    2016年5月6日金曜日

    pwdMinLength 挙動メモ

    OpenLDAP の ppolicy で pwdMinLength が効かないので調べた単なるメモ。
    結論として、これを効かせるには pwdCheckQuality を 1 か 2 にしなきゃならん。
    どこぞに userPassword がハッシュだと効かないとか書いてあったが、どうもそれは違うみたい。

    とにかく pwdMinLength を有効にしたいなら pwdCheckQulity:1 (または2)にする必要あり。

    2016年4月19日火曜日

    Open vSwitch の内部ポートを tcpdump

    Open vSwitch の内部ポートを tcpdump したいんだが、普通に -i にそのポートを指定する
    と No such device exists で蹴られる。

    ググったらすぐ見つかったが、コマンドの意味が全然わからないのでおまじないだと思って
    ここにコピペメモ。

    http://docs.openstack.org/ja/openstack-ops/content/network_troubleshooting.html

    1. ダミーインターフェース snooper0 を作成して起動します。
      # ip link add name snooper0 type dummy
      # ip link set dev snooper0 up
      
    2. snooper0 デバイスを br-int ブリッジに追加します。
      # ovs-vsctl add-port br-int snooper0
      
    3. patch-tun のミラーを snooper0 に作成します (ミラーポートの UUID を返します)。
      # ovs-vsctl -- set Bridge br-int mirrors=@m  -- --id=@snooper0 \
      get Port snooper0  -- --id=@patch-tun get Port patch-tun \
      -- --id=@m create Mirror name=mymirror select-dst-port=@patch-tun \
      select-src-port=@patch-tun output-port=@snooper0 select_all=1
    4. これでうまくいきます。tcpdump -i snooper0 を実行して、patch-tun の通信を参照できます。
    5. br-int にあるすべてのミラーを解除して、ダミーインターフェースを削除することにより、クリーンアップします。
      # ovs-vsctl clear Bridge br-int mirrors
      
      # ovs-vsctl del-port br-int snooper0
      
      # ip link delete dev snooper0
      

    2016年4月3日日曜日

    resolv.conf's filetype

    なんか /etc/resolv.conf の selinux context が下のようになってた。

    system_u:object_r:svirt_sandbox_file_t:s0:c243,c503

    docker のファイルタイプになっちゃっててさらに MCS が c254,c503
    っつーのがついちゃって、全然覚えがないんだけど...

    docker いじってたときに間違ったか?

    Current mode:   enforcing だから dhclient 起動したときに DNS サーバ
    の修正が Permission denied になってる。

    仕方なく restorecon -F /etc/resolv.conf なんだけどなにか負けた気がする...
    -rw-r--r--. root root system_u:object_r:net_conf_t:s0  /etc/resolv.conf