■前回のfirewall.shではDNSを無効にしていますので、
WindowsクライアントからSambaの共有フォルダにアクセス時に名前解決が行えません。
勿論、IP指定であれば、cifsポートは開いているのでアクセス可能です。
※システムメールの箇所はログに追記するように変えればもう少しすっきりすると思います。
開放するポートについてはこちら。
http://www.atmarkit.co.jp/fwin2k/win2ktips/088directhostedsmb/088directhostedsmb.html
■/etc/servicesからの確認。
netbios-ns 137/tcp
netbios-ns 137/udp
netbios-dgm 138/tcp
netbios-dgm 138/udp
netbios-ssn 139/tcp
netbios-ssn 139/udp
■netbiosポートを追加する。
THISDATE=`env LANG=C date '+%Y/%m/%d %H:%M:%S'`
cat /etc/iptables-save | mail -s "iptables report ${THISDATE}" root
iptables -A INPUT -p udp --dport 137:138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables-save -c > /etc/iptables-save
THISDATE=`env LANG=C date '+%Y/%m/%d %H:%M:%S'`
cat /etc/iptables-save | mail -s "iptables report ${THISDATE}" root
■リセット方法は2つ。
★「-D」オプションで削除する。
iptables -D INPUT -p udp --dport 137:138 -j ACCEPT
iptables -D INPUT -p tcp --dport 139 -j ACCEPT
★./firewall.shを実行し、全体をリセット。
■iptablesの設定の確認方法
「-n」オプションでポート番号を表示するよう指定します。
初めは出力はありません。
■ブロックログの確認。
私の環境では137、138のログしかありませんが、139のセッションサービスも必要です。
参考URL
http://www.atmarkit.co.jp/fwin2k/network/baswinlan005/baswinlan005_01.html
IN=vmnet1 OUT= MAC= SRC=172.16.5.1 DST=172.16.5.255 LEN=242 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=138 DPT=138 LEN=222
■iptablesにルールを追加する
■ルール追加の確認
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:137:138
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:139
■Samba接続確認。
正常にアクセス出来、ブロックログはありません。
「/etc/services」から見た、TCP/137、TCP/138、UDP/139 については拒否のままです。
■nmapによるTCPのポートスキャン
※iptablesのルール削除後も結果は変わりません。
139/tcp open|filtered netbios-ssn
■nmapによるUDPのポートスキャン
※iptablesのルール削除後も結果は変わりません。
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
■netbiosを拒否中には、debian側のマウントでもブロックされます。
mount error 13 = Permission denied
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
■netbiosを拒否中にも、IP指定であれば、debian側のマウントでもブロックされません。
■信頼済みのlocalhostだけを許可します。
ACCEPT udp -- 127.0.0.1 0.0.0.0/0 udp dpts:137:138
ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 tcp dpt:139
■hostsにあるホスト名のIPだけを許可します。
■vmwareを導入している環境では「127.0.1.1」もあるかも知れません。
127.0.1.1
■vmnet1(ホストオンリー)のローカルネットワークだけを許可します。
■スクリプトなので、変数も使えます。
/etc/iptables-saveから変数を解決後の設定を確認する場合は一度保存します。
■./firewall.shですべてリセット、ベースルールに戻します。
いきなり複雑なルールを追加するよりも、ベースルールに追加する方法する方が、
各種の間違えや、テストの為の設定が行えて便利です。
上位ネットワークでは無いので、ベースルールは緩いです。
また、緊急時用にリセットする目的であれば、システムメールよりもlogに出力した方が早いです。
それぞれ、各自で調整して下さい。