hpマイクロサーバにsambaインストール

SSHのポート変更

SSHのポートを念のため変更しておく。

  1. 設定ファイルを編集する。
    $ sudo vi /etc/ssh/sshd_config
    
    # What ports, IPs and protocols we listen for
    #Port 22
    Port 2022
    ↑のPortを任意のポート番号に変更する
    
  2. 構文チェックし、問題なければ設定変更を反映する。
    $ sudo sshd -t
    $ sudo /etc/init.d/ssh restart
    [ ok ] Restarting ssh (via systemctl): ssh.service.
    
  3. 念のため現在の接続は維持したまま新しくポート22で接続してみて接続できなくなつてゐることを確認する。
  4. 今度は変更したポート番号2022で接続できることを確認する。無事に接続できれば完了。

ユーザ権限変更

リストで書いてるのが面倒になつてきたのでちよつと書き方を変へる。次はsuでrootになれるユーザを制限したりする作業をやる。取り敢へず現在存在するユーザを確認する方法。/etc/passwdファイルに格納されてゐるので適当に開く。

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
(中略)
roki:x:1000:1000:,,,:/home/roki:/bin/bash
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
ntp:x:105:110::/home/ntp:/bin/false

意味は先頭から順に

  • ユーザ名
  • パスワード。xだとシャドウパスワードで意味不明の文字の羅列が書かれてゐた場合は暗号化されたパスワード。基本的にはデフォルトでシャドウパスワードになつてるはず。シャドウパスワードの場合は一般ユーザでは見ることができない /etc/shadow に暗号化されたパスワードが記録されてる。
  • ユーザID
  • グループID
  • 本名
  • ホームディレクトリ
  • ログインシェル

この場合、rokiはシャドウパスワードになつてゐてユーザIDは1000、グループIDは1000、本名(?)は「,,,」、ホームディレクトリは/home/roki、ログインシェルは/bin/bash

続いてグループを確認する。こちらは/etc/groupに格納されてゐるのでcatやvimなんかで適当に開く。

$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
(中略)
roki:x:1000:
ssh:x:109:
ntp:x:110:

意味は先頭から順番に

  • グループ名
  • パスワード。xならシャドウパスワード
  • グループID
  • 所属してるユーザのリスト。カンマ区切り(省略したがcdromやfloppyグループにrokiが所属してる)

自分のIDとか所属グループを確認するには

$ id
uid=1000(roki) gid=1000(roki) groups=1000(roki),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev)

uidがユーザID、gidがグループID、groupsが所属してゐるグループ。

さて、確認ができたところでまづroki以外のユーザを作成する。ここでは追加するユーザ名はuenoにする。

$ sudo adduser ueno
ユーザ `ueno' を追加しています...
新しいグループ `ueno' (1001) を追加しています...
新しいユーザ `ueno' (1001) をグループ `ueno' として追加しています...
ホームディレクトリ `/home/ueno' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
ueno のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
        フルネーム []:
        部屋番号 []:
        職場電話番号 []:
        自宅電話番号 []:
        その他 []:
以上で正しいですか? [Y/n] Y

新しいユーザが作成されたことを下記コマンドで確認する。

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

ログインできることも確認する。ついでにuenoからsu -してrootになれることも確認しておく。

$ su - ueno
ueno@nidf:~$
↑uenoでのログイン成功
ueno@nidf:~$ su -
root@nidf:~#
↑rootにsuできたことを確認

sudoersに登録してないからuenoでsudoは使用できないはずなので一応それも確認しておく。

ueno@nidf:~$ sudo ls

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for ueno:
ueno は sudoers ファイル内にありません。この事象は記録・報告されます。

suでrootになれるユーザを特定のグループに所属してゐるユーザだけにしたい。他のLinuxではwheelグループがそのために使はれてゐるらしいがDebianにはwheelグループがなくadmグループを使ふらしいのでadmにする。

$ sudo usermod -G adm roki

続いてadmグループだけsuでrootになれるやうに設定。

$ sudo vi /etc/pam.d/su

# Uncomment this to force users to be a member of group root
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "root" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
# auth       required   pam_wheel.so
auth       required   pam_wheel.so group=adm
↑を追加

設定が反映されてゐることを確認する。

roki@nidf:~$ su -
パスワード:
root@nidf:~# exit
ログアウト
roki@nidf:~$ su - ueno
パスワード:
ueno@nidf:~$ su -
パスワード:
su: 拒否されたパーミッション

sudoできるrokiをユーザ名で指定してゐたがsudoグループに変更する。先程追加したadmも併記しないとadmグループから削除されるので両方書いておく必要があつた。

$ sudo usermod -G adm,sudo roki
$ sudo visudo

# User privilege specification
root    ALL=(ALL:ALL) ALL
roki    ALL=(ALL:ALL) ALL
↑rokiの行を消す

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
↑が最初から書かれてゐればそのままでいい。なければ追加する

rokiからsudoが使へることを確認する。

ウイルス対策ソフト導入

ウイルス対策ソフトClamAVを導入する。

$ sudo apt-get install clamav clamav-daemon

ウイルス定義ファイルを最新にする。

$ sudo freshclam
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

上のやうなエラーになつた。ロックされてゐるログファイルを一旦削除して作り直す。

$ sudo rm -f /var/log/clamav/freshclam.log
$ sudo touch /var/log/clamav/freshclam.log
$ sudo chown clamav:clamav /var/log/clamav/freshclam.log

もう一度ウイルス定義ファイルを更新。

$ sudo freshclam
ClamAV update process started at Sat Aug 15 16:33:01 2015
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
daily.cvd is up to date (version: 20790, sigs: 1525525, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 266, sigs: 47, f-level: 63, builder: anvilleg)

ウイルススキャンのテストを実行。

$ sudo clamscan --infected --remove --recursive

----------- SCAN SUMMARY -----------
Known viruses: 3944258
Engine version: 0.98.7
Scanned directories: 3
Scanned files: 7
Infected files: 0
Data scanned: 0.01 MB
Data read: 0.00 MB (ratio 2.00:1)
Time: 14.491 sec (0 m 14 s)

ダミーウイルスを用意して検知されるかテスト。

$ wget http://www.eicar.org/download/eicar.com \
http://www.eicar.org/download/eicar.com.txt \
http://www.eicar.org/download/eicar_com.zip \
http://www.eicar.org/download/eicarcom2.zip

ダウンロードされたことを確認。

$ ls -l
合計 16
-rw-r--r-- 1 roki roki  68  8月 15 16:37 eicar.com
-rw-r--r-- 1 roki roki  68  8月 15 16:37 eicar.com.txt
-rw-r--r-- 1 roki roki 184  8月 15 16:37 eicar_com.zip
-rw-r--r-- 1 roki roki 308  8月 15 16:37 eicarcom2.zip

もう一度ウイルススキャンのテストを実行。

$ sudo clamscan --infected --remove --recursive
/home/roki/eicar_com.zip: Eicar-Test-Signature FOUND
/home/roki/eicar_com.zip: Removed.
/home/roki/eicar.com.txt: Eicar-Test-Signature FOUND
/home/roki/eicar.com.txt: Removed.
/home/roki/eicarcom2.zip: Eicar-Test-Signature FOUND
/home/roki/eicarcom2.zip: Removed.
/home/roki/eicar.com: Eicar-Test-Signature FOUND
/home/roki/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Known viruses: 3944258
Engine version: 0.98.7
Scanned directories: 3
Scanned files: 11
Infected files: 4
Data scanned: 0.01 MB
Data read: 0.00 MB (ratio 2.00:1)
Time: 14.458 sec (0 m 14 s)

4ファイルとも検知後に削除されてゐる。本当はこのウイルススキャンを定期的に実行させるスクリプトを書いたりする必要があるはずだけど今回はそこまでできないので後回し。

Sambaの導入

Windowsからアクセスできるディレクトリを設定したいのでSambaをインストールする。

$ sudo apt-get install samba

共有するディレクトリを作成する。

$ sudo mkdir /home/share

作成したディレクトリを確認。

$ ls -l /home/
合計 12
drwxr-xr-x 4 roki  roki  4096  8月 15 17:17 roki
drwxr-xr-x 2 root  root  4096  8月 15 18:44 share
drwxr-xr-x 2 ueno  ueno  4096  8月 15 14:59 ueno

ディレクトリの権限を変更

$ sudo chown nobody:nogroup /home/share
$ sudo chmod 777 /home/share
$ ls -l /home/
合計 12
drwxr-xr-x 4 roki   roki    4096  8月 15 17:17 roki
drwxrwxrwx 2 nobody nogroup 4096  8月 15 18:44 share
drwxr-xr-x 2 ueno   ueno    4096  8月 15 14:59 ueno

sambaの設定。

$ sudo vi /etc/samba/smb.conf

# Windows文字コード
dos charset = CP932
# Linux側の文字コード
unix charset = UTF-8
# 接続できるインターフェイスを制限
interfaces = 127.0.0.0/8 192.168.1.0/24
# interfacesで指定したものだけ接続できるやうにする
bind interfaces only = yes

↓最終行に以下を追加
[share]
path = /home/share
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
share modes = yes

sambaを再起動。

$ sudo /etc/init.d/samba restart
[ ok ] Restarting nmbd (via systemctl): nmbd.service.
[ ok ] Restarting smbd (via systemctl): smbd.service.
[ ok ] Restarting samba-ad-dc (via systemctl): samba-ad-dc.service.

WindowsのPCからパスワード認証なしで \\nidf\share に接続できることを確認。

アクセス制限をした接続についても今後は考へた方がいいかもしれないが今回はそこまで設定しない。