Skip to content

ab-ten/smbjail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smbjail

FreeBSD の AppJail を使用して、簡易設定の Samba 4 サーバーを jail 環境で構築・実行するプロジェクトです。

概要

このプロジェクトは、FreeBSD 上で AppJail を利用して Samba 4 ファイルサーバーを安全に実行するための自動化ツールです。jail 環境により、ホストシステムから隔離された安全な SMB 共有を提供します。

主な特徴

  • AppJail による隔離: jail 環境でSambaを実行し、セキュリティを強化
  • 自動構築: build.sh スクリプトにより、jail の作成から設定まで自動化
  • カスタマイズ可能: 環境変数ファイルによる柔軟な設定
  • シンプルなネットワーク設定: VNET/VIMAGE や alias を使用せず、ホストのIPアドレスをそのまま使用する従来型の jail 構成
  • Samba 4.20: 最新の Samba バージョンを使用
  • SMB3.11 以上: 古いプロトコルを無効化し、セキュリティを向上
  • nullfs マウント: ホストのディレクトリを jail にマウント

必要要件

  • FreeBSD (ZFS推奨)
  • AppJail がインストール済み、かつ appjail fetch で基本イメージが取得済みであること。
  • root権限

セットアップ

1. パスワードファイルの作成

Samba ユーザーのパスワードを含むファイルを作成します:

sudo mkdir -p /root
echo "your_secure_password" | sudo tee /root/smbjail-passwd
sudo chmod 600 /root/smbjail-passwd

2. 環境のカスタマイズ (オプション)

デフォルト設定を変更したい場合は、.build.env ファイルを作成し、編集します:

cat > .build.env <<EOF
JAIL_NAME=smbjail
USERNAME=smbuser
PASSWORD_FILE=/root/smbjail-passwd
SHARE_SRC=/ztank/smbshare
SHARE_NAME=share
PKGCACHE=/home/appjail-pkgcache
JAIL_IPADDR=192.168.1.16
SMB_HOSTS_ALLOW=192.168.1.99
EOF

3. 共有ディレクトリの作成

共有するディレクトリを作成します。.build.env で設定した SHARE_SRC, USERNAME に合わせてください:

sudo mkdir -p /ztank/smbshare
sudo chown smbuser:smbuser /ztank/smbshare

4. jail のビルドと起動

sudo sh build.sh

デフォルト設定

項目 デフォルト値 説明
JAIL_NAME smbjail jail の名前
USERNAME smbuser Samba ユーザー名
PASSWORD_FILE /root/smbjail-passwd パスワードファイルのパス
SHARE_SRC /ztank/smbshare 共有するホストのディレクトリ
SHARE_NAME share Samba 共有名
PKGCACHE /home/appjail-pkgcache パッケージキャッシュディレクトリ
JAIL_IPADDR 192.168.1.16 jail の IP アドレス(サーバーマシンのLAN上でのIPアドレスを指定する)
SMB_HOSTS_ALLOW 192.168.1.99 接続を許可するホスト

Samba 設定

セキュリティ設定

  • 認証モード: USER (ユーザー認証必須)
  • 最小プロトコル: SMB3.11
  • NetBIOS: 無効 (SMB over TCP/IPのみ)
  • ポート: 445 のみ
  • アクセス制限: hosts allow で指定したホストのみ

共有設定

  • 共有名: share (デフォルト、SHARE_NAME で変更可能)
  • パス: /srv/samba (jail 内)
  • 権限: 読み書き可能
  • ゲストアクセス: 無効
  • ファイルマスク: 0600 (所有者のみ読み書き)
  • ディレクトリマスク: 0700 (所有者のみアクセス)

管理コマンド

jail の状態確認

sudo appjail status smbjail

jail の起動

sudo appjail start smbjail

jail の停止

sudo appjail stop smbjail

jail へのログイン

sudo appjail login smbjail

Samba サービスの再起動 (jail 内)

sudo appjail service jail smbjail samba_server restart
sudo jexec smbjail service samba_server restart

ログの確認

sudo jexec smbjail tail -f /var/log/samba4/log.smbd

トラブルシューティング

接続できない場合

  1. jail が起動しているか確認:

    sudo appjail status smbjail
  2. ファイアウォールで 445 ポートが開いているか確認

  3. SMB_HOSTS_ALLOW に接続元 IP が含まれているか確認

  4. Samba ログを確認:

    sudo jexec smbjail cat /var/log/samba4/log.smbd

パスワードが認証されない場合

パスワードを再設定:

echo "new_password" | sudo tee /root/smbjail-passwd
sudo sh ./build.sh

jail が起動しない場合

Makejail のログを確認:

sudo appjail logs read jails/smbjail/console/2026-01-02.log

Windows からの接続方法

  1. エクスプローラーのアドレスバーに入力:

    \\192.168.1.16\share
    

    share の部分は SHARE_NAME で設定した共有名に置き換えてください

  2. ユーザー名とパスワードを入力:

    • ユーザー名: smbuser (またはカスタマイズした値)
    • パスワード: パスワードファイルに設定した値

アンインストール

jail を削除するには:

sudo appjail stop smbjail
sudo appjail jail destroy smbjail

ライセンス

MIT License - 詳細は LICENSE ファイルを参照してください。

免責事項

このソフトウェアは「現状のまま」で提供され、いかなる保証もありません。

  • 本プロジェクトは個人的な学習・実験目的で作成された小規模なツールです
  • 作者は、このソフトウェアの使用によって生じたいかなる損害についても責任を負いません
  • セキュリティの脆弱性、データ損失、システム障害などのリスクを理解した上でご使用ください
  • 本番環境での使用は推奨しません。使用する場合は必ず自己責任で十分なテストを行ってください
  • このプロジェクトは積極的にメンテナンスされない可能性があります
  • 必要に応じて fork して独自に改造・メンテナンスすることを想定しています
  • サポートやバグ修正の保証はありません

使用前に必ず LICENSE ファイルの全文をお読みください。

注意事項

  • このプロジェクトは root 権限で実行する必要があります
  • パスワードファイルは必ず安全な場所に保管してください
  • 本番環境で使用する場合は、適切なバックアップ体制を構築してください
  • ファイアウォールとアクセス制御の設定を適切に行ってください

参考資料

About

Samba jail made with FreeBSD AppJail

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages