この記事で、サーバーへのアクセス環境は整いまし前回の記事で、基本的なサーバー設定は整いました。
次は、ファイヤーウォールと日本語化とシェル指定など。
IPTABLESの設定
まず方針を決める。
1. 自分のホストからの通信を通す
2. 外からのpingは通す
3. 外からのSSHは通す
4. それ以外の外からの通信は受け付けない
5. 中から外へ出ていく通信はすべて通す
全体はこんな感じで。/etc/sysconfig/iptables
SSH/HTTP/HTTPS用のポートのみ公開し、それ以外のポートを拒否する設定をする。
sudo vim /etc/sysconfig/iptablesを実行して、以下の様に編集。
(デフォではこのファイルがない場合もある....)
*filter
# インプットチェーンの定義
:INPUT ACCEPT [0:0]
# フォワードチェーンの定義
:FORWARD ACCEPT [0:0]
# アウトプットチェーンの定義
:OUTPUT ACCEPT [0:0]
# RH-Firewall-1-INPUT チェーンの定義
:RH-Firewall-1-INPUT - [0:0]
# INPUTチェーンに来たものはすべて無条件にRH-Firewall-1-INPUTチェーンへ転送する
-A INPUT -j RH-Firewall-1-INPUT
# FORWARDチェーンに来たものはすべて無条件にRH-Firewall-1-INPUTチェーンへ転送する
-A FORWARD -j RH-Firewall-1-INPUT
# ループバックは通す。自ホストからの通信は問答無用で全部通す
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
# pingは通す。プロトコルがICMPなら通す
-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
# SSH ( SSH_PORT は先に自分で設定したものを指定 )
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3103 -j ACCEPT
# HTTP, HTTPS
# RH-Firewall-1-INPUTチェーン内のルール設定で、外部からの80番と443番ポートへのアクセスを許可
-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 443 -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 6000 -j ACCEPT
# RH-Firewall-1-INPUT チェーン内のどのルールにもマッチしなかったパケットは、icmp-host-prohibitedエラーを返す
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
iptablesを再起動して設定を反映させる。
# sudo service iptables restart もしくは /etc/init.d/iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
上のようになれば設定成功です
iptableの再起動時にエラーが出たら、その行末に空白が入っていないかチェック。
全角も一応チェック。
サーバの起動時に一緒にiptableを起動させるように設定。
自動起動の設定確認。
% sudo chkconfig iptables on
% /sbin/chkconfig --list iptables
#=> iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off となっていれば成功です
ref) http://okwave.jp/qa/q6986608.html
zshの設定
oh-my-zshを使っていたのですが、UIや操作性がしっくりこなかったので止めて、.zshrcをいじりました。
(以下のはいろんな方の情報の寄せ集め(|| ×m×) 早く自由にカスタマイズ出来る様になりたい... )
ref)
http://d.hatena.ne.jp/oovu70/20120405/p1
http://news.mynavi.jp/column/zsh/index.html
https://github.com/bpymasinn/Config/blob/master/.zshrc
まずはインストール
こちらを参照して下さい。
.zshrc の設定
# ------------------------------
# General Settings
# ------------------------------
export EDITOR=vim # エディタをvimに設定
export LANG=ja_JP.UTF-8 # 文字コードをUTF-8に設定
export KCODE=u # KCODEにUTF-8を設定
export AUTOFEATURE=true
bindkey -e # キーバインドをemacsモードに設定
setopt no_beep # ビープ音を消す
setopt auto_cd # ディレクトリ名の入力のみで移動
setopt auto_pushd
setopt correct # コマンドのスペルを訂正
setopt magic_equal_subst # =以降も補完する(--prefix=/usrなど)
setopt prompt_subst # プロンプト定義内で変数置換やコマンド置換を扱う
setopt notify # バックグラウンドジョブの状態変化を即時報告
setopt equals # =commandを`which command`と同じ処理
### Complement ###
autoload -U compinit; compinit # 補完機能を有効
setopt auto_list # 補完候補を一覧で表示(d)
setopt auto_menu # 補完キー連打で補完候補を順に表示(d)
setopt list_packed # 補完候補をできるだけ詰めて表示
setopt list_types # 補完候補にファイルの種類も表示
bindkey "^[[Z" reverse-menu-complete # Shift-Tabで補完候補を逆順("\e[Z"でも動作する)
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # 補完時に大文字小文字を区別しない
setopt extended_glob
unsetopt caseglob # ファイルグロブで大文字小文字を区別しない
### History ###
HISTFILE=~/.zsh_history # ヒストリを保存するファイル設定
HISTSIZE=10000 # メモリに保存されるヒストリの件数
SAVEHIST=10000 # 保存されるヒストリの件数
setopt bang_hist # !を使ったヒストリ展開(d)
setopt extended_history # ヒストリに実行時間も保存
setopt hist_ignore_dups # 直前と同じコマンドはヒストリに追加しない
setopt share_history # 他のシェルのヒストリをリアルタイムで共有
setopt hist_reduce_blanks # 余分なスペースを削除してヒストリに保存
# マッチしたコマンドのヒストリを表示
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
# すべてのヒストリを表示
function history-all { history -E 1 }
# 色の設定
export LSCOLORS=Exfxcxdxbxegedabagacad
# 補完時の色の設定
export LS_COLORS='di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
# ZLS_COLORSとは?
export ZLS_COLORS=$LS_COLORS
export CLICOLOR=true
# 補完候補に色を付ける
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
# プロンプトに色
autoload -U colors; colors
# 一般ユーザ時
tmp_prompt="%{${fg[cyan]}%}%n%# %{${reset_color}%}"
tmp_prompt2="%{${fg[cyan]}%}%_> %{${reset_color}%}"
tmp_rprompt="%{${fg[green]}%}[%~]%{${reset_color}%}"
tmp_sprompt="%{${fg[yellow]}%}%r is correct? [Yes, No, Abort, Edit]:%{${reset_color}%}"
# rootユーザ時(太字にしアンダーバー
if [ ${UID} -eq 0 ]; then
tmp_prompt="%B%U${tmp_prompt}%u%b"
tmp_prompt2="%B%U${tmp_prompt2}%u%b"
tmp_rprompt="%B%U${tmp_rprompt}%u%b"
tmp_sprompt="%B%U${tmp_sprompt}%u%b"
fi
PROMPT=$tmp_prompt # 通常のプロンプト
PROMPT2=$tmp_prompt2 # セカンダリのプロンプト(コマンドが2行以上の時に表示される)
RPROMPT=$tmp_rprompt # 右側のプロンプト
SPROMPT=$tmp_sprompt # スペル訂正用プロンプト
# SSHログイン時のプロンプト
[ -n "${REMOTEHOST}${SSH_CONNECTION}" ] &&
PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}"
;
### Title (user@hostname) ###
case "${TERM}" in
kterm*|xterm*|)
precmd() {
echo -ne "\033]0;${USER}@${HOST%%.*}\007"
}
;;
esac
# ------------------------------
# Other Settings
# ------------------------------
### Aliases ###
alias vi=vim # viって入力したらvimが立ち上がる
alias history='history -E' # ヒストリーの時刻表示
alias sl='ls -Fa'
alias ls='ls -Fa'
alias la='ls -a'
alias ll='ls -la'
alias dir='dir -pa'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'
alias less='lv'
# cdコマンド実行後、lsを実行する
function cd() {
builtin cd $@ && ls;
}
設定の反映
# シェルの変更
% zsh
# zshrcの反映
% source ~/.zshrc
ref) http://morizyun.github.io/blog/sakura-vps-centos63-ssh-setup/