web-dev-qa-db-ja.com

他のアプリケーションがポート80および443にバインドするのを防ぐ

先週、彼のウェブサイトがハッキングされたと思ったので、怖い顧客から電話がありました。彼のウェブサイトを調べたところ、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へのバインドを許可されるように制限を作成することはどういうわけか可能ですか?

他のソリューションも大歓迎です。

16
Boyd

ポートが間違ったサービスにバインドされるのを防ぐことはできません。あなたの場合、Apacheをautostartから削除するだけで問題ありません。

16.04以降の場合:

Sudo systemctl disable Apache2

古いUbuntuバージョンの場合:

Sudo update-rc.d Apache2 disable
29

本当に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をアンインストールできます。

27
muru

質問に答えるには、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のイメージをダウンロードしてこれを試してみるつもりです。それは良い学習ステップになるでしょう。もしそうなら、私はこの答えを更新します。

2
JoL

私が答えでまだ見たことはないが、それでも可能性があるもの:

念のため、Apache設定を変更して別のポートをリッスンします。これを行うには、Apache設定ファイルを開き、Listen 80が含まれる行を別のポートに変更します。

2

正確な質問には答えられませんが、ディストリビューションを確認する必要があるかもしれません。インストール時にサービス(Apache2)をインストールできるようにするディストリビューションは安全でないと考えます。それを行わないディストリビューションを検討することを検討してください。 Archlinuxでその動作を見たことがあるとは言えませんが、他にもあると思います。

0
phelbore