GNS3 VM を proxy環境でupgrade
/etc/apt/apt.conf に proxy設定をする
Acquire::http::proxy "http://proxy.example.com:8080"; Acquire::https::proxy "http://user:password@proxy.example.com:8080"; Acquire::ftp::proxy "http://proxy.example.com:8080";
普通に環境変数に
export http_proxy="http://proxy.example.com:8080"
等とやっても利用されない。
またこれだけだと失敗するので 上記状態でUbuntuのアップデートが終わったら Ctrl+Cなどでいったんshellに戻って
sudo pip3 install --proxy=http://proxy.example.com:8080 --pre --ignore-installed gns3-server
とやってインストールする必要がある。 その後、再起動すればバージョンアップされているのが確認できる。
Let's Encrypt を Windows Apacheで使ってみる。
無償で利用できるSSL証明書発行サービス Let's Encryptがpublic betaになったので試してみます。
なお、作業はWebサーバ上で行いましょう。
Windows用クライアントはletsencrypt-win-simple というのをgithubで公開されてる方がいますのでこれを利用しましょう。
IISなら何も考えずにいけるっぽいですが(IIS使ってないので知りません)。
何はともあれ、ダウンロードして解凍します。 別途.NetFramework4.0以上が必要なのでまだインストールしてなければインストールしておきましょう。
解凍して出てきたletsencrypt.exeを実行します。
Enter an email address (not public, used for renewal fail notices):
最初にこんな感じでE-mailを聞かれるのでちゃんと受け取れるメールアドレスを入力しましょう。
その後、
Do you agree to https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf? (Y/N)
利用規約に同意しますか?と聞かれますので、読んで問題なければYと入力し、同意しましょう。
Scanning IIS 7 Site Bindings for Hosts IIS Version not found in windows registry. Skipping scan. No targets found. M: Generate a certificate manually. A: Get certificates for all hosts Q: Quit Which host do you want to get a certificate for:
あとはIISがないとこんな感じで、 手動で生成しますか?みたいなことを聞かれますので Mを入力して手動で証明書の生成を行うようにしましょう。
Enter a host name:
ドメイン名を入力して。
Enter a site path (the web root of the host for http authentication):
apacheの設定ファイルに記載されている DocumentRootを記載します。
すると、認証用のファイルがDocumentRoot以下に設置されて、向こうからそこにアクセスが来て、アクセスができれば
認証されて秘密鍵、公開鍵証明書、中間CA証明書が
c:\Users\user名\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\
以下に現れます。
ドメイン名-key.pem
ドメイン名-crt.pem
ca-XXXXXXX.pem
あとはこれをapacheのSSL設定に
SSLCertificateFile "path-to ドメイン名-crt.pem" SSLCertificateKeyFile "path-to ドメイン名-key.pem" SSLCertificateChainFile "path-to ca-XXXXXXX.pem"
とやってあげれば大丈夫です。 apacheを再起動してアクセスしてみましょう。
BIND 2
設定ファイルの置き場所とかその他。
CentoOSとDebianでは設定ファイルの置く場所などがいろいろ異なる感じです。
ディストリビューションごとの差異が出てる感じですね。
CentOSでは
/etc/named.conf
を基本として、
/etc/named/
以下にnamed.hoge.zones
などを配置してリソースレコードは
/var/named/naemd.example.com
/var/named/named.192.168.0
みたいな感じで配置するようです。
Debianでは
/etc/bind/named.conf
/etc/bind/named.conf.options
/etc/bind/named.conf.example.com-zones
のような感じで配置して
リソースレコードも同一ディレクトリに
/etc/bind/db.example.com
/etc/bind/db.192.168.0
みたいな感じで配置するようになっています。
通常の運用では主として変更を加えるのはリソースレコードになると思いますので
CentOSではそこを明示的に分けて管理する手法ですね。
一方Debianではファイルのプレフィックスをdb.とすることで分けているような。
このあたりが思想の違いかなぁと思います。
chrootの方法
chrootの方法も違って。
CentOSでは named-chrootというchroot用のサービスが存在します。
named-chrootが何をやっているかというと、 chrootディレクトリに各種必要ファイルをマウントしてそこを起点にbindを実行するようなことを行っています。
named-chroot.serviceの実行時にマウント動作を行うので、設定変更についてはchroot先のことを全く意識しなくて良いようになっています。追加のnamed.conf関連ファイルを
/etc/named/
ディレクトリ以下に置くのはそのためです
( /etc/named.confとか /etc/named*なファイルはマウントファイルとしてハードコードされているので新規に作る設定ファイルは/etc/named/以下に置かないとchroot環境では使えない)
Debianではわざわざchroot用のサービスを定義するようなことはしておらず、
chroot用ディレクトリに自分でファイルを配置しましょうというやり方です。
そのため /etc/bindを chroot用ディレクトリに移動させて /etc/bindにシンボリックリンクを張る運用を標準としています。
どっちが良いんだろうなぁ
chrootで使う時と chrootせずに使う時みたいなのがあるんだとすれば、CentOSのやり方のほうがうまいんでしょうね。
設定ファイルの配置については
CentOSは
/etc/named.conf , /etc/named/*
みたいなことになるんならいっそ /etc/named/named.conf にしてくれれば……と思わなくもないです。
/etc/にメイン設定ファイルを置いて、サブディレクトリにその他のコンフィグを置くのがRedHat流なんでしょうね。
mklinkでシンボリックリンク(管理者権限いらず)
windows vista くらいからある mklinkによるシンボリックリンクの作成機能ですが、 標準では管理者権限がないと作成できません。
その理由はどうやらシンボリックリンクを正しく理解できないアプリケーションがあり、 それらがシンボリックリンクを使用することによるセキュリティ上の懸念があるためのようです。
シンボリックリンクの作成には SeCreateSymbolicLinkPrivilege という権限が割り当てられています。 これについての権限設定は ローカルセキュリティーポリシー ユーザ権利の割り当て シンボリック リンクの作成
と辿っていくと設定できます。 標準では Administrators のみが許可されています。 ここに Users などを追加すると標準ユーザでもシンボリックリンクが作成できます。
これでWindows7まではUsersグループに入ってさえいれば作成できますが Windows8移行はAdministratorsグループに入っているとやはり管理者権限が必要となります。 UACをオフにすればよいのですが……
これは管理者権限でシンボリックリンクを作成すると、当然、管理者にしかアクセスできないようなところへもシンボリックリンクが作成できてしまうため、 セキュリティ上の懸念があるためではないかと思います。
なのでWindows8移行でAdministratorsでシンボリックリンクを作る際は cmdを"管理者として実行"しましょうという点は変わりません。
BIND
BINDを触ってみる。
そもそもBINDとは
BINDとはLinuxで使用されている有名なDNSサーバ。
権威サーバとしての機能とキャッシュサーバとしての機能を持っている。
またchrootで実行でき、セキュリティに配慮されている。
その他、DNSsecなどのセキュリティ関連機能も使用できる。
DNSとは
DomainNameSystemの略。
Domain名とIPアドレスの相互変換をするためのもの。
これのおかげで各Webサイトにアクセスするときなどにわかりにくくまた、変更される可能性があるIPアドレスを用いずにアクセスできている。
BINDのインストール
BINDは有名なので各種パッケージシステムから直接インストールできる。
CentOS7
yum install bind bind-chroot bind-utils
Debian8
apt-get install bind9 dnsutils
なお、bind-utilsやdnsutilsは必須ではないが、ないとdigやnslookupなどの確認コマンドが使用できない。
chroot
セキュリティのことを考えると外部に公開するサービスはchrootで利用したい。
BINDはchrootに対応しているため、各種設定を行うことでchroot環境にて使用できる。
ここではchroot先として/var/named/chroot/を想定している。
CentOS7は bind-chrootというchrootにするためのパッケージが用意されているのでお手軽です。
debianについてはBind9 - Debian Wikiにやり方が記載されています。
CentOS7
/usr/libexec/setup-named-chroot.sh /var/named/chroot/ on
Debian8
- /lib/systemd/system/bind9.service を編集する。
ExecStart=/usr/sbin/named -f -u bind -t /var/named/chroot/
と -t に続けてchroot先を指定するとchrootで動かせる。
systemctl daemon-reload
にて変更を有効化する。 - chroot環境の作成
mkdir -p /var/named/chroot/{etc,dev,var/cache/bind,/var/run/named}
にて必要なディレクトリを作成する。mknod /var/named/chroot/dev/null c 1 3
mknod /var/named/chroot/dev/random c 1 8
chmod 600 /var/named/chroot/dev/{null,random}
にて/dev/nullと/dev/randomを作成する。mv /etc/bind /var/named/chroot/etc
ln -s /var/named/chroot/etc/bind /etc/bind
とbind関連ファイルをchroot環境下へ移動させたあと、元の場所へシンボリックリンクを作成する。syslogなどでタイムゾーン情報が必要であれば
cp /etc/localtime /var/named/chroot/etc/
のようにタイムゾーン情報をchroot環境へコピーする。chown -R bind:bind /etc/bind/*
chmod 775 /var/named/chroot/var/{cache/bind,run/named}
chgrp bind /var/named/chroot/var/{cache/bind,run/named}
にて各種ファイルの所有者情報やパーミッションを変更する。最後に、必要があればsyslog設定を変更する。
echo #\$AddUnixListenSocket /var/named/chroot/dev/log > /etc/rsyslog.d/bind-chroot.conf
Windows Vagrant VirtualBoxでdebian8なbase boxとかつくってみたはなし
やり方は本家のマニュアル見ましょう。
- vagrantのインストール。
インストール後、pathが通ってなければ通しましょう。 - sshのインストール
msys2とかMinGWとかcygwinとかなんでも(pathを通しましょう)
注意)msys2とかcygwinからwindowsのvagrantを使うときは
.bash_profile とかに export VAGRANT_DETECT_OS=cygwin
とやっておかないとttyありませんみたいに言われます。 - VirtualBoxのインストール。
- VirtualBoxへのdebian8インストール
HW設定にて オーディオとUSBサポートを無効
名前をたとえばdebian8に
rootのパスワードは vagrant
ユーザ vagrant パスワード vagrant でユーザを作る - VirtualBox Guest Additionsのインストール
apt-get install gcc
apt-get install linux-source
apt-get install dkms
メニューのデバイスからGuest Additions CDイメージの挿入
mount -r /dev/sr0 /mnt/
/mnt/VBoxLinuxAdditions.run - debian8の設定
apt-get install sudo
sudoers 行追加
(vagrant ALL=(ALL) NOPASSWD: ALL )
vagrantユーザへ authorized_keys配置。 apt-get install curl
mkdir ~/.ssh curl -o ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub chmod 700 .ssh
chmod 600 authorized_keys - box化
vagrant package --base debian8(VirtualBoxでつけた名前)
package.box という名前で作成される - vagrantにとりこみ (ここではbaseにしてるけど任意の名前にできる)
vagrant add box base package.box - vagrantで使ってみる
適当なディレクトリで
vagrant init (add box でbase以外を指定した場合はここにその名前を入力)
vagrant up - vagrantfile
config.vm.network "private_network", ip: "192.168.565.10"
とかやるとIPアドレス固定できる
vmstatに日時を付ける
vmstatに日時を付ける - いろいろつまみ食い という記事があったので
begin
while line = gets
puts Time.now.strftime("%Y/%m/%d %H:%M:%S ") + line
end
rescue KeyboardInterrupt => e
exit
end
try:
for line in iter(sys.stdin.readline,""):
print datetime.strftime(datetime.now(),"%Y/%m/%d %H:%M:%S "),line.rstrip()
except KeyboardInterrupt:
exit()
ただそれだけなんですけどね。
perlのdefineみたくいい感じのがあればよかったのだけれど見つけられなかったので
exceptionをキャッチする方向に。