itcore TOPTIPScentos7.php

CentOS7 ネットインストール| itcore 2017年

事前準備 ダウンロード インストール sshログイン IP制限 sudoパスワードなし アップデート 時刻合わせ IPv6無効化 firewall SELinux無効化 sshタイムアウト対策 再起動

VMwareを使う場合は Ubuntu Server 16.04 LTS インストール も参照してください。
(今回、nicのアダプタにはVMXNET3を利用)

事前準備

インストールに必要な情報を準備します。
・インストール先のサーバ情報(VMwareアカウントなど)
・ホスト名
・リソース量(CPUコア数、メモリサイズ、DISK容量 OS,DATA)
・IPアドレス(プライベート、グローバル)
・rootアカウントのパスワード

ダウンロード

ネットインストール用のisoファイルをダウンロードします。
http://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-NetInstall-1708.iso

インストール

isoファイルからブートします。

上矢印で「Install CentOS 7」を選択してEnter


言語を選択


画面を下へスクロールして、ネットワークとホスト名をクリック


ホスト名を選択して適用


nicをオンにして設定をクリック


全般>自動的に接続する。


IPv6のセッティング>無視する


IPv4のセッティング>追加でアドレスを入力、他に必要な情報を設定します。
上記の例は別のnicでゲートウェイを指定しています。
参照DNSはGoogleのサーバを利用しています。


画面に設定した内容が反映されます。


この時点でpingが通るようになります。

全てのnicを設定します。


完了で前の画面に戻ります。


インストールソースを選択します。


ネットブートで参照するURLを指定します。
大文字小文字に気をつけてください。
http://ftp.riken.jp/Linux/centos/7/os/x86_64
isosがosになります。
URLが正しくないと「ベースリポジトリのセットアップ中にエラー」となります。


インストール先を選択します。


ディスクを選択します。


ソフトウェアを選択します。


インフラストラクチャサ^バーを選択します。


インストールの開始


rootパスワードの設定


パスワードを入力


ユーザの設定


パスワードを入力


再起動します。


ログイン画面が出ます

sshログイン


sshでログインします。


初回アクセスのときはホストの確認画面が出ますので追加しておきます。


作成したユーザでログインします。

管理者権限になります。
[root@centos7 admin]$ sudo -s

初回は以下の警告が表示されます。
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] admin のパスワード:
[root@centos7 admin]#

IP制限

IP制限用のシェルを作成します。
許可したいグローバルアドレスがあれば追加します。
[root@centos7 admin]# pwd
/home/admin
[root@centos7 admin]# vi ip_seigen.sh
#-------------------------
# Linux ssh IP制限
#-------------------------
F=/etc/hosts.allow
FB=${F}_`date "+%Y%m%d"`
if ! test -f $FB; then
  cp -np $F $FB
  echo ALL: 10. >> $F
  echo ALL: 192.168. >> $F
  echo ALL: 127.0. >> $F
fi
F=/etc/hosts.deny
FB=${F}_`date "+%Y%m%d"`
if ! test -f $FB; then
  cp -np $F $FB
  echo ALL: ALL >> $F
fi

シェルを実行してログを保存します。
sh -x ip_seigen.sh |& tee ip_seigen.log

グローバルアドレスから接続できないことを確認します。

未接続

SSHパケットを送信中に通信エラーが発生しました。
切断します。(WSAAsyncSelect1:20093)

念のため、今のssh画面を開いたまま、
プライベートアドレスから新たにログインできることを確認しておきます。

sudoパスワードなし

パスワードなしでsudoができるようにします。
vi sudo.sh
#-------------------------
# sudo パスワードきかれないようにする
#-------------------------
F=/etc/sudoers
FB=${F}_`date "+%Y%m%d"`
ADM=admin
if ! test -f $FB; then
  cp -np $F $FB
  echo $ADM ALL=NOPASSWD:ALL >> $F
fi

シェルを実行してログを保存します。
sh -x sudo.sh |& tee sudo.log

sshで新しくログインし、
sudoでパスワードを聞かれないことを確認します。

アップデート

アップデートするシェルを作成します。
vi update.sh
#-------------------------
# ソフトウェア アップデート
#-------------------------
uname -a
cat /etc/redhat-release
FB=/tmp/update.`date "+%Y%m%d"`
if ! test -f $FB; then
  touch $FB
  yum clean all
  yum -y update
  uname -a
  cat /etc/redhat-release
fi

シェルを実行してログを保存します。
sh -x update.sh |& tee update.log

初回は以下のようなメッセージが出ますが問題ありません。
NetworkManager-team-1.8.0-11.el7_4.x86_64.rpm の公開鍵がインストールされていま せん

アップデート前と後のバージョンを確認します。
head -4 update.log; tail -4 update.log

時刻合わせ

毎時1分に時刻を合わせます。

シェルを作成します。
vi time.sh
#-------------------------
# cron 時刻合わせ
#-------------------------
F=crontab.`date "+%Y%m%d"`
if ! test -f $F; then
  crontab -l > $F
  echo "1 * * * * /usr/sbin/ntpdate -b ntp.nict.jp ntp.jst.mfeed.ad.jp > /tmp/ntpdate.log 2>&1" >> $F
  crontab $F
  /usr/sbin/ntpdate -b ntp.nict.jp ntp.jst.mfeed.ad.jp
  hwclock -w
fi
crontab -l

シェルを実行してログを保存します。
sh -x time.sh |& tee time.log

IPv6無効化

新規ファイル作成
# vi /etc/sysctl.d/disable_ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
:wq
# sysctl -p /etc/sysctl.d/disable_ipv6.conf

firewall

デフォルトでは dhcpv6-client の穴が開いているため閉じておきます。

シェルを作成します。
vi firewall.sh
#-------------------------
# firewall 設定
#-------------------------
F=/tmp/firewall.`date "+%Y%m%d"`
if ! test -f $F; then
  firewall-cmd --list-all
  firewall-cmd --remove-service=dhcpv6-client --permanent
  firewall-cmd --reload
  firewall-cmd --list-all
fi

シェルを実行してログを保存します。
sh -x firewall.sh |& tee firewall.log

SELinux無効化

デフォルトではSELinuxが有効になっていますが、うまく動かないアプリケーションなどもあるため、通常のサーバでは無効化しておきます。

現在の状態
# getenforce
一時的に無効化
# setenforce 0
一時的に無効化
# setenforce 1

恒久的に無効にする。
# cd /etc/selinux
# cp -ip config config_`date "+%Y%m%d"`
# vi config
SELINUX=disabled
サーバを再起動すると反映されます。

sshタイムアウト対策

デフォルトだとssh画面をそのままにしておくとそのうちタイムアウトしてしまいます。
タイムアウトしないように設定します。

# cd /etc/ssh
# cp -ip sshd_config sshd_config_`date "+%Y%m%d"`
# vi sshd_config
:107
TCPKeepAlive yes
:112
ClientAliveInterval 15
ClientAliveCountMax 3

# systemctl restart sshd.service

再起動

念のためサーバを一度再起動して正常に立ち上がるか確認します。
# shutdown -r now