LoginSignup
5
4

More than 5 years have passed since last update.

CentOS 6 のシステム設定を確認する

Posted at

[!NOTE]
この記事は 2013/09/01 に momoto.github.io へ投稿した内容を Qiita へ移行してきたものです

 CentOS 6 の基本的なシステム設定を確認します。 ここでいうシステム設定は、地域化、ネットワーク、セキュリティ、サービス管理 などの設定を対象にしています。デスクトップ環境や外観の設定は含みません。 また、各機能については基本的な設定までを概観するにとどめて、詳細な設定までは踏み込みません。

言語の設定 (/etc/sysconfig/i18n)

 言語情報は地域、文字セットとともに Locale として設定します。 現在の Locale の設定や利用できる Locale 名を表示するには GNU Cライブラリlocale をつかいます。

locale
$ locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

$ locale -a | grep -Ei "ja|jp"
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

 Locale は LANG 変数に設定します。 一時的な変更であれば $ export LANG=ja_JP.UTF-8 のようにコマンドで定義するか、永続的な変更であればファイルに変数を定義します。 変数を定義するファイルは、システム全体に適用する場合は /etc/sysconfig/i18n、ユーザごとに適用する場合は ~/.bashrc などです。

/etc/sysconfig/i18n
$ LANG=ja_JP.UTF-8
$ locale | sudo tee /etc/sysconfig/i18n
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

 日本語を設定する場合の注意点として、Locale名は ja_JP.utf8 ではなく ja_JP.UTF-8 を使用したほうが良いようです。

(参考) ただのメモ: ja_JP.UTF-8 vs ja_JP.utf8

システム時刻の設定 (/etc/sysconfig/clock)

 時刻系やタイムゾーンは /etc/sysconfig/clock に設定します。また、タイムゾーン情報は tzdata のバイナリファイルを /etc/localtime に保存します。

/etc/sysconfig/clock
$ sudo vi /etc/sysconfig/clock

ZONE="Asia/Tokyo"
UTC=false

$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

(参考) Date and Time – The GNU C Library

キー配列の設定 (/etc/sysconfig/keyboard)

 キー配列は /etc/sysconfig/keyboard に設定します。KEYTABLE に指定できる値は /lib/kbd/keymaps/i386/<配列>/<表名>.map.gz にある表名です。日本語 106 であれば jp106 を設定します。

/etc/sysconfig/keyboard
$ sudo vi /etc/sysconfig/keyboard

KEYTABLE="jp106"
KEYBOARDTYPE="pc"

 kbdloadkeys をつかって一時的に変更することもできます。

loadkeys
$ loadkeys jp106
Loading /lib/kbd/keymaps/i386/qwerty/jp106.map.gz

 /etc/sysconfig/keyboard の設定は X Window System のキーボード設定とは異なります。

(参考) man pages | KBD

ネットワークの設定 (/etc/sysconfig/{network,network-scripts/})

 ネットワークの設定は、ネットワークインタフェースによらないグローバルな設定とインタフェースごとに固有の設定とでファイルがわかれています。

 グローバルな設定では /etc/sysconfig/network にホスト名やゲートウェイなどの情報を設定します。

/etc/sysconfig/network
$ sudo vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=localhost.localdomain

 インタフェースごとの設定では /etc/sysconfig/ifcfg-<インタフェース名> に DHCP の利用するかどうか、DHCP を利用しない場合の IP 情報などを設定します。

/etc/sysconfig/network-scripts/ifcfg-eth0
$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="dhcp"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"

 設定ファイルを書き換えたらネットワークサービスを再起動して変更を反映します。

$ sudo service network restart
インターフェース eth0 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:
eth0 のIP情報を検出中... 完了。
                                                           [  OK  ]

(参考) ネットワーキング – Red Hat Customer Portal

名前解決の設定 (nsswitch.conf、host.conf、hosts、resolv.conf)

 名前解決の方法の順序は /etc/nsswitch.conf に設定します。

/etc/nsswitch.conf
  $ sudo vi /etc/nsswitch.conf

  ...
  #hosts:     db files nisplus nis dns
  hosts:      files dns
  ...

 /etc/host.conf にも同様の設定がありますが、CentOS 6では nsswitch.conf が優先されるようです(System V系とBSD系のちがい?)。ローカルホストでのみ有効なホストテーブルは /etc/hosts に設定します。

/etc/hosts
  $ sudo vi /etc/hosts

  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 ネームサーバのIPアドレスは /etc/resolv.conf に設定します。

/etc/resolv.conf
  $ sudo vi /etc/resolv.conf
  ; generated by /sbin/dhclient-script
  nameserver 10.0.2.3

(参考)

SELinuxの設定 (/etc/sysconfig/selinux)

 現在の SELinux の状態を表示するには getenforce をつかいます。 SELinux の状態は Enforcing(SELinux が有効、ポリシーは強制される)、Permissive(SELinux が有効、ポリシーは強制されない)、Disabled(SELinux が無効)のいずれかです。 ポリシーが強制されるとルールに基づいてアクセスが制限されます。 強制されない場合はアクセスの制限はありませんが、ルールに反するアクセスがログに記録されます。

getenforce
$ getenforce
Enforcing

 一時的に Enforcing、Permissive を切替えるには setenforce をつかいます。setenforce 0 で Permissive へ、setenforce 1 で Enforcing へ切り替わります。

setenforce
$ sudo setenforce 0
$ getenforce
Permissive

 永続的に状態を切り替えるには /etc/sysconfig/selinuxSELINUX=<状態> を設定して、システムを再起動します。SELinux を無効化する場合は SELINUX=disabled を設定します。

/etc/sysconfig/selinux
$ sudo vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled

$ sudo reboot

 SELinux には、ポリシー記述の知識がなくても変数の on/off を切り替えるだけでポリシーを変更できるブール値が用意されています。このブール値の一覧を表示するには getsebool -a をつかいます。

getsebool
$ getsebool -a | head
abrt_anon_write --> off
abrt_handle_event --> off
allow_console_login --> on
allow_cvs_read_shadow --> off
allow_daemons_dump_core --> on
...

 ブール値を変更するには setsebool -P <ブール値名> <値> をつかいます。

setsebool
$ sudo setsebool -P httpd_can_network_connect_db on

(参考) Scientific Linux 6 でのSELinux管理コマンドまとめ | 複眼中心

パケットフィルタリングの設定(iptables)

 iptables 管理ツールをつかって、パケットフィルタリングのルール (Netfilterのfilterテーブル) までを簡単に見ていきます。 この記事で扱うのは iptables の機能のほんの一部で、その他の機能 (nat、mangle や ip6tables) については扱いません。

 現在のパケットフィルタリングのルールを表示するには iptables -L をつかいます。

iptables
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

 上の出力例は、テーブル(filter)に設定された 3 つのチェーン(INPUT、FORWARD、OUTPUT)と各チェーンのルール(INPUT に 5 行、FORWARD に 1 行、OUTPUT に 0 行)の内容を表示しています。 この場合、OUTPUT チェーンにはルールが何も設定されておらず、OUTPUT のポリシーには ACCEPT が設定されているので、ローカルからネットワークへ出ていくパケットに適用されるのは常に ACCEPT です。 一方、INPUT チェーンのポリシーにも ACCEPT が設定されていますが、INPUT にはルールが 5 つ設定されているので、ネットワークからローカルへ入ってくるパケットはルールのマッチオプションに一致する target が適用されます。

 iptables の -L (--list) オプションだけではルールのマッチオプションまで詳しく表示されないので、より詳しい出力を表示させるには -v (--verbose) オプションを追加します。

iptables
$ sudo iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 2290  234K ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
   27  2268 ACCEPT     icmp --  any    any     anywhere             anywhere
   26  1560 ACCEPT     all  --  lo     any     anywhere             anywhere
    3   132 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh
    1    40 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 1534 packets, 283K bytes)
 pkts bytes target     prot opt in     out     source               destination

 -L (—list) だけでは表示されていなかった pkts, bytes, in, out の列が表示されています。それぞれの列が示しているのは次のような内容です。

列名 説明
pkts ルールにマッチしたパケット数
bytes 同バイト数
target ルールにマッチしたパケットに対するターゲット
prot ルールを適用するプロトコル
opt パケットの断片化の区別
in ルールを適用する入力インタフェース
out ルールを適用する出力インタフェース、INPUT チェーンでは指定不可
source ルールを適用するパケットの送信元アドレス
destination ルールを適用するパケットの送信先アドレス
追加のマッチオプション 拡張マッチモジュール (state や reject-with など)

 上記例の INPUT チェーン 1 行目のルールだけ見てみると、プロトコル、インタフェース、送信元・送信先のいずれも指定していませんが、 state モジュールによって既に接続が確立している状態 (ESTABLISHED) と既存の接続に関連して新しく接続された状態 (RELATED) を指定していて、 プロトコル、インタフェース等を問わず既存の接続は ACCEPT するという内容になります。

(参考)

自動起動の設定(chkconfig)

 サービスの自動起動は chkconfig で設定します。サービスと現在の設定の一覧を表示するには chkconfig --list をつかいます。

chkconfig
$ chkconfig --list
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
abrtd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anamon          0:off   1:off   2:off   3:off   4:off   5:off   6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
...

 上記の一覧は一行ずつ、サービス名とどのランレベル (0〜6) で起動するか (on/off) を示しています。

 サービスの自動起動を有効にするには chkconfig <サービス名> on をつかいます。無効にするには chkconfig <サービス名> off にしてください。

chkconfig
$ sudo chkconfig httpd on
$ chkconfig --list httpd
httpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

 ランレベルとは、システムの状態(シングルユーザモードかマルチユーザモードなど)によって切り替わる数字です。CUI のマルチユーザモードであれば 3、GUI のマルチユーザモードであれば 5 が、CentOS 6 のデフォルトです。 ランレベルについて詳しく踏み込みませんが /etc/inittab のコメントで少し説明されています。現在のランレベルを確認するにはrunlevel をつかいます。

/etc/inittab
$ tail /etc/inittab

# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

$ runlevel
N 3

(参考) 10.2.3. chkconfig ユーティリティの使用 – Red Hat Customer Portal

参考

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4