RHCSAシリーズ:WebおよびFTPサーバーのインストール、設定、およびセキュリティの確保– パート9

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によってセキュリティ保護された接続を確立します。

RHCSA: Installing, Configuring and Securing Apache and FTP – Part 9

この記事では、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を入力してください。テストページが表示されるはずです。

Confirm Apache Web Server

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)

次に、お好みのテキストエディタでファイルを開き、次の変数を探します:

  1. ServerRoot:サーバーの設定、エラー、およびログファイルが格納されているディレクトリ。
  2. Listen:Apacheに特定のIPアドレスと/またはポートで待ち受けるよう指示します。
  3. Include:存在する必要がある他の設定ファイルを含めることができます。指定された設定ファイルが存在しない場合、サーバーは失敗します。これに対して、IncludeOptionalディレクティブは指定された設定ファイルが存在しない場合に静かに無視されます。
  4. UserおよびGroup:httpdサービスを実行するユーザー/グループの名前。
  5. DocumentRoot:Apacheがドキュメントを提供するディレクトリ。デフォルトでは、すべてのリクエストがこのディレクトリから取得されますが、シンボリックリンクとエイリアスを使用して他の場所を指すことができます。
  6. 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)を使用したい場合は、SELinuxhttpdサービスのポートコンテキストにそれを追加する必要があります:

# semanage port -a -t http_port_t -p tcp 8100
Add Apache Port to SELinux Policies

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サーバーに接続できます。

Check FTP Connection

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

Monitor FTP Download and Upload

その他の記事も参照: Trickleを使用してLinuxシステムのアプリケーションによって使用されるFTPネットワーク帯域幅を制限する

まとめ

このチュートリアルでは、ウェブサーバーとFTPサーバーの設定方法について説明しました。このトピックの広範さのため、これらのトピックのすべての側面を網羅することはできません(つまり、仮想ウェブホスト)。したがって、このウェブサイトの他の優れた記事もチェックすることをお勧めします。Apacheに関する優れた記事も含まれています。

Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/