実験内容分類
- ネットワークセキュリティ
- IPv6設定(GUIツールnm-connection-editor推奨)
- teamインターフェース設定
- ファイアウォールポートフィルタ
- ポートフォワーディング
- ストレージサービス
- iSCSIストレージ公開
- NFS/SMBマウント
- Kerberos認証NFS
- Sambaマルチユーザーマウント
- Webサービス
- データベースサービス
- その他
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