2017年06月07日

Ubuntu サーバの設定 Windowsファイルサーバー(セキュリティ強化)

WindowsPC とLinuxPC でファイルを共有するためのファイルサーバーとして、
「Samba(サンバ)」を使い、共有環境を構築する。
簡易で構築する方法は以前に紹介した。
せっかくなので、セキュリティを意識したい。
アクセス制御としては、組み合わせで様々パターン設定ができるので、環境に応じて取捨選択する。




①共有ディレクトリを隠しディレクトリにする


ディレクトリがわかっていれば意味はないが、Windowsエクスプローラ上でパッと見、アクセス先が見えないので、誤魔化すことができる。

smb.confの設定


共有ディレクトリのセクションへ記述。

browseable

"no"を指定することで、「ネットワークコンピュータ」に表示させず、隠し共有ディレクトリになる。
(参考:Samba ドキュメント

([Share]セクションがあったとする)

[Share]
・・・
browseable = no
・・・

・・・







②接続インターフェースの制限


SambaサーバーのPCが複数のNICを使ってネットワークを構築している場合に、特定のNICだけでSambaを有効としたい場合に制限できる。



smb.confの設定


以下、[global] セクションへ記述する(セクションのどこかに記述してあればよい)。


interfaces

Sambaのデフォルトではデータをプライマリのネットワークインタフェースにしか送出しない。複数のNICが存在する環境の場合は、期待したネットワークをプライマリネットワークとして選択するとは限らないので、送信したいインタフェースリストを正しく指定する。
(参考:Samba ドキュメント

bind interfaces only

interfacesと組み合わせて設定する。このパラメータに"yes"が指定されているとき、指定されたネットワークのみ利用可能となる。
このパラメータを指定するときは必ずlocalhost(127.0.0.1)のIPアドレスをinterfacesに含むようにすること。
(参考:Samba ドキュメント

interfaces = 127.0.0.1 eth0
bind interfaces only = yes







③接続IPアドレスの制限


Sambaサーバーに接続してくるIPアドレスを使って制限をかける。



smb.confの設定


以下、[global] セクションへ記述する(セクションのどこかに記述してあればよい)。

hosts allow

接続を許可するIPアドレスを指定する。
localhost のアドレスである 127.0.0.1 からのアクセスは、
hosts deny パラメーターで明示的に禁止されない限り、常にアクセスを許可されている。
(参考:Samba ドキュメント

この設定をするのであれば、次の hosts deny と合わせて設定し、許可するアドレスを明確にし、わかり易くしておくほうが良い。

hosts deny

このパラメーターで指定されたものは、アクセスが拒否される。
"all"を指定することで、デフォルトアクセス禁止となる。
これを使う場合は、localhost のアドレス を hosts allow に指定することを忘れないこと。
(参考:Samba ドキュメント


hosts allow = 192.168.1. 127.
hosts deny = all







ユーザー設定


以降のアクセス制限ではユーザー設定が必要となるので、先にユーザー設定について説明する。


Sambaユーザー登録


Sambaを利用するためだけでも、Linuxユーザーの作成が必要。
Linuxユーザーに登録されているユーザーと照合して、Sambaユーザーが登録される。
(対象となるLinuxユーザーは、/etc/passwd ファイルで確認できる)

Linuxユーザーを登録をする。

sudo useradd hogehoge -s /bin/false

Sambaを使うためだけに作成するユーザーの場合、-s オプションで、"/bin/false" を付けて登録するとよい。(ログインシェルを使わないように指定)


sudo passwd hogehoge

新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
Samba用とLinux用のパスワードは別々に設定できる。
ログインシェルを使わないとしても、ユーザーを作成しているのでパスワードの設定もしておく。


登録対象となるユーザーを確認できたら
Sambaユーザーを登録する。

pdbeditコマンドはSamba3.0以降の対応
ユーザーをデータベースに追加する -a オプションを指定する。
ユーザー名を -u オプションで合わせて指定する。

sudo pdbedit -a -u hogehoge



対話式でパスワードを設定する。
new password:
retype new password:
Samba用とLinux用のパスワードは異なる設定にできる。


Sambaユーザーの一覧を確認


-L オプションを使う。

sudo pdbedit -L


さらにユーザーの詳細情報も表示したいのであれば、-v オプションをつける。

sudo pdbedit -L -v



Sambaユーザーを削除する


-x オプションを使う。

sudo pdbedit -x -u hogehoge

Sambaユーザーのために、Linuxユーザーを追加したのであれば、合わせて削除しておく。

sudo userdel hogehoge



Sambaユーザーのパスワード変更


パスワード変更は、pdbeditコマンドでは変更できない。
smbpasswdコマンドを使う。

sudo smbpasswd -U hogehoge







グループ設定


ユーザー設定を行ったら、合わせてグループ設定も行っておくとよい。
(ここで扱うグループ設定は、Linuxで管理するグループのこと)
ユーザー単位だけではなく、グループ単位でアクセス制御ができるようになる。


グループ新規作成


例として、-g オプションでIDを500番で指定し、グループを新規作成した。
IDの指定は必須ではないが、
例えば「共有ディレクトリのアクセス権を管理するグループIDは500番台とする」とルールを決めておけば、後々グループが増加しても整理し易いと思う。

sudo groupadd -g 500 filegrp




ユーザーをグループに追加


$ id hogehoge
uid=1001(hogehoge) gid=1001(hogehoge) groups=1001(hogehoge)

sudo gpasswd -a hogehoge filegrp


$ id hogehoge
uid=1001(hogehoge) gid=1001(hogehoge) groups=1001(hogehoge),500(filegrp)


"usermod" コマンドでも良いが、誤ったオプション指定をすると所属グループが置き換わるので、"gpasswd" コマンドを使っている。


グループからユーザーを削除


sudo gpasswd -d hogehoge filegrp


$ id hogehoge
uid=1001(hogehoge) gid=1001(hogehoge) groups=1001(hogehoge)



グループを削除


不要となったグループを削除する。

sudo groupdel filegrp







④Guest接続を拒否


以前に紹介した設定は、アクセス制限せず、すべてをGuest接続としてSambaへのアクセスを許可したが、これとは逆に、ユーザー登録していない接続をすべて拒否する。

smb.confの設定


[global] セクションへ記述。

map to guest

"Never"を指定する。ユーザー認証に失敗した場合にアクセスが拒否される。
(参考:Samba ドキュメント



デフォルトの設定でGuest接続を拒否する。
サーバーアクセス時にユーザー認証が行われ、許可された場合のみ接続できる。

####### Authentication #######
~ 省略 ~
# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
map to guest = Never







⑤共有ディレクトリ単位でGuest接続を拒否


Guest接続を拒否とは違い、デフォルト設定ではGuest接続を許可しておき、共有ディレクトリ単位で許可・禁止を設定する。

smb.confの設定


[global] セクションへ記述。

map to guest

"Bad User"を指定する。ユーザーが存在しなかった場合はGuestでログインすることを許可。


####### Authentication #######
~ 省略 ~
# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
map to guest = Bad User




共有ディレクトリのセクションへ記述。

guest ok

Guest接続を許可する場合に"yes"を指定。"map to guest"が有効な場合のみ有効。
(参考:Samba ドキュメント


例えば、複数の共有ディレクトリが用意されており、
Guest接続を許可しないディレクトリには、"guest ok = no" を指定する。
こうすると、共有ディレクトリ・アクセス時にユーザー認証が行われる。

([Share]セクションと、[Data]セクションがあったとする)

[Share]
・・・
guest ok = yes
・・・

[Data]
・・・
guest ok = no
・・・







⑥特定のユーザー(グループ)だけアクセス許可


共有ディレクトリへのアクセス権を特定のユーザー(グループ)に設定する。

smb.confの設定


共有ディレクトリのセクションへ記述。

valid users

指定されたユーザー(グループ)だけが共有ディレクトリにアクセスできる。グループを指定する場合は、"@"をつけグループ名を指定する。
(複数指定する場合は、半角スペースか、カンマ(,)で区切る)
(参考:Samba ドキュメント

([Share]セクションがあったとする)

[Share]
・・・
valid users = hoge2 @filegrp
・・・

・・・








⑦特定のユーザー(グループ)だけアクセス拒否


特定のユーザー(グループ)だけアクセス許可の逆。
共有ディレクトリへのアクセス権を特定のユーザー(グループ)だけ禁止にする。

smb.confの設定


共有ディレクトリのセクションへ記述。

invalid users

指定されたユーザー(グループ)だけを共有ディレクトリへのアクセスを禁止する。グループを指定する場合は、"@"をつけグループ名を指定する。
(複数指定する場合は、半角スペースか、カンマ(,)で区切る)
invalidとvalidが同時に指定されている場合はinvalidの設定を優先。
(参考:Samba ドキュメント


([Share]セクションがあったとする)

[Share]
・・・
invalid users = hoge2 @filegrp
・・・

・・・







⑧特定のユーザー(グループ)だけ読み書き許可


共有ディレクトリで、特定のユーザー(グループ)だけ読み書きを許可に設定する。

smb.confの設定


共有ディレクトリのセクションへ記述。

read only

"yes"を指定することで、共有ディレクトリを読み取り専用に設定する。
(参考:Samba ドキュメント

write list

指定されたユーザー(グループ)だけが読み書きを許可される。グループを指定する場合は、"@"をつけグループ名を指定する。
(複数指定する場合は、半角スペースか、カンマ(,)で区切る)
read onlyパラメータへの例外設定として用いる。
(参考:Samba ドキュメント


([Share]セクションがあったとする)

[Share]
・・・
read only = yes
write list = hoge2 @filegrp
・・・

・・・






⑧特定のユーザー(グループ)だけ書き込み禁止


共有ディレクトリで、特定のユーザー(グループ)だけ書き込みを禁止に設定する。

smb.confの設定


共有ディレクトリのセクションへ記述。

read only

"no"を指定することで、共有ディレクトリを読み書き許可に設定する。

read list

指定されたユーザー(グループ)だけが読み込み専用に設定される。グループを指定する場合は、"@"をつけグループ名を指定する。
(複数指定する場合は、半角スペースか、カンマ(,)で区切る)
read onlyパラメータへの例外設定として用いる。
(参考:Samba ドキュメント



([Share]セクションがあったとする)

[Share]
・・・
read only = no
read list = hoge2 @filegrp
・・・

・・・




まとめ


パラメータを組み合わせて、様々なアクセス制御が可能。
結局どうすればよいのか?と悩ましい。
家庭内で使う程度であれば、④Guest接続を拒否だけでも十分だと思う。
あと、①共有ディレクトリを隠しディレクトリにするのも有効だと思う。



Ubuntu サーバの設定 Windowsファイルサーバー


posted by Zorinos at 20:00| Comment(0) | Linux | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください
ブログランキング・にほんブログ村へ
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。