ラベル セキュリティ の投稿を表示しています。 すべての投稿を表示
ラベル セキュリティ の投稿を表示しています。 すべての投稿を表示

2014年9月28日日曜日

Raspberry Piセットアップ日記(13)UFW BLOCKメッセージ


気づいたら、/var/log/messagesに以下のようなメッセージが頻発していた。(1分に1回)

Sep 28 08:08:20 raspberrypi kernel: [1807838.540815] [UFW BLOCK] IN=eth0 OUT= MAC=<文字列72桁> SRC=<ルータIP> DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xA0 TTL=1 ID=24734 PROTO=2 
Sep 28 08:09:20 raspberrypi kernel: [1807898.640777] [UFW BLOCK] IN=eth0 OUT= MAC=<文字列72桁> SRC=<ルータIP> DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xA0 TTL=1 ID=2006 PROTO=2 

どうもブロードバンドルーターからの何らかのブロードキャストメッセージをブロックしている模様。
denyすることでログに吐かなくなるようだが、せっかくなのでどんなメッセージが飛んでいるのか
解析してみる。

1、syslogの見方

●参考
Linux LPIC - /var/log/messages
システムログの読み方を理解しよう
Raspberry Pi as a Syslog Server



以下のような読み方になるもよう

Sep 28 08:08:20 raspberrypi kernel: [1807838.540815] [UFW BLOCK] IN=..
+- timestamp -+ +- host --+ +-src-+ +-- msg body ..

カーネルが、[1807838...というメッセージを出力している、ということになる
"[1807838.540815]"という表記は、なんとなくタイムスタンプ(の別表現)のような感じなので、意味のある情報は
[UFW BLOCK]..以降だろう。

2、ufwの動作確認

ここで一度ufwの動作設定がどうなっているのかを確認する
ufwの動作状態確認

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
5901                       ALLOW IN    Anywhere
...以下略

3、UFW BLOCK以降のログの見方

[UFW BLOCK] IN=eth0 OUT= MAC=<文字列72桁> SRC=<ルータIP> DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xA0 TTL=1 ID=24734 PROTO=2 
[UFW BLOCK] IN=eth0 OUT= MAC=<文字列72桁(2)> SRC=<ルータIP> DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xA0 TTL=1 ID=2006 PROTO=2 

INは入力デバイスだろう。
OUTはoutgoingのメッセージではないので出ないのだろう。
MACは通常のMACアドレスにしては長い気がするのと、最後の2オクテットの値が違うのでただのMACアドレスではなさそうだが、とりあえず保留。
SRC以降は、IPヘッダの情報くさい。

IPパケットの基本構造

SRC=送信元IP ルータIP
DST=宛先IP 224.0.0.1
LEN=データグラム長、IPパケット全体の大きさ 32 理論的なIPパケットの最小は20bytes
TOS=サービスタイプ 0x00、指定なし
PREC=? 0xA0 とりあえず保留
TTL=寿命 1
ID=IPフラグメント(分割)が起こった時の識別子、通常ランダム 同じフラグメント(分割)されたパケットは同じ値になる 2006
PROTO=プロトコル番号 2 /etc/protocolsファイルによると「igmp(Internet Group Management)」

どうも、IGMPパケットのようだ。

4、IGMPとは?
Internet Group Management Protocol

Internet Group Management Protocol (IGMP) とは、IPネットワーク上でマルチキャスト(特定の一対多または多対多通信)を行うために、
マルチキャストに参加するホストのグループを設定し、ネットワークに通知するための通信プロトコルである。

LEN=32であることから、おそらくMembership Queryパケットである可能性が高い。
Membership Query (Type 0x11)
ホストがマルチキャストのグループへ参加するときにルータに送信される。参加しているグループの最新の状態を知りたいときにも送信される。

ただ、内容的には「ホストからルータへ投げられるパケット」であり、
今回のように「ルータからブロードキャストへ」投げられるパケットでは無い様に見受けられるので、解せない。

一方こちらでは
マルチキャスト編<第2回> IGMPを知る

どうも「グループの維持」のために、クエリパケットを60秒に1回投げられるらしい。
意味的にはルータが投げてもおかしくない(というかグループを管理するのはルータらしいのでルータが投げるのが正論だろう)、おそらくこいつだろう。

4、解決策
結論として、IGMPをallowにしてみようと思う。

●参考
Ubuntu で ufw を利用して ping を拒否する設定
KVMのインストールと設定
Question about UFW log entries

IGMPプロトコルそのものに設定することはできなさそう。
公式サイトでバグ報告上がってるがwishlistになっており
マルチキャスト設定で対応する旨書かれている

https://bugs.launchpad.net/ufw/+bug/946322


というわけで、以下のように実行し、ログが増えないことを確認して終了。

$ sudo ufw allow in from ルータIP to 224.0.0.0/8 
Rule added
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
5901                       ALLOW IN    Anywhere
..中略..
224.0.0.0/8                ALLOW IN    ルータIP

5、おまけ

ufwのヘルプ
$ ufw help


2014年9月23日火曜日

Raspberry Piセットアップ日記(11)自動更新

パッチの自動更新

●参考
apt-get/自動アップデートがしたい

cron-apt で自動アップデート

●手順
1.cron-aptをインストール

$ sudo apt-get install cron-apt

2./etc/cron-apt/config を編集

インストール直後のファイルには何もかかれてないので、
/usr/share/doc/cron-apt/README.gzを参考に記述する。

# Configuration for cron-apt. For further information about the possible
# configuration settings see /usr/share/doc/cron-apt/README.gz.

APTCOMMAND=/usr/bin/apt-get
OPTIONS="-o quiet=1"
MAILON="changes"
MAILTO="myaddress@hogehoge.com"

3./etc/cron-apt/action.d/3-download を編集

-dオプションを削る

autoclean -y
dist-upgrade -y -o APT::Get::Show-Upgraded=true

4./etc/cron.d/cron-apt を編集

週1実行に設定

0 4     * * thu root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt

5.動作確認

$ sudo /usr/sbin/cron-apt

2014年4月25日金曜日

Raspberry Piセットアップ日記(3)


ファイアウォール設定
ufwを使うとiptablesの設定が簡単になるらしい。

$ sudo apt-get install ufw

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination      

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination      

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

$ sudo ufw allow ssh
Rules updated
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

$ sudo iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination      
ufw-before-logging-input  all  --  anywhere             anywhere          
ufw-before-input  all  --  anywhere             anywhere          
ufw-after-input  all  --  anywhere             anywhere          
ufw-after-logging-input  all  --  anywhere             anywhere          
ufw-reject-input  all  --  anywhere             anywhere          
ufw-track-input  all  --  anywhere             anywhere          

Chain FORWARD (policy DROP)
target     prot opt source               destination      
ufw-before-logging-forward  all  --  anywhere             anywhere          
ufw-before-forward  all  --  anywhere             anywhere          
ufw-after-forward  all  --  anywhere             anywhere          
ufw-after-logging-forward  all  --  anywhere             anywhere          
ufw-reject-forward  all  --  anywhere             anywhere          
<<大量に出力されるので省略>>

2014年4月16日水曜日

iptablesでファイアウォール設定


覚書。
以下の例では、
ssh(22)
Oracle EM(1158)
Oracle (1521)
のポートを開ける設定。

環境

CentOS 6.5

参考

http://can.fujitoko.com/firewall.html


手順


1、/etc/sysconfig/iptablesを編集

#vi /etc/sysconfig/iptables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1619:241989]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1158 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

2、iptables再起動

# service iptables restart
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]

3、確認
#iptables -L