FreeBSDのファイアーウォール

はじめに

FreeBSDではIPFWを用いてパケットフィルタリングを行うことが可能である。利用方法についてこの記事で書いていく(備忘録的な意味合いが強い)

IPFWの準備

FreeBSDのインストール時に通常はipfwは入っているのでインストールの話は触れません。

# ipfw -h

このコマンドでCommand not foundとでなければipfwはすぐに使えます。もしなかった場合はカーネル再構築の必要があるのでここ等を参考にしてインストールしてください。

IPFWを利用するには/etc/rc.confIPFWを利用する記述を行います。

/etc/rc.conffirewall_enable="YES"を記述します。

# vi /etc/rc.conf

keymap="jp.106.kbd"
ifconfig_re0="DHCP"
ifconfig_re0_ipv6="inet6 accept_rtadv"
sshd_enable="YES"
apache24_enable="YES"

firewall_enable="YES"

# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

IPFWの起動と終了

  • IPFWの起動方法
# /etc/rc.d/ipfw start
  • IPFWの停止方法
# /etc/rc.d/ipfw stop
# /etc/rc.d/ipfw restart

フィルタの見方

/etc/rc.confの書き込み時にfirewall_enableのみの書き込みをするとフィルタリングの設定は/etc/rc.firewallから引っ張ってきます。

デフォルトの設定はこのようになっています。

00100      0        0 allow ip from any to any via lo0
00200      0        0 deny ip from any to 127.0.0.0/8
00300      0        0 deny ip from 127.0.0.0/8 to any
00400      0        0 deny ip from any to ::1
00500      0        0 deny ip from ::1 to any
00600      2      136 allow ipv6-icmp from :: to ff02::/16
00700      0        0 allow ipv6-icmp from fe80::/10 to fe80::/10
00800      0        0 allow ipv6-icmp from fe80::/10 to ff02::/16
00900      0        0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000      0        0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
65535 210437 31011115 deny ip from any to any

1フィールド目がフィルタの番号、4フィールド目がルールになります。番号の小さい順にルールが適用されていき最後の65535番のルールで残ったパケットを拒否します。

デフォルトの設定だと他の計算機からのアクセスを拒絶します。

フィルタの設定(既に起動しているipfwにルールを追加する)

ipfwが起動している場合はipfwコマンドを利用して新規にルールを追加していきます。

コマンドは下記のようなフォーマットで作成していきます。

# ipfw add    300    allow    ip from 133.68.18.100 to any
  ipfw (命令) (番号) (許可/拒否) (対象)

ルールを追加する際は命令をaddに、ルールを消去する際は命令をdeleteにしていくという感じになります。

fromは送信元の指定、toは送信先への指定となります

  • パケット許可のルール例
# ipfw add 350 allow ip from 133.68.18.100 to any 

# ipfw add 450 allow tcp from 133.20.11.3 to 133.20.11.3

# ipfw add 65000 allow ip from any to any
  • パケット拒絶のルール例
# ipfw add 350 deny ip from 133.68.18.100 to any 

# ipfw add 450 deny tcp from 133.68.20.11.3 to any 

フィルタの設定(ipfwの起動前にルールを設定する)

この場合は/etc/rc.firewallに記述する必要があります。/etc/rc.firewallシェルスクリプトなので、上のコマンドを記述すれば問題ありません。

# vi /etc/rc.firewall

setup_loopback
setup_ipv6_mandatory

${fwcmd} add 1100 deny ip from 133.68.18.105 to any
${fwcmd} add 1200 allow tcp from any to any

デフォルトのファイルにfwcmd="/sbin/ipfw -q"となっていたのでこんな記述方式になります。

書き込んだ後、ipfwを再起動すると

# ipfw -a list
00100      0        0 allow ip from any to any via lo0
00200      0        0 deny ip from any to 127.0.0.0/8
00300      0        0 deny ip from 127.0.0.0/8 to any
00400      0        0 deny ip from any to ::1
00500      0        0 deny ip from ::1 to any
00600      0        0 allow ipv6-icmp from :: to ff02::/16
00700      0        0 allow ipv6-icmp from fe80::/10 to fe80::/10
00800      0        0 allow ipv6-icmp from fe80::/10 to ff02::/16
00900      0        0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000      0        0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
01100      0        0 deny ip from 133.68.18.105 to any
01200     59     4520 allow tcp from any to any
65535 629543 92603950 deny ip from any to any

と設定されています。

AngstromCTF2017-供養

Angstrom CTF 2017にTeam:Harekazeとして参加していました。チーム総得点は905点。そのうちの60点を入れました。

[Forensic 60] Document

% binwalk essay.docx 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
279           0x117           Zip archive data, at least v2.0 to extract, compressed size: 936, uncompressed size: 2514, name: word/settings.xml
1262          0x4EE           Zip archive data, at least v2.0 to extract, compressed size: 442, uncompressed size: 1277, name: word/fontTable.xml
1752          0x6D8           Zip archive data, at least v2.0 to extract, compressed size: 265, uncompressed size: 497, name: word/webSettings.xml
2067          0x813           Zip archive data, at least v2.0 to extract, compressed size: 308, uncompressed size: 669, name: docProps/app.xml
2685          0xA7D           Zip archive data, at least v2.0 to extract, compressed size: 332, uncompressed size: 612, name: docProps/core.xml
3362          0xD22           Zip archive data, at least v2.0 to extract, compressed size: 2799, uncompressed size: 29158, name: word/styles.xml
6206          0x183E          Zip archive data, at least v2.0 to extract, compressed size: 2432, uncompressed size: 19609, name: word/document2.xml
8714          0x220A          Zip archive data, at least v2.0 to extract, compressed size: 232, uncompressed size: 836, name: word/_rels/document2.xml.rels

いろいろあるのでとりあえずextract

% binwalk -e essay.docx

extractした中のword/document2.xmlの中に普通にflagがあるのでsubmitして終わり(}が足りないので補充する)

actf{too_bad_for_zip_recovery}

最後

暗号問題をやりたくて参加したはずなのに、暗号問題を解けずして終わる不甲斐ない結果。 もっと精進せねば

multicastとwar gameはwriteupが出たら解き直す

Android端末へのUSBデバッグ

はじめに

少し手間取ったので備忘録を残しておく。

目的

$ adb devices
List of devices attached
xxxxxxx device

となるようにする。(要はadbでAndroid端末を認識させる)

環境

linux側の設定

設定ファイルを作成する

  • VendorIDを調べる

AndroidLinux機に接続した後、lsusbを叩くと端末を認識しているはず ここで表示されない場合ケーブルに問題があると思われる

$ lsusb
------
Bus 002 Device 012: ID 0b05:7781 ASUSTek Computer
-------

ここでIDの横の数字(私の場合だと0b05)をメモしておく

  • 設定ファイルに書き込む(無ければ作成する)
$ sudo touch /etc/udev/rules.d/51-android.rules
$ sudo vim /etc/udev/rules.d/51-android.rules
SUBSYSTTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666", GROUP="plugdev"
  • adbのリセット 設定ファイルを書き込んだらudevとadbのリセットを行っておく
$ udevadm control --reload-rules
$ ./adb kill-server
$ ./adb start-server

Linux側はこれでOK(少なくとも私の場合は)

Android側の設定

ここで少し詰まった(くだらないミスだけど)

開発者オプションを表示させる

[設定]→[端末情報]→[ソフトウェア情報]と移動し、ビルド番号を7回タップすると開発者オプションが設定画面に表示される

開発者オプションでやること

これだけで問題ない人もいるみたい(検索した限り)….

私は接続できませんでしたが

  • USB設定の選択をMTPからPTPに切り替える

とadb devicesで認識されるようになりました。

以上!