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アドレスが変更できたことを確認
クライアントマシンのブラウザから、問題なくインターネットに接続できることを確認