時刻設定

# apt-get install ntp

ホスト名

# vi /etc/hostname

LS-XLE9A

# vi /etc/hosts

127.0.0.1       localhost LS-XLE9A

bootlogd

# apt-get install bootlogd

ブート完了後にLED点滅を消す

これでブート完了後に青いLEDが点滅から点灯に変わるようになる
# vi /etc/rc.local

echo off > /proc/buffalo/gpio/led/power_blink
exit 0

シャットダウン対応

素の状態だとshutdown -h nowでも再び起動してしまうため対応が必要
シャットダウンするようになるので、起動する際には電源再投入する。
# vi /etc/init.d/halt

echo off > /proc/buffalo/gpio/led/power
echo off > /proc/buffalo/gpio/power_control/hdd0
sleep 300
halt -d -f $netdown $poweroff $hddown

NAS化

# vi /etc/fstab

/dev/sda4       /mnt/disk1      ext3    defaults        1       1

# mkdir /mnt/disk1
# mount /dev/sda4 /mnt/disk1
# mkdir /mnt/disk1/share
# chmod 777 /mnt/disk1/share
# apt-get install samba
# mv /etc/samba/smb.conf /etc/samba/smb.conf.org
# vi /etc/samba/smb.conf

#
# smb.conf
#

[global]
	# Default Settings
	workgroup = WORKGROUP
	server string = %h server
	dns proxy = no
	log file = /var/log/samba/log.%m
	max log size = 1000
	syslog = 0
	panic action = /usr/share/samba/panic-action %d
	encrypt passwords = true
	passdb backend = tdbsam
	obey pam restrictions = yes
	unix password sync = yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	pam password change = yes
	map to guest = bad user
	
	printing = bsd
	load printers = no
	printcap name = /dev/null
	
	# Custom Settings
	unix charset = UTF-8
	dos charset = CP932
	netbios name = KUROBOX-PRO
	guest account = nobody
	null passwords = yes

#[printers]
#	# Default Settings
#	comment = All Printers
#	browseable = no
#	path = /var/spool/samba
#	printable = yes
#	guest ok = no
#	read only = yes
#	create mask = 0700
#
#[print$]
#	# Default Settings
#	comment = Printer Drivers
#	path = /var/lib/samba/printers
#	browseable = yes
#	read only = yes
#	guest ok = no
#
[homes]
	# Default Settings
	comment = Home Directories
	browseable = no
	read only = yes
	create mask = 0700
	directory mask = 0700
	valid users = %S

[share]
	comment = KURO-BOX Local Drive.
	path = /mnt/disk1/share
	guest ok = yes
	writable = yes

# /etc/init.d/samba restart
これで超基本的なNASのできあがり。
Printer関連のエラーログが出ていたので一部設定変更を加えている。

fail2ban

/var/log/auth.logに大量の不正アクセスがあるためfail2banを導入、不正アクセスは12時間DROPさせる。
# apt-get install fail2ban
# vi /etc/fail2ban/jail.conf

ignoreip = 127.0.0.1/8 192.168.0.0/24
bantime  = 43200

backend = gamin

# /etc/init.d/fail2ban restart
# iptables -L
libkmod: ERROR ../libkmod/libkmod.c:554 kmod_search_moddep: could not open moddep file '/lib/modules/3.3.4-88f6281/modules.dep.bin'
iptables v1.4.14: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
あれ?iptablesが使えるようにカーネルがビルドされていないのが原因か…
iptablesが使えるようにカーネル再構成でカーネルを入れ替えて再起動
リトライ
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
DROP       all  --  115.230.126.149      anywhere
RETURN     all  --  anywhere             anywhere
できた
それでも結構Ban、Unbanが繰り返されログがふくれるので、恒久的にBanするようにブラックリスト対応する。
ブラックリストの追加
# vi /etc/fail2ban/action.d/iptables-multiport.conf

actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
+             cat /etc/fail2ban/ip.blacklist | while read IP; do iptables -I fail2ban-<name> 1 -s $IP -j DROP; done

# vi /etc/fail2ban/ip.blacklist

115.0.0.0/8
223.0.0.0/8
:

# service fail2ban restart

exim ipv6無効化

# vi /etc/exim4/update-exim4.conf.conf

dc_local_interfaces='127.0.0.1 ; ::1'
↓
dc_local_interfaces='127.0.0.1'


ログ出力先を/dev/ram1に変更する

# mv /var/log /var/log.bk
# mkdir /var/log
# vi /etc/fstab

/dev/ram1                                       /var/log        tmpfs   defaults                0       0

不要なログを出力しないように編集
# vi /etc/rsyslog.conf

#daemon.*                       -/var/log/daemon.log
#kern.*                         -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
#mail.*                         -/var/log/mail.log
#user.*                         -/var/log/user.log
#mail.info                      -/var/log/mail.info
#mail.warn                      -/var/log/mail.warn
#mail.err                       /var/log/mail.err
#news.crit                      /var/log/news/news.crit
#news.err                       /var/log/news/news.err
#news.notice                    -/var/log/news/news.notice
#*.=debug;\
#       auth,authpriv.none;\
#       news.none;mail.none     -/var/log/debug

始動時に必要なディレクトリとファイルを作成する
# vi /etc/rc.local

mkdir -p /var/log/apt
mkdir -p /var/log/exim4
mkdir -p /var/log/fsck
mkdir -p /var/log/ntpstats
mkdir -p /var/log/samba
mkdir -p /tmp/ntp
mkdir -p /tmp/sanba

chown root.Debian-exim /var/log/exim4
chown root.ntp /var/log/ntpstats
chown root.adm /var/log/samba

touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp

chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp

service samba restart

# reboot
sambaのログだけ出てなかったので苦肉の策でここで再起動した。

  • logrotateで失敗しているのを発見
/etc/logrotate.d/aptitude
/etc/logrotate.d/dpkg
/etc/logrotate.d/fail2ban
/etc/logrotate.d/rsyslog
これらにsu root admを追加

/etc/logrotate.conf
にsu root utmpを追加
【例】
/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
+   su root utmp
}

未使用時HDDスピンダウン

# apt-get install hdparm
# hdparm -S 120 /dev/sda
# vi /etc/rc.local
:
hdparm -S 120 /dev/sda
:
これで10分アクセスがないとスピンダウンする。
LS-XLはもともとファンレスなのでHDDが止まれば無音状態になる。
configファイルに定義してrebootしても動いていない様子だったがコマンド入力したらいつの間にか止まっていたので、とりあえずrc.localに入れておくことにした。
なにが問題だったのかは別の機会に検証する。

メモ

1日以内に更新されたファイルを検索する。(/sys, /proc, /devを除く)
cd /
find . -path "./sys" -prune -o -path "./proc" -prune -o -path "./dev" -prune -o -mtime -1 -ls
tmpfsがマウントされているところも除くと
find . -path "./sys" -prune -o -path "./proc" -prune -o -path "./dev" -prune -o -path "./tmp" -prune -o -path "./run" -prune -o -path "./var/log" -prune -o -path "./var/lib/ntp" -prune -o -path "./var/cache/samba" -prune -o -mtime -1 -ls

随時書き出しされるファイルはtmpfsにマウントされている/tmp以下に移動する
cd /var/lib
mv ntp /tmp/ntp
ln -s /tmp/ntp ntp
cd /var/cache
mv samba /tmp/samba
ln -s /tmp/samba samba

ディスク書き出し抑止のため色々調整した結果のrc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

mkdir -p /var/log/apt
mkdir -p /var/log/exim4
mkdir -p /var/log/fsck
mkdir -p /var/log/ntpstats
mkdir -p /var/log/samba
mkdir -p /tmp/ntp
mkdir -p /tmp/samba
mkdir -p /tmp/man
mkdir -p /tmp/logrotate

chown root.Debian-exim /var/log/exim4
chown root.ntp /var/log/ntpstats
chown root.adm /var/log/samba
chown root.adm /tmp/samba
chown man.root /tmp/man
chown ntp.ntp /tmp/ntp

chmod +s /tmp/man

touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
touch /var/lib/ntp/ntp.drift
echo 0 > /var/lib/ntp/ntp.drift
echo "logrotate state -- version 2" > /tmp/logrotate/status
/usr/sbin/logrotate /etc/logrotate.conf

chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp
chown ntp.ntp /var/lib/ntp/ntp.drift

chmod 660 /var/log/btmp
chmod 664 /var/log/wtmp

service samba restart
service exim4 stop
hdparm -S 120 /dev/sda

echo off > /proc/buffalo/gpio/led/power_blink
exit 0
最終更新:2015年05月25日 13:18