あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

ServersMan@VPS Entry 借りてみた

今のところお支払い方法がクレジットカードしかないっぽいけど、そこは(一応)社会人ぱぅあーで契約。持っててよかった Yodobasi GOLD ELIO CARD!(VISA話)
という訳で皮装備の貧弱一般人なりにサーバ設定してみるよ!これから触ってみる人の参考になればいいなー。
長いので以下続きでおk。

12/29追記

友人が「おいsshつながらねーぞfxxkfxxk!!」連呼するので確認してたら、ssh の接続ポートのデフォルト番号変わってたんんですねー、いつからなんだろ?まあ確認してねーほうが基本的には悪いね。「ServersMAN@VPS ssh 繋がらない」とかで検索ヒットした人は、ssh のポート番号を「3843」にしてね!この変更にともなって iptables のルールも ssh はポート番号 22 から、3843 に変更しておいたよ!
※本エントリ中に「SSH 22」みたいなワードがあっても脳内補完してね!

参考:
http://dream.jp/vps/manual/mnl_security.html#a_03

rootログインを止める

発行されるパスワードはランダムなの英数字だから問題ないと思うけど、やっぱり root でログインできるとかねーよ。ってことで root ログインの禁止と、一般ユーザの追加を行ないましょう。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/simfs             10G  502M  9.6G   5% /
none                  128M  4.0K  128M   1% /dev

初期状態の領域はこんなもん。んじゃログイン用の一般ユーザ追加しましょうか。

# useradd USERNAME
# passwd USERNAME 

これでおk。
ちなみに /etc/skel/ 以下はこんな感じだった。

-rw-r--r--  1 root root   33 Jan 22  2009 .bash_logout
-rw-r--r--  1 root root  176 Jan 22  2009 .bash_profile
-rw-r--r--  1 root root  124 Jan 22  2009 .bashrc

それではrootログインを禁止します。

# vi /etc/ssh/sshd_config

<sshd_config>
--
# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
 -> ここを PermitRootLogin no にする
#StrictModes yes
#MaxAuthTries 6
--

# /etc/init.d/sshd restart

これでおk、これ以降は root でログインできないので、追加したユーザとパスワードでログインします。
sudo については設定しねーポリシーに最近変更したので、必要な人は visudo 編集してね。
それと、本当は ssh のログインポートを 22 から変更した方がいいのですが、今回は割愛します。
大抵の人は動的 IP だと思うけど、固定でグローバル IP を持っている人は、hosts.allow とかで制限しちゃってもいいんじゃないかな。
まあ ServerMan@VPS の中の人の作業量がマッハになるのでやめたほうがいいけど。

iptables について

ServerMan の機能をフルに使うには、以下のポートを開放する必要があるっぽいでし。

  • 21:FTP
  • 22:SSH
  • 80:HTTP
  • 443:SSL
  • 8080:ServerMan Web インタフェース

今回は SSH と HTTP にしか利用しない予定なので、22 と 80 以外のポートは塞ぎます。
本当は両サービスともポート番号かえて(略)ですが、そこまでカリカリしても踏まれるときは踏まれるんだよぉ!(先日会社のサービス用鯖踏まれた)
起動直後の iptables の結果は以下。

# /sbin/iptables -L
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 

これはないわー、Entry でシンプル構成を選択したとはいえ、SSH と ServerMan の通信ポート以外は閉じておいてもいいんじゃないかなあ>>中の人。
とりあえず設定をサクサク書きましょう、ここはまるまるコピペでもおk。
※2010/8/15に契約しましたが、 iptables 定義の /etc/sysconfig/iptables が存在してませんでした。
 以下のページに書いてある CentOS デフォルトの設定ファイルをパクってきて、DNS 運営しないので Port 53 閉じて、代わりに Port 80 許可した。
 http://www.cyberciti.biz/faq/rhel-fedorta-linux-iptables-firewall-configuration-tutorial/

# vi /etc/sysconfig/iptables

<iptables>
--
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [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 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3843 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
--

# /etc/init.d/iptables start
# /sbin/iptables -L

以下のような結果になるはず。ssh のセッション切る前に、もう一つターミナル立ち上げて、ssh 接続を確認してね。

# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
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     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:3843 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
chkconfig による自動起動について

デフォルトでは以下のように(略)。

# /sbin/chkconfig --list
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
multipathd      0:off   1:off   2:off   3:off   4:off   5:off   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
netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nscd            0:off   1:off   2:off   3:off   4:off   5:off   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
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   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
smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
snmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
snmptrapd       0:off   1:off   2:off   3:off   4:off   5:off   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
winbind         0:off   1:off   2:off   3:off   4:off   5:off   6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

xinetd based services:
        chargen-dgram:  off
        chargen-stream: off
        daytime-dgram:  off
        daytime-stream: off
        discard-dgram:  off
        discard-stream: off
        echo-dgram:     off
        echo-stream:    off
        finger:         off
        ntalk:          off
        rsync:          off
        swat:           off
        talk:           off
        tcpmux-server:  off
        time-dgram:     off
        time-stream:    off

特に off にするようなのはないかなー、と軽く見て思うなど。まあ「俺は SSH 経由でしか管理しないぞー!」って人は、serverman 切る位ですかね。
まあそれ切っちゃうとこのサービス使う意味があんまないというか、作った中の人泣かせというか…。

とりあえずこんなもんでおしまい。

特定の場所でプライベートな端末使うなら鍵認証にしてパスワード使わせないとか、おまえまず最初に yum update だろ!とか色々あるとは思いますが、
本当に最低限の作業はこれくらいでしょうか。
追加した一般ユーザのパスワードがシンプルでない限りは、とりあえずこの程度で運用に耐えられるんじゃないかなあ、と思います。
まあぶっちゃけ、会社のサーバ立ち上げる時にやってる作業と一緒なだけですけどね。
一般サーバを作るときにも参考にできるので、よろしければどうぞ。

ちなみに SELINUX はというと
# /usr/sbin/getenforce 
Disabled

ということで、最初から切ってありました。面倒がなくていいね!

おまけ

/proc 以下とか見てスペッコ確認してみた。
ちなみにサーバは、ホスト名に「dti-vps-srv22」とか書いてた。二ヶ月で22台目ってことなのかな?だとしたら好調っぽいなー。

# 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.100
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.12
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: [8]

# cat /proc/meminfo
MemTotal:       262144 kB
MemFree:        226368 kB
Buffers:             0 kB
Cached:              0 kB
SwapCached:          0 kB
Active:              0 kB
Inactive:            0 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       262144 kB
LowFree:        226368 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
AnonPages:           0 kB
Mapped:              0 kB
Slab:                0 kB
PageTables:          0 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:         0 kB
Committed_AS:        0 kB
VmallocTotal:        0 kB
VmallocUsed:         0 kB
VmallocChunk:        0 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

# /sbin/fdisk -l
cannot open /proc/partitions

(^q^) Xeon L5520 とか会社の ESXi サーバと同じ CPU じゃねえか。
これ、早くなるかどうかは置いといて、microcode いれたほうがいいのかな…そももも使えるのかな。