いろいろバックエンドな人の備忘録

といいつつレイヤーのネタ書いてます。C/C++, Ruby(Rails)、自宅サーバー,PCパーツ,ネットワーク、あとピアノも。

<備忘録>VyOS の SSHでハマった / 特定のセグメントから VyOS 自身のSSHをブロックする方法

構成

f:id:nrtn:20160821202350p:plain

図のような構成を考える。

ここで、

  • VM Segment からはルーターにログインさせたくない。

としたとき、下記のようにコンフィグを書いた。

set service ssh listen-address '192.168.0.1'
set service ssh port '22'
set firewall name TO_SELF_SSH default-action 'accept'
set firewall name TO_SELF_SSH rule 1 action 'reject'
set firewall name TO_SELF_SSH rule 1 destination port '22'
set firewall name TO_SELF_SSH rule 1 source adddess '172.16.0.1/24'
set firewall name TO_SELF_SSH rule 1 protocol 'tcp'
set interface ethernet eth1 firewall in TO_SELF_SSH

f:id:nrtn:20160821202352p:plain

しかし、これはつながってしまった。

まず、リッスンアドレスは eth0 側だが、ルーティングされ 自身の eth1 にアクセスされてしまう。 なので、172.16.0.1/24 セグメントからのアクセスを制限し、eth1 の in に適用した。

しかし、これでもまだつながってしまった。

どうやら、ファイアーウォールが評価されるのは 自分自身以外のインターフェイスに投げるとき であるようだ。

下記のように 適用 I/F を local と書いて解決。

set service ssh listen-address '192.168.0.1'
set service ssh port '22'
set firewall name TO_SELF_SSH default-action 'accept'
set firewall name TO_SELF_SSH rule 1 action 'reject'
set firewall name TO_SELF_SSH rule 1 destination port '22'
set firewall name TO_SELF_SSH rule 1 source adddess '172.16.0.1/24'
set firewall name TO_SELF_SSH rule 1 protocol 'tcp'
set interface ethernet eth1 firewall local TO_SELF_SSH