第11回 NETMARKで不正な通信をシャットアウト
面 和毅サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/10/5
sshdでの実例
それでは、実際にMARKによるLIDSとiptablesの連携を、sshdを用いて見てみましょう。
図4 |
図4のようなネットワークを考えてみます。このネットワークで、
- ゲストOS上でローカルにログインしたユーザーは、どのネットワークに対しても通信ができます
- ゲストOSにssh経由でログインできる端末は、ホストOSのみに限定します
- ゲストOSにssh経由でログインしたユーザーは、Target_PCにsshで接続できます。しかし、ssh以外の通信は許可しません
- ゲストOSにssh経由でログインしたユーザーは、Target_PC以外の端末とは、通信ができません
を満たすようにLIDSとiptablesを用いて設定を行います。
- まず、sshdがソケットを生成した際に、パケットに「MARK 5」が付くようにlidsのACLに設定を追加します。図5にsshdのACLを示しますが、最後の行で/usr/sbin/sshdは「MARK 5」を付けるように設定しています。これにより、sshdを使ってsshでリモートからログインしてシェルを開いて、そのシェル上で通信を行おうとした場合には、すべてのパケットに「MARK 5」がマークされます。このMARK情報を用いて、iptablesでアクセス制御を行います
#!/bin/sh /sbin/lidsconf -A -s /usr/sbin/sshd -o CAP_SETGID -j GRANT /sbin/lidsconf -A -s /usr/sbin/sshd -o CAP_SETUID -j GRANT /sbin/lidsconf -A -s /usr/sbin/sshd -o CAP_SYS_CHROOT -j GRANT /sbin/lidsconf -A -s /usr/sbin/sshd -o CAP_CHOWN -j GRANT /sbin/lidsconf -A -s /usr/sbin/sshd -o CAP_NET_BIND_SERVICE 22 -j GRANT /sbin/lidsconf -A -s /usr/sbin/sshd -o /var/run -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /var/run -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptmx -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp0 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp1 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp2 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp3 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp4 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp5 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp6 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp7 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp8 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptyp9 -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptypa -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptypb -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptypc -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptypd -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptype -j WRITE /sbin/lidsconf -A -s /usr/sbin/sshd -o /dev/ptypf -j WRITE # Below line is added for LIDS NF_MARK /sbin/lidsconf -A -s /usr/sbin/sshd -o LIDS_SOCKET_NF_MARK 5 -j DISABLE |
図5 |
- 次に、iptablesを用いてパケットの制御を行います。図6を見てみましょう
#!/bin/sh /sbin/iptables -t mangle -F /sbin/iptables -t mangle -P OUTPUT ACCEPT /sbin/iptables -t mangle -A OUTPUT -j MARK --set-mark 10 /sbin/iptables -t mangle -A OUTPUT -p tcp -d 192.168.230.1 --sport 22 -m mark --mark 5 -j ACCEPT /sbin/iptables -t mangle -A OUTPUT -p tcp -d 192.168.230.129 --dport 22 -m mark --mark 5 -j ACCEPT /sbin/iptables -t mangle -A OUTPUT -m mark --mark 5 -j DROP |
図6 |
- まず1行目で、mangleテーブルを消去します
- 2行目で、OUTPUTチェーンのデフォルトポリシーを「ACCEPT」に設定します。これは、ローカルログインしたユーザーがどことでも通信できるようにという意味で、今回のテストケースでの設定を簡単にするために「ACCEPT」としています。もちろん、iptablesでデフォルトを「DROP」にして、あて先などを細かく絞って必要な通信に関してポートを空けた方が、セキュリティ上は良いでしょう
- 3行目で、OUTPUTチェーンでのMARKをデフォルトで「10」に設定しています。これは、今回はsshdとローカルだけでiptablesを書いていますが、いずれsshd以外のパケットもマークを付けて操作することを考えて、すべてのパケットを「10」にマークしています
- 4行目で、あて先のIPアドレスが192.168.230.1(ホストOS)で、ポート番号が22番のものが送信元の場合には、通信を許可します。i)でsshdが生成したパケットには「MARK 5」が付いていますので、その/usr/sbin/sshdが生成したOUTPUTチェーンを通るパケットで、上記の条件に当てはまるものは、アクセスを許可しています。これは、今回の例でホストOSからゲストOSにログインを行う際に必要なためです
- 5行目で、あて先IPアドレスが192.168.230.129(Target_PC)で、かつあて先ポートが22番で、「MARK 5」の場合には、アクセスを許可しています
- 6行目で、そのほかの「MARK 5」が付いているパケットに関しては、すべてDROPしています。これにより、sshdを通してリモートからシェルを開いた場合には、そのシェル上で1〜5行目までのルールに該当しないパケットはすべてDROPされることになりますので、Target_PCにsshで接続を行うという行為以外はできなくなります
- 最後に、sshクライアントのLIDS ACLを作成します。図7にsshクライアントのACLがありますので、これを使用します
#!/bin/sh /sbin/lidsconf -A -s /usr/bin/ssh -o CAP_SETGID -j GRANT /sbin/lidsconf -A -s /usr/bin/ssh -o CAP_SETUID -j GRANT /sbin/lidsconf -A -s /usr/bin/ssh -o /dev/tty -j WRITE /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libresolv.so.2 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /usr/lib/libcrypto.so.0.9.7 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /usr/lib/libutil.so -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libutil-2.3.2.so -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /usr/lib/libz.so.1 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libz.so.1 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libnsl.so.1 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libcrypt.so.1 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libc.so.6 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libdl.so.2 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/ld-linux.so.2 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libnss_compat-2.3.2.so -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /usr/lib/libnss_compat.so.2 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /lib/libnss_files-2.3.2.so -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /usr/lib/libnss_files.so -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /usr/lib/i686/cmov -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /usr/lib/i686/libcrypto.so.0.9.7 -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /etc/nsswitch.conf -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /etc/passwd -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /dev/urandom -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /dev/random -j READONLY /sbin/lidsconf -A -s /usr/bin/ssh -o /root/.ssh -j WRITE /sbin/lidsconf -A -s /usr/bin/ssh -o CAP_NET_BROADCAST 22 -j GRANT |
図7 |
2/3 |
Index | |
NETMARKで不正な通信をシャットアウト | |
Page1 iptablesとMARKマッチ LIDSとMARKマッチ機能 LIDSでMARKマッチ機能を使うためには |
|
Page2 sshdでの実例 |
|
Page3 sshdでの実験 |
Security&Trust記事一覧 |
Security&Trust フォーラム 新着記事
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|