web-dev-qa-db-ja.com

Ubuntu 14.04でApacheを安全にする

私は自宅で小さなサイトをホストし、このようなApacheなどをインストールしたいです:

  1. Sudo apt-get update
  2. Sudo apt-get install tasksel
  3. Sudo tasksel install lamp-server

すべてが機能し、すべてが稼働しています。

現在、私はXAMPPを使って開発することに慣れており、あまり安全ではないと多くの参考文献が言っているので、そのライブを使いたくありませんでした。

私の質問は、上記の方法でApache/PHPとMySqlをインストールしたということです。デフォルトのセキュリティレベルはどうですか?

それをより安全にする方法、おそらく推奨される変更のチェックリストまたはランダウンがありますか?

明確化:LAMPサーバーは、開発中のサイトではなく、ライブサイトになります。

4
Rog

インターネットに接続されたUbuntuで独自のLAMPサーバーを実行しているため、常に同じガイドラインに従います。通常、次のことを確認します。

  • Apacheでは、ドキュメントを削除するか、少なくともWebサーバーをトラフするためにドキュメントを提示しないでください(リンク/etc/Apache2/conf-enabled/Apache2-doc.confを削除して)
  • Apacheでは、不要なモジュールがロードされていないことを確認してください。 Ubuntuでは、これは/etc/Apache2/mods-enabledのリンクを削除することで行われます。各リンクは、モジュールを一度にロードして構成する/etc/Apache2/mods-availableディレクトリ内のファイルを指します。
  • /etc/Apache2/conf-available/security.confを確認して有効にすることをお勧めします。彼らはいくつかのセキュリティのヒントを提案しますが、デフォルトでは有効化されていません:
  • 後で明示的に許可するディレクトリを除くファイルシステム全体へのアクセスを拒否する
  • サーバーバナーを変更して、実行中のソフトウェアに関する情報をできるだけ少なくします。
  • PHPでは、エラーの場合に画面にログ情報をあまり印刷しないことを確認します(セクションのパラメーターエラー処理とログ/etc/php4/Apache2/php.iniファイル。ファイル内のコメントは、何が望ましいかに関する多くの情報を提供します)
  • MySQLサーバーをインターネットに公開する必要はありません。デフォルトでは、Ubuntuでは、Mysqlサーバーはローカルホストでのみリッスンします。パラメーターbind-addressのセクションmysqld/etc/mysql/my.cnfを確認します-)。 127.0.0.1にあるはずです:

    バインドアドレス= 127.0.0.1

  • このサーバーに必要以上のサービスをインストールしないでください。

  • 到着したらアップデートを適用することを忘れないでください。
  • LAMPサーバーの設定のみに依存しないでください。また、セキュリティの脅威(入力検証など、SQLの入力を避けるために必要なものすべて)を導入する可能性のあるPHPアプリケーションを実行する必要があることを忘れないでください入力フィールドでクエリを実行して、DBから自分自身に与えた情報を取得します。..)

これらは私の頭の一番上にある最初のものです。もちろん、インターネットでより詳細なハウツーとガイドを見つけることができます:

3
Benoit

LAMPのセットアップ後に一般的に行うことは次のとおりです:(for development use, not production

  • Apache2の自動起動を無効にします。

    Sudo update-rc.d Apache2 disable
    

    使用する場合は、次の方法で開始できます。

    Sudo service Apache2 start
    
  • Mysqlの自動起動を無効にします。

    echo "manual" | Sudo tee /etc/init/mysql.override
    

    使用する場合は、次の方法で開始できます。

    Sudo service mysql start
    
  • ファイアウォールの着信ポート80および3306をブロックして、LAMPを侵入から保護します。

    Sudo iptables -A INPUT -p tcp --dport 80 -j DROP
    Sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
    

    (実際のところ、いくつかの重要なポートを除くすべての着信ポートをブロックしていますが、Linuxセキュリティは別のトピックです!)

1
Prahlad Yeri