参考:http://support.sakura.ad.jp/support/vps/tips_ossetup.shtml

■日本語環境に切り替える

yum -y groupinstall "Japanese Support"
vi /etc/sysconfig/i18n

LANG=”ja_JP.UTF-8″

設定を反映させる

source /etc/sysconfig/i18n
echo $LANG
ja_JP.UTF-8

■SSHのログインメッセージを変える

vi /etc/motd

■作業用のユーザーを追加

useradd admin
passwd admin

usermod -G wheel admin

ユーザーを作成して、wheelに所属させる(rootになれるユーザーを制限する

■sudoできるようにする

visudo

以下のコメント外す

%wheel  ALL=(ALL)       ALL

■sudoを通して実行するプログラムのためにパスを通す

ホームディレクトリの .bash_profile に以下を追記する。

PATH=$PATH:/sbin

PATH=$PATH:/usr/sbin

PATH=$PATH:/usr/local/sbin

設定を反映する

source ~/.bash_profile

■rootになれるユーザーを限定する

vi /etc/login.defs

最終行に以下を追加させる

SU_WHEEL_ONLY yes

vi /etc/pam.d/su

以下のコメントを外す

auth required pam_wheel.so use_uid

■SSHの設定

vi /etc/ssh/sshd_config

・ポートを変更する

#Port 22

Port 1022

・rootでのログインを無効にする

#PermitRootLogin yes

PermitRootLogin no

・公開鍵を設定する場合は以下もコメントを外してnoにしておく

#PasswordAuthentication yes

PasswordAuthentication no

・公開鍵を設定する(任意

http://ice.hotmint.com/putty/

http://blog.tienoki.net/archives/36#ssh

・設定を反映する

service sshd restart

念のため再起動する

shutdown -r now

■ソフトをアップデートする

sudo  yum -y update

■ポートの設定

参考:http://blog.tienoki.net/archives/4

・設定ファイルを編集する

とりあえず、以下の SSHのポート番号 を適宜変更し、 /etc/sysconfig/iptables に貼り付ける。

HTTP、MySQL、SSHのポートのみを解放する。

vi /etc/sysconfig/iptables

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT – [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p 50 -j ACCEPT

-A RH-Firewall-1-INPUT -p 51 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport xxxxx(SSHのポート番号) -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited

COMMIT

・設定を反映する

/etc/rc.d/init.d/iptables restart
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]

・設定の反映を確認する

iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:xxxxx(SSHのポート番号)
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

・不要なデーモンを終了する

chkconfig auditd off
chkconfig autofs off
chkconfig avahi-daemon off
chkconfig bluetooth off
chkconfig cups off
chkconfig firstboot off
chkconfig gpm off
chkconfig haldaemon off
chkconfig hidd off
chkconfig isdn off
chkconfig kudzu off
chkconfig lvm2-monitor off
chkconfig mcstrans off
chkconfig mdmonitor off
chkconfig messagebus off
chkconfig netfs off
chkconfig nfslock off
chkconfig pcscd off
chkconfig portmap off
chkconfig rawdevices off
chkconfig restorecond off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig smartd off
chkconfig xfs off
chkconfig yum-updatesd off

■yumの設定

参考:http://blog.tienoki.net/archives/26

yum とは、Red Hat系のディストリビューションで使われるパッケージ管理システム。

もう一方のパッケージ管理システムである RPM とは違い、他のパッケージとの依存性を考慮してくれるため、基本的には yum を使う。

サーバ環境はさくらのVPSで、CentOS5.5。

・yum-updatesを停止する

yum-updates は常駐サービスでメモリを消費するため、代わりに yum-cron を使う。

yum-updatesを停止する

/etc/rc.d/init.d/yum-updatesd stop
Stopping yum-updatesd:                                     [FAILED]

yum-updatesをアンインストールする

yum -y remove yum-updatesd

・fastestmirrorプラグインをインストールする

fastestmirrorプラグイン を使うと、ミラーリストの中から一番接続が早いリポジトリを選択してくれる。

yum -y install yum-fastestmirror
Package yum-fastestmirror-1.1.16-14.el5.centos.1.noarch already installed and latest version
Nothing to do

・インストール済みのパッケージをアップデートする

yum -y update

・yum-cronの設定

yum-cronをインストールする

yum -y install yum-cron

自動起動設定を確認する

yum-cron は、インストールした時点で自動起動設定がされている。

ls /etc/cron.daily/

上記実行結果に yum.cron が表示されていればOK。

ちなみに、cron.daily がいつ実行されるかは /etc/crontab を確認することで分かる。

vi /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

run-parts
59 * * * * root run-parts /etc/cron.hourly
00 5 * * * root run-parts /etc/cron.daily
20 5 * * 0 root run-parts /etc/cron.weekly
40 5 1 * * root run-parts /etc/cron.monthly

毎日午前5時に実行してることが分かる。

yum-cronの設定を変更する

cp /etc/sysconfig/yum-cron /etc/sysconfig/back.yum-cron
vi /etc/sysconfig/yum-cron

初期設定(以下の2点が両方no)の場合、更新の確認からアップデート作業まで全て自動で行うらしい。

アップデートは手動で行うために、以下の通り変更する。

・更新の確認を自動で行う

#CHECK_ONLY=no

CHECK_ONLY=yes

・更新のダウンロードを自動で行う

#DOWNLOAD_ONLY=no

DOWNLOAD_ONLY=yes

yum-cronを起動する

/etc/rc.d/init.d/yum-cron start
Enabling nightly yum updraft: false
date:                               [  OK  ]

yum-cronの自動起動設定をする

chkconfig yum-cron on
chkconfig --list yum-cron
yum-cron        0:off   1:off   2:on    3:on    4:on    5:on    6:off

・root宛メールアドレスの転送設定

yum-cron の更新通知がメールで届くらしいので、今の内に転送設定をしておく。

現在の転送設定を削除する

sed -i '/^root:/d' /etc/aliases

任意のメールアドレスで転送設定をする

echo "root: hoge@hoge.com" >> /etc/aliases

転送設定を反映する

newaliases
/etc/aliases: 77 aliases, longest 26 bytes, 795 bytes total

メールの送信テストをする

echo test | mail root