接続元 IP が変更された際の iptables の SSH 設定変更

当方は、一般的なプロバイダーから接続している。
そのためルータを再起動するなどによって PPPoE を再確立した時点で、接続元の IP が変わってしまう。
この影響により、SSH 接続を制限しているサーバに対し、以下の作業を都度行う必要がある。

手順

自分が接続しているマシンのネットワーク  IP(グローバル IP、ゲートウェイ IP)を探す。

AAA.BBB.CCC.DDD

そのIPアドレスの WHOIS 情報を探す

次項は、再接続時の際に「偶然、以前に設定したセグメント内に入る」という可能性を考え、このような作業を追加としている。
個人的な「こだわり」の部分。

これは、全開放に比べたら極めて小さい穴だし、SSH 接続は鍵認証しかできないなど、他の部分でセキュリティレベルは上げるなどの処置を施している。
その点からして、リスクはカバーしてると思う。

あくまで参考程度とすること。十分考慮のうえ注意すること。
熟考せず無為に参考のまま設定すると、セキュリティ的にガバガバになるリスクがある。
参考にしての設定は、あくまで自己責任で。

登録情報からネットワーク IP アドレス(付与されている IP アドレス範囲)を探す。

なるべく広めの IP で SSH ポートを開くため。上位があるなら、なるべく広めに開ける。

AAA.BBB.CCC.EEE/FF

「さくらの VPS」コントロールパネルからコンソールに root ログイン

TeraTerm などで接続できない以上、仮想コンソールを使うしかない。

何番目に SSH 開放 IP アドレス(範囲)を突っ込むか探す。

この辺りは、手探りで探すしかない。
主に利用するコマンドは以下。

  • ルールの確認(設定コマンド原文)
# iptables -S
  • ルールの確認(設定順番号、表示整形)
# iptables -L --line-numbers

iptables の構成次第によって、追加(挿入)する場所が厳密な場合があったり、何も考えず、最後に追加すればよい場合など、そこは個々の構成に併せて考える。

iptables に追加(挿入)コマンド投入

  • 【例1】IP アドレスを範囲(サブネット単位)で SSH 開放する場合
# iptables -I INPUT 5 -s AAA.BBB.CCC.EEE/FF -p tcp
 -m state --state NEW -m tcp --dport 22 -j ACCEPT
  • 【例2】1つの接続元 IP アドレスだけ SSH 開放する場合
# iptables -I INPUT 5 -s AAA.BBB.CCC.DDD -p tcp
 -m state --state NEW -m tcp --dport 22 -j ACCEPT

この状態で Teraterm, WinSCP などから接続確認

TeraTerm などで、以前の通り接続できるか確認。
問題なければ、次項。

sysconfigに設定情報を保存

# service iptables save

念のため、ちゃんと保存されたかの確認もする。

# cat /etc/sysconfig/iptables

参考

【余談】将来こうしたい

ルーターの切断や再起動した時にしか必要のない作業とはいえ、毎回この設定をするのは、いちいち面倒。
なので、何かしらの自動化を考えている。

Drobo FS の SSH 上から MAC アドレスを調べる方法

ルータを新調したので、DHCP の IP 静的割当を設定したのだが、Drobo FS の MAC アドレス探しがちょっと面倒だったので、備忘録。

まぁ Drobo FS 本体に貼られているラベルを見れば、MAC アドレスは判るんだけども、肝心のラベルが本体底面に貼られているので、引っ繰り返さないと確認できないのが難点。

我が家の場合、ラベルを確認するためには、Drobo FS の電源を切って、Drobo FS 本体が格納されているラックから引き剥がす必要があって、これがラックの場所とかの関係で、ちょっと大変。

ちなみに、IP アドレスとかサブネットとかは Drobo Dashboard から設定するものなので、そこから確認できるものの、MACアドレスは確認できない。(まぁ所詮米国製なので、こういうツールの「痒いところに手が届かない」のは、 米国の仕様(=御国柄と同意)。)

ということで、パソコンからは少し面倒ではあるが、Drobo FS の組み込み Linux にアクセスして調べることに。
という訳で以下手順。

1. DroboAppsから「dropbear」(SSHサーバ)をインストール

2. SSHクライアント(TeraTermProとかPoderosaとか)でDroboFSにSSHログイン。

ここでSSHの接続が確立できない場合は、DroboApps の挙動がおかしい可能性がある。
その場合は、Drobo Dashboard の管理者設定の「DroboApps を有効化」を一度切ってから、再度入れ直す。
ちなみに Drobo FS 再起動しても、接続は改善できない。必ず上記操作が必要。

3. ログインできたら、以下のコマンド実行

# /sbin/ifconfig
(ここにMACアドレスなどのネットワーク情報が表示される。)
#

(パスが通ってないので、最初に/sbin付けて、絶対パスでコマンド実行。)

これで本体をひっくり返さずに、MACアドレスの確認ができる。

とはいえ、とても面倒。