Red Hat Certified Engineer 実験ガイド: サービス構成とセキュリティ

実験内容分類

  • ネットワークセキュリティ
    • IPv6設定(GUIツールnm-connection-editor推奨)
    • teamインターフェース設定
    • ファイアウォールポートフィルタ
    • ポートフォワーディング
  • ストレージサービス
    • iSCSIストレージ公開
    • NFS/SMBマウント
      • Kerberos認証NFS
      • Sambaマルチユーザーマウント
  • Webサービス
    • HTTPS/WSGIサーバ構築
    • 仮想ホスト構成
  • データベースサービス
    • MariaDB構築
  • その他
    • シェルスクリプト作成
    • SMTPメールサービス構成

Apache HTTPD Webサービス構築

要件

  • https://webapp0.example.comでTLS暗号化WSGIアプリケーションを提供
  • 必要なリソース:
    ファイル取得先
    TLS証明書http://classroom/pub/tls/certs/webapp0.crt
    秘密鍵http://classroom/pub/tls/private/webapp0.key
    CA証明書http://classroom/pub/example-ca.crt
    アプリケーション/home/student/webapp.wsgi

構築手順


# 必要パッケージインストール
yum -y install httpd mod_ssl mod_wsgi

# アプリケーションディレクトリ作成
mkdir -p /opt/webapp
cp /home/student/webapp.wsgi /opt/webapp/
restorecon -Rv /opt/webapp

# 証明書配置
cd /etc/pki/tls/certs
wget http://classroom.example.com/pub/example-ca.crt
wget http://classroom.example.com/pub/tls/certs/webapp0.crt

cd /etc/pki/tls/private
wget http://classroom.example.com/pub/tls/private/webapp0.key

# 仮想ホスト設定
echo "<VirtualHost *:443>
ServerName webapp0.example.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/webapp0.crt
SSLCertificateKeyFile /etc/pki/tls/private/webapp0.key
SSLCertificateChainFile /etc/pki/tls/certs/example-ca.crt
WSGIScriptAlias / /opt/webapp/webapp.wsgi
<Directory "/opt/webapp">
Require all granted
</Directory>
</VirtualHost>" > /etc/httpd/conf.d/webapp.conf

# サービス起動
systemctl enable httpd --now
firewall-cmd --add-service=https --permanent

# 検証
curl -k https://webapp0.example.com

iSCSIストレージ構成

要件

  • server0で1GBのiSCSIターゲット公開
  • desktop0からのみアクセス可能

構築手順


# server0側
fdisk /dev/vdb  # 新規パーティション作成
partprobe
yum -y install targetcli
systemctl enable target --now

targetcli <<EOF
backstores/block create dev=/dev/vdb1 name=storage01
iscsi/ create wwn=iqn.2014-06.com.example:storage
iscsi/iqn.2014-06.com.example:storage/tpg1/acls create wwn=iqn.2014-06.com.example:client
iscsi/iqn.2014-06.com.example:storage/tpg1/luns create /backstores/block/storage01
iscsi/iqn.2014-06.com.example:storage/tpg1/portals create ip_address=172.25.0.11 ip_port=3260
saveconfig
exit
EOF

firewall-cmd --add-port=3260/tcp --permanent

# desktop0側
yum -y install iscsi-initiator-utils
echo "InitiatorName=iqn.2014-06.com.example:client" > /etc/iscsi/initiatorname.iscsi

iscsiadm -m discovery -t st -p 172.25.0.11
iscsiadm -m node -T iqn.2014-06.com.example:storage -l

mkfs.xfs /dev/sda
mkdir /mnt/iscsi
UUID=\$(blkid | grep sda | awk '{print \$2}' | sed 's/"//g')
echo "\$UUID /mnt/iscsi xfs _netdev 0 0" >> /etc/fstab
mount -a

Kerberos認証NFS構成

要件

  • /krbnfsをKerberos暗号化で共有
  • desktop0からの読み書き許可

構築手順


# server0側
mkdir /krbnfs
yum -y install nfs-utils
echo "/krbnfs 172.25.0.10(sec=krb5p,rw)" > /etc/exports
wget http://classroom.example.com/pub/keytabs/server0.keytab -O /etc/krb5.keytab

sed -i 's/RPCNFSDARGS="-V4.2"/RPCNFSDARGS="-V4.2"/' /etc/sysconfig/nfs
systemctl enable nfs-secure-server --now
firewall-cmd --add-service=nfs --permanent

# desktop0側
wget http://classroom.example.com/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab
mkdir /mnt/secure
systemctl enable nfs-secure --now

echo "server0:/krbnfs /mnt/secure nfs defaults,v4.2,sec=krb5p 0 0" >> /etc/fstab
mount -a

IPv6ネットワーク構成


# IPv6アドレス設定
nmcli connection add con-name eno1 type ethernet ifname eno1
nmcli connection modify eno1 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli connection modify eno1 ipv6.addresses fddb:fe2a:ab1e::c0a8:64/64 ipv6.method manual
nmcli connection up eno1

ファイアウォールポートフォワーディング


# 443→22ポート転送
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="172.25.0.10/32" forward-port port="443" protocol="tcp" to-port="22"' --permanent

MariaDB構築


# データベース構成
yum -y install mariadb-server
systemctl enable mariadb --now
mysql_secure_installation

mysql <<EOF
CREATE DATABASE legacy;
CREATE USER 'mary'@'%' IDENTIFIED BY 'mary_password';
GRANT SELECT ON legacy.* TO 'mary'@'%';
CREATE USER 'legacy'@'%' IDENTIFIED BY 'legacy_password';
GRANT SELECT,INSERT,UPDATE,DELETE ON legacy.* TO 'legacy'@'%';
CREATE USER 'report'@'%' IDENTIFIED BY 'report_password';
GRANT SELECT ON legacy.* TO 'report'@'%';
USE legacy;
SOURCE /home/student/mariadb.dump;
INSERT INTO manufacturer VALUES
('HP','Joe Doe','+1 (432) 754-3509'),
('Dell','Luke Skywalker','+1 (431) 219-4589'),
('Lenovo','Darth Vader','+1 (327) 647-6784');
EOF

firewall-cmd --add-service=mysql --permanent

メールサーバ構成


# Postfix空クライアント設定
postconf -e "relayhost=[smtp0.example.com]"
postconf -e "mynetworks=127.0.0.0/8 [::1]/128"
postconf -e "inet_interfaces=loopback-only"
postconf -e "myorigin=desktop0.example.com"
postconf -e "mydestination="
postconf -e "local_transport=error: local delivery disabled"

systemctl restart postfix
mail -s "test mail" student@desktop0.example.com <<EOT
Test message body
EOT

タグ: Apache HTTPD iSCSI NFS Kerberos samba Samba ACL

7月11日 17:21 投稿