Linuxはこの方法を学ぶ必要があります-Apache構成

1.デフォルトでは、Webサイトデータは/ var / www / htmlディレクトリに保存されます。Webサイトデータが保存されるディレクトリを/ home / wwwrootディレクトリに変更する場合は

[root@myserver ~]# mkdir /home/wwwroot
[root@myserver ~]# echo "other directory Apache" > /home/wwwroot/index.html
[root@myserver ~]# cd /home/wwwroot/
[root@myserver wwwroot]# ll
total 4
-rw-r--r--. 1 root root 23 Jan 31 10:26 index.html

2. httpdサービスプログラムのメイン構成ファイルを開き、122行目のパラメーターDocumentRootを変更して、Webサイトデータの/ home / wwwrootへのストレージパスを定義します。同時に、ディレクトリのアクセス許可とDirectoryの背後のパスを/ home / wwwrootに変更します。構成ファイルが変更されたら、保存して終了できます

3.再起動して再度アクセスし、禁止されていることを確認します 

 selinuxを閉じて再度テストする
 SELinux(Security-Enhanced Linux)は、Linuxオープンソースコミュニティの助けを借りて米国国家安全保障局によって開発された必須アクセス制御(MAC、強制アクセス制御)セキュリティサブシステムです。SELinuxテクノロジーを使用するRHEL7システムの目的は、各サービスプロセスを制限して、取得する必要のあるリソースのみを取得できるようにすることです。

SELinuxサービスには、次の3つの構成モードがあります。

実施:セキュリティポリシーモードを実施すると、サービスに対する違法な要求が傍受されます。

許容:サービスへの不正アクセスが発生した場合、強制的な傍受なしで警告のみが発行されます。

無効:不正なアクションを警告またはブロックしません。

selinux構成ファイルを表示する 

SELinuxにより、setenforce [0 | 1]コマンドを使用して、SELinuxの現在の動作モードを変更できます(0は無効、1は有効)。この変更は一時的なものであり、システムの再起動後に無効になることに注意してください

httpdサービスプログラムの機能は、ユーザーがWebサイトのコンテンツにアクセスできるようにすることです。そのため、SELinuxは、デフォルトでユーザーがWebサイトでの操作を要求できるようにします。しかし、ウェブサイトデータのデフォルトの保存ディレクトリを/ home / wwwrootに変更したため、問題が発生しました。/homeディレクトリは通常のユーザーのホームディレクトリデータを保存するために使用されます。現在、httpdが提供するウェブサイトサービスではGotoが必要です。通常のユーザーのホームディレクトリにあるデータを取得します。これは明らかにSELinuxの監視原則に違反しています。

ファイルに設定されているSELinuxセキュリティコンテキストは、ユーザーセグメント、ロールセグメント、タイプセグメントなどの複数の情報項目で構成されています。その中で、ユーザーセグメントsystem_uはシステムプロセスのIDを表し、ロールセグメントobject_rはファイルディレクトリのロールを表し、タイプセグメントhttpd_sys_content_tはWebサイトサービスのシステムファイルを表します。semanageコマンドを使用して、現在のWebサイトディレクトリ/ home / wwwrootのSELinuxセキュリティコンテキストを元のWebサイトディレクトリと同じになるように変更するだけです。

semanageコマンド

semanageコマンドはSELinuxポリシーを管理するために使用され、形式は「semanage [option] [file]」です。

SELinuxサービスは、Linuxシステムのセキュリティを大幅に向上させ、ユーザー権限をケージにしっかりとロックします。semanageコマンドは、従来のchconコマンドのようにファイルとディレクトリのポリシーを設定できるだけでなく、ネットワークポートとメッセージインターフェイスを管理することもできます(これらの新機能については、この章の後半で説明します)。semanageコマンドを使用する場合、頻繁に使用されるいくつかのパラメーターとその機能は次のとおりです。

-lパラメータはクエリに使用されます。

-パラメータは追加に使用されます。

-mパラメーターは変更に使用されます。

-dパラメーターは削除に使用されます。

また、restoreconコマンドを使用して、設定されたSELinuxセキュリティコンテキストをすぐに有効にする必要があります。restoreconコマンドを使用する場合、-Rvパラメーターを追加して、指定したディレクトリーで再帰操作を実行し、SELinuxセキュリティコンテキストの変更プロセスを表示できます。

パーソナルユーザーホームページ機能

1. httpdサービスプログラムでは、個人ユーザーのホームページ機能はデフォルトでオンになっていません。このためには、次の構成ファイルを編集してから、17行目のUserDir無効パラメーターの前にポンド記号(#)を追加する必要があります。これは、httpdサービスプログラムが個人ユーザーのホームページ機能を有効にすることを意味します。同時に、24行目の前にUserDir public_htmlパラメーターを配置します。ハッシュ記号(#)を削除します(UserDirパラメーターは、ユーザーのホームディレクトリにWebサイトデータが保存されるディレクトリの名前、つまりpublic_htmlディレクトリを表します)。最後に、変更後に保存することを忘れないでください

2.ユーザーのホームディレクトリにWebサイトデータを保存するためのディレクトリとホームページファイルを確立します。さらに、ホームディレクトリのアクセス許可を755に変更して、他のユーザーにも内部のコンテンツを読み取るアクセス許可があるようにする必要があります。

3. httpdサービスプログラムを再起動し、ブラウザのアドレスバーにURLを入力すると、その形式は「URL / 〜Username」になります(tildeが必要であり、URL、tilde、usernameの間にスペースはありません)。理論的には、ユーザーの個人的なWebサイトを見ることができます。当然のことながら、システムはエラーページを表示します

 

4. httpdサービスプログラムがパーソナルユーザーホームページ機能を提供する場合、ユーザーのWebサイトデータディレクトリ自体をこのユーザーに対応するホームディレクトリに保存する必要があるため、ホームディレクトリのSELinuxセキュリティコンテキストを変更する必要はありません。ただし、前回の記事では、SELinuxドメインの概念についても説明しました。SELinuxドメインは、サービスプログラムが違法な操作を実行できないようにし、独自の方法でのみユーザーにサービスを提供できるようにします。httpdサービスで突然開かれた個人ユーザーのホームページ機能は、SELinuxドメインによってデフォルトでgetseboolで表示することが許可されています。

[root@myserver yhd]# getsebool -a | grep http
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> off
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off
mysql_connect_http --> off
named_tcp_bind_http_port --> off
prosody_bind_http_port --> off
[root@myserver yhd]#

SELinuxドメインセキュリティポリシーはhttpd_enable_homedirsである必要があり、値をonに変更します

認証されたユーザーの訪問者は内部のコンテンツを確認し、パスワード機能をWebサイトに追加できます 

1.最初にhtpasswdコマンドを使用して、パスワードデータベースを生成します。-cパラメーターは第1世代を示します。後で、パスワードデータベースのストレージファイルと検証に使用するユーザー名を追加します。

2.パーソナルユーザーホームページ機能の設定ファイルを編集します。31行目から35行目までのパラメータ情報を次の内容に変更します。ポンド記号(#)の先頭の内容は、Liu Dun氏によって追加された注釈情報であり、無視できます。次に、構成ファイルを保存して終了し、httpdサービスプログラムを再起動して有効にします

仮想ウェブサイトホスティング機能

Linuxシステムを実行している各サーバーが1つのWebサイトしか実行できない場合、人気が低くトラフィックが少ない草の根のWebマスターは、サーバーのレンタル費用を高く負担することを余儀なくされ、ハードウェアリソースの浪費も明らかに発生します。仮想プライベートサーバー(VPS)とクラウドコンピューティングテクノロジーが登場する前は、IDCサービスプロバイダーは、サーバーリソースを最大限に活用し、購入のしきい値を下げるために、仮想ホスティング機能を有効にしていました。

仮想ホスト機能を使用すると、実行状態の物理サーバーを複数の「仮想サーバー」に分割できます。ただし、このテクノロジでは、現在のクラウドホストテクノロジのハードウェアリソースの分離を実現できないため、これらの仮想サーバーで物理サーバーのハードウェアリソースを一緒に使用でき、サプライヤは使用するハードディスクスペースのサイズのみを制限できます。さまざまな考慮事項(主に低価格)により、仮想ホストを使用してWebサイトを展開する企業または個人のWebマスターはまだたくさんいます。

Apacheの仮想ホスト機能は、サーバーが複数のWebサイトを提供し、ユーザーが要求するさまざまなIPアドレス、ホストドメイン名、またはポート番号に基づいて外部アクセスサービスを提供するテクノロジーです。図10-12に示すように、ユーザーが要求するリソースは異なります。得られたウェブページの内容も異なります

1. IPアドレスに基づいて、3つのIPアドレスを作成できます

2. httpdサービスの構成ファイルの約113行目から、IPアドレスに基づいて3つの仮想ホストWebサイトのパラメーターを追加し、保存して終了します。これらの設定を有効にするには、httpdサービスを再起動することを忘れないでください

[root@myserver wwwroot]# vim /etc/httpd/conf/httpd.conf

3.この時点でWebサイトにアクセスすると、httpdサービスプログラムのデフォルトのホームページが表示されます。現在の/ home / wwwrootディレクトリと内部のWebサイトデータディレクトリのSELinuxセキュリティコンテキストがWebサイトサービスと一致しないため、 httpdサービスプログラムを取得できません。これらのWebサイトデータディレクトリ。新しいWebサイトデータディレクトリのSELinuxセキュリティコンテキストを手動で正しく設定し(前の実験を参照)、restoreconコマンドを使用して、新しく設定したSELinuxセキュリティコンテキストをすぐに有効にして、Webサイトアクセスの効果をすぐに確認できるようにする必要があります。

[root@myserver wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@myserver wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/88
[root@myserver wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/88/*
[root@myserver wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/89
[root@myserver wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/89/*
[root@myserver wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/90
[root@myserver wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/90/*
[root@myserver wwwroot]# restorecon -Rv /home/wwwroot

ホストドメイン名に基づく

サーバーが各Webサイトに独立したIPアドレスを割り当てることができない場合は、ユーザーが要求したドメイン名をApacheに自動的に認識させて、異なるドメイン名の要求に応じて異なるコンテンツを送信することができます。この場合、構成はより簡単です。実稼働環境のサーバーに使用可能なIPアドレスがあることを確認するだけで済みます(ここでは、192.168.1.88を例として取り上げます)。DNS解決サービスの設定方法の紹介がないため、IPアドレスとドメイン名の対応を手動で定義する必要があります。/ etc / hostsは、ホストドメイン名を指定されたIPアドレスに強制的に解決するためにLinuxシステムで使用される構成ファイルです。簡単に言えば、このファイルが正しく構成されている限り、ネットワークカードパラメーターにDNS情報がない場合でも、ドメイン名をIPアドレスに解決できます。

1. IPアドレスとドメイン名の対応を手動で定義する構成ファイルは、保存して終了するとすぐに有効になります。これらのドメイン名に個別にpingを実行することで、ドメイン名がIPアドレスに正常に解決されたかどうかを確認できます。

[root@myserver ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.88  www.yhd.com bbs.yhd.com tech.yhd.com
[root@myserver ~]# ping -c 4 www.yhd.com
PING www.yhd.com (192.168.1.88) 56(84) bytes of data.
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=2 ttl=64 time=0.057 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=4 ttl=64 time=0.041 ms

--- www.yhd.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 110ms
rtt min/avg/max/mdev = 0.041/0.046/0.057/0.010 ms
[root@myserver ~]# ping -c 4 bbs.yhd.com
PING www.yhd.com (192.168.1.88) 56(84) bytes of data.
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=2 ttl=64 time=0.058 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=3 ttl=64 time=0.043 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=4 ttl=64 time=0.047 ms

--- www.yhd.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 104ms
rtt min/avg/max/mdev = 0.039/0.046/0.058/0.010 ms
[root@myserver ~]# ping -c 4 tech.yhd.com
PING www.yhd.com (192.168.1.88) 56(84) bytes of data.
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from www.yhd.com (192.168.1.88): icmp_seq=4 ttl=64 time=0.045 ms

--- www.yhd.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 62ms
rtt min/avg/max/mdev = 0.039/0.042/0.045/0.008 ms
[root@myserver ~]#

2. / home / wwwrootに3つのディレクトリを作成して、さまざまなWebサイトのデータを保存し、それらにWebサイトのホームページファイルを書き込みます。各ホームページファイルには、後でより直感的に効果を確認できるように、さまざまなWebサイトのコンテンツを明確に区別する情報が含まれている必要があります。

[root@myserver ~]# mkdir -p /home/wwwroot/www
[root@myserver ~]# mkdir -p /home/wwwroot/bbs
[root@myserver ~]# mkdir -p /home/wwwroot/tech
[root@myserver ~]# echo "www.yhd.com" > /home/wwwroot/www/index.html
[root@myserver ~]# echo "bbs.yhd.com" > /home/wwwroot/bbs/index.html
[root@myserver ~]# echo "tech.yhd.com" > /home/wwwroot/tech/index.html

3. httpdサービスの構成ファイルの約113行目から、ホスト名に基づいて3つの仮想ホストWebサイトのパラメーターを追加し、保存して終了します。これらの設定を有効にするには、httpdサービスを再起動することを忘れないでください

4.現在のWebサイトデータディレクトリはまだ/ home / wwwrootディレクトリにあるため、Webサイトサービス機能との整合性を保つために、WebサイトデータディレクトリファイルのSELinuxセキュリティコンテキストを正しく設定する必要があります。最後に、restoreconコマンドを使用して、新しく構成されたSELinuxセキュリティコンテキストをすぐに有効にして、仮想ホストWebサイトにすぐにアクセスできるようにすることを忘れないでください。

[root@myserver ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@myserver ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www
[root@myserver ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*
[root@myserver ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs
[root@myserver ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/*
[root@myserver ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech
[root@myserver ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/*
[root@myserver ~]# restorecon -Rv /home/wwwroot
[root@myserver ~]# systemctl restart httpd

 ポート番号に基づく

 ポート番号ベースの仮想ホスト機能により、ユーザーは指定されたポート番号を介してサーバー上のWebサイトリソースにアクセスできます。Apacheを使用して仮想Webサイトのホスト機能を構成する場合、ポート番号に基づく構成方法が最も複雑です。したがって、httpdサービスプログラムの構成要素だけでなく、SELinuxサービスによって新しく開かれたポートの監視も考慮する必要があります。一般的に、80、443、8080などのポート番号を使用してWebサイトアクセスサービスを提供する方が合理的です。他のポート番号を使用すると、SELinuxサービスによって制限されます。

1. / home / wwwrootに異なるWebサイトのデータを保存するための2つのディレクトリを作成し、それらにWebサイトのホームページファイルを書き込みます。各ホームページファイルには、後でより直感的に効果を確認できるように、さまざまなWebサイトのコンテンツを明確に区別する情報が含まれている必要があります。

[root@myserver www]# mkdir -p /home/wwwroot/6111
[root@myserver www]# mkdir -p /home/wwwroot/6222
[root@myserver www]# echo "port:6111" > /home/wwwroot/6111/index.html
[root@myserver www]# echo "port:6222" > /home/wwwroot/6222/index.html
[root@myserver www]#

2.httpdサービス構成ファイルにポート6111および6222を監視するためのパラメーターを追加します。vim /etc/httpd/conf/httpd.conf

 43 #
 44 #Listen 12.34.56.78:80
 45 Listen 80
 46 Listen 6111
 47 Listen 6222

3. httpdサービスの構成ファイルに、ポート番号に基づいて2つの仮想ホストWebサイトのパラメーターをそれぞれ書き込み、保存して終了します。これらの設定を有効にするには、httpdサービスを再起動することを忘れないでください

4.Webサイトデータディレクトリは/ home / wwwrootディレクトリに保存されるため、Webサイトサービス機能との整合性を保つために、WebサイトデータディレクトリファイルのSELinuxセキュリティコンテキストを正しく設定する必要があります。最後に、restoreconコマンドを使用して、新しく構成されたSELinuxセキュリティコンテキストをすぐに有効にすることを忘れないでください

[root@myserver www]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@myserver www]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
[root@myserver www]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
[root@myserver www]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222
[root@myserver www]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/*
[root@myserver www]# restorecon -Rv /home/wwwroot/
[root@myserver www]#
[root@myserver www]# systemctl restart httpd
[root@myserver www]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989
[root@myserver www]#

5. SELinuxで許可されているHTTPプロトコルに関連するポート番号には、デフォルトで6111と6222が含まれていないため、これら2つのポート番号を手動で追加する必要があります。操作はすぐに有効になり、システムの再起動後も有効になります。設定後、httpdサービスプログラムを再起動すると、Webページの内容が表示されます。

Apacheアクセス制御

Apacheは、送信元ホスト名、送信元IPアドレス、送信元ホストのブラウザー特性などの情報に基づいて、Webサイト上のリソースへのアクセスを制御できます。これにより、ホストはAllow命令を介してサーバー上のWebサイトリソースにアクセスでき、Deny命令を介してアクセスを禁止されます。Webサイトのリソースへのアクセスを許可または禁止する場合は、Order命令も使用されます。この命令は、AllowまたはDeny命令が機能する順序を定義するために使用されます。一致の原則は、順番に一致することです。一致が成功した場合、次のようになります。デフォルトの命令が実行されます。たとえば、「Order Allow、Deny」は、ソースホストが最初に許可ルールと一致することを意味します。一致が成功した場合はアクセス要求が許可され、それ以外の場合はアクセス要求が拒否されます。

1.まず、サーバーのWebサイトデータディレクトリに新しいサブディレクトリを作成し、このサブディレクトリに「成功」​​という単語を含むホームページファイルを作成します。

[root@myserver /]# echo "Successful" > /var/www/html/server/index.html
[root@myserver /]# vim /etc/httpd/conf/httpd.conf

2. httpdサービスの構成ファイルを開き、次のルールを追加して、ソースホストのアクセスを制限します。このルールの意味は、Firefoxブラウザーを使用しているホストがサーバー上のホームページファイルにアクセスできるようにすることであり、他のすべての要求は拒否されます。

<Directory "/var/www/html/server">
SetEnvIf User-Agent "Firefox" ff=1
Order allow,deny
Allow from env=ff
</Directory>

おすすめ

転載: blog.csdn.net/yanghuadong_1992/article/details/113458980