全般

使用ISOイメージは、基本はminimalを使っていく。
但しminimalがないディストリビューションや古いCentOSには無いのでその場合は通常版をそのまま使う。
最初はPoderosaなどターミナルから操作できないので、ネットワーク、SSHを使えるようにするところまでは直接操作。
バージョンを変えたくない場合は無暗にyum update、yum upgradeはしない。
プロキシ環境下ではyum.conf、wget.confなど設定ファイルでプロキシ経路を指定してやる必要がある。

文章中に /etc/rc.d/init.d/*** と /etc/init.d/*** が出てくる事があるが、いずれも同じなので好きな方を使えばいい。
何故ならRHEL4から/etc/init.d/は/etc/rc.d/init.d/のシンボリックリンクになっているためで同じもの。

設定ファイル(conf等)をviで直接編集する書き方をしているが、実際はsed -i や echo >> で置換、追記する形のほうが良い。
何故ならコマンドで行えばhistoryに残るので後で見返しが利く。
更にはバッチを作っておくと同じ環境を作る際に手間が減るので効率的になる。

CentOS6

・サポート期限

2020/11/30まで。あと数年でサポート期間が終了になるため、CentOS7への移行が急務な状況。
とは言っても5系を使い続けているところもあるので6系がすぐに使われなくなるとは思えないが。

Virtualbox

USBメモリを使う場合
Extension Packが必要になる。
USB機器を認識できた場合はUSBメモリからスクリプトファイルを取ってこれるので便利になる。
しかしVirtualbox側でUSB機器を認識している必要があるため、環境等によってUSB機器が使えない場合がある。


・ユーザ追加

目的・判断 コマンド 実行内容・結果 対処・備考
ユーザ追加 useradd username
パスワード設定 passwd username (警告時)
BAD PASSWORD: it is based on a dictionary word
外からの接続がなく一人で使う場合のみ、無視してよい。
wheelグループにusernameを追加 usermod -aG Wheel username cat /etc/group | grep wheel
wheelグループ登録ユーザを確認
左記コマンド実行
cat /etc/group | grep wheel
グループに追加されていることを確認

wheelはデフォルトで入っているグループ。流用するか否かは開発者の好みだが、本サーバではセキュリティ面で使わず、独自のグループを作成して設定した方がよいように思う。
su(root)を利用できるユーザを制限 vi /etc/pam.d/su

#auth sufficient pam_wheel.so trust use_uid

コメント(#)を外して有効化
複数のユーザを使っている場合に有効。
自宅サーバを自分一人で使ってる時にはあまり意味がないかも。
SSHアクセスでrootログインを禁止 vi /etc/ssh/sshd_config

#PermitRootLogin yes

コメント(#)を外して有効化するため再起動
/etc/rc.d/init.d/sshd restart
設定内容に不安な場合は -tでチェックすればエラー箇所が特定できる。
/usr/sbin/sshd -t
SSHアクセスできるユーザを限定 vi /etc/ssh/sshd_config

(追記)
AllowUsers username


ユーザを限定しておくことで、不用意なユーザからアクセスを防げるので、セキュリティも増す
空パスワードを不許可 vi /etc/ssh/sshd_config

#PermitEmptyPasswords

コメント外す
SSHアクセスできるコンソール数を制限 vi /etc/sysconfig/init

ACTIVE_CONSOLES=/dev/tty[1-6]

ACTIVE_CONSOLES=/dev/tty[1-3]
アクセス端末数も制限することで更にセキュリティも増す。



・skel追加

目的・判断 コマンド 実行内容・結果 対処・備考
ユーザ追加時に、共通して追加するテンプレート /etc/skel

配下に、ユーザ追加時に追加するディレクトリ、ファイル、bashrc等の設定を作成する
パーミッションも継承される
bashrc, bash_profileも継承されるので、複数人で使う場合は整えておくと便利になる。
独りサーバでは基本的には不要だろう。

・bashrc/bashprofile

設定はお好み次第。独りサーバなら自由だが会社や共有サーバのときは注意を。
目的・判断 コマンド 実行内容・結果 対処・備考
スクリーンセーバを使わない vi .bashrc
(追記)
setterm -blank 0
VM環境で使う場合はスクリーンセーバは使わない方が便利がいいため。
プロンプト設定 export PS1=’(設定内容)’

source ~/.bashrc


-----
\[\e[0;36;44m\] (ここから始める)
(表示内容 [\u@\h \W] など)
\[\e[0m\] (これで終了)


終了で [0m\]を設定しないと、プロンプト後の文字まで色がついてしまい、非常に見づらくなる。
(エラー文を強調したいとか、意図的にしている場合はいいが)

-----
root(su)ログインの場合は、赤。
→ .bashrc を修正
ほかユーザは、白。
→ /home/username/.bashrc を修正
\a ASCIIのベル文字(07)を表示・鳴らす
\d Fri Jan 5 で日付を表示
\e ASCIIのエスケープ文字(033)を表示
\h ホスト名の最初の「.」までの部分を表示
\H ホスト名を表示
\n 改行
\r 復帰
\s シェルの名前を表示する
\t 24時間の「HH:MM:SS」形式
\T 12時間の「HH:MM:SS」形式
\@ 12時間の「am/pm」形式
\u 現在のユーザー名を表示する
\v bashのバージョンを表示
\V bashのリリースを表示
\w ユーザーhomeからの絶対パスで表示
\W 現在の作業ディレクトリを表示
\! このコマンドの履歴番号を表示
\# ログイン後何回実行したか
\$ 実効UIDが0の場合に#、それ以外は$
\nnn 8進数nnnに対応する文字を表示する
\\ バックスラッシュを表示する
\[ escape sequence/端末制御
\] 非表示文字のシーケンスを終了する


指定例 [1;31;44m] (有効;文字;背景)

0 修飾なし
1 太字
4 下線
5 (実質未使用)
7 反転文字
8 背景色で塗りつぶし

30 黒
31 赤
32 緑
33 黄
34 青
35 紫
36 シアン(水色)
37 白
m 終了
プロンプトのスクリプト
$PS

1 通常入力
2 コマンド入力未完了(> )
3 インタラクティブメニュー(  )
4 プログラミングデバッグ(+ )
履歴の量を変更 export HISTSIZE=1000000
言語設定 export LANG='ja_JP.UTF-8'
export LC_ALL='ja_JP.UTF-8'
export LC_MESSAGES='ja_JP.UTF-8'
キーボード設定 vi /etc/sysconfig/keyboard

KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
KEYBOARDTYPE="pc"
日本語106/109キーボードを使っている場合、数字1やブレスが使えない場合は英語キーボードになっている。そういう場合は設定ファイルの変更が必要。
###bashprofile
コマンドエイリアス vi .bash_profile

alias name='コマンド'

(有効化)
source .bashr_profile
(例)
alias ls='ls -F --color=auto'
エイリアス無効化
\ls  (lsのエイリアス解除)


・ネットワークの状態確認

目的・判断 コマンド 実行内容・結果 対処・備考
現在のネットワークを確認 ifconfig lo Link encap:Local Loopback

ネットワークアダプタが「lo」のみ、ということが分かる。(つまり外へのアクセスが出来ない状態)
ネットワークアダプタを有効化
vi /etc/sysconfig/network-script/ifcfg-eth0

ONBOOT="no"

ONBOOT="yes"
BOOTPROTO=dhcp

/etc/rc.d/init.d/network restart
ifconfig

eth0 Link encap:Ethernet ...
と表示されれば有効化できている

ping 8.8.8.8 -c 3

エラーなければ外へも繋がったことが確認できる
(8.8.8.8はGoogleの公開DNS)
CentOS6ではデフォルトでDHCP設定が入っていないので追記する必要がある。
固定IPの場合は、
IPADDR
NETMASK
GATEWAY
を追記し、更に /etc/resolv.confにDNSサーバを追加する
echo "nemeserver 192.168.100.200" >> /etc/resolv.conf

SSH有効化 vi /etc/ssh/sshd_config

(コメントアウトする)
Port 22
PermitRootLogin yes
PasswordAuthentication yes
PermitRootLogin yes
は、rootでのログインを許すことになるので通常はコメントのまま残す。
なぜ書いたかというとどうしてもログインしないといけない場合がある時や解決の糸口が見つからない場合のことを考えて書いた。


・脆弱性対策

目的・判断 コマンド 実行内容・結果 対処・備考
bash-4.1.2-15.el6にbashコードインジェクションの脆弱性があります

※CentOS5、4にも同様の脆弱性あり
(確認)
rpm -qa | grep bash
(調査結果)
bash-4.1.2-15
→ 4.1.2-15以前は対策が必須

(対策)
yum update bash
→アップデートが完了したら、再度bashのバージョンを確認すること

2014年09月に確認されている脆弱性で急務です。
ネットワーク通信が出来るようになればすぐに実施してください。

・bash の脆弱性対策について(CVE-2014-6271 等)
http://www.ipa.go.jp/security/ciadr/vul/20140926-bash.html&br()
glibc-2.12-1.166.el6_7.3 以前のものに脆弱性あり

※CentOS7も同様の脆弱性あり。
(確認)
rpm -qa | grep glibc
(調査結果)
glibc-2.12-1.166.el6_7.3
→ 2.12-1.166.el6_7.3以前は対策が必須

(対策)
yum update glibc
→アップデートが完了したら、再度bashのバージョンを確認すること


JPCERT/CCによる、glibc ライブラリの脆弱性 (CVE-2015-7547) に関する注意喚起
<https://www.jpcert.or.jp/at/2016/at160009.html>
glibc-2.12-1.132 以前のものに脆弱性あり (確認)
rpm -qa | grep glibc
(調査結果)
glibc-2.12-1.132
→ 2.12-1.132以前は対策が必須

(対策)
yum update glibc
yum update rsh rsh-server

glibc, glibc-common, glibc-devel, glibc-headers, glibc-static, glibc-utils, nscd
も更新確認があるので同時に進める

→アップデートが完了したら、再度bashのバージョンを確認すること

glibc脆弱性(GHOST)の脆弱性
CVE-2015-0235 - Red Hat Customer Portal
<https://access.redhat.com/security/cve/CVE-2015-0235>
ntpを更新
(うるう秒対策)


ntp-4.2.8p10 より前
ntp-4.3.0 から ntp-4.3.93 まで
(サービス稼働確認)
/sbin/sservice ntpd status

(外部連携の確認)
/usr/sbin/ntpq -p

(バージョン確認)
rpm -qa | grep ntpd

→ runningと表示されれば稼働中


→ サマリーが表示されれば連携がある

yum update ntpd
バージョンを再度確認して最新になっていることを確認する
ntpdに関しては次の脆弱性がある。
OSバージョンによらず、全体的にあるので注意


JVNVU#95549222: NTP.org の ntpd に複数の脆弱性
<https://jvn.jp/vu/JVNVU95549222/>
opensshを更新

OpenSSH 5.4 から 7.1p1 まで
(バージョン確認)
rpm -qa | grep ssh
→  7.1p1 以下の場合は対策が必要


※2017/03/20現在
最新版は、7.5となっている。

JVNVU#95595627: OpenSSH のクライアントに複数の脆弱性
<https://jvn.jp/vu/JVNVU95595627/>

OpenSSHに複数の脆弱性 ( CVE-2016-10009 , CVE-2016-10010 , CVE-2016-10011 , CVE-2016-10012 ) — | サイオスOSS | サイオステクノロジー
<https://oss.sios.com/security/openssh-security-vulnerability-20161220>

※その他、一般的な脆弱課題は、【脆弱情報】にまとめています。

適宜、ソフトウェア、アプリの更新を行い、セキュリティを突かれないよう対策をしましょう。

【VM環境 ネットワーク接続】

目的・判断 コマンド 実行内容・結果 対処・備考
【CentOS6系】
ゲストOS、コンテナOS側
iptables確認
iptables -L ACCEPT tcp -- anywhere anywhere tcp dpt:ssh

上記の一文が入っていればsshのポートは開放されている。
iptables -nL でポート番号を確認することができる。

デフォルトではsshが解放されているだけなので、apacheやFTPなどはiptables -A INPUTで個別に許可してやる必要がある。
もちろんスクリプトで流し込んでも良い。
【CentOS7系】
firewalld 確認
firewall-cmd --list-services --zone=public --permanent

(詳細設定)
/usr/lib/firewalld/services/
配下にある各xmlファイル

(変更したらfirewalld再起動)
firewall-cmd --reload

→ dhcpv6-client http ssh

SSHが含まれていれば開放されている
ポートを変更したい場合は、/usr/lib/firewalld/services/ 配下にあるxmlを編集して再起動すればよい。
<port protocol="tcp" port="22"/>
のようなタグがあるのでここを編集すればよい。
Virtualbox

設定
→ネットワーク →アダプター1 →高度
→ポートフォワーディング
ホスト、ゲストの開放・接続ポートを設定
ゲストOS側が起動中であっても変更すれば即時適用される。
SSH(22)開放をゲストOS側のiptablesで四苦八苦やってもここが解放されてないとホストOS側からSSH接続できない、結構盲点になりやすい。

同様に、FTP(20, 21)telnet(23)、www(80)、DB(3306, 1521, 5432, 1433, 27017等)なども同じなので注意。
VMware
(VMware Workstation11の場合)
編集
→仮想ネットワークエディタ
→設定の変更
→VMnet8(NAT) →NAT設定
→ポート転送 →追加
→着信ポートのマッピング で設定
VMwareの場合、明示的にポートフォワーディングを設定できるが、特になにもしなくてもよかったと思う。
コンソールからSSH接続確認
poderosa
teraterm
putty   など
・SSHでログイン、接続できること IPは、Virtualboxの場合、192.168.56.1か127.0.0.1
VMwareの場合、192.168.232.129
Vagrantの場合、192.168.33.10
Dockerの場合、172.17.0.9等
がデフォルトになっている。
任意に設定しているなら設定したIPとポートに接続する。
最終更新:2017年08月19日 00:00