開発環境>Ubuntu 9.04>サーバー/セキュリティ
デフォルトでは, Ubuntuは外にポートを開放するようなサービスをほとんど実行していないようです。ソフトウェアのアップデートやセキュリティーに関する最低限の知識を心がけていれば、相当な時間稼ぎにはなるようです。(参考: Security on Ubuntu)
hosts.allow, hosts.deny
Ubuntuでのセキュリティ設定は, 基本的にiptableでやるので, この節はとばしてください.
<del>Linuxでもっとも簡易で強力(?)なアクセス制御方法です.
あなたのLinuxサーバーを守るためにしっかりと設定しましょう.
あなたのLinuxサーバーを守るためにしっかりと設定しましょう.
man(5)hosts_accessによると,
- /etc/hosts.allowをみて, 書かれている内容のアクセスを認める
- /etc/hosts.denyをみて, 書かれている内容のアクセスを禁じる
- 上に該当しないアクセスは認める
の順番で実行するみたいです.
3.が実行されるのは基本的に好ましくないので, 2.の時点で全部止めちゃいます.
$ sudo gedit /etc/hosts.deny
として, 2.で禁じる相手の設定をします.
ALL: ALL
と最後に挿入しちゃってください. これで, 2.に来てしまったすべてのアクセスを禁じることができました.
あとは, 1.によって, セキュリティの堅さを調整します.
$ sudo gedit /etc/hosts.allow
こうして, アクセスを認めるホストを書き込むわけです. ちなみに, 「<アクセスを受けるデーモン>: <アドレス>」という順番で書き込むことになります.
ALL: localhost ALL: 192.168. ALL: 127.0.
などを書き込んでおけば, ネットワーク内部からアクセスできるようになります.</del>
ポート設定
iptablesによってポートの閉鎖/解放を行っていきます. ただ, iptablesは拡張性が高すぎて, 僕を含めてほとんどの人にとってはおまじないにしかみえません. そこで, ufwというすばらしいソフトを使うことにします. さらに, これのGUIのパッケージがあるので, 感謝しながら使わせていただきます.
$ su # apt-get install gufw
そして, 「システム」→「システム管理」→「ファイアウォールの設定」です.
「ファイアウォール有効」にして, 「許可」「ポート番号またはプロトコル名」「両方」「追加」などとすれば, ポートを開放することになります.
たとえば, 「許可」「80」「両方」「追加」とすれば, sshのポートを開放することになります. これは, 「許可」「http」「両方」「追加」としたものと同じです. ()
これらの操作は,
# ufw enable # ufw allow http
と同じ. 慣れてこればこっちの方が簡単. ちなみに,
# ufw status
で現在の状態が出てきます.
また, こんなことも可能です.
# ufw allow from 192.168.0.0/16
これで内部ネットワークから自由にアクセスできます.
ちゃんと, iptablesで反映されているかを確認するためには,
# iptables -L -v
ウイルス対策
Linuxはウイルス対策をしなくてもよいという意見が大半です. ウイルス対策ソフトは存在するが, ほとんどはWindowsのウィルスを発見するものです. Linuxだけで動かしているのであれば全く問題ないはずなんですが, WubiはWindowstともに共存しているといっても過言ではないので, 一応入れておきます.
僕自身は使ったことがありませんし, Windowsのものと違って, 常駐してウイルスを発見するなんてものではありません, あくまで手作業でスキャンをしなければいけないものです.
$ sudo apt-get install clamav klamav -y
これで入ります.
$ sudo fleshclam
でウイルスデータベースをアップデート
% klamav
でGUIでソフトウェアが起動します.
Samba
外のWindowsからUbuntu上のディレクトリを覗けるようになります.
$ su # apt-get install inetutils-inetd -y # apt-get install samba swat -y
それで, http://localhost:901から設定ができます.
PASSWORDタブを押して, 公開したいhomeディレクトリのユーザー名とパスワードを入力してあげる必要があります.
MySQL
MySQL関係のパッケージはこのようにインストールする.
$ sudo apt-get install mysql-server mysql-client phpmyadmin -y
何回か, パスワードを聞かれたり, phpmyadminを起動するHTTPサーバーを選択させられたりします.
インストールが終わったら, http://localhost/phpmyadmin/からMySQLの様々な設定が行えます.
Subversion
最新のSubversionクライアントは1.6.6というのに対して, Ubuntuのクライアントは, 1.5.4とかです. すると, 会社などの作業環境によっては,
svn: クライアントが古すぎて、作業コピー '<TRUNK>' を扱うことができません。 もっと新しい Subversion クライアントをインストールするか、作業コピーをダウングレードする必要があります。 詳しくは http://subversion.tigris.org/faq.html#working-copy-format-change を参照してください。
というメッセージがでて, お手上げなことがある.
$ su # apt-get remove subversion subversion-tools -y
subversion本家からソースファイルをダウンロードしてきてインストールします.
あらかじめ, 必要そうなパッケージを入れておきます. もし, この操作をしていないと, Net Beansで, ネットワーク上のリポジトリにアクセスできません. (Unrecognized URL scheme. というメッセージが表示されちゃいます.)
あらかじめ, 必要そうなパッケージを入れておきます. もし, この操作をしていないと, Net Beansで, ネットワーク上のリポジトリにアクセスできません. (Unrecognized URL scheme. というメッセージが表示されちゃいます.)
# apt-get install libaprutil1-dev libaprutil1 libapr1 libapr1-dev libneon27 libneon27-dev -y
# exit $ cd <DOWNLOADED_DIRECTORY> $ tar xlvf subversion-1.6.6.tar.bz2 $ cd subversion-1.6.6 $ ./configure $ make $ sudo make install
途中, おそらくBerkley DBがないといわれるが, 使わない人は気にしない.
サーバー設定
サーバーデーモンをEnabledにするかDisabledにするか
$ su # apt-get install sysvconfig -y # sysvconfig
これで設定ができますよ.