ファイアウォールの背後にあるLinuxマシンへのリモートアクセス


11

Linuxマシンを一種のパブリックターミナルとして遠隔地に導入します。メンテナンスのためにSSHを介してリモートでアクセスできるようにしたいのですが、このマシンにアクセスする必要があるまれな場合のために、リモートファイアウォールのポートを開いたままにしたくありません。外部のマシンへのリバースSSHトンネルを作成する簡単なスクリプトについて考えましたが、アクセスする必要があるときにユーザーが何かをする必要はありません。何か案は?

更新:私は、リバースSSHトンネルを作成するスクリプトの元の計画を採用することにしました。ポートノッキングなどの他の推奨される解決策は、私が本当にやりたいことに沿ったものですが、この場合、ユーザーに構成を案内する以外にルーターを構成するためのアクセス権がありません。身震い


ルーターを設定する必要はありません。Linuxには、ファイアウォールのセキュリティに十分なiptablesファイアウォールがあります。また、サーバーへの常時sshトンネルを作成すると、接続先のホストをスローする攻撃に対して脆弱になります。
Kazimieras Aliulis、2009年

1
ルーターのポートを開く必要がありますが、必要なものはすべてLinuxボックスに渡します。sshトンネルは常にオンではありません。マシンへのアクセスが必要になったときに、ユーザーaatによって開始されます。
ボータック2009年

回答:


5

これは、ポートが開いていることを気にすることとは関係がなく、ポートを開くプロセスでユーザーを案内したくないことと関係があります。残念ながら、私はこのルーターにアクセスできません。

ルーターの変更が問題外である場合は、HamachiなどのP2PまたはVPNソリューションを検討する必要があります。起動時にVPN接続を自動的に確立するようにシステムを設定すると、必要なときにいつでも接続できるようになります。ハマチはあなたのためにすべてのファイアウォールの交渉を行います。1つの欠点は、接続する必要があるときにHamachiサーバーが稼働していることを前提とする必要があることです。

常に稼働しているサーバーがある場合は、リモートシステムが常にトンネルを開いたままにしてサーバーに接続するように、autosshを設定できます。1つの欠点は、リモートシステムが侵害され、攻撃者がsshセッションの確立に使用したキーを取得することです。ssh接続を受け入れるシステムを本当にロックダウンしておくことは非常に重要です。


以下は私の元の答えですが、ルーターの更新はオプションであると思っていました。

ファイアウォールでサポートされているかどうかを調査する必要があるソリューションの1つに、ポートノッキングがあります。一部のファイアウォールでは、ファイアウォールが通知する特別なパケットのセットを送信し、一時的にファイアウォールに穴を開けることができるはずです。

他の実装よりも優れた実装が多数あります。強力な暗号化を使用して、正しいキーがない人が正しいノックを送信することをほぼ不可能にする人もいます。


それは素晴らしいアイデアのように思えます!残念ながら、問題のファイアウォールは、単純なコンシューマーグレードのLinksysまたは同等のものです。
ボータック2009年

1
dd-wrtをインストールできる場合は、knockd(dd-wrt.com/wiki/index.php/Knockd)を使用できます
Zoredache

@Zoredache確かに、これは遠隔地にあります。私はこのルーターにアクセスできず、ユーザーにdd-wrtインストールを案内しようと考えて身震いします。
ボータック2009年

dd-wrtをインストールするためにルータに物理的にアクセスできれば、これはおそらくこれを設定する正しい方法であることに同意します。
ボータック2009年

Hamachiは、LogMeInに買収されて以来、Linuxユーザーにひどい配慮を示してきました。Linuxマシンが私のhamachiネットワークの一部である場合、この製品は信頼できません。
bmb 2009年

6

インターネットにアクセスできるポート22を残すことについてはそれほど心配しませんが、それを保護するためにいくつかの手順を実行します。

まず、キーボードのインタラクティブ認証を無効にし、sshキーに移動します。

次に、リモートサーバーにfail2banなどをインストールして、マシンを繰り返しプローブするIPアドレスをブラックボール化します。sshキーが設定されているため、承認されたユーザーの認証エラーは発生しません。

または、可能であれば、WerkkreWsのアドバイスに従って、マシンの前にファイアウォールを構成してvpn接続を終了し、リモートサーバー上のsshデーモンのみがそのvpnを経由して来る接続を受け入れるようにします。

あるいは、ファイアウォールがVPN接続を終了できない場合は、GREまたはIPSECパケットをLinuxマシンに転送して、そこで終了することができます。


これは、ポートが開いていることを気にすることとは関係がなく、ポートを開くプロセスでユーザーを案内したくないことと関係があります。残念ながら、私はこのルーターにアクセスできません。
ボータック2009年

私はあなたの痛みを理解し、同情します。
デイブチェイニー、

2
このソリューションの最初のステップは、非標準ポートで実行するようにsshdを構成することです。ポート22をノックするボットがたくさんあります。/ etc / servicesに表示されないポートを選択しても、「nmap HOST」はそれを見つけません。
hayalci 2009年

4

あなたはノックドを探しているようです

これをLinuxサーバー自体に、iptablesを使用してインストールすると、第2レベルのファイアウォールのようなものになります。フロントエンドファイアウォールでポート22が開いていても、サーバーでは開いていないため、ポートスキャンは開いているポートを認識しません。次に、「秘密のノック」を送信すると、突然、ポート22へのオープンパスができます。

それは理にかなっていますか?


間違えない限り、ノックポートもすべて転送する必要がありますよね?誰かがルーターをスキャンしたとき、それは明白ではないでしょうか?彼らは順序を知らないでしょうが、可能な組み合わせを6に落とすことで、順列を正しく行う方法を覚えていれば、非常に有利なスタートを切ることができます。それとも私はこれが間違っていると考えていますか?
ボータック2009年

ノッキングに使用されるポートは転送する必要がありますが、nockdを実行しているホストは実際にはノッキングのソースに応答する必要はありません。
Zoredache 2009年

正しい-最初のファイアウォールで開いているポートは2番目では開かないため、スキャナーからはすべて閉じているように見えます。ノッキングポートと非ノッキングを区別する方法はありません。
ブレント

3

すべての回答を要約するには:

sshを使用しますが、より不明瞭で安全にします。

セキュリティのため:

  • rootログインが許可されていないことを確認してください(PermitRootLogin no)。
  • 設定オプションAllowUsersまたはAllowGroupsでログインできるユーザーを制限します。
  • 2つのバージョンのsshプロトコルのみを使用していることを確認してください(プロトコル2)。
  • 認証キーのみを使用することをお勧めしますが、認証キーにアクセスできない休日からサーバーに接続する必要がある場合は、パスワードがより便利です。

あいまいな場合:

  • sshポートを20486などの覚えやすいランダムなハイポートに変更します。これにより、ほとんどの自動ブルートフォーサーが取り除かれますが、サーバー上のすべてのポートスキャンから非表示にはなりません。
  • ポートに接続する機能を非表示にします。1つの方法は、他の回答で言及されているポートノッキングですが、どこからでもアクセスできない特別なソフトウェアが必要です。別の簡単なオプションは、最近のモジュールでiptablesファイアウォールを使用してルールを作成することです。これにより、2回目または3回目の試行でのみ接続が許可されます。したがって、正常に接続するには数回試行する必要がありますが、単純な全ポートスキャンでは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


+1いい要約、そして複数試行のトリックについての興味深いアイデア。
David Z、

2

スケジュールされたタスクは、リバースSSHトンネル用のスクリプトか、ファイアウォールポートを開きます。

SSHが世界に開かれているのではないかと心配している場合は、メンテナンス期間中にiptablesスクリプトを使用してタスクをスケジュールし、そのときに利用できるポートのみを用意することができます。


1
同意した。VPNを使用する方法がない限り、唯一の実際の解決策は基本的にポートを開くことです。不安がある場合は、常に非標準のポートを使用できます。
WerkkreW 2009年

2

ポートノッキングあなたのSSHトンネルを開きます。

また、denyhostsを実行して、不正なリクエストが多すぎる場合にユーザーをロックアウトします。

どちらのパッケージも、標準のUbuntu、Fedora、およびRHELリポジトリで使用できます。


1

先に進んでポートを開き、通常の範囲外にしてください。私はそれを1024以上のランダムなポートにします。そうすれば、ハッカーはそれを探すことすらありません。


0

リモートからマシンにアクセスする必要がある場合でも、ファイアウォールに穴を開けない理由はありませんが、まれです。

ただし、それでもポートを開かない(またはできない)場合は、単純なシェルスクリプトが、制御できるインターネット使用可能リソースを監視し、リバーストンネルを起動するコマンドをリッスンします。電子メールアカウント、IRCチャネル、およびWebページは、トリガーデバイスとしてすぐに思い浮かびます。

もちろん、これは単にポートを開くよりもはるかに壊れやすく、安全性が低くなります。しかし、あなたにはあなたの理由があると確信しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.