ウェブサイト検索

RHCSA シリーズ: Web および FTP サーバーのインストール、構成、セキュリティ保護 - パート 9


Web サーバー (HTTP サーバーとも呼ばれます) は、ネットワーク内のクライアントに送信されるコンテンツ (最も一般的には Web ページですが、他の種類のドキュメントも同様) を処理するサービスです。

FTP サーバーは、FTP がユーザー名ユーザー名を使用するため、認証が必要ない場合に、ネットワーク上のクライアントがファイルを利用できるようにするために (現在でも) 最も古く、最も一般的に使用されているリソースの 1 つです。暗号化なしのパスワードです。

RHEL 7 で使用できる Web サーバーは、Apache HTTP サーバーのバージョン 2.4 です。 FTP サーバーに関しては、Very Secure Ftp Daemon (別名vsftpd) を使用して、TLS によって保護された接続を確立します。

この記事では、RHEL 7 で Web サーバーと FTP サーバーをインストール、構成、保護する方法を説明します。

Apache と FTP サーバーのインストール

このガイドでは、192.168.0.18/24 の静的 IP アドレスを持つ RHEL 7 サーバーを使用します。 Apache と VSFTPD をインストールするには、次のコマンドを実行します。


yum update && yum install httpd vsftpd

インストールが完了すると、最初は両方のサービスが無効になるため、当面は手動で開始し、次回の起動から自動的に開始できるようにする必要があります。


systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd

さらに、外部からこれらのサービスにアクセスできるようにするために、Web デーモンと FTP デーモンがそれぞれリッスンしているポート 8021 を開く必要があります。


firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

Web サーバーが正しく動作していることを確認するには、ブラウザを起動してサーバーの IP を入力します。テスト ページが表示されるはずです。

FTP サーバーに関しては、期待どおりに動作することを確認する前に、さらに構成する必要があります。これは 1 分以内に行います。

Apache Web サーバーの構成と保護

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. リッスン: 特定の IP アドレスやポートをリッスンするように Apache に指示します。
  3. 含める: 存在する必要がある他の構成ファイルを含めることができます。そうしないと、指定された構成ファイルが存在しない場合に黙って無視される IncludeOptional ディレクティブとは対照的に、サーバーは失敗します。
  4. ユーザーとグループ: httpd サービスを実行するユーザー/グループの名前。
  5. DocumentRoot: Apache がドキュメントを提供するディレクトリ。デフォルトでは、すべてのリクエストはこのディレクトリから取得されますが、シンボリック リンクとエイリアスを使用して他の場所を指すこともできます。
  6. ServerName: このディレクティブは、サーバーが自身を識別するために使用するホスト名 (または IP アドレス) とポートを設定します。

最初のセキュリティ対策は、Web サーバーを実行する専用のユーザーとグループ (tecmint/tecmint など) を作成し、デフォルトのポートをより高いポート (<) に変更することで構成されます。この場合、strong>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な場合は、Web サーバーを再起動します。


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'

Webサーバー用。

別のポート (つまり、TCP ポート 8100) を使用する場合は、それを httpd サービスの SELinux ポート コンテキストに追加する必要があります。


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

3. HTTP 応答内の Web サーバーとオペレーティング システムに関する情報を非表示にします。 /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 ネットワーク帯域幅を制限する

まとめ

このチュートリアルでは、Web サーバーと FTP サーバーをセットアップする方法を説明しました。主題が膨大であるため、これらのトピック (仮想 Web ホストなど) のすべての側面をカバーすることはできません。したがって、この Web サイトにある Apache に関する他の優れた記事も参照することをお勧めします。