iptables:REJECTのログ

iptablesでREJECTした通信のログを書き出す(Scientific Linux)
利用しているさくらVPSのプランがリニューアルしました。以前はVPS 512を契約していましたが、今回同じ料金でVPS 1Gが利用できるのでそちらに乗り換える事に。

契約してすぐにカスタムインストールでOSをScientific Linuxに変更。後は以前VPSで設定した事を一通り行いました。
 以前設定した時の記事
 http://taka16o.blogspot.jp/2011/03/vps_27.html

以前はiptablesでブロックされた通信のログを出力していなかったので今回は出力するように設定。Scientific Linux 6.2で設定しています。

/etc/sysconfig/iptable に以下を記述

 -A INPUT -j LOG --log-level debug --log-prefix "[iptables] "

/etc/rsyslog.conf に以下を記述

 *kern.debug /var/log/iptables

ログ出力用のファイルを /var/log/ 以下に作成。

 # touch iptables


これでログが出力されるはずと思ったらまったく出力しないのでしばらくあちこち設定を弄りつつ原因探ししていたらなんとログを出力する設定をREJECTする設定の後に記述してしまっていることに気がつきました。
これではログが出力されないので

  -A INPUT -j LOG --log-level debug --log-prefix "[iptables] "
  -A INPUT -j REJECT --reject-with icmp-host-prohibited 

上記のようにREJECTの設定の前に書き直すことで解決しました。 
初歩的なことでつまって大分時間食ってしまいましたが解決したのでよかった。

via. http://taka16o.blogspot.jp/2012/04/iptablesrejectscientific-linux.html


rsyslogの再起動忘れずに。


ログの読み方について

三番目

SRC=192.168.201.1 DST=172.16.101.30 LEN=118 TOS=0×00 PREC=0×00 TTL=254 ID=3120 DF PROTO=TCP

IPレイヤ(L3)。
IPについては詳しくはRFC791を参照されたし。

SRC : ソースIPアドレス
DST : デスティネーションIPアドレス
LEN : IPパケット長
TOS : IPヘッダ TOSフィールドの値
PREC : IPヘッダ TOSフィールド内、PRECEDENCEの値
TTL : IPヘッダ TTLの値
ID : IPヘッダ IDの値
DF : IPヘッダ Flag の DFビット(Don’t Fragment)が立っている場合
PROTO : プロトコル(TCP,UDPなど)
該当ソースは下記のようになっております。(後半、省略してます)
四番目

SPT=3300 DPT=80 WINDOW=1460 RES=0×00 ACK PSH URGP=0

TCPレイヤ(L4)。
TCPについては詳しくはRFC793を参照されたし。

SPT : ソースポート番号
DPT : デスティネーションポート番号
WINDOW : TCP Window
RES : Reservedの値
ACK , PSH , RST , SYN . FIN : Control Bitsのそれぞれに対応
URGP : Urgent Pointerの値

via. http://tech.sayama-yuki.net/archives/422