気の向くままに辿るIT/ICT/IoT
システム開発

NetBSDでFTP/SFTP/FTPSサーバを構築

ホーム前へ次へ
NetBSDのインストールと運用/NetBSD/i386 6.1.x編

NetBSDでFTP/SFTP/FTPSサーバを構築

NetBSDでFTPサーバを構築

 NetBSDにプリインストール、もしくは、公式リポジトリで利用可能なFTPサーバはいくつもありますが、ここでは、ftpd、tftp/tftpdを構築するケースを示すものとします。

$ sudo vi /etc/inetd.conf
...
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -ll
#ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -ll
...
#tftp stream udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
#tftp stream udp6 wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
(必要な行のコメントマークを外す)
...
$

 NetBSDでFTPサーバ(ftpd)を構築する場合には、とりあえず機能させるだけなら、/etc/inetd.confの適切なIPプロトコル(IPv4/IPv6)のftp行のコメントマーク(#)を外します。

 TFTPサーバ(tftpd)を構築する場合には、/etc/inetd.confの適切なUDPプロトコル(udp/udp6)のtftp行のコメントマーク(#)を外します。

 何れも念を期すなら、/etc/rc.d/inetd restartとするだけです。

 ftpdを起動するとデフォルトでは、ユーザーのホームディレクトリをchrootし、コマンドラインからftp://hostname/やftp://ipaddress/などとすれば、もしくは、FTPクライアントでホストにhostnameipaddress、ポートに21、匿名(anonymous)などを指定すればアクセスできます。

 ただ、多くの場合、既存ユーザーのホームディレクトリではなく、/var以下やFTP専用ユーザーのホームディレクトリといった特定のディレクトリにアクセスさせたいものと思われ、その場合には、専用ユーザーを作成したり、公開ディレクトリをリストできるようにしたり、適切なパーミッション設定を行なったりする必要があります。(詳細は非常にわかりやすい下記リンク先を参照。)

 NetBSDのようにpkgsrc、またportsを使うOSにおいて同一アーキテクチャのマシンが複数台ある状況なら、最も高速なマシンでバイナリを生成しつつ、make install(update)、そのマシン上で(HTTPでもよいですが、より手間が少ない)FTPサーバを起動(普通はinetd/TCP Wrapper/xinetdなどでftpを有効に)しておけば、他のマシンで当該パッケージが必要な場合、バイナリをインストールすることができるので時短にもなり、便利です。

 とはいえ、FTPで転送されるデータなどは、アカウントやパスワードを含め、丸見えの平文で送られますが、これらをSSHやSSLを使って暗号化するとより安全に通信することができます。

NetBSDでSFTPサーバを構築

 NetBSDで利用できるSFTP/SSH File Transfer Protocol(通信内容が暗号化されるSSHポートを介したFTP転送プロトコル)サーバもいくつもありますが、ここでは、sftpdを使うものとし、とりあえず機能させるなら、後述のように/etc/rc.d/sshd onestart(既に/etc/rc.confにsshd=yes行を追記済みなら/etc/rc.d/sshd start、その状態でマシンを起動したなら/etc/rc.d/sshd restart)としてSSHデーモン(サーバ)sshdを起動させるだけです。

 これは、SSHがsftpをサポートしており、構成ファイル/etc/ssh/sshd_configにデフォルトでsftpが機能するように設定されているからです。

 これで例えば、FileZillaなどFTP/SFTP/FTPS対応のFTPクライアントでホスト名、ポートに22、アカウント名、パスワードを適宜入力すれば、アクセスでき、SSHの経路を通すことによって通信の内容が暗号化されます。

NetBSDでFTPSサーバを構築

 一方、FTPS/File Transfer Protocol over SSL/TLSプロトコルは、FTPで送受信するデータをSSLまたはTLSで暗号化するものでサーバ側にSSL証明書が必要となります。

 ただ、少なくとも個人で利用する分には、CA.shスクリプトで生成可能な自己証明書でも十分でしょう。

ホーム前へ次へ