Linuxマシンを一種のパブリックターミナルとして遠隔地に導入します。メンテナンスのためにSSHを介してリモートでアクセスできるようにしたいのですが、このマシンにアクセスする必要があるまれな場合のために、リモートファイアウォールのポートを開いたままにしたくありません。外部のマシンへの逆SSHトンネルを作成する簡単なスクリプトについては説明しましたが、アクセスする必要があるときにユーザーに何もする必要はありません。何か案は?
更新:逆sshトンネルを作成するためのスクリプトの当初の計画を採用することにしました。ポートノッキングなどの他の提案された解決策は、私が本当にやりたいことに沿ったものですが、この場合、ユーザーに構成を説明する以外に、ルーターを構成するためのアクセス権がありません。 震え
それは、ポートが開いていることを心配することとは関係がなく、ポートを開くプロセスを通してユーザーを歩きたくないことと関係があります。残念ながら、このルーターにはまったくアクセスできません。
ルーターの変更がまったく問題にならない場合は、 Hamachi のようなP2PまたはVPNソリューションを検討する必要があるかもしれません。起動時にVPN接続を自動的に確立するようにシステムを設定すると、必要なときにいつでも接続できるようになります。ハマチはあなたのためにすべてのファイアウォールの交渉を行います。 1つの欠点は、接続する必要があるときにHamachiサーバーが稼働して機能していることに依存する必要があることです。
常に稼働しているサーバーがある場合は、リモートシステムが常にトンネルを開いたままにしてサーバーに接続するように autossh を設定できます。 1つの欠点は、リモートシステムが危険にさらされ、攻撃者がsshセッションの確立に使用されたキーを取得することです。 ssh接続を受け入れるシステムを本当にロックダウンしておくことは非常に重要です。
以下は私の元の答えですが、ルータの更新はオプションであると想定していました。
ファイアウォールがそれをサポートしているかどうかを調査したい1つの解決策は、 ポートノッキング です。一部のファイアウォールでは、ファイアウォールが通知する特別なパケットのセットを送信し、一時的にファイアウォールに穴を開けることができるはずです。
他の実装よりも優れた実装が多数あります。強力な暗号化を使用して、正しいキーがない人が正しいノックを送信することをほぼ不可能にする人もいます。
ポート22をインターネットにアクセスできるようにしておくことはそれほど心配しませんが、それを保護するためにいくつかの手順を実行します。
まず、キーボードのインタラクティブ認証を無効にし、sshキーに移動します。
次に、リモートサーバーに fail2ban のようなものをインストールして、マシンを繰り返しプローブするブラックボールIPアドレスをインストールします。 sshキーを設定しているので、許可されたユーザーの認証に失敗することはありません。
または、可能であれば、WerkkreWsのアドバイスを受けて、マシンの前にあるファイアウォールを構成してVPN接続を終了し、リモートサーバー上のsshデーモンのみがそのVPNを経由する接続を受け入れるようにします。
または、ファイアウォールがVPN接続を終了できない場合は、GREまたはIPSECパケットをLinuxマシンに転送し、そこで終了することができます。
お探しのようですknockd
iptablesを使用してLinuxサーバー自体にインストールできるため、第2レベルのファイアウォールのようなものになります。フロントエンドファイアウォールでポート22が開いていても、サーバーでは開いていないため、ポートスキャンは開いているポートを認識しません。次に、「シークレットノック」を送信すると、突然、ポート22へのオープンパスができます。
それは理にかなっていますか?
すべての答えを要約するには:
sshを使用しますが、よりあいまいで安全なものにします。
セキュリティのため:
あいまいさの場合:
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP
スケジュールされたタスクは、リバースsshトンネルのスクリプトであるか、ファイアウォールポートを開きます。
SSHが世界中に公開されていることを心配している場合は、iptablesスクリプトを使用してメンテナンス期間中にタスクをスケジュールし、そのときに利用できるポートのみを用意することができます。
port-knocking を調べて、SSHトンネルを開きます。
また、denyhostsを実行して、悪いリクエストが多すぎる場合にユーザーをロックアウトします。
どちらのパッケージも、標準のUbuntu、Fedora、およびRHELリポジトリで使用できます。
先に進んでポートを開き、通常の範囲外のポートにします。私はそれを1024以上のランダムなポートにします。そうすれば、ハッカーはそれを探すことすらできないでしょう。
マシンにリモートでアクセスする必要がある場合は、ファイアウォールに穴を開けない理由はありませんが、まれです。
ただし、それでもポートを開かない(またはできない)場合は、単純なシェルスクリプトが、制御し、リバーストンネルを起動するコマンドをリッスンするインターネットで利用可能なリソースを監視できます。電子メールアカウント、IRCチャネル、およびWebページは、トリガーデバイスとしてすぐに思い浮かびます。
もちろん、これは単にポートを開くよりもはるかに脆弱で安全性が低くなります。しかし、あなたにはあなたの理由があると確信しています。