SSH接続をiptablesで許可する方法:初心者にもわかる設定手順とポイント

Linuxサーバーのセキュリティを確保しつつ、リモートからの操作を可能にするためには、SSH接続を適切に許可する設定が欠かせません。特に、ファイアウォールとして iptables を使用している場合、明示的にSSHポート(22番ポート)への接続を許可するルールを追加しなければ、リモートログインができなくなってしまいます。この記事では、iptables -A INPUT -p tcp --dport 22 -j ACCEPT というコマンドの意味や使い方を解説しながら、SSH接続を安全に許可するための設定手順を詳しく紹介します。初心者の方でも理解しやすいように、図解やポイントを交えて説明していきます。


iptablesとは何か?

iptables はLinuxにおけるファイアウォール機能のひとつで、ネットワーク通信の制御やアクセス制限を行うために使用されます。受信(INPUT)、送信(OUTPUT)、転送(FORWARD)の3つの基本チェーンがあり、それぞれの通信に対してルールを設定することができます。

この中で、SSH接続を許可するには「INPUTチェーン」にルールを追加する必要があります。SSHは通常、TCPの22番ポートを使用するため、このポートへのアクセスを許可する設定が必要です。


コマンドの解説:iptables -A INPUT -p tcp --dport 22 -j ACCEPT

このコマンドは、以下のような意味を持ちます:

  • -A INPUT:INPUTチェーンにルールを「追加(Append)」する
  • -p tcp:プロトコルはTCPを指定(SSHはTCP通信を使用)
  • --dport 22:宛先ポートとして22番(SSHの標準ポート)を指定
  • -j ACCEPT:条件に合致するパケットを「許可(ACCEPT)」する

つまり、**「TCPの22番ポートへの入力通信を許可する」**という意味になります。


SSH接続が許可されないとどうなる?

もしこの設定がされていないと、外部からのSSH接続はファイアウォールによってブロックされ、たとえSSHサービスが正常に動作していたとしても、接続自体ができなくなります。これにより、リモートからのログインや操作ができず、サーバーの管理に支障をきたす可能性があります。

特に新しくサーバーを構築した直後や、セキュリティポリシーを見直した際には、SSHの許可設定を見落としがちです。


SSH許可設定の手順

以下の手順で、SSHの接続を許可する設定を行います。

1. 現在のiptablesルールを確認

sudo iptables -L -n

このコマンドで、現在有効なルールが一覧で表示されます。もし22番ポートが許可されていない場合、次の手順で追加します。

2. SSHを許可するルールを追加

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

これで、22番ポートへのTCP接続が許可されます。

3. SSH以外の不要なポートを閉じる(例)

セキュリティを高めるためには、不要なポートはすべて拒否しておくのが基本です。

sudo iptables -A INPUT -j DROP

このようにすれば、明示的に許可された通信(例:SSH、HTTP、HTTPSなど)以外はすべて遮断されます。

4. iptablesの設定を保存する

環境によって方法が異なりますが、CentOS系やRocky Linux系であれば以下のコマンドを使用します:

sudo service iptables save

または

sudo iptables-save > /etc/sysconfig/iptables

Debian系では、iptables-persistent パッケージをインストールして保存できます:

sudo apt install iptables-persistent

ポート番号を変更してSSHを保護する方法

標準の22番ポートはスキャン対象になりやすく、セキュリティ上のリスクとなることがあります。より安全性を高めるには、ポート番号を変更する方法もあります。/etc/ssh/sshd_config を編集し、たとえば 2222 番に変更します:

Port 2222

変更後は iptables にもそのポートを許可する必要があります:

sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

注意点とトラブル対処

1. SSHをブロックした状態でログアウトすると…

間違ってSSHをブロックして設定を保存し、ログアウトしてしまうと、以後リモートからの操作ができなくなります。こういった事態を避けるため、ファイアウォールの設定はローカルで操作するか、セッションを複数開いて確認しながら作業するのがおすすめです。

2. firewalldとの違いに注意

CentOS 7以降では firewalld がデフォルトで使用されています。iptables を使いたい場合は、firewalld を停止して iptables に切り替える必要があります。

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum install iptables-services
sudo systemctl enable iptables
sudo systemctl start iptables

まとめ

SSH接続を許可するための iptables コマンドは、Linuxサーバーの管理において重要な基本設定の一つです。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

この1行を加えることで、リモートからの安全な接続が可能になり、Linuxサーバーの柔軟な運用が実現します。ただし、セキュリティとのバランスを保つためにも、不要なポートの遮断やポート変更、fail2banなどとの併用を検討することが大切です。

SSH接続の許可設定を正しく行い、安全で快適なサーバー運用を目指しましょう。

タイトルとURLをコピーしました