先のFreeBSD 9.0 をインストールしてみたからの続きの記事になります。
FreeBSDのインストールを終えたら、最初になにをやっておいた方が良いかを簡単に解説したものです。
さくらのVPSなどのレンタルサーバーで利用している場合、インストール完了時点で、サーバーが公開されていますから、十分な注意が必要です。
( 本記事は、FreeBSDのバージョン 8.x / 9.x に対応しています。)
基本的にやることは、Linux系の以下の記事で書いている内容と、大差ありません。
[ CentOS版 ]
・yum を使って システムアップデートを行う (自動化も)
・評判のさくらのVPSを使うときに最初にやっておきたいこと(CentOS編)
[ CentOS版(CloudCoreバージョン) ]
・評判のCloudCore VPSを使うときに最初にやっておきたいこと(CentOS編)
[ Scientific Linux版 ]
・評判のさくらのVPSを使うときに最初にやっておきたいこと(Scientific Linux編)
さくらインターネットのVPS ( さくらのVPS )を試してみたい方は、さくらのVPS ページからどうぞ。無料お試し期間は14日です。
※お試し期間中は、OP25B設定、データ転送帯域に制約がありますから注意してください。
- 目次
- 履歴
2012年2月2日 初版
FreeBSDで最初にやっておきたいこと
さくらのVPSなどのレンタルサーバーでFreeBSDを利用する場合、自宅サーバーと違って、既に外部に直接つながった状態ですから、まず、セキュリティ面の強化とサーバー設定をする必要があります。
ここでは、FreeBSDの初期状態から、各サーバー系をインストールする手前までにやることを記述してみます。
FreeBSDを最新にアップデートする。
さくらのVPSなどのレンタルサーバーで提供されているFreeBSDは、最新版では無いことが多いです。
( 現在(2012.02.02)、さくらのVPSで提供しているFreeBSD のバージョンは、8.1 (64bit版) となります。)
ここでは、FreeBSD 8.1 がインストールされているものとして最新バージョン 9.0 へアップデートしてみます。
まずは、FreeBSD 8.1 に対して提供されているパッチをすべてインストールします。( つまり、8.1を8.1での最新版にします。 )
|
続けて、FreeBSD 9.0 へ メジャーバージョンアップ します。
RHEL5 (Fedora Core 6 ) → RHEL6 (Fedora 12/13 ) と、ベースのFedoraのバージョンがあがり、yumによるアップデートじゃできなくなったようですね。
Fedaaは、多少の問題はあれ、
Fedora Core 6 → Fedora 7 → Fedora 8 → Fedora 9 → Fedora 10 → Fedora 11 → Fedora 12
とアップグレードできたみたいですから、できなくはないのかもしれませんが、CentOSでも警告しているように、かなりリスキーのようです。
|
ここでは、まず、現在のCentOSのバージョンを確認した後、yum updateでシステムのアップデートを実施しています。
アップデート完了後、再度、現在のCentOSのバージョンを確認し、更新されていることを確認しています。
もし、/var のパーティションに空きがない場合で、別のパーティションに空きがあるなら、ディレクトリを指定すればOKです。
|
SSHでログインするためのユーザを追加する。
ここでは、SSHで唯一ログインを許可するようにしたhogeユーザを追加してみましょう。
|
adduserで、hogeというユーザを追加しています。
グループは、hogeとwheelに参加させています。
ログイン時のShellを tcsh としています。
登録したユーザを削除するには、rmuser を使います。
また、パスワードのみの変更なら、passwordを使います。
ここで、wheelのグループに属していない場合は、suでスーパーユーザになれません。 セキュリティ上、wheelには属さない方が良いと思いますので、その際は、すくなくともsudo が使えるようにしておきましょう。
ipfw , vimをインストールする。
ipfw は、Linuxでいうところのiptablesに相当します。そもそもUNIXでは、IPマスカレードおよびパケットフィルタリングを実施するソフトウェアとしてipfwが利用されていました。現在でも利用されているのは、BSD系のOS、Mac OS などに組み込まれています。
カーネルに組み込まれているので、FreeBSDをインストールすれば、ipfw もインストールされているはずです。
もしも、ipfw が動作しない場合は、カーネルを再構築する必要があります。(通常インストールされていないことはないと思いますが、再構築する場合は、FreeBSDでファイアウォール(ipfw) を参照してください。)
動作するかどうか確認するには、以下のように入力してみてください。
|
vim は、多言語に対応した テキストエディタ ( vi ) です。
標準のviエディタでも良いのですが、日本語の入力が楽な面もありますし、使い勝手は間違いなく良いですから、インストールしておきます。
ここでは、pkg_add を使ってバイナリインストールしてみます。
( pkg_add は、CentOSでいうところのyumに相当します。 )
|
これで、インストール完了です。
絶対パスで指定していないコマンドをシェル内でタイプされた時、シェルは実行可能ファイルを見つけるために参照するハッシュテーブルを再構築するコマンドです。
実際に、シェルで全体パスで指定していないコマンド実行する場合、毎回 PATH で指定されたディレクトリを検索するわけではありません。既にハッシュテーブルに登録されている実行可能なコマンドを検索し、ヒットしたパスをもとに実行する仕組みになっています。
そのため、新しくパッケージをインストールした場合、PATHで設定されているディレクトリへインストールされたとしてもrehashでハッシュテーブルを再構築しないかぎり、絶対パスで指定していないコマンドを実行できません。
ログイン環境を編集する。
vimを標準のエディタとして使うために、vi のaliasとして登録しておきます。
先にhogeは、tcsh をログイン時に利用するように設定したので、ここでは、.cshrc を編集します。
|
alias ls ls -G : lsコマンドで常に色つきの出力を有効にします。
set prompt = ‘[%n@%m:%~$] ‘ : プロンプトの表示を ユーザ@ホスト:ディレクトリ名 とします。
set autolist=ambiguous’ : コマンド入力をTABキーで補間します。
alias vi vim : viコマンドは、常にvimに置き換えます。
alias view vim -R : viewコマンドは、常にvimの読み込み専用に置き換えます。
setenv EDITOR vim : デフォルトのエディタをvimにします。
|
SSHのポートを変更する。
まずは、SSHのポートを変更して、簡単にアタックされないようにしておきます。指定するポート番号は、10000以降の適当なポート番号を割り当てましょう。
/etc/ssh/sshd_config を編集します。
|
ここでは、ポート番号、SSHプロトコル、rootでのログイン不可、ログイン可能なユーザ名を指定しています。
(後でhogeというユーザを追加しています。)
また、ログインするIPアドレスが決まっているなら、許可するIPアドレスも指定した方がより良いです。
設定を終えたら、sshd の設定ファイル再読み込みを実施します。
|
この状態で、上記の例で言うと、
ユーザ : hoge
ポート番号 : 10022
でログインできるか確認しましょう。
ログインできればOKです。
できない場合は、設定を再度見直しましょう。
とりあえず、再読み込みの場合は、現在SSHで接続しているクライアントには影響ありません。そのため、もしも設定に誤りがあった場合に、再編集することができます。
sshd を再起動してしまうと、現在接続しているクライアントは解放されてしまうので注意が必要です。
ファイアウォール(ipfw)の設定を行う。
ここでは、単純にipfwを使っていないポートを外部に非公開とするようにします。
( ここでの例として 80(http),10022(ssh) 以外をすべて非公開にします。 )
シェルファイルを作成して、一気にやってしまいます。
そのため、ipfwを実行しようとすると以下のようなエラーが発生します。
|
ただし、デフォルトのままipfwを有効にしてしまうと、リモートからのアクセスが一切できなくなりますので、十分、注意が必要です。
( もちろん、ローカルコンソールは使えます 。 )
|
- ファイアウォール設定用スクリプトファイルを作成する。
ファイアウォール設定用スクリプトファイルを、ここでは、例として、/etc/rc.firewall_local として作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#! /bin/sh # ipfw -q -f flush IPF="ipfw -q add" #loopback $IPF 10 allow all from any to any via lo0 $IPF 20 deny all from any to 127.0.0.0/8 $IPF 21 deny all from 127.0.0.0/8 to any $IPF 22 deny all from any to 172.16.0.0/12 $IPF 23 deny all from 172.16.0.0/12 to any $IPF 24 deny all from any to 192.168.0.0/16 $IPF 25 deny all from 192.168.0.0/16 to any $IPF 30 deny tcp from any to any frag # statefull $IPF 50 check-state $IPF 60 allow tcp from any to any established $IPF 70 allow all from any to any out keep-state $IPF 80 allow icmp from any to any # open port http (80) $IPF 100 allow tcp from any to any 80 in $IPF 101 allow tcp from any to any 80 out # open port ssh (10022) $IPF 110 allow tcp from any to any 10022 in $IPF 111 allow tcp from any to any 10022 out # deny and log everything $IPF 999 deny log all from any to any
4行目 : すべてのルールを削除します。(65535 だけは消せません)
24行目 : pingを受け付けます。
10 – 16行目 : ループバック、プライベートIPアドレス(10.x.x.x,172.16.x.x,192.168.x.x)は、すべて拒否してます。
26 – 34行目 : 10022(SSH),80(HTTP)の2つのポートのみを公開し、それ以外をすべて非公開にします。
上記は、必要最小限のポートしか開いていません。pop3やmailなどの必要なポートは、27 , 28行目を真似て開くと良いでしょう。
- ファイアウォールを有効にする。
以下のように /etc/rc.confを編集 ( 赤文字部分 ) することで、 ファイアウォールを有効にし、先に作成した設定用スクリプトファイル( ここでは、例として、/etc/rc.firewall_local ) をファイアウォールのスクリプトファイルとして設定します。
$ vim /etc/rc.conf ... firewall_enable="YES" firewall_script="/etc/rc.firewall_local"
- ファイアウォールを実行する。
上記の入力に誤りがないことを十分に確認の上、以下のようにファイアウォールの有効化を実施します。
$ /etc/rc.d/ipfw start Firewall rules loaded.
- ファイアウォールが正しく設定されているか確認する。
最後に、ipfw listコマンドを実行し、ファイアウォールが正しく設定されているか確認します。
正しく設定されているなら、最初に作成したファイアウォール設定用スクリプトファイルの内容が、そのまま表示されるはずです。$ ipfw list 00010 allow ip from any to any via lo0 00020 deny ip from any to 127.0.0.0/8 00021 deny ip from 127.0.0.0/8 to any 00022 deny ip from any to 172.16.0.0/12 00023 deny ip from 172.16.0.0/12 to any 00024 deny ip from any to 192.168.0.0/16 00025 deny ip from 192.168.0.0/16 to any 00030 deny tcp from any to any frag 00050 check-state 00060 allow tcp from any to any established 00070 allow ip from any to any out keep-state 00080 allow icmp from any to any 00100 allow tcp from any to any dst-port 80 in 00101 allow tcp from any to any dst-port 80 out 00110 allow tcp from any to any dst-port 10022 in 00111 allow tcp from any to any dst-port 10022 out 00999 deny log ip from any to any 65535 deny ip from any to any
誤ってSSHのポートを閉じてしまうと、二度とアクセスできなくなります。 さくらのVPSでは、リモートコンソールが提供されていますので、最悪の場合は、リモートコンソールからのアクセスで修正することができます。
不要なサービス(デーモン)を停止する。
最後に、無駄に動作しているプロセスを停止するようにします。
ただ、CloudCore VPS の場合、無駄なプロセスは無いと思います。
デフォルトで動作している全プロセスは、以下のとおりです。
|
インストールするディストリビューションでMinimalを選択した時は、上記のような感じだと思います。
ここで不要なのは、仮想コンソール( /usr/libexec/getty Pc ttyvX ) ぐらいでしょうか。
( sendmailも不要といえば不要ですが、後々、必要になるので、これはそのままにしておきます。)
とりあえず、ここでは、仮想コンソールを使わないようにしてみます。
簡単にいうと、 ネットワークや X ウィンドウシステム を動かすなどの複雑なことをおこなわずに、 いくつかのセッションを同時におこなうことを可能にします。
つまり、GUIを使わないような場合は、それほど重要なものでもありませんから、ここでは、仮想コンソールを使わないようにします。
- /etc/ttys を編集し、仮想コンソールを無効にします。
以下の赤文字部分が編集箇所です。( “on” → “off” へ変更しています。 )
$ vi /etc/ttys ... console none unknown off secure # ttyv0 "/usr/libexec/getty Pc" xterm on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" xterm off secure ttyv2 "/usr/libexec/getty Pc" xterm off secure ttyv3 "/usr/libexec/getty Pc" xterm off secure ttyv4 "/usr/libexec/getty Pc" xterm off secure ttyv5 "/usr/libexec/getty Pc" xterm off secure ttyv6 "/usr/libexec/getty Pc" xterm off secure ttyv7 "/usr/libexec/getty Pc" xterm off secure ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure # Serial terminals # The 'dialup' keyword identifies dialin lines to login, fingerd etc. ttyu0 "/usr/libexec/getty std.9600" dialup off secure ttyu1 "/usr/libexec/getty std.9600" dialup off secure ttyu2 "/usr/libexec/getty std.9600" dialup off secure ttyu3 "/usr/libexec/getty std.9600" dialup off secure # Dumb console dcons "/usr/libexec/getty std.9600" vt100 off secure ...
- 仮想コンソールの再起動を行います。
もしも X ウィンドウシステムを起動しているなら終了させて、以下のコマンドを実行します。
$ kill -HUP 1
最後に仮想コンソールのプロセスがないか確認しておいてください。
$ ps aux|grep tty root 1404 0.0 0.2 9748 1212 0 RL+ 10:13PM 0:00.00 grep tty
上記のようにすべての仮想コンソールのプロセスがなくなりました。
ここに書いているのは、あくまで必要最小限としての記載ですので、ユーザによっては、もっと、セキュリティ面で強化を図ることもできると思います。
また、日本語環境もできていません。ここまでの設定を終えたら、UTF8による日本語環境を整えてみてください。
( 参照 : FreeBSDで日本語環境(UTF-8対応)を整える )
さくらのVPSでは、FreeBSDをカスタムOSとして提供しています。(コントロールパネルからインストールして利用することができます)
さくらインターネットのVPS ( さくらのVPS )を試してみたい方は、http://vps.sakura.ad.jp/からどうぞ。無料お試し期間は14日です。
※お試し期間中は、OP25B設定、データ転送帯域に制約がありますから注意してください。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :