古いハードウェアと Ubuntu 12.04 または Debian 6 を使用して、小規模な Web サーバーをセットアップしようと考えています。LAN 上のマシンを外部に公開すると、セキュリティ侵害や攻撃に対して脆弱になることは承知しています。また、Linux を使用してコンピューターを保護する経験がほとんどないため、この Web サーバーを保護するために何をすべきかについてアドバイスをいただきたいと思います。特に、自宅の LAN には機密情報 (自宅の銀行口座など) を含む他のコンピューターがあるためです。よろしくお願いいたします。
答え1
まず、ご存知かと思いますが、動的IPをお持ちの場合は、DynDNSなどの動的DNSが必要になります。DNS終了。
セキュリティの部分では、iptables
(またはファイアウォールGUIのような)発火具必要に応じて、SSH ポート (ポート 22) または FTP (ポート 21) を開く必要がなく、メール サーバーをインストールしない場合は、ホーム サーバーでは受信接続用にポート 80 のみを開くだけで十分です。
サイトにログインページがある場合や、ssh、ftp、smtpを開く必要がある場合は、少なくとも次のようなものをインストールすることをお勧めします。失敗2バン接続を試みても成功しない IP を禁止し、永久に接続を試みないようにします。
重要な点の1つは、ログを確認して簡単にインストールできるようにする必要があることです。logwatch
(Debian および Ubuntu のデフォルト リポジトリにあるはずです) 毎日または毎週メールで警告します。頻繁に読むことで、問題点をすぐに見つけられるようになります。
サーバーを管理するために外部から接続する必要がある場合は、VPN を使用し、とにかく OS を常に最新の状態に保ってください。
更新: SSH および sftp の場合、fail2ban + ssh キーのみ (またはキー + パスワード、ただしパスワードのみではない) が最低限必要だと思います (ルート アクセスは許可しないでください)。
接続に使用するマシンに固定 IP がある場合は、これらの着信 IP に対してのみファイアウォールを開きます。
暗号化されたVPN(私はオープンVPN
) もアクセスのセキュリティ確保に大いに役立ちます。「クイック」公式チュートリアル15~30分で、1つのクライアントと1つのサーバー用のVPNサーバーが稼働します。より良いセットアップのためにクライアント証明書認証とCA(無料の独自の CA) 数分ほどお時間をいただくことになります :D
サイトで MySQL が必要な場合、または何らかの理由でインターネットから MySQL (または別のデータベース) を管理する必要がある場合、VPN を使用しない場合は、ssh トンネルを使用してマシンのローカル ポートに接続し、トンネルがサーバーへの接続を暗号化するので、データベース ポートを開く必要はありません。の および-L
引数-D
を確認してくださいman ssh
。
パブリック IP で listen するように phpmyadmin をインストールすることはお勧めしません。そうすると、データベースが世界に公開されてしまいます。必要な場合は、トンネルのサンプル スクリプトをここに配置できます。