先週、彼のウェブサイトがハッキングされたと思ったので、怖い顧客から電話がありました。彼のウェブサイトを調べたところ、Apache2
デフォルトページ。その夜私のサーバー(Ubuntu 16.04 LTS
)をアップグレードして再起動しました。通常、何かがうまくいかないとき、私は夜間に警告を受けるでしょう。今回は、モニタリングシステムがHTTPステータスコード200とApache2
デフォルトページにはステータスコード200が付いています。
起動時に何が起こったかApache2
は、実際のウェブサーバーnginxよりもポート80と443にバインドする方が高速でした。私は自分でApache2をインストールしませんでした。使って aptitude why Apache2
php7.0パッケージにはそれが必要であることがわかりました。
単に削除するApache2
php7.0が必要とするため、機能しません。 nginxのみがポート80および443へのバインドを許可されるように制限を作成することはどういうわけか可能ですか?
他のソリューションも大歓迎です。
ポートが間違ったサービスにバインドされるのを防ぐことはできません。あなたの場合、Apacheをautostartから削除するだけで問題ありません。
16.04以降の場合:
Sudo systemctl disable Apache2
古いUbuntuバージョンの場合:
Sudo update-rc.d Apache2 disable
本当にApache2
を使用しておらず、PHP 7.0が必要な場合、libapache2-mod-php7.0
がインストールされているようです。そのパッケージはApacheなしでは役に立たないのです。 nginxを使用しているため、php7.0-fpm
またはphp7.0-cgi
もインストールされている可能性が高く、どちらもphp7.0
の依存関係の要件を満たすのに十分です。
$ apt-cache depends php7.0
php7.0
|Depends: php7.0-fpm
|Depends: libapache2-mod-php7.0
Depends: php7.0-cgi
Depends: php7.0-common
Conflicts: <php5>
php7.0-{fpm,cgi}
のいずれかがインストールされている場合は、Apacheをアンインストールできます。
質問に答えるには、SElinuxを使用して、ポートを特定のアプリケーションに制限することができます。私自身はこれを使用しておらず、その機能については表面的な知識しかありませんが、このサイトで見つけたポインタは次のとおりです。
https://serverfault.com/a/257056/3922
その答えでは、wzzrdは特定のアプリケーション(foo)に特定のポート(803)にバインドする許可を与える方法を示しているようです。指定したポート(80および443)がアプリケーション(nginx)のみに許可されるように、ポリシーを設定する必要があります。
Wzzrdの答えに基づいて、これをポリシーに追加するのと同じくらい簡単かもしれません
allow nginx_t nginx_port_t:tcp_socket name_bind;
そしてこれを実行する
semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443
ただし、他のプログラムがこれらのポートにバインドしないように指定するポリシーの行も必要になると思います。
最後に、私は適切な構成が何であるかを推測しています。
とにかく、SElinuxがインストールされ、デフォルトで有効になっているUbuntuがあったとは思いません。さまざまなユーティリティとカーネルオプションに特定のパッチを適用する必要があると思いますので、SElinuxがインストールされ、最初から有効になっているCentosを使用する方が簡単かもしれません。
申し訳ありませんが、これ以上のサポートはありません。たぶん別の機会に、私はCentosのイメージをダウンロードしてこれを試してみるつもりです。それは良い学習ステップになるでしょう。もしそうなら、私はこの答えを更新します。
私が答えでまだ見たことはないが、それでも可能性があるもの:
念のため、Apache設定を変更して別のポートをリッスンします。これを行うには、Apache設定ファイルを開き、Listen 80
が含まれる行を別のポートに変更します。
正確な質問には答えられませんが、ディストリビューションを確認する必要があるかもしれません。インストール時にサービス(Apache2)をインストールできるようにするディストリビューションは安全でないと考えます。それを行わないディストリビューションを検討することを検討してください。 Archlinuxでその動作を見たことがあるとは言えませんが、他にもあると思います。