14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

ファイヤーウォール, 日本語化, IPTABLES, シェル ( zsh ) の設定 ( Webサーバー構築四苦八苦 2nd Day )

この記事で、サーバーへのアクセス環境は整いまし前回の記事で、基本的なサーバー設定は整いました。

次は、ファイヤーウォールと日本語化とシェル指定など。

IPTABLESの設定

まず方針を決める。

1. 自分のホストからの通信を通す
2. 外からのpingは通す
3. 外からのSSHは通す
4. それ以外の外からの通信は受け付けない
5. 中から外へ出ていく通信はすべて通す

全体はこんな感じで。/etc/sysconfig/iptables

SSH/HTTP/HTTPS用のポートのみ公開し、それ以外のポートを拒否する設定をする。
sudo vim /etc/sysconfig/iptablesを実行して、以下の様に編集。
(デフォではこのファイルがない場合もある....)

/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 の設定

~/.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/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
14
Help us understand the problem. What are the problem?