Ubuntu14.04LTSでApache2を実行しています。マシンへのネットワークアクセスの保護を開始するには、まずすべてをブロックしてから、特定のサブネットに対して特定のallowステートメントを作成して、Apacheでホストされているサイトを参照します。
Ubuntu Serverは、インストール時にパッケージが選択されていない状態でインストールされます。インストール後に追加されるパッケージは次のとおりです。apt-getupdate; apt-get install Apache2、php5(追加のphp5-modulesを含む)、openssh-server、mysql-client
以下は私の/etc/hosts.deny
&/etc/hosts.allow
設定:
/etc/hosts.deny
ALL:ALL
/etc/hosts.allowには、許可エントリがまったくありません。
私はすべてのネットワークプロトコルが拒否されることを期待します。症状は、/ etc/hosts.denyにdenyallステートメントがある場合でも、ApacheWebサーバーでホストされているサイトをWeb参照できることです。
拒否エントリが追加された後、システムが再起動されました。
/etc/hosts.deny with ALL:ALLが無視され、Apache Webサーバーでホストされているサイトへのhttpブラウジングが許可されるのはなぜですか?
Tcpラッパーを有効にするには、対応するサービスをxinetdから起動するか、アプリケーションを libwrap にリンクする必要があります。 xinetdデーモンはTCPでラップされたスーパーサービスです。
最初に覚えておくべきことは、マシン上のすべてのネットワークベースのアプリケーションがtcpwrappersと互換性があるわけではないということです。 hosts.allowまたはhosts.denyの制限は、tcpwrappersライブラリを参照している場合にのみ有効です。アプリケーションに互換性があるかどうかをどのように確認できますか?次のコマンドを使用します。
ldd /path/to/binary | grep libwrap (general example)
ldd /usr/sbin/sshd | grep libwrap (shows that the sshd refers to libwrap)
ldd /usr/sbin/Apache2 | grep libwrap (show that Apache does not refer to libwrap)
上記の基本的な例では、sshd(sshサーバー)がlibwrap.soを参照していることがわかります。したがって、hosts.allowとhosts.denyの制限がそのサービスに適用可能であることがわかります。また、Apache2はlibwrap.soを参照していないため、そこで概説されている制限はApache2接続には適用されません。 (つまり、sshをロックダウンすることはできますが、Apache2はまだ大きく開いています)
https://stackoverflow.com/questions/19445686/ubuntu-server-Apache-2-4-6-client-denied-by-server-configuration-php-を参照してくださいfpmおよび Apache2.2からApache2.4へのアップグレード
Ubuntu 14.04では、Apache構成の変更が加えられています。この変更を行う必要があります:変更
Order Deny,Allow
Deny from all
に
Require all denied
Apacheサーバーを制限するには、次のいずれかをhttpd.confに追加します。
<Directory />
Order Deny, Allow
Deny from all
#Allow from your ip
</Directory>
私が正しく思い出せば、mod_accessを有効にする必要がありますが、ほとんどの場合、デフォルトです。
NB! Apacheを再起動する必要があります。
Hosts.allowファイルとhosts.denyファイルの効果は限られています。 Apacheアプリケーションには適用されません。
ただし、これらのタイプの制限を行うために、Apache構成ディレクティブ内にアクセスアクセス制御ディレクティブがあります。