snortをちょっと読んでみた
snortは基本idsである。inlineモードにすれば、ipsになるらしい。
main
detect.cにSnortMainがある。<-なかなか見つからなかった。
main https://github.com/threatstream/snort/blob/9bd7ba3c50f18b1d9df326182aed524324ed19f4/src/snort.c#L782
検知部分
検知するコードはdetectで検索すればよい。detect.h/cがもろにヒットした。 以下が、detection moduleらしい。
int CheckBidirectional(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckSrcIP(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckDstIP(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckSrcIPNotEq(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckDstIPNotEq(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckSrcPortEqual(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckDstPortEqual(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckSrcPortNotEq(Packet *, struct _RuleTreeNode *, RuleFpList *, int); int CheckDstPortNotEq(Packet *, struct _RuleTreeNode *, RuleFpList *, int);
drop部分
dropを検索すればよく。detect.cにDropActionがある。こいつが、検知した時に、dropをする処理だ。ただし、先述の通りインラインモードである必要がある。
int DropAction(Packet * p, OptTreeNode * otn, Event *event) { RuleTreeNode *rtn = getRuntimeRtnFromOtn(otn); DEBUG_WRAP(DebugMessage(DEBUG_DETECT, " Generating Alert and dropping! \"%s\"\n", otn->sigInfo.message);); if(stream_api && !stream_api->alert_inline_midstream_drops()) { if(stream_api->get_session_flags(p->ssnptr) & SSNFLAG_MIDSTREAM) { DEBUG_WRAP(DebugMessage(DEBUG_DETECT, " Alert Came From Midstream Session Silently Drop! " "\"%s\"\n", otn->sigInfo.message);); Active_DropSession(p); return 1; } } /* ** Set packet flag so output plugins will know we dropped the ** packet we just logged. */ Active_DropSession(p); CallAlertFuncs(p, otn->sigInfo.message, rtn->listhead, event); CallLogFuncs(p, otn->sigInfo.message, rtn->listhead, event); return 1; }
次は、もっと詳細に読んでいきたい。
consul 触ってみた その1
grasysのvuls記事を見ていて、consulがわからなかったので、さわって見た。 ( 前にも触ったことがあり、その時は、clusterを組んで遊んでいた。
何やったの?
consulは色々機能があるが、以下のうちKV DataとWeb UIを触って見た。 インストールは、簡単にバイナリをpcに落としてきて、./consoleで使ってた。
Consul Cluster
Health Checks
KV Data
Web UI
詳しく
まず、agentを起動。 そのときにwebも起動してくれる。なので、http://localhost:8500を見に行けば、webからデータベースを触れる。 いくつかを実際に登録して見ました。
./consul agent -dev
redisに5を結びつける。
./consul kv put redis 5
redisに結びついた、valueを持ってくる。これで,5が出てくる。意外と、かなり簡単。
./consul kv get redis
※
ext2 fsの開発を再開。
GitHub - Ninals-GitHub/Learning-Ext2-Filesystem: You can learn about ext2 filesystem step by step.
を参考にして、開発再開。
久しぶりに、makeすると
/home/vagrant/ext2/me2fs_super.h:49:1: error: expected ‘;’, identifier or ‘(’ before ‘struct’ struct dentry * ^ /home/vagrant/ext2/me2fs_super.h:50:1: error: field ‘me2fsMountBlockDev’ declared as a function me2fsMountBlockDev( struct file_system_type *fs_type, ^ /home/vagrant/ext2/me2fs_main.c:22:1: error: expected specifier-qualifier-list before ‘static’ static struct file_system_type me2fs_fstype = ^
と怒ってきた。
staticの前に何かつけろとか意味のわからないことばかりを......
放置してたので、そうなる予測はしていたが、まさかこれ2時間も時間を取られるとは。。。。
sudoつければよかったようです。
セキュリティキャンプ全国大会応募用紙との格闘まとめ
応過去問を解析
募用紙の書き方ノウハウを研究するために、過去問スプレッドを作成して、収集した。
自分を励ますフレンズ
参加者日記 t.co
@warugaki_k_k なんかたくさん書いてあるようにみえるかもしれないけれど、GDBの使い方とか実はキャンプの応募用紙書いてるときに初めて学んだとかそんなレベルなので、こわがらずに全力で書いてみてください!
— hikalium (@hikalium) 2017年4月28日
IoTセキュリティウィークin沖縄2016~ハッキング デー(1日目)に参加しました
こんにちは ひたすら人と違うことをする天邪鬼なかずみんです。
「イベントで学んだことなどは、明文化していくといい」と聞いたので、書いていきます。
今回はこちらに参加しました。
http://ccds.or.jp/event/2016/20161201/20161201.html
参加動機
セキュリティミニキャンプ2016の事前学習になると思ったので、参加しました。(特に、CAN busを用いた演習) また、デモが複数あるとゆうことだったので、「イベントでしか得られないものがあるのでは?」と思ったのでいきました。
セッションのまとめ
全体的にまとめていきます。 CCDSの取り組みを各分野についての発表が15分のが数回あった感じです。15分なので、そんなに深くは踏み込んでないです。会社紹介・ツール紹介・仕事の実行フェーズ・研究内容などの紹介がなされてました。ちょっと、書くのが面倒なので、詳細は割愛しますね。詳しくは、CCDSの公式ホームページなどに書かれています。
参加してみての感想
「イベントの影響力は凄いなー」と思いました。 やっぱり、オンライン配布されている資料を見るより、イベントに行くと、モチベーションに繋がるのでいいですね。早速、BadUSBでも作ってみます。
シスカンでのモチベーション上がったので、行ってよかったです。
CAN busも何となくわかったので、良しとします。
さて、2日目も行って来ます。「iotとセキュリティの未来(シンポジウム)」についての話のようです。楽しみです。
systemdの隠れたログを見よう
前置き
こんにちは、久しぶりのかずみんです。 あんまり書くことなかったので、書いてませんでした w
今回、私の都合により、日本語を適当にやっていきますw ところどころ日本語が思いつかないw
何やるの?
systemdで具体的なエラー内容を見つけるTipsを紹介します。 念のために言っておきますが、必ず見つかるわけではないですw
しかし、低レイヤーのlogを見たり、エスパーして、問題解決するよりもマシ?だと思います。
適当に教える
unitファイルのExecStartをsystemctlを介さずに叩くのです。 環境変数が使用されている場合は、設定ファイルへ探しに出かけましょう。
もうちょっと具体的に
fail2ban起動時に実際にエラーを起こして、エラー退治に行きましょう。 すみませんが、fail2banの説明とインストール手順は、割愛します。 ちなみに、筆者は、fail2banを本番導入してますが、こだわりは特にないですw
fail2ban:http://www.fail2ban.org/wiki/index.php/Main_Page
はい、スタート。 はい。こんな感じでエラー経験しますよね。はい。
$ systemctl start fail2ban Job for fail2ban.service failed because the control process exited with error code. See "systemctl status fail2ban.service" and "journalctl -xe" for details.
で、指示通り。エラーを見ます。はい。
journalctl -ex Aug 30 23:02:32 host[1]: fail2ban.service failed. Aug 30 23:02:32 host[1]: fail2ban.service holdoff time over, scheduling restart. Aug 30 23:02:32 host[1]: start request repeated too quickly for fail2ban.service Aug 30 23:02:32 host[1]: Failed to start Fail2Ban Service.
$ systemctl status Aug 30 23:02:32 iscsi.st.ie.u-ryukyu.ac.jp systemd[1]: fail2ban.service holdoff time over, scheduling restart. Aug 30 23:02:32 iscsi.st.ie.u-ryukyu.ac.jp systemd[1]: start request repeated too quickly for fail2ban.service Aug 30 23:02:32 iscsi.st.ie.u-ryukyu.ac.jp systemd[1]: Failed to start Fail2Ban Service. Aug 30 23:02:32 iscsi.st.ie.u-ryukyu.ac.jp systemd[1]: Unit fail2ban.service entered failed state. Aug 30 23:02:32 iscsi.st.ie.u-ryukyu.ac.jp systemd[1]: fail2ban.service failed.
いや。でも。でも。エラー内容が抽象的すぎw
それから、
tail -f /var/log/fail2ban.log
とかやると思いますが、これでもわかりません。
そんなわけで、unitファイルに行きましょう!
$ systemctl cat fail2ban # /usr/lib/systemd/system/fail2ban.service [Unit] Description=Fail2Ban Service Documentation=man:fail2ban(1) After=network.target iptables.service firewalld.service firewalld.service [Service] Type=forking ExecStart=/usr/bin/fail2ban-client -x start ExecStop=/usr/bin/fail2ban-client stop ExecReload=/usr/bin/fail2ban-client reload PIDFile=/var/run/fail2ban/fail2ban.pid Restart=always [Install] WantedBy=multi-user.target
よっしゃ、環境変数がない!:) ExecStartを実行ですよ。うん。こうゆう感じです。
$ /usr/bin/fail2ban-client -x start ERROR Failed during configuration: File contains no section headers. file: /etc/fail2ban/jail.d/jail.local, line: 27 'enabled = true
来た!最高ですね!/etc/fail2ban/jail.d/jail.localの27行目がおかしいそうです。
ちょっと、はしょりますが、
これで、無事、直りました。 そんなわけで、めでたしめでたし!
最後に
もっと頭の切れたやり方が、あればコメントでもしてもらえると幸いです。 某大学の情報学科でもapacheのエラー箇所が分からないなどの話が横行しています。 そんな時、お勧めではないでしょうか?