はじめに
第一回とありますが、このシリーズでは『OSインストールからウェブサーバの構築+α』までの一連の流れを説明していきます(もともとはメモ代わりですが)。
1記事として全てまとめて書いても良いのですが、その場合は非常に長くなってしまうのでいくつかの記事に分割して紹介していきます。
今回は第一回目です。
このセクションでは、新しく記事が公開される度に記事リンクをまとめて置いておきます。
- Ubuntu20.04のInstallおよびSSH、FTP設定【第一回】
- https://www.pr1sm.com/web/ubuntu20-04-install-and-ssh-ftp-settings/
- Nginxの導入および設定&セキュアなHTTPS化【第二回】
- Rust製SSG、Zolaの導入および各種設定【第三回】
- Nginxリバースプロキシで静的コンテンツ専用サーバを作成【第四回】
- WordPress&MariaDBの導入および高速化設定【第五回】
- サイトの安全性を更に高めるWordPressセキュリティ設定【第六回】
なお、このシリーズではホスティングにVultrを使っています。
- Vultr
サーバのスペックおよび構成は以下の通りです。
$ cat /etc/lsb-release- DISTRIB_ID=Ubuntu
- DISTRIB_RELEASE=20.04
- DISTRIB_CODENAME=focal
- DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
Vultr : High Frequency Server
- 32GB MVMe
- 1CPU
- 1GB Memory
- Additional Features
- Virtual Private Clouds: ON
今回の編集時に使用するエディタはvimです。文字入力開始(insert)はi、保存して終了は:wq、保存せずに終了は:!qです。フラグの解除はEscキーです。
コマンド表示時の$ コマンドにあるドルマークは入力可能状態を表しています。意味を表す記号で最初から表示されているため、実際の入力時にドルマークを入力する必要はありません。
これが# コマンドの場合のシャープはrootユーザー(管理者権限)を意味します。こちらも入力時は同様です。
Ubuntuのインストール
今回はServer版を使いますが、サーバ運用以外でも使う予定がある場合はDesktop版でも構いません。
Ubuntuのダウンロードおよびインストール
Ubuntuのインストール設定
Deploy後はサーバステータス内のView Consoleにてコンソール画面で操作することが可能です。
起動直後は読み込み等を行っているため、しばらく待機します。
その後
Use UP, DOWN and ENTER keys to select your language.という文言が出てくるので、ここではEnglishを選択します。- すると、次は
Instaler update availableという項目が出てくることがあり、ここではUpdate to the new installerを選択してしばらく待ちます。
- すると、次は
それが終わると次に
Keyboard configurationの項目が表示されるので、Layout: Japaneseを選択し、Doneを選びます。1.ただし、もし使用しているキーボードが日本語文字列ではない場合は対応した言語を選択してください。
次は
Network connectionsの項目ですが、ここは特に変更する箇所はないのでそのままDoneを選択します。もし変更したいところがあれば適宜行ってください。Configure proxyも同様に変更箇所は特に無いのでDoneを選びます。Configure Ubuntu archive mirrorでは自動的にミラーアドレスが表示され、日本ではhttp://jp.archive.ubuntu.com/ubuntuが表示されているので、そのままDoneを選びます。次に
Guided storage configurationが表示され、変更がなければDoneを選びますが、ストレージの構成を変更にしたい場合はCustom storage layoutを選んだあとにDoneを選択します。- カスタム設定にした場合は
Storage configurationが出てきますが、例えばディスクのファイルシステムをxfsに変更したい場合はAVAILABLE DEVICESの下にある/dev/vda localdisk 32.000Gを選択し、Add GPT Partitionを選ぶとAdding GPT partition to /dev/vdaが表示されます。 Adding GPT partition to /dev/vdaではFormatを選び、現在のext4からxfsを選択し、Createします。- すると再び
Storage configurationに戻り、現在の構成が表示されますが、これで問題が無ければDoneを選んでください。 - カスタム設定の最後には
Confirm destuctive actionが表示され、 ディスクを初期化しても良いかと聞かれるので問題がなければContinueを選びます。
- カスタム設定にした場合は
次は
Profile setupを行います。Your nameは自分の名前を入力しますが、これはユーザ名とは別のものです。Your server's nameはサーバ自体の名前を入力します。コンソールではYour server's name@usernameという位置です。Pick a usernameはユーザ名を入力します。Choose a passwordには好きなパスワードを入力し、確認としてConfirm your passwordには同じパスワードを入力します。
次は
SSH Setupですが、今回はSSH(Secure SHell)接続を行うため、必ずInstall OpenSSH serverにチェックを付けてください。チェックを付けたらDoneを選びます。- チェックを付けると
Import SSH identityが出てきますが、ここでは新規作成を行うのでNoのままでOKです。
- チェックを付けると
最後に
Featured Server Snapsでは必要な機能があればチェックを入れますが、今回はこの項目で何もチェックを入れませんのでDoneを選択します。全項目の設定が終わればインストールが開始されるので、インストールが完全に終了するまで待機します。
Install complete!ではなく、下記にReboot Nowが表示されるまで待つ必要があります。表示されたら再起動を行います。なお、再起動の際、セットしたUbuntuのisoファイルがそのままになっているとずっとインストール項目に移動しつづけてしまいます。なので、Vultrのサーバステータスから自身のサーバを選択し、
Settings、Custom ISOの順で移動するとRemove ISOがあるのでISOを除去しておきましょう。除去後は自動で再起動が行われます。
Ubuntu初期設定
アップデート
Ubuntuのインストールを完全に終わらせた場合は既にアップデートのインストールは完了しています。
$ sudo apt updateを入力することで現在のアップデート状況をチェックすることができます。
$ sudo apt upgradeによってアップデートをインストールすることができます(推奨)。
$ sudo apt dist-upgradeもしくは$ sudo apt full-upgradeでは完全なアップデートのために障害となるパッケージは削除される可能性があります。
なお、パッケージ管理コマンドにはaptとapt-getがありますが、apt-getではインストールしていないパッケージが必要となる場合にアップグレードが停止します。
そのため、基本的には柔軟な動作を行うaptが推奨されています。
厳格にパッケージを管理したい場合にはapt-getを使うと良いでしょう。
TeraTermの導入
Vultrのコンソール画面のままでは非常に扱いにくいので、ここでは大変便利なターミナルエミュレータであるTeraTermを導入します。
- Tera Term Home Page
TeraTermをダウンロードして展開後、
ttermpro.exeというファイルがあるのでそれを起動します(ショートカットを作っておくと便利です)。起動後、
File、New connection...の順で選択するとTera Term New connectionという画面が出てくるので、Host:には先程作成したサーバのIPを入力し、TCP port#には22を入力します。すると
SECURITY WARNINGと共にfingerprintが表示されますが、そのままContinueを選んでください。SSH Authentivationの項目が表示されるので、User name:にサーバのユーザ名を入力し、Passphrase:にはパスワードを入力後、OKを選択するとサーバにログインすることができます。
この後すべてのコンソール内の操作はTeraTerm経由で行われます。
netplanの設定変更
再起動後、コンソールにA start job is running for wait for network to be configuredという文章が表示され、非常に長く待たなければならないケースが発生する場合があります。
これを解決するにはnetplanの設定を変更する必要があります。
$ sudo vim /etc/netplan/00-installer-config.yaml
00-installer-config.yaml
# This is the network config written by 'subiquity'
# 各インターフェースにoptional:trueを追加する
network:
ethernets:
enp1s0:
dhcp4: true
optional: true
enp6s0:
dhcp4: true
optional: true
version: 2
:wqで上書き保存し、その後$ sudo netplan applyで設定の変更を適用させます。
文字化け対策
現時点のサーバは日本語に対応しておらず、仮に入力した場合には文字化けが発生してしまいます。
そのため、別途日本語パッケージをインストールして適用させなければなりません。
- まずは
$ locale -aで現在の言語設定を確認します。初期状態では以下のようになっており、日本語が入っていません。
C
C.UTF-8
en_US.utf8
POSIX
$ sudo apt install language-pack-ja-base language-pack-jaで日本語パッケージをインストールします。インストール後はシステム表示を一部英語にしたまま日本語表示可能にします。理由としてはエラーメッセージなどは英語の方が検索に引っかかりやすいためです。
$ sudo vim ~/.bashrcで言語設定を行います。
bashrc
# 最後に記載する
case $TERM in
linux) LANG=C ;;
*) LANG=ja_JP.UTF-8;;
esac
その後は
$ source .bashrcで設定を反映させます。ただし、システム表示は日本語化状態となっているため、反映させるには$ sudo rebootによるサーバの再起動が必要となります。- もしシステムを含む全部を日本語表示にしたい場合は
$ echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrcおよび$ echo 'export LANGUAGE="ja_JP:ja"' >> ~/.bashrcを入力することで、日本語訳に対応している項目はすべて日本語で表示されます。
- もしシステムを含む全部を日本語表示にしたい場合は
次に
$ sudo vim ~/.vimrcでエディタであるvimの編集も行います。
vimrc
" settings
set fenc=utf-8
set encoding=utf-8
set fileencodings=utf-8
set fileformats=unix,dos,mac
vimの場合は保存した時点で自動的に反映されます。
以上で文字化け対策の完了です。
セキュアなSSH設定
現時点では簡易的なSSH接続を行っているため、セキュリティ的には脆弱です。
そのため、一定以上の安全性を確保するためにSSHの設定を更新します。 新規に作成した鍵を使ったログイン方法を追加します。 まず、TeraTermのメニューバーにある 次に すると 下部に 公開鍵と秘密鍵を保存した後、公開鍵( アップロードした公開鍵を認証用に設定します。 設定が完了することで鍵でのログインが可能となります。 実際にログインするには、通常ログインと同じようにTera Termメニューバーで 鍵でのログインはできるようになりましたが、そもそも現段階では鍵でしかログインができないというわけではなく、パスワードを用いた通常ログインがまだ可能になっています。 そのため、更に安全性を高めるために新たな設定を行います。 この時点でSSHのポート番号を変更していれば、次のログインからはそのポート番号でしかログインできません。 SSHのために様々な変更を行いましたが、さらなるセキュリティ対策を行うためにUFW(Uncomplicated FireWall)というファイアウォールの設定も追加しておきましょう。 まずは 次に 更に そして 最後に鍵認証の追加
Setupを選択します。SSH Key Generatorを選択します。TTSSH: Key Generatorという項目が表示されます。Key typeにED25519を選び、Generateを選択します。Key passphrase:が表示されるため、この鍵に対するパスワードを設定します。Comment:は有り無しどちらでも構いません。Confirm passphrase:にも同様のパスワードを入力したら、Save public keyおよびSave private keyを自身のデバイスの任意の場所に保存します。id_ed25519.pub)をTeraTermの画面にログインした状態でドラッグアンドドロップします。Tera Term: File Drag and Dropという項目が出現するので、何も入力せずにOKを選択します。/home/ユーザ名にアップロードされます。$ pwdで現在のディレクトリを確認し(移動していなければ/home/ユーザ名が表示される)、$ lsで現在のディレクトリのファイルも確認する(指定したディレクトリにアップロードしていればid_ed25519.pubが表示される)$ mkdir .sshでSSH用のディレクトリを作成する。$ chmod 700 .sshでファイルのパーミッション(許可)を変更する(3つの数字は順に所有者:グループ:その他)。700では所有者のみが読み込み書き込み実行できます。$ mv id_ed25519.pub .ssh/authorized_keysで公開鍵を移動します。$ chmod 600 .ssh/authorized_keysでauthorized_keysディレクトリを所有者のみ読み書き可能に切り替えます。New connection...を選び、Host:、TCP port#に同じポート番号を入れてSSH Authenticationを表示させます。User name:は同じユーザ名を、Passphrase:には鍵のパスワードを入力します。Authentication methodsにはUse RSA/DSA/ECDSA/ED25519 key to log inを選択し、Private key file:には先程保存した秘密鍵であるid_ed25519(拡張子無し)を選択します。OKでログインすることができます。sshd_configの設定
$ sudo vim /etc/ssh/sshd_configでコンフィグ編集を行います。sshd_config# 同じ項目が既に入っていればそちらはコメントアウトしてください。
# SSHの初期ポート番号は狙われやすいので必ず変更する
Port 22
# Port 好きなポート番号
# パスワード無しでのログインは絶対に許可してはならないので"no"
PermitEmptyPasswords no
# チャレンジレスポンス認証を使用しない
ChallengeResponseAuthentication no
# Rootでのログインはセキュリティ上よろしくないので"no"
PermitRootLogin no
# ログインの成功失敗ログが出力されるようにする
SyslogFacility AUTHPRIV
# 出力されるログを詳細なものに切り替える
LogLevel VERBOSE
# PAM(Pluggable Authentication Module)認証。パスワードやチャレンジレスポンスは使わないので"no"
UsePAM no
# 鍵認証のみを使いたいのでパスワード認証は"no"
PasswordAuthentication no
# TCPポートフォワーディングを禁止する(SSH経由で別サーバとの接続を行う場合は"yes")
AllowTcpForwarding no
# Unixドメインソケットによる転送を禁止する(SSH経由で別サーバとの接続を行う場合は"yes")
AllowStreamLocalForwarding no
# X11フォワーディングを禁止する(-Xオプションを使う場合は"yes")
X11Forwarding no
#
# 以下の項目は間違えると修正するまでSSH接続ができなくなるので注意
#
# 接続を許可するユーザを設定(任意)
# AllowUsers yamada
# AllowUsers tanaka@192.168.1.*
# AllowUsers *@192.168.1.2
# 接続を許可するグループを設定(任意)
# AllowGroups hogehoge
# 接続を拒否するユーザを設定(任意)
# DenyUsers ec2-user
$ sudo service sshd restartでSSHを再起動させます。UFWの設定
$ sudo ufw default DENYですべてのポートを拒否します。この時点ではまだ有効になっていないのですぐに遮断されることはありません。$ sudo ufw allow SSHポート番号で先程指定したSSHポート番号を許可します。$ sudo ufw limit SSHポート番号を加えることで、30秒間に6回以上のアクセスが同一IPから行われた場合、そのIPをブロックできます。$ sudo ufw enableによってUFWが起動されます。Command may disrupt existing ssh connections. Proceed with operation (y|n)?という文言(コマンドが既存のSSH接続を中断する可能性)が出てくることがありますが、大抵は問題ありませんのでy(yes)を選びます。$ sudo ufw reloadで設定を反映させます。
SFTPの設定
次はSFTP(SSH File Transfer Protocol)の設定を行います。
FTPとはクライアントとサーバ間で、ファイルのアップロードやダウンロードを行うことのできる便利な機能であり、自身の端末にあるファイルをサーバに送ったり、サーバ側のファイルをこちらに受信することが可能となります。
SFTPとはSSHにFTP機能を加えたプロトコルであり、よりセキュアにファイルの送受信を行うことができます。
通常のFTPサーバにはvsftpd(Very Secure FTP Daemon)と呼ばれるオープンソースの著名なFTPサーバがあります。
ただし、SFTPではsftp-server(もしくはinternal-sftp)というシステムが使われており、FTPとは動作するプログラムが異なります(vsftpdの設定を行ってもSFTPには意味が無い)。
今回の導入後、実際のFTP接続には非常に扱いやすい無料のFTPクライアントソフトウェアであるFileZillaを使います。事前にダウンロードしておきましょう。
- FileZilla
SFTP専用ユーザの追加
今回の設定ではSFTPでのみログインができるユーザを新たに作成します。
※もし使うのが管理者のみで他のユーザが必要とならない場合はユーザ追加の設定は行わなくてもOKです。
$ sudo useradd ユーザ名でSFTP用ユーザを作成します。ユーザ名は各自決めてください。次に
$ sudo passwd ユーザ名で先程作成したユーザにパスワードを作成します。そして
$ sudo usermod -d / ユーザ名により、そのユーザのホームディレクトリを/に設定します。その後
$ sudo mkdir /home/ユーザ名およびsudo chown root:root /home/ユーザ名、$ sudo chmod 755 /home/ユーザ名で作成したユーザが読み書き可能なディレクトリを作成します。それが完了すると、
$ sudo groupadd グループ名でSFTP専用ユーザのグループ名を作成します。こちらも名前は自由です。$ id ユーザ名で現在のグループをチェックできます。
現時点では作成したユーザが同じく新規に作ったグループに属していないため、
$ sudo usermod -G グループ名 ユーザ名でグループ設定を変更させます。- 後に同じ権限を持ったユーザを更に追加したくなった場合は、ユーザ作成後、同様の方法でグループ設定を変更すればOKです。
このままでは作成したユーザは読み書きができないため、
$ cd /home/ユーザ名で移動後、$ sudo mkdir testでディレクトリを作成し、更に$ sudo chown ユーザ名:ユーザ名 testで権限を与えます。最後に
$ sudo vim /etc/ssh/sshd_configでグループに対しての動作を指定します。- 鍵認証を行う場合はSSH接続のセクションと同じ方法で鍵を作成し、指定された場所に公開鍵を設置してください。
sshd_config
# 末尾に記述する
# 指定したグループに対しての設定
Match group グループ名
# 初期ディレクトリを指定
ChrootDirectory /home/%u
# コマンド強制でSFTP接続のみを許可し、chroot対応しやすいinternal-sftpを使う
ForceCommand internal-sftp
# パスワード認証を行う場合は"yes"
PasswordAuthentication yes
# 鍵認証を行う場合はキーの場所を指定(%uはそれぞれのユーザ名を意味する)
# AuthorizedKeysFile /home/%u/.ssh/authorized_keys
# TCPポートフォワーディングを禁止する(SSH経由で別サーバとの接続を行う場合は"yes")
AllowTcpForwarding no
# Unixドメインソケットの転送を禁止する(SSH経由で別サーバとの接続を行う場合は"yes")
AllowStreamLocalForwarding no
# X11フォワーディングを禁止する(-Xオプションを使う場合は"yes")
X11Forwarding no
- すべての設定が完了したため、
$ sudo service sshd restartにより、sshdを再起動させます。
もしコマンドでSFTPログインを行いたい場合はsftp ユーザ名@IPアドレスを入力します。
鍵認証でのSFTPログインコマンドはsftp -i /公開鍵の場所/ ユーザ名@IPアドレスです。
FileZillaで接続する
まずFileZillaを起動した後、
ファイル、サイトマネージャーの順で選択します。すると、サイトマネージャーの項目が出てくるので、左下にある
新しいサイトを選択します。選択後、
自分のサイトに新規サイトが現れるので、右上の一般タブ内のプロトコルに使用するタイプを選びます(FTP,SFTP,FTPS)。ホストはサーバのIPを入力してください。ポートは設定したポート番号を入力します。- SFTPの場合はSSH接続に使うポート番号を入力します。
- 通常FTPの場合(vsftpdなど)は設定したlistenポート番号を入力します。
その後、
ユーザーにはログインを行うユーザ名を入力します。パスワードはそのユーザ名に設定したパスワードを入力します。- もしパスワード認証を無効化している場合は、後述する鍵認証を使ったSFTP接続を参照してください。
右下部にある
接続を選択することで、サーバに接続が開始されます。ユーザ名およびパスワードが間違っていなければ無事接続成功となります。- もしユーザ名とパスワードが間違っていないのにエラーが発生する場合は、FTPサーバの設定が間違っている可能性があります。左上のログにエラー文が表示されるので、それを参考に調べてみてください。
あとはユーザの権限次第でサーバへの読み書きや転送などを行うことが可能です。
鍵認証を使ったSFTP接続
ここまでの設定ではSSH接続によるログインは公開鍵と秘密鍵を使っています。
これをそのまま利用することで、FileZillaでもSFTP接続することができます。
まずはFileZillaメニューバーの
編集、設定を選んで設定画面を表示します。次に表示されたページの種類一覧で
SFTPを選択します。右側に
公開鍵認証の項目が表示されるので、鍵ファイルの追加を選んでください。秘密鍵が格納されたファイルを選択が出てきますが、ここでSSH接続に使っているid_ed25519を選択し開くを選びます。- 秘密鍵の方を選ぶ必要があるので注意(
.pubは公開鍵なので誤り)。
- 秘密鍵の方を選ぶ必要があるので注意(
すると、
FileZilla はファイル「id_ed25519」の形式をサポートしていません。FileZilla がサポートしている形式に変換しますか?というダイアログが出てくるので、はいを選択します。- 秘密鍵にパスワードを入力した場合はここでパスワードが求められますので入力します。
その後
PuTTY private key files(*.ppk)という形式で保存することができるので、認識のディレクトリに保存します(例:id_ed25519.ppkで保存)保存が完了したら
OKを選んで設定画面を閉じます。再び
サイトマネージャーへ戻り、自身のサイトの一般タブ内のログオン タイプで鍵ファイルに切り替えます。ユーザーの下が鍵ファイルに変更されているので、参照を選んで先程保存した.ppkファイルを選びます。すべての設定が完了したので
接続を選択してサーバに接続します。不明なホスト鍵というダイアログが出てきますが、誤りが無ければそのままOKで問題ありません。- 秘密鍵にパスワードを設定していれば、パスワードの入力を要求されるため、秘密鍵に対するパスワードを入れてください。
これにより、鍵認証を使ったSFTP接続ができるようになりました。
【予備】FTPの導入
以前のサイトではSFTPではなくFTP(実際にはFTPS)を使っていたこともあり、予備としてこちらの導入方法も置いておきます。
ただし、FTPS(File Transfer Protocol over SSL/TLS)やSFTPではなく、通常のFTPの場合は通信が暗号化されていないため、実際に使うのならFTPSあるいはSFTPが推奨されます。
まずは
$ sudo apt updateでアップデートを確認します。次に
$ sudo apt install vsftpdでvsftpdをインストールします。$ vsftpd -vでインストールしたvsftpdのバージョンをチェックできます。$ sudo vim /etc/vsftpd.confで各種設定を記述していきます。
vsftpd.conf
# 同じ項目が既に入っていればそちらはコメントアウトしてください。
# IPV4での接続を有効にする
listen=YES
# IPv6での接続を拒否
listen_ipv6=NO
# 匿名ログインを許可しない
anonymous_enable=NO
# ローカルユーザのログインを許可する
# (/etc/passwdに存在するユーザ)
local_enable=YES
# ファイルの変更を許可
write_enable=YES
# 新規ファイルのumaskパーミッション設定(002の時、ディレクトリは775、ファイルは664となる)
# ディレクトリ - 777からumaskを引いた数値(000では777)。
# ファイル - 666からumaskを引いた数値(077では600)。
local_umask=002
# メッセージファイルがあるディレクトリにアクセスするとそのメッセージを表示する
dirmessage_enable=YES
# ファイル送受信のログを記録する
xferlog_enable=YES
# xferlog形式のフォーマットを利用せず、vsftpd.logに変更
xferlog_std_format=NO
# ログ出力パス
vsftpd_log_file=/var/log/vsftpd.log
# Activeモード時のデータコネクションポートを20番に固定するかどうかの設定
connect_from_port_20=NO
# ASCIIモードでのアップロードを許可
ascii_upload_enable=YES
# ASCIIモードでのダウンロードを許可
ascii_download_enable=YES
# FTPサーバ接続時に表示するメッセージ
ftpd_banner=Welcome to blah FTP service.
# ディレクトリアクセスの制御(CHangeRoot)リストを有効化
chroot_list_enable=YES
# chroot_list_fileで指定したユーザのみ全ディレクトリへのアクセスを可能とする
# "NO"の場合は指定されていないユーザが全ディレクトリへのアクセスができる(NOは非推奨)
chroot_local_user=YES
# 指定するユーザのリスト
chroot_list_file=/etc/vsftpd.chroot_list
# chroot先に書き込み権限があるユーザはログイン不可、"YES"だと権限有りでログイン可能に
# セキュリティ的には悪用防止のためにユーザの書き込み権限を無しにしつつ"NO"が良い
allow_writeable_chroot=YES
# ディレクトリの再帰表示を許可
ls_recurse_enable=YES
# ログイン可否を設定するユーザリストを有効化する
userlist_enable=YES
# "NO"ではユーザリストに書かれたユーザのみログイン可能にする(ホワイトリスト制)
userlist_deny=NO
# ユーザリストのパス
userlist_file=/etc/vsftpd.user_list
# TCP wrappersを使ってアクセス制御を行う
tcp_wrappers=YES
# ディレクトリリストの表示にローカルのタイムゾーンを使用
use_localtime=YES
# ログイン時ディレクトリ(ホームとなるディレクトリ)
local_root=/home
# FTPもしくはFTPS接続に使用するポート番号(自由に決める)
listen_port=10000
# pasvモードで利用するポート最小値(自由に決める)
pasv_min_port=10010
# pasvモードで利用するポートの最大値(自由に決める)
pasv_max_port=10020
# "500 OOPS:priv_sock_get_cmd"というエラーが出た場合、最終行に追記する
# seccompフィルターを無効にする
# seccomp_sandbox=NO
#
# FTPS設定 (FTPSを使う時だけ有効化する)
#
# FTPSを有効化
#ssl_enable=YES
# FTPSに使う証明書の場所を指定
#rsa_cert_file=/etc/letsencrypt/live/yourdomain.example.com/fullchain.pem
#rsa_private_key_file=/etc/letsencrypt/live/yourdomain.example.com/privkey.pem
# 匿名接続でのログインにSSL/TLSを使わない
#allow_anon_ssl=NO
# ローカルユーザのデータ通信にSSL/TLSを使う
#force_local_data_ssl=YES
# ローカルユーザのログインにSSL/TLSを使う
#force_local_logins_ssl=YES
# SSL/TLSのバージョン指定(安全性のためTLS1.2以降の使用を推奨)
#ssl_sslv2=NO
#ssl_sslv3=NO
#ssl_tlsv1=NO
#ssl_tlsv1_1=NO
#ssl_tlsv1_2=YES
# SSL/TLSでの暗号強度を高いものにする
#ssl_ciphers=HIGH
# SSL/TLSでの暗号化方式を指定
#ssl_ciphers=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
# DH鍵交換パラメータ(各自用意する)
#dh_param_file=/etc/vsftpd/dhparam.pem
# implicitモード(接続直後にSSL/TLSを有効化)を有効化
#implicit_ssl=YES
# すべての接続でクライアント証明書を掲示させる
#require_cert=YES
# SSL/TLS接続時に証明書を要求する
#ssl_request_cert=YES
# すべてのクライアント証明書を検証する
#validate_cert=YES
# クライアント証明書を検証および読み込むためのファイル名
#ca_certs_file=/etc/pki/vsftpd_self_CA/cacert.pem
# OpenSSL接続の診断をvsftpdログに出力する
#debug_ssl=YES
$ sudo vim /etc/vsftpd.chroot_listでchrootユーザリストを作成します。- ファイル内は1行につき1ユーザで記述します。
今度は
$ sudo vim /etc/vsftpd.user_listでログインユーザリストを作成します。- こちらも同様に1行につき1ユーザです。
設定後、FTPに使うポートをUFWで許可させます。
例では
$ sudo ufw allow 10000です。pasv接続に使うポートも開放します。
- 例:
$ sudo ufw allow 10010:10020/tcp
- 例:
設定が終われば
$ sudo service ufw reloadおよび$ sudo service vsftpd restartで設定を反映させます。
これによりFTP接続ができるようになりました。
次回はNginxの導入と設定およびHTTPS化
これまでの設定によって、SSH接続からFTP接続までが自由に使えるようになるので、ある程度は基本的なサーバとしての運用が可能となります。
次回はウェブサーバであるNginxおよびHTTPS双方の導入と設定について紹介していきます。
参考資料
- vimrc に日本語を書くと文字化けするときの対処
- Linux OS ubuntu のlocale 設定
- Ubuntuのtofuを日本語環境に直す
- Ubuntu20.04「A start job is running for wait for network to be configured」と表示されて起動が遅い
- apt-get upgradeとapt-get dist-upgradeとapt upgradeとapt full-upgradeの違い
- apt と apt-get の違い
- 公開鍵認証によるSSH接続 - Tera Termの使い方
- Tera Termで公開鍵と秘密鍵を作成して、安全にSSH接続を行う方法
- 初めましての挨拶と公開鍵認証について
- TeraTermを使ったSSH鍵の作成方法
- セキュアなSSHサーバの設定
- sshd_configの設定項目の理解を目指す
- sshd_config&PAMの設定
- sshd_config - How to configure the OpenSSH server
- SSH サーバのセキュリティ対策
- SSHポートフォワーディングで、リモートのXをローカルに転送する
- SSHD_CONFIG(5) OpenBSD manual pages
- sshd_config に RSAAuthentication no を設定する必要はもうない
- 接続制限の設定
- iptablesが難しいためufwでWEBサーバーのファイアウォール設定
- OpenSSH: Difference between internal-sftp and sftp-server
- Centos7 FTPサーバ設定(vsftpd)
- CentOS7でFTPサーバ構築
- CentOS 7のvsftpdでセキュアなFTPSが利用できるFTPサーバーを構築する
- Linuxでssh不可sftpだけアクセス可能なユーザーを作りアクセスディレクトリも制限する
- FTP・FTPS・SFTPの違いや特徴について
- 【vsftpd】FTPをSSL/TLSで暗号化する設定
- [VSFTPD] FTPS設定 (クライアント認証もあるよ)
- Ubuntuにvsftpdをインストールする https://jet-blog.com/install_vsftpd_for_ubuntu/
- 超簡単!FTPソフトFileZilla(ファイルジラ)を設定する【conoha + kusanagi】
- SFTPサーバの設定
- chrootされたsftp専用ユーザを作るメモ
- sftpのみ使用するユーザーで鍵認証を使用する
- OpenSSHのsftp専用ユーザーを設定する https://memo.koumei2.com/openssh%E3%81%AEsftp%E5%B0%82%E7%94%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/
- SFTPコマンドの覚書
- FTPユーザーがこちらで指定したディレクトリから上位を見れない、遡れなくする方法 +α
- vsftp: why is allow_writeable_chroot=YES a bad idea?
