概要
自宅でUbuntu Server立てる時に共通で実施する設定です。
自分でも忘れることあるので、備忘録としても使おうと目論んでます。
AppArmor 無効化
Ubuntu 標準のセキュリティ機能を無効化。
ChatGPT の回答 - AppArmor について概要を3行で教えて
AppArmor は、Linux でアプリケーションの動作を制限するセキュリティ機構です。プロファイルを用いてファイルやリソースへのアクセスを制御し、システムを保護します。設定が簡単で軽量なため、Ubuntu などで標準的に利用されています。
確認操作
aa-status
systemctl status apparmor
変更操作
aa-teardown
systemctl disable apparmor
パッケージの更新(Linux カーネル含む)
apt によるパッケージの更新。
ChatGPT の回答 - apt について概要を3行で教えて
apt は、Debian 系 Linux で使われるパッケージ管理ツールです。ソフトウェアのインストール、更新、削除、依存関係の管理を簡単に行えます。Ubuntu などで広く利用され、システムの効率的な管理をサポートします。
確認操作
なし(変更操作時に確認画面が出る)
変更操作
apt update
apt dist-upgrade
QEMU エージェントインストール
proxmox で立てることが多いのでインストール
ChatGPT の回答 - QEMU エージェントについて概要を3行で教えて
QEMU エージェントは、仮想マシンとホスト間の通信を支援するために使用されるツールです。ゲスト OS 内で動作し、ホスト側からのコマンド実行や情報取得(例: シャットダウン、IP アドレスの取得)を可能にします。主に KVM/QEMU 環境で使われ、仮想化管理を効率化します。
確認操作
dpkg -l qemu-guest-agent |cat
systemctl status qemu-guest-agent
変更操作
apt install qemu-guest-agent
systemctl enable --now qemu-guest-agent
ロケール設定
日本で使う場合の設定
ChatGPT の回答 - ロケール設定について概要を3行で教えて
ロケール設定は、システムやアプリケーションで使用する言語や地域に依存する設定(例: 日付形式、文字コード)を管理する仕組みです。Linux では locale コマンドや設定ファイル(例: /etc/default/locale)を通じてロケールを確認・変更できます。正しいロケール設定は、国際化対応やエラーメッセージの言語統一に役立ちます。
確認操作
dpkg -l language-pack-ja |cat
localectl
timedatectl
変更操作
apt install language-pack-ja
localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
timedatectl set-timezone Asia/Tokyo
パッケージインストール -基本編-
素の OS を使いやすくするためのパッケージ
ChatGPT の回答 - 以下のコマンドをステップバイステップで解説して
- vim
- 高機能テキストエディタ。ターミナルでファイル編集に使われます。
- less
- ファイルやコマンド出力をスクロールして閲覧するためのツール。
- sudo
- 一般ユーザーが管理者権限でコマンドを実行するためのツール。
- htop
- インタラクティブなプロセス管理ツール。プロセスの状態や CPU/メモリを視覚的に確認できる。
- expect
- スクリプトで対話型アプリケーションを自動操作するためのツール。
- tree
- ディレクトリ構造をツリー形式で表示するコマンド。
- acl
- ファイルシステムのアクセス制御リスト(ACL)を管理するツール。
- bash-completion
- Bash シェルのコマンド補完機能を拡張するパッケージ。
- zip
- ファイルを ZIP 形式で圧縮するためのツール。
- unzip
- ZIP 形式のファイルを解凍するツール。
- dos2unix
- DOS 形式(Windows)の改行コードを Unix 形式に変換するツール。
- apt-utils
- パッケージ管理の補助ツール。詳細なインストール情報を提供します。
- software-properties-common
- 追加リポジトリの管理に必要。
- apt-transport-https
- HTTPS を使ったパッケージリポジトリとの通信を可能にするパッケージ。
- jq
- JSON 形式データを扱うための軽量コマンドラインツール。
確認操作
dpkg -l \
vim \
less \
sudo \
htop \
expect \
tree \
acl \
bash-completion \
zip \
unzip \
dos2unix \
apt-utils \
software-properties-common \
apt-transport-https \
jq \
|cat
変更操作
apt install \
vim \
less \
sudo \
htop \
expect \
tree \
acl \
bash-completion \
zip \
unzip \
dos2unix \
apt-utils \
software-properties-common \
apt-transport-https \
jq
パッケージインストール -ネットワーク編-
ネットワーク関連のツールをいれるパッケージ
ChatGPT の回答 - 以下のコマンドをステップバイステップで解説して
- iputils-tracepath
- ネットワーク経路を調査するツール。tracepath コマンドを提供し、MTU(最大転送単位)の問題を検出可能。
- iputils-ping
- ping コマンドを提供し、指定ホストへのネットワーク接続を確認。接続の可否や応答時間を測定。
- ca-certificates
- 信頼された証明書を管理するパッケージ。HTTPS 通信や TLS/SSL 証明書の検証に必要。
- bind9-utils
- BIND DNS サーバー関連のツールを提供。dig や host コマンドで DNS クエリを実行可能。
- net-tools
- 旧来のネットワーク管理ツールを提供。ifconfig や netstat コマンドが含まれる。
- traceroute
- ネットワーク経路を調査するツール。パケットが目的地に到達するまでのルートを表示。
- nmap
- ネットワークスキャナー。ポートスキャンやサービス検出、セキュリティ診断に使用。
- netcat-openbsd
- 軽量なネットワーク接続ツール。通信テストやポートスキャンに使用可能。
- dnsutils
- DNS 関連ツールを提供。nslookup コマンドで DNS 情報を照会可能。
- curl
- HTTP リクエストをコマンドラインで実行できるツール。ファイルのダウンロードや API 通信に利用。
- git
- 分散型バージョン管理システム。ソースコードの管理や共有に必須。
- wget
- HTTP や FTP でのファイルダウンロードを行うツール。スクリプトでの利用にも便利。
- telnet
- テキストベースのネットワークプロトコルを利用するツール。接続テストやポート確認に使用。
- nfs-common
- NFS(Network File System)を利用するクライアントツール。ネットワーク越しのファイル共有に必要。
- smbclient
- SMB/CIFS プロトコルを使用するクライアントツール。Windows 共有フォルダへアクセス可能。
- cifs-utils
- CIFS プロトコルを利用するためのツール。ファイル共有のマウントや管理に使用。
- openssh-client
- SSH クライアントツール。リモートサーバーへの接続を可能にします。
- openssh-server
- SSH サーバーツール。サーバーとしてリモートアクセスを許可します。
- lynx
- テキストベースのウェブブラウザ。低リソース環境やサーバーでウェブページの閲覧が可能。
確認操作
dpkg -l \
iputils-tracepath \
iputils-ping \
ca-certificates \
bind9-utils \
net-tools \
traceroute \
nmap \
netcat-openbsd \
dnsutils \
curl \
git \
wget \
telnet \
nfs-common \
smbclient \
cifs-utils \
openssh-client \
openssh-server \
lynx \
|cat
変更操作
apt install \
iputils-tracepath \
iputils-ping \
ca-certificates \
bind9-utils \
net-tools \
traceroute \
nmap \
netcat-openbsd \
dnsutils \
curl \
git \
wget \
telnet \
nfs-common \
smbclient \
cifs-utils \
openssh-client \
openssh-server \
lynx
パッケージインストール -ドメイン参加編-
ドメイン参加のツールをいれるパッケージ
ChatGPT の回答 - 以下のコマンドをステップバイステップで解説して
- realmd
- Active Directory や他の認証ドメインに参加するためのツール。ドメイン参加の設定を簡単に行える。
- sssd
- System Security Services Daemon(SSSD)で、認証情報をキャッシュし、AD や LDAP と連携。ユーザー認証や ID 情報の管理に使用。
- sssd-tools
- SSSD を管理するための補助ツール。追加のコマンドライン機能を提供。
- libnss-sss
- NSS(Name Service Switch)モジュール。SSSD を通じてユーザーやグループ情報を提供。
- libpam-sss
- PAM(Pluggable Authentication Module)モジュール。SSSD を使用して認証を行う。
- adcli
- Active Directory にシステムを簡単に参加させるための CLI ツール。ドメイン参加プロセスの自動化を支援。
- samba-common-bin
- Samba 関連のコマンドラインツール。net コマンドを使ってドメインや共有設定を管理可能。
- oddjob
- サービスやタスクを管理するデーモン。ユーザー認証や自動プロビジョニングに使用。
- oddjob-mkhomedir
- 新規ドメインユーザーのホームディレクトリを自動で作成するツール。
- packagekit
- システムパッケージの管理を行うフレームワーク。GUI ツールでのソフトウェアインストールや更新を支援。
- krb5-user
- Kerberos 5 認証用のユーザーランドツール。Active Directory とのシングルサインオン(SSO)に必要。
確認操作
dpkg -l \
realmd \
sssd \
sssd-tools \
libnss-sss \
libpam-sss \
adcli \
samba-common-bin \
oddjob \
oddjob-mkhomedir \
packagekit \
krb5-user \
|cat
変更操作
apt install \
realmd \
sssd \
sssd-tools \
libnss-sss \
libpam-sss \
adcli \
samba-common-bin \
oddjob \
oddjob-mkhomedir \
packagekit \
krb5-user
ドメイン参加
Ubuntu を ActiveDirectory に参加させる為の設定。
ドメイン名は個人情報チックなので【ドメイン名】としました。
ChatGPT の回答 - 以下のコマンドをステップバイステップで解説して
- UID/GID の最大値変更
目的: Linux のユーザー ID(UID)とグループ ID(GID)の最大値を 2147483600 に設定。
理由: Active Directory の UID/GID 範囲が大きいため、Linux 側で許容する範囲を拡張。 - NTP サーバー設定
目的: NTP(ネットワーク時刻同期)の設定に、AD ドメインの NTP サーバーを指定。
理由: Active Directory のドメイン参加には正確な時刻同期が必要。 - sudo の無パスワード設定
目的: AD グループ(domain admins と domain sudoers)に無パスワードで sudo 実行権限を付与。
理由: 管理者作業を簡略化。 - ホスト名設定
目的: ホスト名をドメイン名付きの FQDN(Fully Qualified Domain Name)に変更。
理由: AD ドメインで一意のホスト名を使用する必要があるため。 - DNS 解決設定
目的: ドメイン名を DNS 解決の対象として追加。
理由: AD ドメイン参加時の名前解決を正確に行うため。 - ホストファイルの更新
目的: /etc/hosts でループバックアドレスにホスト名を登録し、127.0.1.1 のエントリを削除。
理由: ホスト名解決がドメイン内で正しく機能するようにするため。 - PAM 設定の更新
目的: PAM(Pluggable Authentication Module)でホームディレクトリを自動作成し、アクセス権限を制限。
理由: 新しいドメインユーザーのログイン時に適切なホームディレクトリを提供。 - ホームディレクトリ準備
目的: ドメインユーザー用のホームディレクトリを作成。
理由: 各ユーザーのディレクトリを整理。 - ドメイン参加
指定した Active Directory ドメインに参加。
理由: Linux システムを AD の管理下に置き、ユーザー認証やポリシー適用を可能にする。
確認操作
grep -E "^(UID_MAX|GID_MAX)" /etc/login.defs
show-timesync |grep ServerName
sudo -l | grep "NOPASSWD"
hostnamectl
cat /etc/systemd/resolved.conf.d/AD.conf
systemctl status systemd-resolved
cat /etc/hosts
pam-auth-update --list
grep "pam_mkhomedir.so" /etc/pam.d/common-session
ls -ld /home/【ドメイン名】
realm list
変更操作
sed -i "s/^UID_MAX.*$/UID_MAX 2147483600/g" /etc/login.defs
sed -i "s/^GID_MAX.*$/GID_MAX 2147483600/g" /etc/login.defs
sed -i "s/^[# ]*NTP=.*$/NTP=【ドメイン名】/g" /etc/systemd/timesyncd.conf ; systemctl restart systemd-timesyncd
cat <<"EOF" >> /etc/sudoers.d/NO-PASSWD
"%domain admins" ALL=NOPASSWD: ALL
"%domain sudoers" ALL=NOPASSWD: ALL
EOF
hostnamectl set-hostname $(hostname -s).【ドメイン名】
mkdir -p /etc/systemd/resolved.conf.d ; cat <<"EOF" >> /etc/systemd/resolved.conf.d/AD.conf
[Resolve]
Domains=【ドメイン名】
EOF
systemctl restart systemd-resolved
sed -i s/^127\.0\.0\.1.*$/"127.0.0.1 localhost localhost.localdomain $(hostname -s) $(hostname -f)"/g /etc/hosts
sed -i "/^127\.0\.1\.1.*$/d" /etc/hosts
pam-auth-update --enable mkhomedir
sed -i -re s/"pam_mkhomedir\.so"/"pam_mkhomedir\.so umask=027"/g /etc/pam.d/common-session
mkdir /home/【ドメイン名】; chmod 0755 /home/【ドメイン名】; chown root:root /home/【ドメイン名】
realm join 【ドメイン名】 -U administrator -v
SSSD の調整
ドメイン参加した状態だと使いづらいため調整する
ChatGPT の回答 - 以下のコマンドをステップバイステップで解説して
use_fully_qualified_names を False に設定して、user@domain の形式ではなく user 形式でユーザー名を利用可能にします。
デフォルトのログインシェルを/bin/bash に設定。
ホームディレクトリのパスを/home//形式に設定。
各ユーザーに専用グループを自動作成。
動的 DNS 更新を有効化。
動的 DNS の更新間隔を 12 時間に設定。
PTR レコード(逆引き DNS)の更新を有効化。
動的 DNS レコードの TTL を 1 時間に設定。
確認操作
grep -E "use_fully_qualified_names|default_shell|override_homedir|auto_private_groups|dyndns" /etc/sssd/sssd.conf
systemctl status sssd
id username
getent passwd username
nslookup $(hostname)
変更操作
sed -i "s/^use_fully_qualified_names = True$/use_fully_qualified_names = False/g" /etc/sssd/sssd.conf
cat <<"EOF" >> /etc/sssd/sssd.conf
default_shell=/bin/bash
override_homedir=/home/%d/%u
auto_private_groups = true
dyndns_update = true
dyndns_refresh_interval = 43200
dyndns_update_ptr = true
dyndns_ttl = 3600
EOF
systemctl restart sssd