cat id_rsa.pub >> authorized_keys したつもりが error key_read: uudecode が出るエラー対応
1 | $ tail -f /var/log/secure |

結論
「/n」 が入ってしまっていました。
「/n」削除すれば問題なくなりました。
多少編集した際に混入させてしまったのかも。。
1 | $ tail -f /var/log/secure |
「/n」 が入ってしまっていました。
「/n」削除すれば問題なくなりました。
多少編集した際に混入させてしまったのかも。。
MacOSX デフォルトでは python 2 系。
python 2.7 は 2020 年までのサポート なので
python 3 系 に慣れておこうということで
3 系環境を構築しようと思いました。
ですが
dlib など Python 2 系でないとうまく設定ができなかった経緯があり
(※自分の不手際の可能性もありますが)
両方残そうということで両仮想環境を構築します。
1 | $ sw_vers |
以下オフィシャルサイト参照してください。
2016/07/28 現在、 python = 2.7.10, python3 = 3.4.3
1 | $ brew install python python3 pyenv |
.bashrc もしくは .zshrc に追記します。
以下仮に .bashrc とします。
1 | vi ~/.bashrc |
1 | export PYENV_ROOT="$HOME/.pyenv" |
1 | $ source ~/.bashrc |
1 | sudo easy_install virtualenv |
1 | $ which python |
1 | $ virtualenv -p /usr/local/bin/python2.7 ~/py2env |
1 | $ which python3 |
1 | $ virtualenv -p /usr/local/bin/python3 ~/py3env |
1 | $ source ~/py2env/bin/active |
1 | $ source ~/py3env/bin/active |
今更ですが備忘録的まとめでした。
Reactio の無料化によりその機能が解放され、様々な監視・アラートツールとの連携が可能になりました。
これを機に Zabbix + Reactio 連携したのでまとめました。
Zabbix 3.0 がインストールされ起動されていることを前提とします。
※既に設定されている場合はスキップしてください。
Configuration > Hosts > create
プロジェクト毎にインシデントを管理します。
https://<Organization ID>
.reactio.jp/settings/project
Zabbix 管理画面で設定している Host 名を Project 名とします。
プロジェクト作成ページと同ページ内にある API 項目の 「+」ボタンクリックし API KEY 発行します。
1 | $ cd /usr/lib/zabbix/alertscripts |
1 | $ cd /usr/lib/zabbix/alertscripts/zabbix-reactio |
<Organization ID>
設定1 | [db_info] |
1 | $ cd /usr/lib/zabbix/alertscripts/zabbix-reactio |
Reacito では全てのインシデントは ID で管理されています。
Zabbix で障害アラート通知時に Reactio インシデント作成 API をコールし インシデント ID を保存します。このインシデント ID は Zabbix で障害回復アラート通知時に Reatio インシデントステータス更新 API をコールする際に利用します。
Administration > Media types Create media type
ボタンクリック
以下値を入力し Add
ボタンクリック
Item | Value |
---|---|
Name | Reactio |
Type | Script |
Script name | zabbix-reactio/reactio.php |
Script Parameters 1 | {ALERT.SUBJECT} |
Script Parameters 2 | {ALERT.MESSAGE} |
Administration > Users Create media type
ボタンクリック
Configuration > Actions Create ボタンクリック
Item | Value |
---|---|
Name | Reactio Notification |
Default subject | PROBLEM alert - {TRIGGER.NAME} is {TRIGGER.STATUS} |
Default message | HOST: {HOST.NAME} TRIGGER_NAME: {TRIGGER.NAME} TRIGGER_STATUS: {TRIGGER.STATUS} TRIGGER_SEVERITY: {TRIGGER.SEVERITY} DATETIME: {DATE} / {TIME} ITEM_ID: {ITEM.ID1} ITEM_NAME: {ITEM.NAME1} ITEM_KEY: {ITEM.KEY1} ITEM_VALUE: {ITEM.VALUE1} EVENT_ID: {EVENT.ID} TRIGGER_URL: {TRIGGER.URL} |
Recovery message | チェック |
Recovery subject | RECOVERY alert - {TRIGGER.NAME} is {TRIGGER.STATUS} |
Recovery message | HOST: {HOST.NAME} TRIGGER_NAME: {TRIGGER.NAME} TRIGGER_STATUS: {TRIGGER.STATUS} TRIGGER_SEVERITY: {TRIGGER.SEVERITY} DATETIME: {DATE} / {TIME} ITEM_ID: {ITEM.ID1} ITEM_NAME: {ITEM.NAME1} ITEM_KEY: {ITEM.KEY1} ITEM_VALUE: {ITEM.VALUE1} EVENT_ID: {EVENT.ID} TRIGGER_URL: {TRIGGER.URL} |
Enabled | チェック |
以下項目から判断して Reactio API を叩いてます。
メッセージを整形する場合でも、 上記項目は残しておくようにしてください。
以上 Zabbix で Reactio 連携設定完了しました。
当方、運用し始めです。
障害レベルによってメッセージを変更したりと今後更新検討致します。
是非以下も合わせて Zabbix-Slack 連携もご利用ください。
以上
ご清聴ありがとうございました。
Amazon Prime 会員の無料体験版で
Raspberry Pi 3 B 買いました♪
開発 Ready な状態を作るべく
そのセットアップ方法をまとめました。
以下最低限必要なものです。
計 8,459円
電源はPCのUSBポートからでも良いかな、と思ってましたが
Pi3Bの推奨電流が 2.5 A となった為、2.5 A 対応電源が必要になりました。
その他
大体持ち合わせてるのでは、と思います。
会社のゴミ山に捨ててあるのではないでしょうか。
その他含めても 10,378円。こりゃやるっきゃない。
早速セットアップ手順へ
以下サイトからSDカードフォーマッターアプリをダウンロードしフォーマットします。
Macであれば for Mac
を選択し
同意してダウンロードします。
フォーマットするSDカードがどれか知る必要がある為、
SDカードを差し込む前にターミナルから以下実行
1 | df -h |
※MacBook AirではSDカード差し込み口がないのでカードリーダで読込みます。
もう一度 df -h
すると
新たに追加されたのが SDカード のファイルシステムです。
※ 自分は名前を「RASP3B」としました。
もう一度 df -h
ディスクイメージ名が変更されているのがわかります。
以上でSDカードフォーマット完了です。
オフィシャルサイトから最新 Raspbian OS をインストールします。
数分掛かります。
1 | cd ~/Downloads |
先ほど確認した ファイルシステム名 /dev/disk2s1
から s1
を取り除いた、
イメージ対象をアンマウントする
1 | diskutil umountDisk /dev/disk2 |
1 | sudo dd if=/Users/<User>/Downloads/2016-05-27-raspbian-jessie.img of=/dev/rdisk2 bs=1m |
disk2
に r
を頭に足すとアンバッファモードで実行し速度アップします。257 秒かかった 汗
以上で Raspberry Pi に挿す SDカード が作成できました。
1 | $ diskutil eject /dev/disk2 |
全て接続し終わるまでRaspberry Pi に電流を流さないでください。
全てが深く刺さっているのを確認した後
いよいよ電源を電源アダプタに接続します。
ついた!
なにやら読み込みが始まった!
※我が家はテレビがディスプレイ代わりです。
おぉ〜GUIのトップ画面がでてきた!
まず成功♪
System
タブの Expand Filesystem
ボタンクリック以上でSDカードの全容量を利用可能になります。
Localisation
タブの Set Locale
ボタンをクリックします。Language
: ja (Japanese) 選択Country
: JP (Japan) 選択Character Set
: UTF-8 選択上記選択し OK
ボタンクリック
Localisation
タブ > Set Timezone
ボタン クリック再度 Set Timezone
ボタンをクリックすると Asia/Tokyo が選択されています。
Localisation
タブの Set Keyboard
ボタンをクリック
Country
: Japan
選択
Variant
: Japanese
選択
以上選択しOK
ボタンクリック
1 | ifconfig |
1 | [MacOSX local]$ ssh pi@192.168.xxx.xxx |
SSH ログインが確認できました!
あとあと気づいたのだけど
わざわざ画面をiPhoneで撮影せずとも
Remote Desktop して綺麗なものを取ればよかった。。
ということで
SSH ついでに Remote Desktop 機能を要する tightvncserver インストール
1 | $ sudo apt-get install tightvncserver |
1 | vnc://raspberrypi.local:5901 |
インターネットに接続されているのがわかります。
ただし
日本語がもれなく豆腐。。
Zabbix でも以前日本語フォントがなくて同様の事象がありました。。
日本語フォントをインストールする必要があります。
1 | sudo apt-get update |
日本語 - Mozc
選択以上でセットアップ完了です。
ご清聴ありがとうございました。
2017 年 3 月にサポート終了する CentOS5 ですが
今なお利用されているサーバは多々あるかと思います。
デフォルトインストールされている Python 2.4.3 を残した状態で
Python 2.6 をインストールし、pip の上位バージョンを利用できるようにする、
ことを目的とします。
1 | $ sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm |
1 | $ sudo vi /etc/yum.repos.d/epel.repo |
1 | $ sudo yum install python26 -y --enablerepo=epel |
1 | python26 -V |
あくまで python26 は pip を利用するようにする為に共存させています。
1 | wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py |
1 | $ pip --version |
1 | mysql> use zabbix |
1 | +----------------------------+--------+----------+-------+-------+------+------+ |
ちなみに上記は Zabbix DBの結果
history (履歴) にデータが肥大化傾向にあるので
パーティション や Zabbix housekeeping での
保存期間設定を調整するなど必要なことがわかります。
それは、ある日 QUALYS SSL LABS で SSL チェックしたとき
F になってる…
常に A+ を保っていたのに…
どうやら 2016/5/3 時点で新たに脆弱性が発見されたとのこと。
今回指摘されている CVE-2016-2107
:
AES-NI CBC MAC チェックで MITM 攻撃者がパディングオラクル攻撃可能なことがわかりました。この問題は、CVE-2013-0169(Lucky 13 パディング)の修正のために導入された箇所の不具合から発生しました。
上記対応策をまとめました。
※試験 OS 環境: CentOS7
以下記事では 「OpenSSL のバージョンを 1.0.2h/1.0.1t にあげてください。」とありますが、
段階的に試した所
以下コマンドで openssl のバージョンアップをした所
エラーが消え B となりました。
事前に Nginx を 1.11.1 にアップデートした為でしょうか汗
1 | # yum upgrade openssl -y |
config generator で 生成される ssl_ciphers ディレクティブをそのまま設定すると評価が B 止まりでした。
https://ssl-config.mozilla.org/
諸々含めたくない暗号化法があるようです。
1 | ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; |
_以下最終的に設定した ssl_ciphers_ すると A+ に戻りました。
1 | ssl_ciphers 'ECDH !aNULL !eNULL !SSLv2 !SSLv3'; |
OpenSSL の脆弱性はチェックし続けていかねば
HTTP Strict Transport Security を 有効化 (常時 SSL) にしないと
A+ は取れません。
常時 SSL はパフォーマンスにも影響するので
せめて A まで取る、という指針を決めてから着手してください。
脆弱性 CVE-2016-4450 に対応した Nginx 1.11.1 が 2016-05-31 リリースされたということで
早速バージョンアップを試みました。
SIOS Tech. Lab - エンジニアのためになる技術トピックス
ダウンタイムゼロで実行できました。
1 | # nginx -V |
1 | # cd /usr/local/src |
以下実行しないと nginx の configure が通りませんでした。
1 | # yum install pcre-devel zlib-devel openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel -y |
1 | ./configure: error: the HTTP image filter module requires the GD library. |
1 | ./configure: error: the HTTP XSLT module requires the libxml2/libxslt |
「現状の Nginx configure 確認」で取得した configure parameter から
「–add-dynamic-module=njs-1c50334fbea6/nginx」を削除
--add-dynamic-module=njs-1c50334fbea6/nginx
を指定した場合の Nginx configure error1 | adding module in njs-1c50334fbea6/nginx |
「–add-dynamic-module=njs-1c50334fbea6/nginx」を削除して configure 実施
1 | ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' |
1 | # make |
1 | # nginx -V |
こける。。
1 | # nginx -t |
サードパーティに依存するディレクティブについてはload_module
で SharedObject(*.so) を呼び出す必要があります。
1 | load_module "modules/ngx_http_geoip_module.so"; |
1 | # nginx -t |
1 | # systemctl reload nginx |
以上で Nginx バージョンアップが無事完了しました。
Prometheus 入門 にあるチュートリアルを
Ansible で簡単に構築できるようにした、
というものです。
先日 2016 年 6 月 14 日、
LINE 株式会社でのPrometheus Casual Talks #1に参加し
ナレッジのおさらいなどしたく、
構築法をまとめました。
最近話題の Pull 型の Query Filtering 可能で Grafana 等と連携できる モニタリング/Alert ツールです。
以下ツールをインストールしておいてください。
[https://github.com/kenzo0107/Vagrant-Prometheus]
1 | $ git clone https://github.com/kenzo0107/Vagrant-Prometheus |
1 | $ cd Vagrant-Prometheus |
3 node running !
1 | $ vagrant ssh-config > ssh.config |
1 | $ ansible default -m ping |
ok, success.
1 | $ ansible-playbook set_clients_prometheus.yml |
以下 PrometheusClient を起動しているサーバにアクセスし
起動されているか確認します。
以下のように表示されれば成功です。
1 | $ ansible-playbook set_server_prometheus.yml |
http://192.168.33.30:9090 にアクセス
以下のように表示されれば成功です。
是非多少なりとも一助となれば何よりです!
いじくり倒してみてください!
以上
完全なる備忘録です。
Jenkins で 毎月第 1 月曜日のみ設定しようとしたら
1 | Short cycles in the day-of-month field will behave oddly near the end of a month |
次の様に分けるとエラーが消えます。
アメリカでは
月間の期間を 4,5 週間の単位で
売り上げの結果を考える慣習があります。
その際に月初にレポートが欲しい
なんてときに今回このような処理をする必要がありました。
以上です。