7a. サーバ構築(Linux)

任国でリプレイスしたLinuxサーバについて記載していきます。プロキシサーバを構築してリプレイスしました。

Linuxサーバ構築(CentOS)

任地では、Proxy及びWebサーバとしてLinux(Led Hat Enterprise Linux 5.3)が1台ありました。ただライセンスがないので、パッケージのアップデートが出来なかったり(セキュリティ的に問題)、パッケージのインストールが出来ない為Proxy/Webサーバ以外の用途/役割を与えられない状況でした。

その為、フリーライセンスのLinux(CentOS)をインストールし、Proxy/WWWサーバとして構築、その後SambaをインストールしてActiveDirectoryに参加させ、メール/DB/Webアプリケーションサーバとして構築していこうと思います。(旧Proxyサーバはスタンバイ機として残すか、Windowsサーバをインストールして別用途で使用)

ハードウェアRAID1の設定

今回、OSが壊れていて放置されていたブレードサーバに、CentOSをインストールしていきます。ディスクは2枚あり、ハードウェアRAID1(ミラーリング)の設定はされてなかったので、まずはミラーリングの設定を行っていきます。

起動時の画面で「ctrl+c」を押し、SASコンフィグレーションユーティリティーを起動

該当のアダブタを選択してEnter

RAID Properties 及び SAS Topology で、以下のようにエンクロージャ配下にある2つのディスクをRAID1で設定します。

CentOS 7 インストール

CentOS 7 の特徴

  • 64ビット版のみ
  • 標準のファイルシステムはXFS
今回インストールするマシンのスペック
項目 サイズ
CPU Intel Xeon E5540 2.53GHz (2コア/4スレッド)
Memory 8GB
HDD 250GB(ハードウェアRAID1)

インストール概要

CentOS 7 のDVD-ROMを挿入して、マシンを起動

設定項目
項目 内容
Language Support English(Botswana)
Keyboard English(US)
Network & Hostname IPアドレス/サブネットマスク/デフォルトGW/DNSサーバ/ドメイン名/ホスト名を設定
Date & Time Africa/Gaborone timezone
Installation Source Local Media
Software Selection Server with GUI
Installation Destination Custom Partitioning Selected

centos7_inst1

パーティション設定
パーティション システム容量 デバイスタイプ ファイルシステム
/boot 500MB 標準パーティション xfs
/ 10GB LVM xfs
swap 8GB LVM swap
/usr 10GB LVM xfs
/var 10GB LVM xfs
/home 残り(199GB) LVM xfs

centos7_inst2

インストール後の設定

ユーザの作成

rootユーザのパスワード設定、及びシステム管理者以外のユーザを作成後、アナウンスに従ってシステムを再起動します。

centos7_inst3

ライセンス情報

「ライセンス契約に同意します。」にチェックを入れ、完了をクリック。

Kdump

Kdumpを有効にするにチェックし、kdumpメモリー予約は自動にチェックして、Kdumpを有効にします。

システムを最新にアップデート

プロキシを経由してインターネットに接続する場合は、以下のようにプロキシ設定をします。

# 最終行に追記 (プロキシサーバーを環境変数に設定)
# vi /etc/profile
MY_PROXY_URL="http://proxy.XXXXX.ac.bw:3128/"

HTTP_PROXY=$MY_PROXY_URL
HTTPS_PROXY=$MY_PROXY_URL
FTP_PROXY=$MY_PROXY_URL
http_proxy=$MY_PROXY_URL
https_proxy=$MY_PROXY_URL
ftp_proxy=$MY_PROXY_URL

export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy

# . /etc/profile	# 設定ファイルを読み込み
# env				# 環境変数が設定されたことを確認

カーネルとCentOSリリースを対象外にして、システムアップデート

# vi /etc/yum.conf
[main]
 :
exclude=kernel* centos*
 :

# yum clean all		# キャッシュのクリア
# yum check-update	# アップデートが必要なパッケージを確認
# yum -y update		# システムアップデート

参考
プロキシクライアントの設定 : CentOS
CentOS 7 システムアップデート

確認コマンド

# uname -a						# カーネルのバージョンを確認
Linux proxy.XXXXX.ac.bw 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/redhat-release		# CentOSのリリースバージョンを確認
CentOS Linux release 7.0.1406 (Core)

# 1CPU、2コア/4スレッドであることがわかります
# cat /proc/cpuinfo
processor       : 0
model name      : Intel(R) Xeon(R) CPU           E5540  @ 2.53GHz
physical id     : 1
core id         : 0
cpu cores       : 2
 :
processor       : 1
model name      : Intel(R) Xeon(R) CPU           E5540  @ 2.53GHz
physical id     : 1
core id         : 1
cpu cores       : 2
 :
processor       : 2
model name      : Intel(R) Xeon(R) CPU           E5540  @ 2.53GHz
physical id     : 1
core id         : 0
cpu cores       : 2
 :
processor       : 3
model name      : Intel(R) Xeon(R) CPU           E5540  @ 2.53GHz
physical id     : 1
core id         : 1
cpu cores       : 2

# free				# メモリとスワップサイズの確認
             total       used       free     shared    buffers     cached
Mem:       7996300    1512508    6483792      12292       1308     500844
-/+ buffers/cache:    1010356    6985944
Swap:      8191996          0    8191996

# fdisk -l /dev/sda		# ディスクサイズの確認
Disk /dev/sda: 249.5 GB, 249510756352 bytes, 487325696 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000832d8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   486408191   242691072   8e  Linux LVM

# df -h					# パーティションサイズの確認
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  9.8G  103M  9.7G   2% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G  140K  3.9G   1% /dev/shm
tmpfs                    3.9G  8.9M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-usr   9.8G  3.1G  6.7G  32% /usr
/dev/mapper/centos-home  195G   33M  195G   1% /home
/dev/mapper/centos-var   9.8G  308M  9.5G   4% /var
/dev/sda1                497M  103M  395M  21% /boot

# cat /etc/selinux/config		# 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 - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

# getenforce					# 動作モードの確認
Enforcing

# sestatus						# SELinuxの状態の表示
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

チーミングの設定

# nmcli c
# nmcli c a type team con-name team0 ifname team0	# team0を追加
# nmcli c
NAME   UUID                                  TYPE            DEVICE
team0  4489e55b-75c7-4889-b318-4f4fec69e573  team            team0
em1    09c8086e-70aa-4a65-9042-6589fa2a9d24  802-3-ethernet  em1
em2    53614cbe-a580-4380-b13e-0ac4c56171d5  802-3-ethernet  --

# チーミングインターフェースの設定
# nmcli c m team0 ipv4.method manual ipv4.addresses "10.XX.XX.XX/25 10.XX.XX.126"
# nmcli c m team0 ipv4.dns "10.XX.XX.1" ipv4.dns-search "XXXXX.ac.bw"

# スレーブインタフェースの追加
# nmcli c a type team-slave autoconnect no ifname em1 master team0
# nmcli c a type team-slave autoconnect no ifname em2 master team0
# nmcli c
NAME            UUID                                  TYPE            DEVICE
team0           4489e55b-75c7-4889-b318-4f4fec69e573  team            team0
em1             09c8086e-70aa-4a65-9042-6589fa2a9d24  802-3-ethernet  em1
em2             53614cbe-a580-4380-b13e-0ac4c56171d5  802-3-ethernet  --
team-slave-em2  2dc84d7e-a256-4691-8000-b3f2ad110576  802-3-ethernet  --
team-slave-em1  c1a4353a-2c5a-4471-a3e3-cdcc8ddfffb9  802-3-ethernet  --

# インタフェースの有効化と無効化
# nmcli c m em1 connection.autoconnect no
# nmcli c m em2 connection.autoconnect no
# nmcli c m team-slave-em1 connection.autoconnect yes
# nmcli c m team-slave-em2 connection.autoconnect yes

# systemctl restart network		# ネットワークの再起動
# nmcli c
NAME            UUID                                  TYPE            DEVICE
team0           4489e55b-75c7-4889-b318-4f4fec69e573  team            team0
em1             09c8086e-70aa-4a65-9042-6589fa2a9d24  802-3-ethernet  --
em2             53614cbe-a580-4380-b13e-0ac4c56171d5  802-3-ethernet  --
team-slave-em2  2dc84d7e-a256-4691-8000-b3f2ad110576  802-3-ethernet  em2
team-slave-em1  c1a4353a-2c5a-4471-a3e3-cdcc8ddfffb9  802-3-ethernet  em1

# チーミング状態の確認
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master team0 state UP qlen 1000
    link/ether 00:26:b9:f9:88:20 brd ff:ff:ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master team0 state UP qlen 1000
    link/ether 00:26:b9:f9:88:20 brd ff:ff:ff:ff:ff:ff
5: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 00:26:b9:f9:88:20 brd ff:ff:ff:ff:ff:ff
    inet 10.XX.XX.XX/25 brd 10.XX.XX.127 scope global team0
       valid_lft forever preferred_lft forever
    inet6 fe80::226:b9ff:fef9:8820/64 scope link
       valid_lft forever preferred_lft forever
# teamdctl team0 state
setup:
  runner: roundrobin
ports:
  em1
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
  em2
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
# nmtui						# 意図した通りに設定されていることを確認

NTP設定

CentOS7では、NTPサービスとして chrony が採用されていて、デフォルトでインストールされています。

# systemctl status chronyd	# 起動していることを確認
# cd /etc

# 下記の様に編集
# vi chrony.conf
# diff chrony.conf.org chrony.conf
3,6c3
< server 0.centos.pool.ntp.org iburst
< server 1.centos.pool.ntp.org iburst
< server 2.centos.pool.ntp.org iburst
< server 3.centos.pool.ntp.org iburst
---
> server 10.XX.XX.XX iburst
46c43
< #log measurements statistics tracking
---
> log measurements statistics tracking	# ログを取得する設定に変更

# systemctl restart chronyd				# chronydの再起動
# chronyc sources						# 同期されていることを確認
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* XXXXXXX.XXXXX.XX.ac.bw     1   6   365    32  -1018us[-3502us] +/-  10.7s

^* となっていれば同期が取れています。

vsftpdのインストール

vsftpdを導入して、FTPサーバを構築します。

# yum -y install vsftpd			# vsftpdパッケージのインストール

# /etc/vsftpd/vsftpd.conf を下記の様に編集
# vi vsftpd.conf
# diff vsftpd.conf.org vsftpd.conf
82,83c82,83
< #ascii_upload_enable=YES
< #ascii_download_enable=YES
---
> ascii_upload_enable=YES		# アスキーモードでのアップロードを許可
> ascii_download_enable=YES		# アスキーモードでのダウンロードを許可
109c109
< #ls_recurse_enable=YES
---
> ls_recurse_enable=YES			# サブフォルダを含む一括アップロード・ダウンロードを許可

# systemctl start vsftpd		# vsftpd起動
# systemctl status vsftpd		# vsftpd起動確認
# systemctl enable vsftpd		# 自動起動設定
# systemctl is-enabled vsftpd	# 自動起動設定の確認

# firewall-cmd --permanent --add-service=ftp	# ftpを許可
# firewall-cmd --reload							# 設定を反映
# firewall-cmd --permanent --list-services		# 公開されているサービスを確認

Windows端末からftp接続できることを確認

C:\>ftp 10.XX.XX.XX
User:			# ユーザ名入力
Password:		# パスワード入力
ftp> bye		# ftpコマンドから抜ける

プロキシサーバ構築

# nslookup proxy							# 最初に名前解決出来ていることを確認
Server:         10.XX.XX.XX
Address:        10.XX.XX.XX#53

Name:   proxy.xxxxx.xx.ac.bw
Address: 10.XX.XX.XX

# yum -y install squid						# squidのインストール

# vi /etc/squid/squid.conf
#-------------------------
# アクセスを許可したいアドレスを指定
# デフォルトのプライベートアドレスはコメントアウト
##acl localnet src 10.0.0.0/8  # RFC1918 possible internal network
##acl localnet src 172.16.0.0/12       # RFC1918 possible internal network
##acl localnet src 192.168.0.0/16      # RFC1918 possible internal network
##acl localnet src fc00::/7      # RFC 4193 local private network range
##acl localnet src fe80::/10     # RFC 4291 link-local (directly plugged) machines
acl mynetwork src 10.XX.0.0/16
acl ADMGXXXX src 10.XX.XX.XX/32				# 管理者のIPアドレスを登録

# == time block for the site
#========================================
acl site_block1 time MTWHF 7:30-12:45				# 就業時間中は該当サイトをブロック
acl site_block2 time MTWHF 13:45-16:30
acl block_site dstdomain .tunein.com .mpleger.de .cloak.com .gezcem.com .arnit.net .youtube.com .savefrom.net .facebook.com

http_access deny block_site site_block1 !ADMGXXXX	# 管理者は除く
http_access deny block_site site_block2 !ADMGXXXX

acl download method GET
http_access deny download
#=================================
# will have to paste site blocking by IP addresses here

#アクセスを許可するネットワークを指定
##http_access allow localnet
http_access allow mynetwork
http_access allow localhost
#-------------------------

# squid -k parse							# squidの構文チェックでエラーメッセージが無いことを確認
  :
2018/03/10 18:18:01| Processing: refresh_pattern .              0       20%     4320
2018/03/10 18:18:01| Processing: visible_hostname proxy.xxxxx.xx.ac.bw
2018/03/10 18:18:01| Initializing https proxy context

# systemctl start squid                     # squidがエラーなく起動できることを確認
 
# パケットフィルタリングの設定
# firewall-cmd --permanent --add-port=3128/tcp	# 3128へのTCP接続を許可
success
# firewall-cmd --reload
success
# firewall-cmd --list-all					# ポートが開放されたことを確認
public (default, active)
  interfaces: em1 em2 team0
  sources:
  services: dhcpv6-client ftp ssh
  ports: 3128/tcp
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

参考
設定・起動 – Squid
/etc/resolv.conf について
CentOS 7 (64bit)でのSquid構築方法

サーバリプレイス

旧proxyサーバのIPアドレスを変更(RedHat 5.3)

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.XX.XX.XX
PEERDNS=yes
IPV6INIT=yes
HWADDR=00:26:b9:f9:8b:30
BROADCAST=10.XX.XX.XX
USERCTL=no
BOOTPROTO=none
NAME=""
MACADDR=""
TYPE=Ethernet
DEVICE=eth0
NETMASK=255.255.255.128
MTU=""
IPADDR=10.XX.XX.XX							# 該当のIPアドレスに変更
NETWORK=10.XX.XX.XX
ONBOOT=yes

# service network restart					# networkの再起動
# ifconfig -a								# IPアドレスが変更されたことを確認

新proxyサーバのIPアドレスを変更(CentOS7)

# nmtui										# GUIライクにNW設定できます

# systemctl restart network					# networkの再起動
# ifconfig -a								# IPアドレスが変更できたことを確認

クライアントマシンのブラウザから、問題なくインターネットに接続できることを確認

参考
CentOS7のIPアドレスを変更する手順について(恒久的/一時的)