Monthly Archives: 9月 2015

[メモ]mysql_secure_installtaionは何をやっているの?

Pocket

https://dev.mysql.com/doc/refman/5.6/en/mysql-secure-installation.html

mysql_secure_installationは、perlで書かれたスクリプトで、MySQLのセキュリティを向上させることができる。
具体的には;
(MySQLの)rootのパスワード設定
localhost外からアクセス可能なrootアカウントの削除
anonymousユーザアカウントの削除
anonymousユーザ含め誰でもアクセス可能な「test」データベースの削除
test_から始まるデータベースへの接続権限の削除(デフォルトでは誰でもアクセスできる)

MySQLが動いている状態で、引数なしで実行すればよい。

sysrc mysql_enable=YES
mysql_enable:  -> YES

service mysql-server start
Starting mysql.

立ち上げておいて。

mysql_secure_installationを引数なしで実行。
rootパスワード以外はリターンキー連打でよし。

# mysql_secure_installation



NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!




All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!


Cleaning up...
No tags for this post.

[FreeBSD][メモ] portsでmake cleanを依存portsも含めて実行するには

Pocket

さきにメモ。

portsにおいて、依存も含めた全部のportsでmake cleanをするには以下のようにする。

find /usr/ports -name work -mindepth 2 -maxdepth 3 | xargs rm -Rf

ネタ元はfreebsd forumから。

 

久しぶりにportsを使うと、なんでこんな面倒なものに我慢できていたんだろう?と思う。
それは単なる愚痴として。

Vagrantやjailなどの仮想技術がとても便利になってきて、実現したい機能ごとに環境を分けるようになる。
すると、環境ごとにフレッシュな状態から機能を構築することが多くなり、自然とportsのコンパイル時間の長さが目につくようになったのだと思う。

たとえばredmineを使いたいとして、pkgでインストールしようとしても、コンパイルオプションが期待通りではないので、やむなくportsでインストールしようとする。
ところが、インストールされたものがない、フレッシュな状態でredmineをportsから入れようとすると、依存の端から端までportsで入れようとするので、とんでもない時間がかかるのである。
特定のもの以外は全部pkgで入れられるようにならないものか。

No tags for this post.

[sh] オレオレ証明書作成シェルスクリプト

Pocket

すぐに作り方を忘れるので、シェルスクリプトを記録しておく。
変数OPENSSLにopensslをフルパスで与えること。
あとはchmod 755して実行すればカレントディレクトリにserver.crtとserver.keyができる。
おまけでDHパラメータ、dhparam.pemもできる。

#!/bin/sh

# Generates a self-signed certificate.

OPENSSL=/usr/bin/openssl
KEYFILE=server.key
CERTFILE=server.crt
SIGNREQ=server.csr
DHPARAM=dhparam.pem

if [ -f $CERTFILE ]; then
  echo "$CERTFILE already exists, won't overwrite"
  exit 1
fi

if [ -f $KEYFILE ]; then
  echo "$KEYFILE already exists, won't overwrite"
  exit 1
fi

if [ -f $SIGNREQ ]; then
  echo "$SIGNREQ already exists, won't overwrite"
  exit 1
fi

echo
echo "Generating key file, $KEYFILE"
echo "============================"
$OPENSSL genrsa 2048 > $KEYFILE || exit 2
chmod 0600 $KEYFILE
echo "============================"
echo
echo "Generating sign request file, $SIGNREQ"
echo "============================"
$OPENSSL req -new -key $KEYFILE > $SIGNREQ || exit2
echo "============================"
echo
echo "Generating cert file, $CERTFILE"
echo "============================"
$OPENSSL x509 -days 3650 -req -signkey $KEYFILE < $SIGNREQ > $CERTFILE || exit2
echo "============================"
echo
echo "Generating DH key, $DHPARAM"
echo "============================"
$OPENSSL dhparam -out $DHPARAM 2048
echo "============================"
echo
echo "Now you have $CERTFILE, $KEYFILE and $DHPARAM"
echo

参考
http://d.hatena.ne.jp/rikunora/20120514/p1
http://qiita.com/kunichiko/items/12cbccaadcbf41c72735

[メモ][Vagrant] FreeBSDのboxを作る。

Pocket

インストール時設定

容量節約のためにgame, srcはインストールしない。
rootのパスワードはvagrantに。
ユーザvagrantを追加、パスワードもvagrantに。
sshdは有効に、dumpdevは無効に。

/etc/rc.confの中身

hostname="freebsd10"
keymap="jp.106.kbd"
ifconfig_em0="DHCP"
sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"

インストール後設定

まずはOSの更新。

# freebsd-update fetch install
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... none found.
Fetching public key from update.FreeBSD.org... done.
(略)

pkgのインストール

pkgをインストールするには、pkg listでもなんでも叩けばインストールしてくれる。

# pkg list
The package management tool is not yet installed on your system.
Do you want to fetch install it now? [y/N]: y
(略)

sudoのインストール

vagrant用に。

# pkg install sudo

ユーザvagrantにパスワードなしのsudo権限を与える。

requirettyがあればコメントアウト。

# visudo

vagrant ALL=(ALL) NOPASSWD: ALL

ユーザvagrantのssh key設定

定番のキーをauthorized_keysとしてダウンロードし、パーミッションを設定する。

# mkdir -p /home/vagrant/.ssh
# cd /home/vagrant/.ssh
# fetch --no-verify-peer -o authorized_keys https://github.com/mitchellh/vagrant/blob/master/keys/vagrant.pub
fetch: https://github.com/mitchellh/vagrant/blob/master/keys/vagrant.pub: size of remote file is not known
authorized_keys                                         80 kB  225 kBps 00m00s
#
# chmod 700 ~vagrant/.ssh
# chmod 600 ~vagrant/.ssh/authorized_keys
# chown -R vagrant:vagrant ~vagrant

sshd設定の変更

/etc/ssh/sshd_configに以下を追加。

Port 22
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
PermitEmptyPasswords no
UseDNS no

空行、コメント行を除くとこんな感じ。

# egrep -v '^ *#|^ *$' ./sshd_config
Port 22
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
PermitEmptyPasswords no
UseDNS no
Subsystem       sftp    /usr/libexec/sftp-server

sshdを再起動

# service sshd restart
Performing sanity check on sshd configuration.
Stopping sshd.
Performing sanity check on sshd configuration.
Starting sshd.

VirtualBox Guest Additonsは必要か。

FreeBSDのGuest Additionsで以下が可能になる。
https://wiki.freebsd.org/VirtualBox

Clipboard sharing
Mouse pointer integration
Host Time synchronization
Window scaling
Seamless mode

逆に言うと、以上が必要なければわざわざ入れることもない。
もしXを入れないのであれば、インストールしないほうがよい。
pkgのGuest AdditionsはX11のサポートがOnになっており、そのままインストールすると山ほどpackageを追加されるから。
ではportsからコンパイルする?
まずportsディレクトリが必要。
さらに、実はGuest AdditionsのコンパイルにはKernelソースが必要なので、/usr/srcも必要。
しかもportsからのコンパイルするとperlやらgmakeやら、いろんなもののコンパイルが発生する。
本当におすすめしない。

Guest Additionsのインストール

インストールする場合には、pkgからvirtualbo-ose-additonsを。
search -fすると分かるが、X11がOnになっている。

$ pkg search -f virtualbox-ose-additions
virtualbox-ose-additions-4.3.30
Name           : virtualbox-ose-additions
Comment        : VirtualBox additions for FreeBSD guests
Description    :
These additions are for installation inside a FreeBSD guest.

Options        :
        DEBUG          : off
        OPENGL         : off
        X11            : on

$ pkg install virtualbox-ose-additions<\pre>

/etc/rc.confの変更
$ sudo sysrc vboxguest_enbale=YES
vboxguest_enbale:  -> YES
$ sudo sysrc vboxservice_enable=YES
vboxservice_enable:  -> YES

念のため確認

$ sudo sysrc vboxservice_enable
vboxservice_enable: YES
$ sudo sysrc vboxguest_enbale
vboxguest_enbale: YES

仮想マシンをパッケージする

シャットダウンしたのち、ホストマシンで梱包
–boxに続けてVirtualBox上の名前を入れる。

vagrant package --box FreeBSD10

できたpackage.boxは約1Gバイト。うーん。ちょっとでかいなあ。

[メモ][Vagrant] Ubuntuのboxを作る

Pocket

Vagrantは便利だが、boxの初回ダウンロードがウンザリするくらい長い。
torrentに流してくれればいいのに…。
しかたないので自分でUbuntuのboxを作る。

参照ドキュメントは公式の以下のもの。
https://docs.vagrantup.com/v2/boxes/base.html

VirtualBox上でUbuntu14.04をインストール後、apt-get update && apt-get upgrade && apt-get dist-upgradeまで済ませた前提。
providerはVirtualBox。
まずVirtualBox特有の注意点を先に。

VirtualBox向けにBoxを作るときの注意点

https://docs.vagrantup.com/v2/virtualbox/boxes.html

  1. ネットワークインタフェースはNATにしておくこと。
  2. MACアドレスをメモしておくこと。
  3. VirtualBox Guest Additionsをインストールしてあること。

一つ目の理由は、VirtualBoxが決め打ちで接続してくるから。
二つ目の理由は、Vagrantfileのconfig.vm.base_macに書く必要があるから。
MACアドレスはVirtualBoxのGUIから確認できる。
三つめの条件を満たすには、あらかじめlinux kernel headersとbasic developer toolsをインストールしておく必要がある。
手順は後述。
ではさっそく。

不要なハードウェアの無効化

USB, オーディオなどを無効化する。
特にUSBが有効になっていると、無用なバグを引いたりするので、無効化しておくことを強く勧める。

デフォルトユーザ(vagrant)の作成

Vagrantの作業用アカウントを作る。
Vagrantはデフォルトでユーザ”vagrant”として仮想マシンにSSH接続する。
vagrantというユーザのいることが明らかだと、それはそれでセキュリティ上のリスクになるのだが、それはVagrantに慣れてから考える。

vagratを追加し、パスワードもvagrantに。
パスワードを設定しておくのは、万が一、手動で仮想マシンに接続する必要が生まれたときのため。

# useradd -m vagrant
# passwd vagrant

SSH接続用に鍵を作成する。
鍵はインターネットからダウンロードする。そんな鍵なんて危ないように見えるが、これはあくまでも初回ブート用。Vagrantが自動的に書き換えてくれる。

# mkdir -p /home/vagrant/.ssh
# cd /home/vagrant/.ssh 
# curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
# chmod 700 /home/vagrant/.ssh
# chmod 600 /home/vagrant/.ssh/authorized_keys
# chown -R vagrant:vagrant /home/vagrant/

ユーザvagrant向けsudo設定

ユーザvagrantがパスワードなしでsudoできるように。
visudoで以下の行を追加。

# visudo
vagrant ALL=(ALL)       NOPASSWD: ALL

さらにrequirettyという記述があればコメントアウト

# requiretty # コメントアウトでttyなくsudoできる。

rootのパスワードも変える。

rootのパスワードも”vagrant”に。

# passwd

sshd設定

sshdがなければインストール。

# apt-get install openssh-server

sshdの設定ファイルを書き換え

# vi /etc/ssh/sshd_config

以下の行があることを確認。なければ書く。

    Port 22
    PubKeyAuthentication yes
    AuthorizedKeysFile %h/.ssh/authorized_keys
    PermitEmptyPasswords no
    UseDNS no

VirtualBox Guest Additionsのインストール

再掲だが以下のドキュメントに沿って。
https://docs.vagrantup.com/v2/virtualbox/boxes.html

# apt-get install dkms
# /etc/init.d/vboxadd setup
# apt-get install -y build-essential linux-headers-server

その後、VirtualBox Guest Additionsのインストール
VitualBoxのGUIからCDを挿入し、以下を実行。

# mount /dev/cdrom /media/cdrom
# sh /media/cdrom/VBoxLinuxAdditions.run
# umount /media/cdrom
# apt-get clean

後はこちらの通り。

[メモ][Windows] VirtualBoxの仮想マシンからvagrantのboxを作る

Pocket

VirtualBox上の仮想マシンをvagrantのboxにする方法はありきたりだが、たいていはLinux、OS Xでの話で、Windowsでのメモはあまりない。そこでメモ。

packageの作成

VirtualBox上の仮想マシンをパッケージする。
vagrant packageの–baseオプションにVirtualBox上の仮想マシン名を与える。
なお、そのまえにUSB、サウンドは無効にしておいたほうがよい。

C:\Users\nobwak\vagrant>vagrant package --base centos64
==> centos64: Exporting VM...
==> centos64: Compressing package to: C:/Users/doe/vagrant/package.box

カレントディレクトリにpackage.boxができた。
この中に仮想マシンが入っている。
あとはこれをどこに移動してもよい。
うーん、ポータブル。
次にこの中の仮想マシンをvagrantから参照する方法。

package.boxをvagrantから参照する。

vagrant init <新規に作成する仮想マシンの名前> <package.boxの場所>と指定してvagrantfileを作る。
もちろんvagrant initと空撃ちして手で書き換えてもよい。後述。

package.boxはローカルに置いてあるので、場所の指定は「file://」に続けてパスを書く。
windowsの場合は「/C:/path/to/package.box」のように書く。
結果、「file:///C:/….」となる。
スラッシュが多くて不安になるけど、これでよい。
なお、windowsっぽく円マークあるいはバックスラッシュを使ってしまうとエスケープされてしまい、vagrantがpackage.boxを見つけられない。注意。

C:\Users\nobwak\vagrant>vagrant init centosTest file:///c:/Users/doe/vagrant/package.
box
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

C:\Users\nobwak\vagrant>

Vagrantfileが以下のようになっていること。
vagrant initを空撃ちした場合には、以下の二行を加えること。

  config.vm.box = "centosTest"
  config.vm.box_url = "file:///c:/Users/nobwak/vagrant/package.box"

あとはvagrant upでよい。

C:\Users\nobwak\vagrant>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos64' could not be found. Attempting to find and install..
<中略>
==> default: Booting VM...
<後略>

別の方法:box listに登録する。

package.boxをvagrantのbox listに登録しておけば、いちいちpackage.boxの場所を指定しなくてもいいようになる。

C:\Users\doe\vagrant>vagrant box add centosSkel package.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centosSkel' (v0) for provider:
    box: Unpacking necessary files from: file://C:/Users/nobwak/vagrant/package.box

    box: Progress: 100% (Rate: 9737k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'centosSkel' (v0) for 'virtualbox'!

あとは定石で。

C:\Users\nobwak\vagrant>vagrant init centosSkel
<略>
C:\Users\nobwak\vagrant>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centosSkel'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_default_1442498300953_28586
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...

[memo] VirtualBoxのNATでホストからゲストへの接続を許可(ポートフォワーディング)

Pocket

ほんとにメモ。

VirtualBoxで;

  1. ゲストをホスト外へ露出させず、一方で
  2. ゲストから外部へのアクセスを許可し、なおかつ
  3. ホストからゲストへのsshをさせたい

場合のメモ。

上記をかみ砕くと、ゲストのネットワーク設定で「NAT」を選びつつ、作業のためにホストからゲストへsshをしたい場合。

高度な設定からポートフォワーディングを選び
2015-09-03_22-14-16_090315_102509_PM

ホストのポートとゲストのポートを設定する。
以下の例ではホストの8022に繋ぐとゲストの22、すなわちsshへ繋がれる設定。
2015-09-03_22-14-25_090315_102545_PM

No tags for this post.