Linuxサーバ構築(CentOS)
任地では、Proxy&WebサーバとしてLinux(Led Hat Enterprise Linux 5.3)が1台ありました。ただライセンスがないので、パッケージのアップデートが出来なかったり(セキュリティ的に問題)、パッケージのインストールが出来ない為Proxy/Webサーバ以外の用途/役割を与えられない状況でした。
その為、フリーライセンスのLinux(CentOS)をインストールし、Proxy/Webサーバとして構築、その後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 |
| パーティション | システム容量 | デバイスタイプ | ファイルシステム |
|---|---|---|---|
| /boot | 500MB | 標準パーティション | xfs |
| / | 10GB | LVM | xfs |
| swap | 8GB | LVM | swap |
| /usr | 10GB | LVM | xfs |
| /var | 10GB | LVM | xfs |
| /home | 残り(199GB) | LVM | xfs |
インストール後の設定
ユーザの作成
rootユーザのパスワード設定、及びシステム管理者以外のユーザを作成後、アナウンスに従ってシステムを再起動します。
ライセンス情報
「ライセンス契約に同意します。」にチェックを入れ、完了をクリック。
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 # システムアップデート
確認コマンド
# 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><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><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 について
サーバリプレイス
旧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アドレスが変更できたことを確認
クライアントマシンのブラウザから、問題なくインターネットに接続できることを確認
