A web server (also known as a HTTP server) is a service that handles content (most commonly web pages, but other types of documents as well) over to a client in a network.
A FTP server is one of the oldest and most commonly used resources (even to this day) to make files available to clients on a network in cases where no authentication is necessary since FTP uses username and password without encryption.
ウェブサーバーは、RHEL 7に利用可能なApache HTTP Serverのバージョンは2.4です。FTPサーバーについては、Very Secure Ftp Daemon(別名vsftpd)を使用して、TLSによってセキュリティ保護された接続を確立します。

この記事では、RHEL 7にウェブサーバーとFTPサーバーをインストール、構成、セキュリティ保護する方法を説明します。
ApacheとFTPサーバーのインストール
このガイドでは、静的IPアドレス192.168.0.18/24を持つRHEL 7サーバーを使用します。ApacheとVSFTPDをインストールするには、次のコマンドを実行します。
# yum update && yum install httpd vsftpd
インストールが完了すると、両方のサービスは最初は無効になっているため、一時的に手動で起動し、次回の起動時に自動的に起動するように有効にする必要があります。
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
さらに、外部からこれらのサービスへのアクセスを許可するために、ウェブおよびFTPデーモンがリスニングしているポート80および21を開く必要があります。
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
ウェブサーバーが正常に動作していることを確認するには、ブラウザを起動し、サーバーのIPを入力してください。テストページが表示されるはずです。

FTPサーバーについては、期待通りに動作していることを確認する前に、さらに構成する必要があります。
Apacheウェブサーバーの構成とセキュリティ保護
Apacheのメイン構成ファイルは/etc/httpd/conf/httpd.conf
にありますが、/etc/httpd/conf.d
内に他のファイルが存在する可能性があります。
デフォルトの設定はほとんどの場合に十分ですが、公式ドキュメントに記載されているすべての利用可能なオプションに精通することは良い考えです。
いつものように、編集する前にメインの設定ファイルのバックアップコピーを作成してください:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
次に、お好みのテキストエディタでファイルを開き、次の変数を探します:
- ServerRoot:サーバーの設定、エラー、およびログファイルが格納されているディレクトリ。
- Listen:Apacheに特定のIPアドレスと/またはポートで待ち受けるよう指示します。
- Include:存在する必要がある他の設定ファイルを含めることができます。指定された設定ファイルが存在しない場合、サーバーは失敗します。これに対して、IncludeOptionalディレクティブは指定された設定ファイルが存在しない場合に静かに無視されます。
- UserおよびGroup:httpdサービスを実行するユーザー/グループの名前。
- DocumentRoot:Apacheがドキュメントを提供するディレクトリ。デフォルトでは、すべてのリクエストがこのディレクトリから取得されますが、シンボリックリンクとエイリアスを使用して他の場所を指すことができます。
- ServerName:このディレクティブは、サーバーが自分自身を識別するために使用するホスト名(またはIPアドレス)とポートを設定します。
最初のセキュリティ対策は、専用のユーザーとグループ(すなわち、tecmint/tecmint)を作成してウェブサーバーを実行し、デフォルトのポートを高い番号(この場合は9000)に変更することです。
ServerRoot "/etc/httpd" Listen 192.168.0.18:9000 User tecmint Group tecmint DocumentRoot "/var/www/html" ServerName 192.168.0.18:9000
設定ファイルを次のようにテストできます。
# apachectl configtest
すべてOKであれば、ウェブサーバーを再起動してください。
# systemctl restart httpd
そして、ファイアウォールで新しいポートを有効にし(古いポートを無効にしてください):
# firewall-cmd --zone=public --remove-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=9000/tcp --permanent # firewall-cmd --reload
SELinuxポリシーにより、ウェブサーバーで使用できるポートは
# semanage port -l | grep -w '^http_port_t'
によって返されるポートのみ使用できることに注意してください。
別のポート(つまりTCPポート8100)を使用したい場合は、SELinuxのhttpdサービスのポートコンテキストにそれを追加する必要があります:
# semanage port -a -t http_port_t -p tcp 8100

Apacheのインストールをさらにセキュリティ強化するには、次の手順に従ってください:
1. Apacheが実行されるユーザーはシェルにアクセスできないようにする必要があります:
# usermod -s /sbin/nologin tecmint
2. ディレクトリリスティングを無効にして、ディレクトリにindex.htmlがない場合にブラウザがディレクトリの内容を表示しないようにします。
次のように、/etc/httpd/conf/httpd.conf
(および仮想ホストの設定ファイルがある場合は)を編集して、Optionsディレクティブがトップおよびディレクトリブロックレベルの両方でNoneに設定されていることを確認します:
Options None
3. HTTPのレスポンスでウェブサーバーとオペレーティングシステムに関する情報を非表示にします。 次のように/etc/httpd/conf/httpd.conf
を編集します:
ServerTokens Prod ServerSignature Off
さあ、あなたは/var/www/htmlディレクトリからコンテンツを提供し始める準備ができました。
FTPサーバーの設定とセキュリティ強化
Apacheの場合と同様に、Vsftpdのメイン設定ファイル(/etc/vsftpd/vsftpd.conf)
はよくコメントされており、デフォルトの設定でほとんどのアプリケーションに十分であるが、ftpサーバーをより効率的に操作するために、ドキュメントとマニュアルページ(man vsftpd.conf)
に精通しておくことが重要です(その重要性を強調します!)。
この場合、使用される指示は次のとおりです。
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES allow_writeable_chroot=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
chroot_local_user=YES
を使用することで、ローカルユーザーはログイン直後にホームディレクトリのchrootジェルに配置されます。これは、ローカルユーザーが対応するホームディレクトリの外部のファイルにアクセスできないことを意味します。
最後に、ftpがユーザーのホームディレクトリ内のファイルを読み取ることを許可するには、次のSELinuxブール値を設定します。
# setsebool -P ftp_home_dir on
これで、Filezillaなどのクライアントを使用してftpサーバーに接続できます。

また、/var/log/xferlog
ログは、上記のディレクトリリストと一致するダウンロードとアップロードを記録します。

その他の記事も参照: Trickleを使用してLinuxシステムのアプリケーションによって使用されるFTPネットワーク帯域幅を制限する
まとめ
このチュートリアルでは、ウェブサーバーとFTPサーバーの設定方法について説明しました。このトピックの広範さのため、これらのトピックのすべての側面を網羅することはできません(つまり、仮想ウェブホスト)。したがって、このウェブサイトの他の優れた記事もチェックすることをお勧めします。Apacheに関する優れた記事も含まれています。
Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/