MySQL用のユーザとグループを作成する。

# /usr/sbin/groupadd -g 202 mysql
# /usr/sbin/useradd -u 202 -g 202 -s /sbin/nologin mysql

MySQL用のデータ保存領域を作成する。

# mkdir /data/mysql

MySQLのコンパイル&インストール。
/usr/local/mysqlにインストールする。

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.50.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
$ tar xvzf mysql-5.1.50.tar.gz
$ cd mysql-5.1.50
$ ./configure --prefix=/usr/local/mysql --localstatedir=/data/mysql --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql
$ make
# paco -D make install

MySQLの設定ファイルをテンプレートからコピーして編集する。
とりあえず一か所のみ変更した。

# cp support-files/my-medium.cnf /etc/my.cnf

/etc/my.cnf

#skip-locking
skip-external-locking

権限テーブルを初期化するとデータベースファイルが作成される。

# /usr/local/mysql/bin/mysql_install_db --user=mysql
# ls -al /data/mysql/
total 752
drwx------ 4 mysql root    4096 Sep 24 19:49 .
drwxr-xr-x 3 root  root    4096 Sep 24 19:49 ..
drwx------ 2 mysql root    4096 Sep 24 19:49 mysql
-rw-rw---- 1 mysql mysql  19095 Sep 24 19:49 mysql-bin.000001
-rw-rw---- 1 mysql mysql 723139 Sep 24 19:49 mysql-bin.000002
-rw-rw---- 1 mysql mysql     38 Sep 24 19:49 mysql-bin.index
drwx------ 2 mysql root    4096 Sep 24 19:49 test

起動スクリプトをテンプレートからコピーして編集する。

# cp support-files/mysql.server /etc/init.d/mysql
# chmod 755 /etc/init.d/mysql
# /sbin/chkconfig --add mysql
# /sbin/chkconfig --list |grep mysql
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

起動確認。

# /sbin/service mysql start
Starting MySQL. SUCCESS!

# ps aux |grep sql
root     10144  0.1  0.2   3700  1304 pts/0    S    19:56   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/dti-vps-srv20.pid
mysql    11298  0.0  0.9  36136  5232 pts/0    Sl   19:56   0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql --log-error=/data/mysql/dti-vps-srv20.err --pid-file=/data/mysql/dti-vps-srv20.pid --socket=/tmp/mysql.sock --port=3306

# netstat -an |less
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     574871160 /tmp/mysql.sock

ログも確認しておく。
ここで[Warning]が出ているので/etc/my.cnfにて対応する。(上の説明を参照)

# tail -f /data/mysql/bruna.err
100924 19:56:48 mysqld_safe Starting mysqld daemon with databases from /data/mysql
100924 19:56:48 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.
100924 19:56:48 [Note] Event Scheduler: Loaded 0 events
100924 19:56:48 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
Version: '5.1.50-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution

【エラー情報1】
configureで下記のエラーが出た場合はncurses-develがないのでインストールしておく。

checking for termcap functions library... configure: error: No curses/termcap library found

いろいろなパッケージをインストールするのにCentOS公式のRPMだけだと不足する場合があります。
そんなときにDAGを使えるとちょっと幸せになれます。

$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
# rpm -ivh rpmforge-release-0.5.1-1.el5.rf.i386.rpm

これで/etc/yum.repos.d/配下にrpmforge.repoが作成されます。
少し設定を変えてリポジトリをrikenに、enabledを”0″にしました。
/etc/yum.repos.d/rpmforge.repo

### Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
### URL: http://rpmforge.net/
[dag]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
#mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

yumでdagを対象にする場合は–enablerepo=dagを付けて実行する必要があります。

前回のEntryでkernelログがSYSLOG経由で取得できないと記載しましたが、ServersMan@VPSの場合は意図的にkernelログが出力されないように制限をかけているようです。

この2行が本来のsyslog.confの内容と違います。
/etc/rc.d/init.d/syslog

41         passed klogd skipped #daemon klogd $KLOGD_OPTIONS
48         passed klogd skipped #killproc klogd

以下のように修正してSYSLOGを再起動すれば取得できるようになります。
/etc/rc.d/init.d/syslog

41         daemon klogd $KLOGD_OPTIONS
48         killproc klogd
# /sbin/service syslog restart
Shutting down kernel logger:                               [FAILED]
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
Starting kernel logger:                                    [  OK  ]

ログを確認します。

# tail /var/log/kernel.log
Sep 10 18:08:35 dti-vps-srv20 kernel: DROPPED(Default_INPUT):IN=venet0 OUT= MAC= SRC=xxx.xxx.xxx.xxx DST=yyy.yyy.yyy.yyy LEN=60 TOS=0x00 PREC=0x00 TTL=46 ID=7471 DF PROTO=TCP SPT=39677 DPT=21 WINDOW=5840 RES=0x00 SYN URGP=0

ServersMan@VPSはインターネットから到達可能なポートに制限がありません。
逆に言うと仮想OSは丸裸同然でインターネットに公開されていることになります。
これは色々とまずいです。
ファイアウォールやルータなどフィルタリングしてくれる機器がないとなると自分で何とかしなければなりません。
Linuxであればローカルファイアウォールとしてiptablesというものがありますので、活用したいと思います。

最初は何もルールが登録されていません。

[root@dti-vps-srv20 ~]# /sbin/iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

必要に応じてルールを追加していきます。
外部に公開するサーバであればINPUTに制限をかける必要があります。
・localhostからの通信は全て許可
・プライベートIPアドレスからの通信は拒否し、ログを取得する
・SSHは特定のIPアドレスからのみ許可
・SMTPとHTTPとHTTPSを許可
・ICMPは特定のIPアドレスからのみ許可
・上記ルールに一致しないものは全てログを取得する

# /sbin/iptables -A INPUT -i lo -j ACCEPT
# /sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# /sbin/iptables -A INPUT -s 10.0.0.0/8 -m limit --limit 1/sec -j LOG --log-prefix "DROPPED(Spoofed_source_IP):"
# /sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
# /sbin/iptables -A INPUT -s 172.16.0.0/12 -m limit --limit 1/sec -j LOG --log-prefix "DROPPED(Spoofed_source_IP):"
# /sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
# /sbin/iptables -A INPUT -s 192.168.0.0/16 -m limit --limit 1/sec -j LOG --log-prefix "DROPPED(Spoofed_source_IP):"
# /sbin/iptables -A INPUT -s 192.168.0.0/16 -j DROP
# /sbin/iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
# /sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT
# /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
# /sbin/iptables -A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
# /sbin/iptables -A INPUT -s xxx.xxx.xxx.xxx -p icmp -m icmp --icmp-type 8 -j ACCEPT
# /sbin/iptables -A INPUT -m limit --limit 1/sec -j LOG --log-prefix "DROPPED(Default_INPUT):"

# /sbin/iptables -A FORWARD -m limit --limit 1/sec -j LOG --log-prefix "DROPPED(Default_FORWARD):"
# /sbin/iptables -P FORWARD DROP

まだルールに一致しない通信も許可されています。
最後にルールに一致しない通信を拒否するようにします。
※iptablesの設定が間違っていると一切通信ができなくなる可能性もあるので注意してください。

# /sbin/iptables -P INPUT DROP

最終的なiptablesの設定は下記のようになりました。

# /sbin/iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
LOG        all  --  10.0.0.0/8           0.0.0.0/0           limit: avg 1/sec burst 5 LOG flags 0 level 4 prefix `DROPPED(Spoofed_source_IP):'
DROP       all  --  10.0.0.0/8           0.0.0.0/0
LOG        all  --  172.16.0.0/12        0.0.0.0/0           limit: avg 1/sec burst 5 LOG flags 0 level 4 prefix `DROPPED(Spoofed_source_IP):'
DROP       all  --  172.16.0.0/12        0.0.0.0/0
LOG        all  --  192.168.0.0/16       0.0.0.0/0           limit: avg 1/sec burst 5 LOG flags 0 level 4 prefix `DROPPED(Spoofed_source_IP):'
DROP       all  --  192.168.0.0/16       0.0.0.0/0
ACCEPT     tcp  --  xxx.xxx.xxx.xxx      0.0.0.0/0           tcp dpt:22 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:25 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 state NEW
ACCEPT     icmp --  xxx.xxx.xxx.xxx      0.0.0.0/0           icmp type 8
LOG        all  --  0.0.0.0/0            0.0.0.0/0           limit: avg 1/sec burst 5 LOG flags 0 level 4 prefix `DROPPED(Default_INPUT):'

Chain FORWARD (policy DROP)
target     prot opt source               destination
LOG        all  --  0.0.0.0/0            0.0.0.0/0           limit: avg 1/sec burst 5 LOG flags 0 level 4 prefix `DROPPED(Default_FORWARD):'

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

このままだとOS再起動でiptablesの設定が消えてしまうので保存します。

# /sbin/service iptables save
Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]

iptablesのログはkernelログとして出力されます。
2個所修正します。
/etc/syslog.conf

kern.*                                                  /var/log/kernel.log
*.info;mail.none;authpriv.none;cron.none,kern.none      /var/log/messages

ファイルを作成してからSYSLOGの設定変更を反映させます。

# touch /var/log/kernel.log
# chmod 600 /var/log/kernel.log
# kill -HUP syslogのプロセス

ログが出ているか確認します。
ロ、ログが出ません。。。
dmesgには出ているのでiptablesの設定は問題ないようです。
これについては次回Entryで。

# tail -f /var/log/kernel.log

# dmesg
DROPPED(Default_INPUT):IN=venet0 OUT= MAC= SRC=xxx.xxx.xxx.xxx DST=yyy.yyy.yyy.yyy LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=58637 DF PROTO=TCP SPT=39655 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0

CentOSに限らず多くのLinuxではパッケージで様々なソフトウェアが管理されています。
しかしソースからインストールしたいソフトウェアも必ずでてきます。
そんな時にpacoが活躍。
pacoはソースからインストールされたファイルを管理してくれるソフトウェアです。
これさえあればソースからインストールされたものも一発でアンインストールすることができるようになります。

まずはpacoをインストールします。

$ wget http://sourceforge.net/projects/paco/files/paco/2.0.9/paco-2.0.9.tar.bz2/download
$ tar xvjf paco-2.0.9.tar.bz2
$ ./configure --disable-gpaco
$ make
# make install

これだけだとpaco自身のファイルが管理できないようなので下記コマンドを実行します。

# make logme

pacoの使い方。
■新規インストール

$ paco -D make install

■インストール済みソフトウェアの表示

$ paco -1a
paco-2.0.9

$ paco -1dsa
384k  08-Sep-2010  paco-2.0.9

■ソフトウェアの詳細情報を表示

$ paco -fs <i>パッケージ名</i>
$ paco -fs paco
paco-2.0.9:
  8k  /usr/local/share/paco/README
 28k  /usr/local/lib/libpaco-log.a
  4k  /usr/local/lib/libpaco-log.la
   @  /usr/local/lib/libpaco-log.so
   @  /usr/local/lib/libpaco-log.so.0
 28k  /usr/local/lib/libpaco-log.so.0.0.0
240k  /usr/local/bin/paco
  4k  /usr/local/etc/pacorc
  4k  /usr/local/lib/pkgconfig/paco.pc
  8k  /usr/local/share/man/man5/pacorc.5
 12k  /usr/local/share/man/man8/paco.8
  4k  /usr/local/share/man/man8/pacoball.8
  4k  /usr/local/share/man/man8/rpm2paco.8
  4k  /usr/local/share/man/man8/superpaco.8
  4k  /usr/local/share/paco/faq.txt
  4k  /usr/local/share/paco/pacorc
  4k  /usr/local/bin/ocap
  8k  /usr/local/bin/pacoball
  8k  /usr/local/bin/rpm2paco
  8k  /usr/local/bin/superpaco

■ソフトウェアのアンインストール

# paco -r <i>パッケージ名</i>

【エラー情報1】
configureで下記のエラーが出た場合はgccがないのでインストールしておきます。

configure: error: no acceptable C compiler found in $PATH

【エラー情報2】
configureで下記のエラーが出た場合はpkgcofigがないのでインストールしておきます。

checking for pkg-config... no
checking for GTKMM... configure: error: in `/home/user/src/paco-2.0.9':
configure: error: The pkg-config script could not be found or is too old.  Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.

Alternatively, you may set the environment variables GTKMM_CFLAGS
and GTKMM_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
See `config.log' for more details.

【エラー情報3】
makeで下記のエラーが出た場合はgcc-c++がないのでインストールしておきます。

../../build/depcomp: line 611: exec: g++: not found

ServersMan@VPSで起動するプロセスを減らしてメモリ使用量の確保を狙います。
まずは起動しているプロセス一覧と今のメモリ使用量を確認します。

[root@dti-vps-srv20 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   2068   644 ?        Ss   Sep06   0:06 init [3]
root     40853  0.0  0.1   2152   556 ?        S<s  Sep06   0:00 /sbin/udevd -d
root     42335  0.0  0.1   1824   696 ?        Ss   Sep06   0:00 syslogd -m 0
root     42465  0.0  0.1   2724   868 ?        Ss   Sep06   0:00 xinetd -stayali
root     42506  0.0  0.2   4408  1104 ?        Ss   Sep06   0:01 crond
root     42517  0.0  0.1   5588   712 ?        Ss   Sep06   0:00 /usr/sbin/sasla
root     42518  0.0  0.0   5588   448 ?        S    Sep06   0:00 /usr/sbin/sasla
root     60610  0.0  0.2   7080  1064 ?        Ss   Sep06   0:00 /usr/sbin/sshd

[root@dti-vps-srv20 ~]# free
             total       used       free     shared    buffers     cached
Mem:        524288      13796     510492          0          0          0
-/+ buffers/cache:      13796     510492
Swap:            0          0          0

ついでに起動スクリプトから起動するデーモンの一覧も確認しておきます。

[root@dti-vps-srv20 ~]# /sbin/chkconfig --list |grep on
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
gpm             0:off   1:off   2:on    3:off   4:on    5:on    6:off
httpd           0:off   1:off   2:off   3:on    4:off   5:off   6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
lm_sensors      0:off   1:off   2:on    3:off   4:on    5:on    6:off
lvm2-monitor    0:off   1:on    2:on    3:off   4:on    5:on    6:off
mcstrans        0:off   1:off   2:on    3:off   4:on    5:on    6:off
messagebus      0:off   1:off   2:off   3:off   4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs           0:off   1:off   2:off   3:off   4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
portmap         0:off   1:off   2:off   3:off   4:on    5:on    6:off
rawdevices      0:off   1:off   2:off   3:off   4:on    5:on    6:off
restorecond     0:off   1:off   2:on    3:off   4:on    5:on    6:off
saslauthd       0:off   1:off   2:off   3:on    4:off   5:off   6:off
serversman      0:off   1:off   2:off   3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

下記のデーモンは使わないので起動しないようにします。(※httpdはインストール直後に停止済みです。)
・httpd
・saslauthd
・serversman
・xinetd

[root@dti-vps-srv20 ~]# /sbin/chkconfig httpd off
[root@dti-vps-srv20 ~]# /sbin/chkconfig saslauthd off
[root@dti-vps-srv20 ~]# /sbin/chkconfig serversman off
[root@dti-vps-srv20 ~]# /sbin/chkconfig xinetd off

プロセスを停止します。

[root@dti-vps-srv20 ~]# /sbin/service saslauthd stop
Stopping saslauthd:                                        [  OK  ]
[root@dti-vps-srv20 ~]# /sbin/service xinetd stop
Stopping xinetd:                                           [  OK  ]

最後にメモリ使用量がどれだけ減ったか確認します。
止めたプロセスが少ないので気持ち程度ですが確かに減りました。

[root@dti-vps-srv20 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   2068   644 ?        Ss   Sep06   0:06 init [3]
root     40853  0.0  0.1   2152   556 ?        S<s  Sep06   0:00 /sbin/udevd -d
root     42335  0.0  0.1   1824   696 ?        Ss   Sep06   0:00 syslogd -m 0
root     42506  0.0  0.2   4408  1104 ?        Ss   Sep06   0:01 crond
root     60610  0.0  0.2   7080  1064 ?        Ss   Sep06   0:00 /usr/sbin/sshd

[root@dti-vps-srv20 ~]# free
             total       used       free     shared    buffers     cached
Mem:        524288      11972     512316          0          0          0
-/+ buffers/cache:      11972     512316
Swap:            0          0          0

2010/09/06 22:54ServersMan@VPS 初めに

DTIが始めたワンコインVPSサービスのServersMan@VPSに申し込んでみました。
Webサイトから申し込みを始めること10分、あっという間に自分用の仮想サーバが作成されました。

[root@dti-vps-srv20 ~]# uname -a
Linux dti-vps-srv20 2.6.18-194.3.1.el5.028stab069.6 #1 SMP Wed May 26 18:31:05 MSD 2010 i686 i686 i386 GNU/Linux

[root@dti-vps-srv20 ~]# cat /etc/redhat-release
CentOS release 5.4 (Final)

[root@dti-vps-srv20 ~]# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/simfs            10485760    513844   9971916   5% /
none                    262144         4    262140   1% /dev

[root@dti-vps-srv20 ~]# free
             total       used       free     shared    buffers     cached
Mem:        524288      16076     508212          0          0          0
-/+ buffers/cache:      16076     508212
Swap:            0          0          0

[root@dti-vps-srv20 ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 :::80                       :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ]         DGRAM                    290653177 @/org/kernel/udev/udevd
unix  2      [ ACC ]     STREAM     LISTENING     290655302 /var/run/saslauthd/mux
unix  6      [ ]         DGRAM                    290653888 /dev/log
unix  2      [ ]         DGRAM                    290673122
unix  2      [ ]         DGRAM                    290655301
unix  2      [ ]         DGRAM                    290655259
unix  2      [ ]         DGRAM                    290655166

H/W構成を眺めてみる。

[root@dti-vps-srv20 ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 26
model name      : Intel(R) Xeon(R) CPU           L5520  @ 2.27GHz
stepping        : 5
cpu MHz         : 903.094
cache size      : 8192 KB
physical id     : 1
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 16
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
bogomips        : 4522.09
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: [8]

とりあえずSSH周りの設定しておきます。
・rootログインの禁止
・接続元の制限

まずはアカウントを作成する。

[root@dti-vps-srv20 ~]# /usr/sbin/groupadd -g 101 admin
[root@dti-vps-srv20 ~]# /usr/sbin/useradd -u 101 -g 101 -s /bin/bash admin
[root@dti-vps-srv20 ~]# passwd asmin
Changing password for user admin.
New UNIX password: **********
Retype new UNIX password: **********
passwd: all authentication tokens updated successfully.

作成したアカウントでSSHログインできることを確認後、sshd_configを編集する。
/etc/ssh/sshd_config

PermitRootLogin no

sshdを再起動する。

[root@dti-vps-srv20 ~]# /sbin/service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

これでrootによるログインができなくなります。
次にsshに接続できるクライアントを制限します。
設定した瞬間から有効になるのでIPアドレスを間違えないように注意してください。
間違えると一切接続できなくなります。
/etc/hosts.allow

ALL:127.0.0.1
sshd:xxx.xxx.xxx.xxx

/etc/hosts.deny

sshd:ALL

hosts.allowに登録されていないクライアントから接続が来るとログに出力されます。

tail /var/log/secure
Sep  7 16:10:47 dti-vps-srv20 sshd[32696]: refused connect from ::ffff:xxx.xxx.xxx.xxx (::ffff:xxx.xxx.xxx.xxx)

夜寝る直前に携帯にアラートメールが飛んできた。眠かったのでWebアクセスできることだけを確認して睡眠。
今ログを見てみたら/dev/hde2がReadオンリーでマウントされている。

# tail /var/log/messages
Apr 19 00:04:53 bruna kernel: hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Apr 19 00:04:53 bruna kernel: hde: dma_intr: error=0x40 { UncorrectableError }, LBAsect=226277, high=0, low=226277, sector=226277
Apr 19 00:04:53 bruna kernel: ide: failed opcode was: unknown
Apr 19 00:04:53 bruna kernel: end_request: I/O error, dev hde, sector 226277

試しに書き込みしてみたけど失敗。

# touch test
touch: cannot touch `test': 読み込み専用ファイルシステムです

リブートして復旧するか試してみる予定。

2009/10/26 18:05Postfixのエラー

24日からメールキューが異常に増え続けている事象が発生していた。
Postfixのログを見ていたところ今まで見たことのないログが出ていた。

Oct 26 10:29:10 hostname postfix/local[11244]: 2855BAA111: to=<xxx@kaju.jp>, relay=local, delay=125911, delays=125901/9.5/0/0.24, dsn=4.3.0, s
atus=deferred (temporary failure. Command output: maildrop: signal 0x19 )

原因はmaildropのログが上限に達したため。

# ls -la /var/log/maildrop/
合計 145596
drwxrwxrwx  2 root      root      4096  2月  3  2007 .
drwxr-xr-x  8 root      root     20480 10月 25 00:00 ..
-rw-------  1 xxxx      xxxx  51200000 10月 24 12:29 maildrop.log

maildrop.logをクリアしたらキューの中のメールが無くなった。
ログローテーションの対象から漏れていたようなので設定しておく。

2009/08/02 11:38Disk容量削減

/homeのHDD使用率が90%近くなってきたので空き容量を確保してみました。
各ユーザのスパムメールが1GBくらいになっていたので、30日以上前のスパムメールを日付ごとに圧縮してバックアップディレクトリに待避させました。

#!/bin/bash

PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=/home/user/Maildir/.Junk/cur
BACKDIR=/data/backup/mail/user/Junk

D=31
while [ $D -lt 365 ]
do

EXT=`date -d ''$D' days ago' +%Y%m%d`

mkdir -p $BACKDIR/$EXT
find $MAILDIR -daystart -type f -mtime $D -print | xargs mv --target-directory=$BACKDIR/$EXT
tar czf $BACKDIR/$EXT.tar.gz -C $BACKDIR $EXT
rm -rf $BACKDIR/$EXT

D=`expr $D + 1`
done

●対応前

$ df -k /home
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hde7              5036284   4046984    733468  85% /home

●対応後

$ df -k /home
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hde7              5036284   3481076   1299376  73% /home

© 2003-2014 うーたんの小部屋 | Powered by Wordpress