FTPサーバ ProFTPD

第2世代目のRedHat Linux時代の情報です。

FTPサービスを実現するソフトウェアにProFTPDがあります.RPMでインストールすると設定ファイルは/etc/proftpd.confです.この設定を見ていきます.

# This is the ProFTPD configuration file
# 起動時に最初に表示させるメッセージ
ServerIdent                     on "tamochan.com FTP Server ready."
#アドミニストレータのメールアドレス
ServerAdmin                     root@tamochan.com
#ined経由で起動するので,standaloneではなくて,inetd
ServerType                      inetd
DefaultServer                   on

# Use pam to authenticate by default
AuthPAMAuthoritative            on

# Do not perform ident lookups (hangs when the port is filtered)
IdentLookups                    off

# Port 21 is the standard FTP port.
Port                            21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# Chmod isn't allowed by default
#AllowChmod                     on

# Default to show dot files in directory listings
LsDefaultOptions                "-a"

# See Configuration.html for these (here are the default values)
#MultilineRFC2228               off
#RootLogin                      off
#LoginPasswordPrompt            on
#MaxLoginAttempts               3
#MaxClientsPerHost              none

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30
# Set the user and group that the server normally runs at.
User                            nobody
Group                           nobody

# Normally, we want files to be overwriteable.
<Directory /*>
  AllowOverwrite                on
</Directory>

#anonumous(匿名)は受け付けないようにするため,コメントアウト.
# A basic anonymous configuration, no upload directories.
#<Anonymous ~ftp>
  # Uncomment the following line to allow anonymous access
  #RequireValidShell            off
#  AllowChmod                   off

#  User                         ftp
#  Group                                ftp
#  AccessGrantMsg               "Anonymous login ok, restrictions apply."

  # We want clients to be able to login with "anonymous" as well as "ftp"
#  UserAlias                    anonymous ftp
#
  # Limit the maximum number of anonymous logins
  #  User                         ftp
#  Group                                ftp
#  AccessGrantMsg               "Anonymous login ok, restrictions apply."

  # We want clients to be able to login with "anonymous" as well as "ftp"
#  UserAlias                    anonymous ftp
#
  # Limit the maximum number of anonymous logins
#  MaxClients                   10

  # We want 'welcome.msg' displayed at login, '.message' displayed in
  # each newly chdired directory and tell users to read README* files.
#  DisplayLogin                 welcome.msg
#  DisplayFirstChdir            .message
#  DisplayReadme                        README*

  # Limit WRITE everywhere in the anonymous chroot
#  <Limit WRITE>
#    DenyAll
#  </Limit>

#</Anonymous>

FTPはinetdを経由して起動します.inetdとは,一つのプロセスでいろんなポートを見張っていて、クライアントからの通信が来た場合に初
めてサーバを実行してくれる便利な仕組みのことです.そこで次に,このinetdの設定をします.RedHatでは,inetdのさらに強力な管理機能を
持つxinetdになっています.設定ファイルは/etc/xinetd.d/proftpdです.

# default: off
# description: The ProFTPD FTP server serves FTP connections. It uses \
#       normal, unencrypted usernames and passwords for authentication.
service ftp
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.proftpd
        log_on_success          += DURATION USERID
        log_on_failure          += USERID
        nice                    = 10
        disable                 = no
}

曲者はdisableでしょうか.デフォルトではyesになっていますが,noにしないと,起動しません.

FTPサーバ vsftpd

RedHatで構築時にはProFTPDでしたが、別なソフトウェアも試してみようということで今回はvsftpd(very secure ftpd)。名前がいいよね。とっても安全ってところが。

# emerge vsftpd

で、vsftpdをインストールします。そうすると、/etc/vsftpd/vsftpd.confなる設定ファイルが出現するので、それを編集します。特に注意すべきところを書きに記します。

# デーモンとして立ち上げるときは下記2行をYESとします。
background=YES
listen=YES

# anonymousを拒否するので、NOとします。
anonymous_enable=NO


# Make sure PORT transfer connections originate from port 20 (ftp-data).
# タモチャンドットコムではパッシブモードを推奨なのでNO
connect_from_port_20=NO
# かわりに、下記を記述
pasv_enable=YES
pasv_address=192.168.0.20
listen_port=21
pasv_min_port=10020
pasv_max_port=10024

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# /etc/vsftpd/vsftpd.chroot_listに記述されているユーザ以外は、
# 自分のホームディレクトリ以上には移動できないようにする。
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

ちなみに、設定ファイル内で指定した/etc/vsftpd/vsftpd.chroot_listは、ただ、ユーザ名を列挙すればいいものです。

tamochan
tamori
tamo

設定後、rc-updateを用いて、デーモンが起動時にも自動的に起動するようにします。

dns # rc-update add vsftpd defau

ネームサーバ BIND9

では,いよいよソフトウェアを入れていきます.まずはDNSを担当するBINDを入れていきます.BINDはバージョン9を入れます.

# emerge bind

BIND9は内部からは内部向けの名前引き、外部からは外部向けの名前引きをしてくれます.これが,IPアドレスを一つしかもらえないホームサーバ
にとってはありがたいからです。たとえばこれが行えないと、自宅内から自分のサーバの名前解決を行おうとすると外部向けのIPアドレスが返ってきて、アク
セスができなくなるからです。/etc/named.confには以下のような設定を行ってみます。

options {
//辞書ファイルをどこに置くか?
directory "/var/bind";
};
//対内部用名前引きの設定
view "internal"{
//この設定をどのIPに効かせるか
match-clients {192.168.0.0/24; 127.0.0.0/8;};
recursion yes;

zone "." IN {
type hint;
       file "named.ca";
};
//ローカルホスト順引き
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
//ローカルホスト逆引き
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
//内部LAN用順引き
zone "tamochan.com" IN{
type master;
notify no;
file "tamochan.com.local.zone";
};
//内部LAN用逆引き
zone "0.168.192.in-addr.arpa" IN{
type master;
notify no;
file "0.168.192.rev";
};
};

//外部公開用
view "external"{
match-clients {any;};
recursion no;

//外部用順引き
zone "tamochan.com" IN{
type master;
notify no;
file "domain";
};

};

外部用の逆引きは,プロバイダの都合上,してくれないので,記述していません.

個々の辞書ファイルですが,外部向きの設定ファイル(上の設定ファイルに合わせると,/var/bind/domain)は、

$TTL 43200
@         IN      SOA     dns.tamochan.com.       tamori.tamochan.com.    (
                                                  2002022501;serial
                                                  28800;refresh
                                                  14400;retry
                                                  3600000;expire
                                                  86400;minimum   )
dns       IN    A       211.133.147.90
@         IN    NS      dns.tamochan.com.
//メールサーバ
@         IN    MX 10   mail.tamochan.com.
//エイリアスの設定
www       IN    CNAME   dns.tamochan.com.
ftp       IN    CNAME   dns.tamochan.com.
mail      IN    CNAME   dns.tamochan.com.

ちなみに、内部向けDNSは、外部向きの設定ファイル(上の設定ファイルに合わせると,/var/bind/tamochan.com.local.zone)は、

$TTL 43200
@       IN      SOA     dns.tamochan.com.       tamori.tamochan.com.    (
                                                2005071401
                                                28800
                                                14400
                                                3600000
                                                86400   )
dns       IN    A       192.168.0.***
@         IN    NS      dns.tamochan.com.
@         IN    MX 10   mail.tamochan.com.
www       IN    CNAME   dns.tamochan.com.
ftp       IN    CNAME   dns.tamochan.com.
mail      IN    CNAME   dns.tamochan.com.

細かい部分は他所に譲るとして,結構重要なのは,上で行くとserial.これはシリアル番号で,変更を行った際には必ず,さらに大きな番号をつけておきます.変更した日付(YYYYMMDD)+2桁の通し番号としておくと,大きな番号になっていきます.また,忘れがちなのがdns.tamchan.com.の最後のピリオド.本当に忘れます.

あとは、

dns # rc-update add named default

とし、起動時に自動的にデーモンも起動するようにしてください。

また、セカンダリDNSを用意します。tamochan.comでは xname.org を使っています。ここは、利用無料で、しかもプライマリDNSとしても利用可能です。

まず、トップページのLoginの下のcreate a new userをクリックします。入力フォームが現れますので、

  • login(アカウント名)
  •  

  • your valid email(メールアドレス)
  •  

  • new password(パスワード)
  •  

  • confirm password(パスワードを再入力)
  •  

  • Advanced interface(これにだけチェックを入れる)
  •  

  • I have read and I understand・・・(使用許諾。チェックを入れる)

を入力します。メールが届きますので、指定されたURLをクリックすると本登録されます。

本登録後、トップページのLoginにアカウント名、パスワードを入力してログインします。画面上部のCreate zoneをクリックし、

  • zone→ドメイン名を入力
  • secondaryを選択
  • Createをクリック、別画面に遷移
  • modification interfaceをクリック
  • primary name server IP→自分のDNSのIPを入力
  • allow transfers from→Master onlyを選択
  • Modifyをクリック

これで、セカンダリの設定が終了です。Modifyクリック後、設定を追加する部分が表示されるので、指示に従って/etc/bind/named.comと/var/bind/domainを書き換えます。

数時間後、画面上部のView zoneをクリックし、serialが現在のシリアル番号になっていれば正常に動作しています。

以上、設定したらドメインのレジストリ(ドメイン名を取ったところ)に、自分のDNSとセカンダリDNSを登録します。お名前.comでは「サービス設定」の「ネームサーバー登録」で登録します。これで自分のドメインの問い合わせは自分のところにくるようになります。

OS – Gentoo Linuxのインストール

さて、Gentoo
Linuxのインストールをはじめるのですが、とりあえずインストールCDをダウンロードします。CDのみでインストールする方法と、インストールCDは
とっても小さい容量で、ネットワークを利用しながら、その都度必要なパッケージをダウンロードしながらインストールする方法があり、それぞれで必要なCD
が異なります。今回はネットワークを利用したインストール方法を採用します。2.c. GentooインストールCDをダウンロードして、CDに焼いて、ブートしますからイメージをダウンロードします。

インストールCDからブートすると・・・いきなりコマンドライン面が。いまどきコマンドうってインストールか・・・。とびびります。さらに、カーネル指定にキーマップを日本にしないとキーボード配列がおかしくて、非常に作業しづらくなります。

boot:gentoo dokeymap
>> Loading keymaps...
Please select a keymap from the following list by typing in the
appropriatename or number.
Hit Enter for the default "us/41" US English keymap.
...
<< Load keymap: jp

起動して、

livecd root#

が出たら準備完了。通常なら、1. Gentooをインストールするにしたがって行っていけば大丈夫、かと思います。

なお、Gentoo
Linuxは用途?目的?によってインストールの方法が若干異なります。インストールの段階がStage1,2,3とあり、どの段階からはじめることも可
能です。Stage1ががっつりカスタマイズ派、Stage3は簡単インストール派、みたいな感じです。2.b. GentooインストールCD
参考にしてください。ぼくはStage1から始めましたが、Stage2でなんだかんだとコンパイルしなければならず、恐ろしく時間がかかり、インストー
ル完了まで本当に3日かかりました。本当はそんなに時間がかからないのですが、コマンドうって放置、コマンドうって放置、ということを繰り返さないといけ
なくなるはずです。おそらくStage3でもいいでしょう・・・おそらく。

今回行ったイレギュラーな物としては、Software RAID1を組んだ、というところでしょうか。まず、パーティションの切り方を決定します。

  • / 3GB
  • /var 5GB
  • /usr 3GB
  • /home 8GB
  • swap 128MB

/varと/homeは後々のことを考えて,分けたほうがいいです./varにはログとメール,/homeにはユーザのデータが記憶されています.
swapはメモリと同じぐらいの大きさをとります.また、Gentoo
LinuxにはPortageという、強力なパッケージ管理を行うシステムがあるのですが、これは/usrまたは/varでパッケージを管理するので、少
し多めに取っておきます。/usrか/varは後で設定可能ですが、デフォルトは/usrです。

つぎに、パーティションを切り、Gentoo/x86 インストールの Tips & Tricksを参考にして、RAIDの設定を行います。

livecd linux # modprobe raid1
livecd linux # mknod /dev/md0 b 9 0 ←/dev/md0の作成
livecd linux # mknod /dev/md1 b 9 1
livecd linux # mknod /dev/md2 b 9 2
livecd linux # mdadm --create /dev/md0 --level=1 --raid-devices=2 \
/dev/hda1 /dev/hdb1 ←raid作成
livecd linux # mdadm --create /dev/md1 --level=1 --raid-devices=2 \
/dev/hda2 /dev/hdb2
livecd linux # mdadm --create /dev/md2 --level=1 --raid-devices=2 \
/dev/hda3 /dev/hdb3
livecd linux # mdadm --detail --scan > /etc/mdadm.conf
↑confファイルの書き出し
livecd linux # reiserfsck --check /dev/md0 
↑ちゃんとできてるかをチェック。ここではreiserfs使用
livecd linux # reiserfsck --check /dev/md1
livecd linux # reiserfsck --check /dev/md2
livecd linux # mount /mnt/gentoo/ /dev/md2
livecd linux # mount /mnt/gentoo/boot /dev/md0
livecd linux # mkswap /dev/md1
livecd linux # swapon /dev/md1
livecd linux # cp /etc/mdadm.conf /mnt/gentoo/etc/mdadm.conf
↑confファイルのchroot後用コピー
livecd linux # mknod /mnt/gentoo/dev/md0 b 9 0 
↑/dev/md0のchroot後用作成
livecd linux # mknod /mnt/gentoo/dev/md1 b 9 1
livecd linux # mknod /mnt/gentoo/dev/md2 b 9 2

そして、chroot。さらに、GRUBの設定を以下のように行います。まず、grub.confの設定です。

default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz
#通常起動用
title=Gentoo Linux 2.6.11-gentoo-r11
root(hd0,0)
kernel /kernel-2.6.11-gentoo-r11 root=/dev/md2
#hdbが破壊したとき用
title GentooLinux 2.6.11-gentoo-r11 raclass-critics-hda
root(hd0,0)
kernel /kernel-2.6.11-gentoo-r11 root=/dev/hda2
#hdaが破壊したとき用
title GentooLinux 2.6.11-gentoo-r11 raclass-critics-hdb
root(hd1,0)
kernel /kernel-2.6.11-gentoo-r11 root=/dev/hdb2

つぎにMBRにgrubをインストールします。

livecd linux # grub
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

また、インストールの締めの部分でアンマウントするところがあるインストールの締めの部分でアンマウントするところがあるのですが、私がやったときになかなかうまくいきませんでした。なので、無理やりはずしました。

livecd linux # umount /mnt/gentoo/home /mnt/gentoo/boot /mnt/gentoo/proc 
livecd linux # umount -d /mnt/gentoo