Linux でローカル ネットワークへの SSH アクセスを制限する方法
SSH (セキュア シェル) は、ユーザーがネットワーク経由でリモート システムに安全に接続できるようにする一般的なツールです。デフォルトでは、適切なファイアウォールとネットワーク設定が行われている限り、SSH はどのネットワークからでもアクセスできます。
ただし、セキュリティ上の理由から、SSH アクセスをローカル ネットワークのみに制限したい場合があります。これは、インターネット経由でシステムに外部からアクセスしたくない家庭やオフィス環境で特に便利です。
この記事では、ファイアウォール ルールと SSH 構成を使用して、Linux 上のローカル ネットワークへの SSH アクセスを制限する方法の手順を説明します。初心者でも安心して取り組めるよう、各ステップごとに分かりやすく解説していきます。
SSH をローカル ネットワークに制限するのはなぜですか?
SSH アクセスをローカル ネットワークのみに制限すると、システムへの不正アクセスのリスクを軽減できます。
これを行う理由は次のとおりです。
- セキュリティ: 外部ネットワークからの SSH へのアクセスを制限することで、攻撃者がインターネット経由でサーバーをスキャンしたり、ブルート フォース攻撃を試みたりすることを防ぎます。
- アクセス制御: 複数のデバイスが同じローカル ネットワークに接続されている場合でも、システムを外部の脅威にさらすことなく管理できます。
- シンプルさ: ローカル アクセスのみを使用するため、外部アクセス用に追加のセキュリティ層を構成することを心配する必要はありません。
ローカルネットワークを理解する
始める前に、「ローカル ネットワーク」の意味を理解することが重要です。ローカル ネットワークは、ホーム Wi-Fi やオフィス ネットワークなど、同じ物理ネットワークまたはワイヤレス ネットワーク内に接続されたデバイスのグループです。
これらのデバイスは、192.168.x.x や 10.0.x.x などの同じ内部 IP アドレス範囲を共有しますが、外部デバイス (インターネット上のデバイス) は異なる IP 範囲を持ちます。
ステップ 1: Linux ローカル IP アドレス範囲を確認する
ローカル ネットワーク範囲を知るには、まず次の ip コマンドを使用してデバイスの IP アドレスを特定する必要があります。これにより、IP アドレスとネットワーク情報が表示されます。
ip a
ネットワークインターフェースに関する情報が表示されます。 192.168.x.x や 10.0.x.x などのアドレスを探します。これにより、ローカル IP アドレスがわかります。
通常、ローカル IP アドレスは次のプライベート範囲のいずれかになります。
192.168.x.x
10.0.x.x
172.16.x.x to 172.31.x.x
たとえば、IP アドレスが 192.168.122.63 の場合、ローカル ネットワーク範囲はおそらく 192.168.1.0/24 になります。これは、192.168 内の IP を持つすべてのデバイスを意味します。 .1.x の範囲は同じローカル ネットワーク上にあります。
ステップ 2: ローカル アドレスでのみリッスンするように SSH を構成する
デフォルトでは、SSH は利用可能なすべてのネットワーク インターフェイスをリッスンします。ローカルネットワークのみでリッスンするように変更します。
sudo nano /etc/ssh/sshd_config
#ListenAddress
を含む行を見つけてコメントを解除します (先頭の #
を削除します)。ローカル IP アドレスに設定します。
たとえば、ローカル IP が 192.168.122.63 の場合は、次のようにファイルを更新します。
ListenAddress 192.168.122.63
変更を有効にするには、SSH サービスを再起動します。
sudo systemctl restart ssh
OR
sudo systemctl restart sshd
これで、SSH サーバーはローカル IP アドレスからの接続のみをリッスンするようになります。外部ネットワークから接続しようとすると接続が拒否されます。
ステップ 3: ファイアウォール ルールを使用して SSH を制限する
ローカル アドレスのみをリッスンするように SSH デーモンを構成することは便利ですが、ファイアウォール ルールを設定することでセキュリティ層を追加することができます。これにより、誰かがシステムにアクセスしようとした場合でも、ローカル ネットワーク上のデバイスのみが SSH 経由で接続できるようになります。外部 IP を使用して。
UFW (Uncomplicated Firewall) の使用
Ubuntu などの多くの Linux ディストリビューションのデフォルトのファイアウォールである UFW を使用している場合は、次のコマンドに従います。
192.168.1.x 範囲内の IP アドレスなどのローカル ネットワークからの SSH 接続のみを許可し、他のネットワークからの SSH 接続を拒否します。必ずファイアウォールをリロードし、そのステータスを確認してください。
sudo ufw allow from 192.168.1.0/24 to any port 22
sudo ufw deny 22
sudo ufw reload
sudo ufw status
ファイアウォールの使用
Firewalld を使用して Linux 上で SSH をローカル ネットワークに制限するには、次のコマンドに従います。
192.168.1.x 範囲内の IP アドレスなどのローカル ネットワークからの SSH アクセスを許可し、他のネットワークからの SSH 接続を拒否します。必ずファイアウォールをリロードし、そのステータスを確認してください。
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" drop'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
iptables の使用
UFW または Firewalld を使用していない場合は、iptables を使用して同様のルールを設定できます。
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
sudo iptables-save | sudo tee /etc/iptables/rules.v4
sudo iptables -L
現在、SSH アクセスはネットワーク範囲内のローカル デバイスからのみ許可されています。
ステップ 4: 構成をテストする
SSH とファイアウォールを構成したら、セットアップをテストして、すべてが期待どおりに動作することを確認します。
ローカル ネットワーク上のデバイスから、SSH を使用してサーバーへの接続を試行します。
ssh [email
外部ネットワーク (モバイル データや VPN などを使用) にアクセスできる場合は、システムの外部 IP への接続を試みます。接続はブロックされるか拒否される必要があります。
追加のヒント
ローカル ネットワークへの SSH を設定するための追加のヒントを次に示します。
- 静的 IP: SSH 接続するデバイスに静的 IP アドレスを設定することをお勧めします。特に、ローカル IP 範囲に基づいてファイアウォール ルールを構成している場合は、IP が変更されないようにする必要があります。ルーターが再起動した場合。
- VPN アクセス: 外部ネットワークからリモート アクセスが必要な場合は、VPN の設定を検討してください。これにより、インターネット経由でローカル ネットワークに安全に接続できるようになり、SSH は引き続きアクセスできるようになります。ローカルネットワーク。
- ログの監視: 不正なアクセスの試みがないか、SSH ログを常に監視してください。
tail コマンドを使用してログを確認できます。
sudo tail -f /var/log/auth.log
結論
ローカル ネットワークへの SSH アクセスを制限することは、Linux システムのセキュリティを強化する簡単かつ効果的な方法です。このガイドの手順に従うことで、管理タスクのためのローカル アクセスを維持しながら、SSH サーバーへの外部アクセスを防ぐことができます。
ファイアウォール ルールと適切な構成を使用すると、ローカル ネットワーク内の信頼できるデバイスのみが SSH 経由で接続できるようになり、不正アクセスのリスクが軽減されます。