アーカイブ:  « 2016年7月 | メイン | 2016年9月 »

2016年8月30日

ban4ipインストールしてみました

オープンソースアンカンファレンス金沢2016でT.Kabuさんからのご紹介のあった
fail2banをやめてBan4ipにしませんか?
を早速試してみました。

ApacheやSSH、postfix、dovecot等のログを解析して失敗を検知した接続元のIPアドレスをiptablesに書き込みしてフィルタリングするデーモンになります。
IPv6にも対応しているところが優れています。

CentOS7の環境でしたが、問題なく導入でき1日間で17回BANできています。
インターネット環境にサーバを公開するということは常に攻撃にさらされていると感じました。

自動BANツールを導入していない方はぜひ導入してみるとよいと思います。

なお、サーバを再起動する際には、banした設定が消えてしまうので /sbin/service iptables save を忘れずに!

2016年8月29日

クラウドまとめ

いろいろクラウド勉強会に参加してみた感覚をまとめてみた。
触ったクラウドは次の通り。

PaaS
・Oracle APEX
・IBM Bluemix

IaaS
・AWS
・Microsoft Azure
・GMOクラウド
・Niftyクラウド
・iCloud


クラウドの課題
・オンプレミス環境とのセキュアな接続
 インターネットVPNってやっぱりインターネットだし怖いよねとか、ベストエフォーとだよねとかになったら、割と困る。
(AmazonだとDirectConnectという専用線(iDCにオンプレミス環境が収容されていない場合には、IP-VPNになる)を構築できるサービスがあり、プロバイダ系の企業だとIP-VPNで同様の構成が組めるのかと思う)

・ランニングはやっぱり高い。(オンプレミスでの環境を保持していない場合には、TCOの面で有利だが、そうでない場合にはオンプレミス環境に収容した方が安くなりそうって思ってしまう)
 最近はコスト競争も激しくなってきてだいぶ落ち着いている。

・ライセンス費用は馬鹿にならない。WindowsOSのイメージを利用している場合、BYOL(Bring Your Own License)できないことが多く、仮想マシン止めていてもそれなりにコストがかかる(GMOクラウドだと5000円くらいかかってしまう)
 Windows OS使わなきゃいいっていう話なんだが。。。。

Amazon Route 53って

DynamicDNSサービスのmydnsと何が違うねん!という話題。

・SLAが100%らしい。
※備考)後日mydnsのサービス障害が2回発生し、インターネットから孤立したが問題になり、半年後にmydnsからroute53へ移行するを書くことになるとは、当時は予想できなかった。。。。

・AWSでシステムを組もうと思うと、Amazon EC2からならプライベートIPアドレスが毎回変わってしまうから、Route 53を使う必要性があるらしい。

mariadbが起動しない

SELinuxが有効だったというオチ。SELinuxは正しく設定できればよいのだが、難解で毛嫌いしてしまうところが問題。

$sudo tail /var/log/mariadb/mariadb.log
160828 20:10:36 mysqld_safe Starting mysqld daemon with databases from /(mariadb-path)/m
ysql
160828 20:10:36 [Note] /usr/libexec/mysqld (mysqld (mysqlversion)-MariaDB-log) starting
as process (processID) ...
160828 20:10:36 [Warning] Can't create test file /(mariadb-path)/mysql/(hostname).lower-test
160828 20:10:37 InnoDB: The InnoDB memory heap is disabled
160828 20:10:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160828 20:10:37 InnoDB: Compressed tables use zlib (zlibversion)
160828 20:10:37 InnoDB: Using Linux native AIO
160828 20:10:37 InnoDB: Initializing buffer pool, size = 128.0M
160828 20:10:37 InnoDB: Completed initialization of buffer pool
160828 20:10:37 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
160828 20:10:37 mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid en
ded

2016年8月24日

runasコマンド

Linux のsudoコマンドに該当するWindowsコマンド

runas /user:hogehoge "cmd /K"
と実行するとパスワードが要求される。
認証が成功するとコマンドプロンプトが開いて、hogehogeユーザとしてコマンドを実行できる

サイレントに実行する場合には、
runas /user:hogehoge "cmd /C (スクリプト名)"
になる。

ドメインユーザもできるので、ADにログインしている状態で別ユーザで実行が可能な点は便利。

2016年8月15日

改行コードを無視するdiffオプション

--strip-trailing-cr
を付けることで改行コードの差異を無視してくれる。

改行コードがCR+LFとLFのソースの差異を比較しなければならない時に役に立つ。

2016年8月13日

Zabbixでヤマハルータの温度を取得する

Zabbix温度監視 No.05 SNMPで温度を取得するを参考に
N1200(RTX1200)の温度監視してみることにチャレンジした。

しかし、 No Such Object available on this agent at this OID と怒られて取得に失敗してしまう。
SNMP OID欄にOIDである .1.3.6.1.4.1.1182.2.1.15.0 とすべきところを .1.3.6.1.4.1.1182.2.1.15 としていたことが原因。

代わりに SNMPv2-SMI::enterprises.1182.2.1.15.0 とすることでも正しく取得できる。

OIDは正確に登録しましょう!

$ snmpwalk -v 2c -c (コミュニティ名) (IPアドレス) .1.3.6.1.4.1.1182.2.1.15
SNMPv2-SMI::enterprises.1182.2.1.15.0 = Gauge32: 44

$ snmpwalk -v 2c -c (コミュニティ名) (IPアドレス) SNMPv2-SMI::enterprises.1182.2.1.15.0
SNMPv2-SMI::enterprises.1182.2.1.15.0 = Gauge32: 44

2016年8月11日

Let's Encrypt でのSSL証明書作成

無償でSSL証明書を発行できるLet's Encrypt。HTTPS対応は必須になりつつある。
ちなみにこのブログもLet's Encrypt でSSL証明書を取得している。

Let's Encrypt の使い方を基に実際にやってみた。
バージョンが変わると一部実装が変わるので、最新はコマンド一覧を参考にしてほしい。

証明書を取得したいFQDNをwww.hogehoge.com、そのDocumentRootが/var/www/www.hogehoge.com/ として記載する。

証明書を発行する場合

Webサーバを停止した状態で、証明書を取得する場合
$ sudo ./certbot-auto certonly --standalone -d www.hogehoge.com

Webサーバを停止せずに証明書を発行する場合
$ sudo ./certbot-auto certonly --webroot -w /var/www/www.hogehoge.com/ -d www.hogehoge.com

x Saving debug log to /var/log/letsencrypt/letsencrypt.log x
x Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org x
x Obtaining a new certificate x
x Performing the following challenges: x
x http-01 challenge for zaiteku.jp x
x Using the webroot path /var/www/www.hogehoge.com/ for x
x all unmatched domains. x
x Waiting for verification... x
x Cleaning up challenges x
x Generating key (2048 bits): x
x /etc/letsencrypt/keys/****_key-certbot.pem x
x Creating CSR: /etc/letsencrypt/csr/****_csr-certbot.pem

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.hogehoge.com/fullchain.pem. Your cert will
expire on YYYY-MM-DD(有効期限). To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

証明書を更新する場合

$ sudo ./certbot-auto renew
ただ、この場合にはWebサーバを停止させる必要がある。

Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/www.hogehoge.com.conf
-------------------------------------------------------------------------------
Cert is due for renewal, auto-renewing...
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for www.hogehoge.com

-------------------------------------------------------------------------------
Port 443 is already in use by another process. This will prevent us from binding
to that port. Please stop the process that is populating the port in question
and try again. For automated renewal, you may want to use a script that stops
and starts your webserver. You can find an example at
https://certbot.eff.org/docs/using.html#renewal . Alternatively you can use the
webroot plugin to renew without needing to stop and start your webserver.
-------------------------------------------------------------------------------
Cleaning up challenges
Attempting to renew cert from /etc/letsencrypt/renewal/www.hogehoge.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.

All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/www.hogehoge.com/fullchain.pem (failure)
1 renew failure(s), 0 parse failure(s)


無停止による証明書の更新方法について

下記コマンドで無停止で実行しようと思ったがうまくいかない
$ sudo ./certbot-auto renew --webroot -w /var/www/www.hogehoge.com/ -d www.hogehoge.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Currently, the renew verb is only capable of renewing all installed certificates that are due to be renewed; individual domains cannot be specified with this action. If you would like to renew specific certificates, use the certonly command. The renew verb may provide other options for selecting certificates to renew in the future.


下記コマンドでWebサーバの停止→証明書の更新→Webサーバの開始が可能(証明書の更新対象がない場合には再起動しない)
$ sudo ./certbot-auto renew --pre-hook "systemctl stop httpd" --post-hook "systemctl start httpd"

1.更新対象がある場合は次のようになる。
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/www.hogehoge.com.conf
-------------------------------------------------------------------------------
Cert is due for renewal, auto-renewing...
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Running pre-hook command: systemctl stop httpd
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for www.hogehoge.com
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0004_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0004_csr-certbot.pem

-------------------------------------------------------------------------------
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/www.hogehoge.com/fullchain.pem
-------------------------------------------------------------------------------


2.更新対象がない場合には下記のようになる。
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/www.hogehoge.com.conf
-------------------------------------------------------------------------------
Cert not yet due for renewal

The following certs are not due for renewal yet:
/etc/letsencrypt/live/www.hogehoge.com/fullchain.pem (skipped)
No renewals were attempted.
No renewals attempted, so not running post-hook

2016年8月 7日

Ansibleについて

7/18開催の「第2回 Bluemix × SoftLayer ユーザーグループ合同勉強会@北陸~IBMクラウドサービスを使って遊ぼう~」でのテーマになっていた内容。
Chefの後継として期待されているAnsibleは、エージェントレスでシステム構築が可能な点がすごいと感じた。

クラウド環境を速やかに立ち上げていく上では、環境構築の自動化も必要なスキルになるのだろう。。。