OpenWrt 化デバイスでセキュリティ向上に役立てる

ペネトレーションテスト

みなさんは自宅のルーターやファイアウォールは何を利用しているでしょうか。コレガとかバッファローとかですかね。私の場合、長年 Yamaha と NetScreen 、Juniper 社のものを利用してきました。ただし、JunOS はあまり触っておらず Screen OS の方を主に利用していて、UI が優秀で非常に使いやすいのです。Yamaha も VPN ルーター、VoIP とかは使いやすいですがファイアウォールとしては Juniper かなという印象です。しかし、ScreenOS もオワコンですし大分古くなってきたことに加えて、ヤフオクで落札しても ScreenOS / JunOS のイメージが個人では入手困難だったりします。そこで、オープンソースでなにか良いものはないかと探していたところ、「大破ログ」さんのブログ記事を拝見し、これは良さそうだと実際に試してみることにしました。

事前準備

現時点で最新バージョンの Openwrt カーネルおよび sysupgrade 用バイナリは 23.05.5 でしたので以下からダウンロード先を確認しておきます。
https://firmware-selector.openwrt.org/?version=23.05.5&target=mvebu%2Fcortexa9&id=fortinet_fg-50e

TFTP サーバーの構築については割愛します。
OpenWrt のカーネルを読み込んだらバックアップ不要なら D バックアップ取得するならば R 押します。このメニューは FortiGate 社の Administration Guide にも記載があります。

wget をインストールしてファームウェアイメージをダウンロードする

# cd /tmp && opkg update && opkg install wget && wget https://downloads.openwrt.org/releases/23.05.5/targets/mvebu/cortexa9/openwrt-23.05.5-mvebu-cortexa9-fortinet_fg-50e-squashfs-sysupgrade.bin

ファームフェアを sysupgrade でフラッシュする

# cd /tmp && sysupgrade -n -v openwrt-23.05.5-mvebu-cortexa9-fortinet_fg-50e-squashfs-sysupgrade.bin

root ユーザのパスワード設定とログイン認証

# passwd

FortiGate 50E をシャットダウンしてから抜線する

poweroff

補足情報

  • FortiGate 50E のデフォルトユーザ、パスワードは admin / パスなしです
  • FortiGate の FortiOS が起動してリブートしたい場合は execute reboot で再起動できます

作業ログ

BusyBox v1.36.1 (2024-09-23 12:34:46 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 23.05.5, r24106-10cc5fcd00
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:/# mkdir /tmp/mtd
root@OpenWrt:/# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 001c0000 00010000 "u-boot"
mtd1: 00010000 00010000 "firmware-info"
mtd2: 00010000 00010000 "dtb"
mtd3: 00010000 00010000 "u-boot-env"
mtd4: 00010000 00010000 "board-info"
mtd5: 00600000 00010000 "kernel"
mtd6: 01800000 00010000 "rootfs"
mtd7: 00600000 00010000 "kn2"
mtd8: 01800000 00010000 "rfs2"
mtd9: 01200000 00010000 "part1"
mtd10: 01200000 00010000 "part2"
mtd11: 01e00000 00010000 "config"
root@OpenWrt:~# cd /tmp/mtd/
root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock1 of=mtd1_firmware-info.bin
128+0 records in
128+0 records out
root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock5 of=mtd5_kernel.bin
12288+0 records in
12288+0 records out
root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock6 of=mtd6_rootfs.bin
49152+0 records in
49152+0 records out
root@OpenWrt:/tmp/mtd# ls -al
drwxr-xr-x    2 root     root           100 Nov  3 16:26 .
drwxrwxrwt   16 root     root           420 Nov  3 16:23 ..
-rw-r--r--    1 root     root         65536 Nov  3 16:26 mtd1_firmware-info.bin
-rw-r--r--    1 root     root       6291456 Nov  3 16:26 mtd5_kernel.bin
-rw-r--r--    1 root     root      25165824 Nov  3 16:27 mtd6_rootfs.bin
root@OpenWrt:/tmp/mtd# scp ./*.bin daisuke@192.168.11.254:/home/daisuke/

Host '192.168.11.254' is not in the trusted hosts file.
(ssh-ed25519 fingerprint SHA256:Q2pH1vtP4nB/WndOjdFvlfr2lSr9nzmU9l/oeQa/a8U)
Do you want to continue connecting? (y/n) y
daisuke@192.168.11.254's password: 

参考サイト

コメント

タイトルとURLをコピーしました