さくらVPSの初期設定

さくらのVPS (1G)を借りたのでその設定メモ

初めてのサーバ設定ということでかなりつまづいて時間かかったのである程度ログを残しておく

初期設定いろいろ

  1. root以外のユーザー作成
  2. rootログインの禁止&sudoの有効化
  3. ssh設定(ポート番号、rootログインの禁止)
sudo service sshd restart

この辺は適当にぐぐれば出てくるはず
sshの設定がおかしいとログイン出来なくなるので慎重に。

ファイアウォール

下準備

まずsshのポート番号を22から別の適当な数字に変更(ここでは1234)
ここを参考にip6tablesを無効化

iptablesの設定
sudo cat /etc/sysconfig/iptables
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
# :SERVICES - [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A OUTPUT -o lo -j ACCEPT
-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 -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 INPUT -p tcp --dport 1234 -m hashlimit --hashlimit-name ssh --hashlimit 2/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 60000 -j ACCEPT

# FTP1, FTP2, SSH, HTTP, Rails, MySQL, SFTP, HTTPS,GITなどなど
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53    -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 115    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1234  -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000  -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306  -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9418    -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

こうしてから

sudo service iptables restart  # ファイアウォールを再起動
sudo iptables -L  # 設定を見る

ファイアウォールの設定の仕方に

  1. 全てDROP(拒否)してから必要なものだけを許可する
  2. 全てACCEPT(許可)してから必要なものだけを許可すれば許可されなかったものはDROPされる

といった2パターンがある?
結局よくわからずに適当にコピペしてちょこっと弄ってこんな感じ
厳しくしすぎてyumとかgit cloneとかwgetとかが通らなくなってしまったので緩くした。
その結果セキュリティが甘くなってしまった可能性があるので今後改善していく予定。
甘くなったかどうかもわからないのが勉強不足。

使用するアプリケーション等のインストール

最初からyumとgitは入っていた。

下準備
yum -y update
mkdir ~/tmp
git clone ~~~  # dotfiles の設定(.vimrc, .zshrc, .tmux.confなど)
アンチウィルス

ここを参考にclamdというソフトを導入した。

zshのインストール
yum -y install zsh  # 既に入ってた
chsh -s /usr/bin/zsh  # シェルの変更
source ~/.zshrc
tmuxのインストール
yum -y install tmux  # これだけで良かった気がする
python2.7.3のインストール
cd ~/tmp
wget http:www/python.org/ftp/python/2.7.3/Python-2.7.3.tgz
tar zxvf Python-2.7.3.tgz
# 以下のは.zshrcにでもあとで書いておく
export PYTHONPATH=/usr/local
export PYTHONHOME=/usr/local
cd Python-2.7.3
./configure --prefix=/usr/local
make
sudo make install
vim73のインストール
cd ~/tmp
# あとあと必要になるらしい?
sudo yum install ncurses-devel
sudo yum install lua lua-devel
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
tar jxvf vim-7.3.tar.bz.2
cd .vim73
mkdir patches
cd patches
curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.[001-884]'  #2013/4/9時点
cd ../
cat patches/7.3* | patch -p0
# configure と make は sudo いらんかも?
sudo ./configure --prefix=/usr/local/vim73 --with-features=huge --enable-multibyte --enable-pythoninterp=yes --enable-tclinterp --enable-cscope --enable-fontset --enable-gui --enable-gnome-check --without-x --enable-gpm --disable-darwin --disable-netbeans --disable-selinux
sudo make
sudo make install
# .zshrcに
# alias vim="/usr/local/bin/vim"
おまけ
vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Apr  9 2013 21:27:38)
適用済パッチ: 1-884
Compiled by hoge@fuga.piyo.com
Huge 版 without GUI.  機能の一覧 有効(+)/無効(-)
+arabic          +file_in_path    +mouse_sgr       +tag_binary
+autocmd         +find_in_path    -mouse_sysmouse  +tag_old_static
-balloon_eval    +float           +mouse_urxvt     -tag_any_white
-browse          +folding         +mouse_xterm     -tcl
++builtin_terms  -footer          +multi_byte      +terminfo
+byte_offset     +fork()          +multi_lang      +termresponse
+cindent         +gettext         -mzscheme        +textobjects
-clientserver    -hangul_input    -netbeans_intg   +title
-clipboard       +iconv           +path_extra      -toolbar
+cmdline_compl   +insert_expand   -perl            +user_commands
+cmdline_hist    +jumplist        +persistent_undo +vertsplit
+cmdline_info    +keymap          +postscript      +virtualedit
+comments        +langmap         +printer         +visual
+conceal         +libcall         +profile         +visualextra
+cryptv          +linebreak       +python          +viminfo
+cscope          +lispindent      -python3         +vreplace
+cursorbind      +listcmds        +quickfix        +wildignore
+cursorshape     +localmap        +reltime         +wildmenu
+dialog_con      -lua             +rightleft       +windows
+diff            +menu            -ruby            +writebackup
+digraphs        +mksession       +scrollbind      -X11
-dnd             +modify_fname    +signs           -xfontset
-ebcdic          +mouse           +smartindent     -xim
+emacs_tags      -mouseshape      -sniff           -xsmp
+eval            +mouse_dec       +startuptime     -xterm_clipboard
+ex_extra        -mouse_gpm       +statusline      -xterm_save
+extra_search    -mouse_jsbterm   -sun_workshop
+farsi           +mouse_netterm   +syntax
      システム vimrc: "$VIM/vimrc"
        ユーザ vimrc: "$HOME/.vimrc"
         ユーザ exrc: "$HOME/.exrc"
       省略時の $VIM: "/usr/local/share/vim"
コンパイル: gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
リンク: gcc   -L/usr/local/lib -Wl,--as-needed -o vim        -lm -ltinfo   -ldl    -L/usr/lib64/python2.6/config -lpython2.6 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic
感想

色んな分野の知識つけたい。
設定終えるだけで5日ほどかかった気がする。
ここまで書いて、apatch(webサーバー)も設定したこと思い出したけど元気が無いのでここまで。