<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.2">Jekyll</generator><link href="https://www.mk-mode.com/blog/atom.xml" rel="self" type="application/atom+xml" /><link href="https://www.mk-mode.com/blog/" rel="alternate" type="text/html" /><updated>2025-11-12T22:30:18+09:00</updated><id>https://www.mk-mode.com/blog/atom.xml</id><title type="html">mk-mode BLOG</title><subtitle>このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。PC・サーバ構築等の話題を中心に公開しております。</subtitle><author><name>mk-mode.com</name></author><entry><title type="html">Debian 13 (trixie) - Windows ファイルサーバ Samba 構築！</title><link href="https://www.mk-mode.com/blog/2025/11/13/debian-13-samba-installation/" rel="alternate" type="text/html" title="Debian 13 (trixie) - Windows ファイルサーバ Samba 構築！" /><published>2025-11-13T00:00:00+09:00</published><updated>2025-11-13T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/13/debian-13-samba-installation</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/13/debian-13-samba-installation/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) に Windows 用ファイルサーバ Samba を構築する方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13 (trixie; 64bit) での作業を想定。</li>
  <li>接続元のマシンは LMDE 6 (64bit) を想定。</li>
  <li>接続可能なマシンのネットワークは <code class="language-plaintext highlighter-rouge">192.168.11.0/24</code> を想定。</li>
  <li>ドメイン名は <code class="language-plaintext highlighter-rouge">mk-mode.com</code>、サーバホスト名は <code class="language-plaintext highlighter-rouge">p183</code> を想定。</li>
  <li>全ユーザ共有ディレクトリは <code class="language-plaintext highlighter-rouge">/home/share</code> とする。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-samba-サーバのインストール">1. Samba サーバのインストール</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install samba
</code></pre></div></div>

<h3 id="2-共有ディレクトリの作成">2. 共有ディレクトリの作成</h3>

<p>全ユーザが共有でフルアクセス可能なディレクトリを作成する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mkdir /home/share
# chown nobody:nogroup /home/share
# chmod 777 /home/share
</code></pre></div></div>

<h3 id="3-設定ファイルの編集">3. 設定ファイルの編集</h3>

<p>次のように設定する。<br />
※記述のある行の後ろにコメント（<code class="language-plaintext highlighter-rouge">#</code> で始まる文字列）を入れないこと。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/samba/smb.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">[</span>global]
   unix charset <span class="o">=</span> UTF-8            <span class="c"># &lt;= 追加</span>
   dos charset  <span class="o">=</span> CP932            <span class="c"># &lt;= 追加</span>

   workgroup <span class="o">=</span> WORKGROUP           <span class="c"># &lt;= Windows のワークグループ名に合わせる</span>

   interfaces <span class="o">=</span> 127.0.0.0/8 192.168.11.0/24  <span class="c"># &lt;= 接続許可するインターフェースを指定</span>
   <span class="nb">bind </span>interfaces only <span class="o">=</span> <span class="nb">yes</span>      <span class="c"># &lt;= interfaces 項目に指定したホストだけに接続を限定する</span>

   map to guest <span class="o">=</span> bad user         <span class="c"># &lt;= 未登録アカウントで接続された場合にゲストとして扱う</span>

   load printers <span class="o">=</span> no              <span class="c"># &lt;= プリンタを使用していない場合</span>
   disable spoolss <span class="o">=</span> <span class="nb">yes</span>           <span class="c"># &lt;= プリンタを使用していない場合</span>

   printing <span class="o">=</span> bsd                  <span class="c"># &lt;= プリンタを使用していない場合</span>

<span class="c"># 最終行に追加</span>
<span class="o">[</span>share]                            <span class="c"># &lt;= 共有名</span>
   path           <span class="o">=</span> /home/share    <span class="c"># &lt;= 共有ディレクトリ</span>
   writable       <span class="o">=</span> <span class="nb">yes</span>            <span class="c"># &lt;= 書込可</span>
   guest ok       <span class="o">=</span> <span class="nb">yes</span>            <span class="c"># &lt;= ゲストユーザー可</span>
   guest only     <span class="o">=</span> <span class="nb">yes</span>            <span class="c"># &lt;= 全てゲストとして扱う</span>
   create mode    <span class="o">=</span> 0777           <span class="c"># &lt;= ファイル作成はフル権限で</span>
   directory mode <span class="o">=</span> 0777           <span class="c"># &lt;= ディレクトリ作成はフル権限で</span>
</code></pre></div></div>

<h3 id="4-samba-サーバの再起動">4. Samba サーバの再起動</h3>

<p>設定を反映させるため、Samba サーバを再起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart smbd nmbd
</code></pre></div></div>

<h3 id="5-ファイアウォール設定">5. ファイアウォール設定</h3>

<p>ファイアウォールを設定している場合、Samba サーバが使用するポート（udp:137,138, tcp:139,445）を開放する必要がある。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw allow 137,138/udp
Rule added

# ufw allow 139,445/tcp
Rule added

# ufw status
     :
     :
137,138/udp                ALLOW       Anywhere
139,445/tcp                ALLOW       Anywhere
</code></pre></div></div>

<h3 id="6-動作確認">6. 動作確認</h3>

<p>クライアントマシンから Samba サーバの <code class="language-plaintext highlighter-rouge">/home/share</code> ディレクトリにアクセスし、ファイル操作が可能か確認する。</p>

<h3 id="7-アクセス権限付き設定">7. アクセス権限付き設定</h3>

<p>通常、中規模以下のネットワークでは上記のようなフルアクセスで問題ないが、大規模ネットワークやよりセキュアに構築したければ、アクセス権限を設定する。<br />
以下、 <code class="language-plaintext highlighter-rouge">hoge</code> グループに属するユーザのみが、 <code class="language-plaintext highlighter-rouge">/home/hoge</code> ディレクトリにアクセスできるようにする設定例。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># groupadd hoge          # &lt;= グループ追加
# mkdir /home/hoge       # &lt;= 専用ディレクトリ作成
# chgrp hoge /home/hoge  # &lt;= ディレクトリに所有グループ設定
# chmod 770 /home/hoge   # &lt;= 専用ディレクトリに権限付与
</code></pre></div></div>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/samba/smb.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>security <span class="o">=</span> user  <span class="c"># &lt; = ユーザ認証モード</span>

<span class="c"># 最終行に追加</span>
<span class="o">[</span>Hoge]
   path <span class="o">=</span> /home/hoge
   writable <span class="o">=</span> <span class="nb">yes
   </span>create mode <span class="o">=</span> 0770
   directory mode <span class="o">=</span> 0770
   share modes <span class="o">=</span> <span class="nb">yes
   </span>guest ok <span class="o">=</span> no        <span class="c"># &lt; = ゲストユーザ不許可</span>
   valid <span class="nb">users</span> <span class="o">=</span> @hoge  <span class="c"># &lt; = hoge グループのみ許可</span>
</code></pre></div></div>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># smbpasswd -a fuga       # &lt; = Samba アクセスユーザ追加登録
New SMB password:         # &lt; = パスワード設定
Retype new SMB password:  # &lt; = パスワード再入力
# usermod -G hoge fuga    # &lt; = hoge グループに fuga ユーザ追加
</code></pre></div></div>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/init.d/samba restart  # &lt; = Samba 再起動
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
</code></pre></div></div>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="Postfix" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) に Windows 用ファイルサーバ Samba を構築する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - NFS サーバのポート固定！</title><link href="https://www.mk-mode.com/blog/2025/11/12/debian-13-nfs-port-fixing/" rel="alternate" type="text/html" title="Debian 13 (trixie) - NFS サーバのポート固定！" /><published>2025-11-12T00:00:00+09:00</published><updated>2025-11-12T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/12/debian-13-nfs-port-fixing</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/12/debian-13-nfs-port-fixing/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) に NFS サーバで使用するポートを固定化する方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13 (trixie; 64bit) での作業を想定。</li>
  <li>接続元のマシンは LMDE 6 (64bit) を想定。</li>
  <li>NFS サーバ構築済み。<br />
（参照：「<a href="/blog/2025/11/11/debian-13-nfs-installation" title="Debian 13 (trixie) - NFS サーバ構築！">Debian 13 (trixie) - NFS サーバ構築！</a>」）</li>
  <li>ファイアウォール iptables が構築済み。<br />
（参照：「<a href="/blog/2025/11/06/debian-13-firewall-setting" title="Debian 13 (trixie) - ファイアウォール設定！">Debian 13 (trixie) - ファイアウォール設定！</a>」）</li>
  <li>以下で設定するポート番号は<a href="https://wiki.debian.org/SecuringNFS" title="SecuringNFS - Debian Wiki">参考サイト</a>によるもであり、任意に設定可能。</li>
  <li>quota は使用していないので、<a href="https://wiki.debian.org/SecuringNFS" title="SecuringNFS - Debian Wiki">参考サイト</a>にある quota の設定はしない。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-前提知識">1. 前提知識</h3>

<p>NFS サーバが使用するポートは以下のとおり。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>portmapper =&gt; TCP: 111, UDP: 111
nfs        =&gt; TCP:2049, UDP:2049
statd      =&gt; TCP:不定, UDP:不定
mountd     =&gt; TCP:不定, UDP:不定
nlockmgrq  =&gt; TCP:不定, UDP:不定
</code></pre></div></div>

<h3 id="2-statd-用ポートの固定">2. statd 用ポートの固定</h3>

<p>statd のポートを固定するには <code class="language-plaintext highlighter-rouge">/etc/default/nfs-common</code> を以下のようにする。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/default/nfs-common</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">STATDOPTS</span><span class="o">=</span><span class="s2">"--port 32765 --outgoing-port 32766"</span>
</code></pre></div></div>

<h3 id="3-mountd-用ポートの固定">3. mountd 用ポートの固定</h3>

<p>mountd のポートを固定するには <code class="language-plaintext highlighter-rouge">/etc/default/nfs-kernel-server</code> を以下のようにする。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/default/nfs-kernel-server</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">RPCMOUNTDOPTS</span><span class="o">=</span><span class="s2">"-p 32767"</span>
</code></pre></div></div>

<h3 id="4-lockd-モジュールの設定">4. lockd モジュールの設定</h3>

<p>オプション付き lockd モジュールを提供するために、以下のように <code class="language-plaintext highlighter-rouge">/etc/modprobe.d/local.conf</code> を作成する。</p>

<p>FIle: <code class="language-plaintext highlighter-rouge">/etc/modprobe.d/local.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>options lockd <span class="nv">nlm_udpport</span><span class="o">=</span>32768 <span class="nv">nlm_tcpport</span><span class="o">=</span>32768
options nfs <span class="nv">callback_tcpport</span><span class="o">=</span>32764
</code></pre></div></div>

<h3 id="5-マシンの再起動">5. マシンの再起動</h3>

<p>設定を反映させるため、マシンを再起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># reboot
</code></pre></div></div>

<h3 id="6-設定の確認">6. 設定の確認</h3>

<p>以下のようにして、RPC 情報（ポートの設定）を確認してみる。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp  42606  mountd
    100005    1   tcp  40969  mountd
    100005    2   udp  41603  mountd
    100005    2   tcp  39321  mountd
    100005    3   udp  51836  mountd
    100005    3   tcp  34891  mountd
    100024    1   udp  40708  status
    100024    1   tcp  53155  status
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100021    1   udp  32768  nlockmgr
    100021    3   udp  32768  nlockmgr
    100021    4   udp  32768  nlockmgr
    100021    1   tcp  32768  nlockmgr
    100021    3   tcp  32768  nlockmgr
    100021    4   tcp  32768  nlockmgr
</code></pre></div></div>

<h3 id="7-ファイアウォールufwの設定">7. ファイアウォール(ufw)の設定</h3>

<p>NFS サーバが使用するポートが固定されたので、ufw でファイアウォールの設定を行う。（以下はローカルネットワーク内からのみアクセス可能にする例）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw allow proto tcp from 192.168.11.0/24 to any port 111,2049,32765,32767,32768
Rule added
# ufw allow proto udp from 192.168.11.0/24 to any port 111,2049,32765,32767,32768
Rule added
</code></pre></div></div>

<p>確認。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw status
Status: active

To                         Action      From
--                         ------      ----
      :
===&lt; 中略 &gt;===
      :
111,2049,32765,32767,32768/tcp ALLOW       192.168.11.0/24
111,2049,32765,32767,32768/udp ALLOW       192.168.11.0/24
</code></pre></div></div>

<h3 id="8-動作確認">8. 動作確認</h3>

<p>クライアントマシンでマウントして接続できることも確認しておく。</p>

<h3 id="9-参考サイト">9. 参考サイト</h3>

<ul>
  <li><a href="https://wiki.debian.org/SecuringNFS" title="SecuringNFS - Debian Wiki">SecuringNFS - Debian Wiki</a></li>
</ul>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="NFS" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) に NFS サーバで使用するポートを固定化する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - NFS サーバ構築！</title><link href="https://www.mk-mode.com/blog/2025/11/11/debian-13-nfs-installation/" rel="alternate" type="text/html" title="Debian 13 (trixie) - NFS サーバ構築！" /><published>2025-11-11T00:00:00+09:00</published><updated>2025-11-11T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/11/debian-13-nfs-installation</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/11/debian-13-nfs-installation/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) に NFS サーバを構築する方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li>接続元のマシンは LMDE 6 (64bit) を想定。</li>
  <li>接続可能なマシンのネットワークは <code class="language-plaintext highlighter-rouge">192.168.11.0/24</code> を想定。</li>
  <li>ドメイン名は <code class="language-plaintext highlighter-rouge">mk-mode.com</code>、サーバホスト名は <code class="language-plaintext highlighter-rouge">p183</code> を想定。</li>
  <li>NFS 用ディレクトリを新たに作成する。（<code class="language-plaintext highlighter-rouge">/var</code> 配下に <code class="language-plaintext highlighter-rouge">/exports</code> ディレクトリを作成する）</li>
  <li>クライアント側でマウントに使用するディレクトリも <code class="language-plaintext highlighter-rouge">/var/exports</code> とする。</li>
  <li>サーバ側は root で作業することを想定、クライアント側は一般ユーザで作業することを想定している。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-nfs-サーバのインストール">1. NFS サーバのインストール</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install nfs-kernel-server
</code></pre></div></div>

<h3 id="2-idmapd-設定の編集">2. idmapd 設定の編集</h3>

<p><code class="language-plaintext highlighter-rouge">/etc/idmapd.conf</code> というユーザー名・グループ名と UID/GID のマッピングを保持するデーモンの設定ファイルを以下のように編集する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/idmapd.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Domain <span class="o">=</span> mk-mode.com  <span class="c"># &lt; = コメント解除＆自ドメイン名に変更</span>
</code></pre></div></div>

<h3 id="3-nfs-用ディレクトリの作成">3. NFS 用ディレクトリの作成</h3>

<p>共有 NFS ディレクトリを以下のようにして作成する。<br />
所有者・所有グループは <code class="language-plaintext highlighter-rouge">/etc/idmapd.conf</code> に記載されている <code class="language-plaintext highlighter-rouge">nobody</code>, <code class="language-plaintext highlighter-rouge">nogroup</code> とする。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mkdir /var/exports
# chown -R nobody:nogroup /var/exports
</code></pre></div></div>

<h3 id="4-exports-の編集">4. exports の編集</h3>

<p>設定ファイル <code class="language-plaintext highlighter-rouge">/etc/exports</code> を以下のように編集（追記）する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/exports</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/var/exports 192.168.11.0/24<span class="o">(</span>rw,sync,fsid<span class="o">=</span>0,no_root_squash,no_subtree_check<span class="o">)</span>
</code></pre></div></div>

<h3 id="5-ファイアウォール-ufw-の無効化">5. ファイアウォール (ufw) の無効化</h3>

<p>NFS サーバは都度ポート番号が変更になるため、ファイアウォールで開放するポートを指定できない。<br />
ファイアウォール ufw を「一時的」にオフにする。<br />
（別途、NFS サーバのポートを固定する措置を施せばよい（別記事））</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw disable
Firewall stopped and disabled on system startup
</code></pre></div></div>

<h3 id="6-nfs-サーバ再起動">6. NFS サーバ再起動</h3>

<p>設定を反映させるため、NFS サーバを再起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart nfs-kernel-server
</code></pre></div></div>

<p>【以下、クライアント側・ローカルユーザでの作業】</p>

<h3 id="7-nfs-クライアントのインストール">7. NFS クライアントのインストール</h3>

<p>NFS クライアントを以下のようにしてインストールする。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt install -y nfs-client
</code></pre></div></div>

<ul>
  <li>Linux ディストリビューションによっては <code class="language-plaintext highlighter-rouge">apt command [options]</code> でなく <code class="language-plaintext highlighter-rouge">apt [options] command</code> のことがあるので注意。</li>
</ul>

<h3 id="8-idmapd-設定の編集">8. idmapd 設定の編集</h3>

<p>NFS サーバ同様 <code class="language-plaintext highlighter-rouge">etc/idmapd.conf</code> という設定ファイルを、以下のように編集する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/idmapd.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Domain <span class="o">=</span> mk-mode.com  <span class="c"># &lt;= コメント解除＆自ドメイン名に変更</span>
</code></pre></div></div>

<h3 id="9-nfs-クライアントの再起動">9. NFS クライアントの再起動</h3>

<p>設定を反映させるため、NFS クライアントを再起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo systemctl restart nfs-common
</code></pre></div></div>

<p>ちなみに、nfs-common は自動起動するようになっているが、普段使用しない場合は、以下のように自動起動しないように設定しておいてもよいだろう。（NFS を使用したい時のみ nfs-common を起動させる）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo systemctl disable nfs-common
</code></pre></div></div>

<h3 id="10-マウント用ディレクトリの作成">10. マウント用ディレクトリの作成</h3>

<p>マウントするディレクトリを作成する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkdir /var/exports
</code></pre></div></div>

<h3 id="11-マウント">11. マウント</h3>

<p>NFS サーバのディレクトリ使用するために、クライアントマシンでマウントする。<br />
以下では、クライアントマシンの <code class="language-plaintext highlighter-rouge">/var/exports</code> ディレクトリにマウントしている。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mount -t nfs p183.mk-mode.com:/var/exports /var/exports
</code></pre></div></div>

<h3 id="12-確認">12. 確認</h3>

<p>マウントできているか <code class="language-plaintext highlighter-rouge">df</code> コマンドで確認する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># df -h
Filesystem                     Size  Used Avail Use% Mounted on
         :
====&lt; 途中省略 &gt;====
         :
p183.mk-mode.com:/var/exports   1.7G  431M  1.2G   28% /var/exports
</code></pre></div></div>

<p>その他、クライアントマシンからファイルを貼り付けてみたり、削除してみたりしてみる。</p>

<h3 id="13-自動マウントの設定">13. 自動マウントの設定</h3>

<p>上記の方法ではクライアントマシンを再起動するたびにマウントしないといけないので、マシン起動時に自動マウントするようにしたければ以下のように fstab を設定する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/fstab</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>p183.mk-mode.com:/var/exports   /var/exports  nfs     defaults        0       0
</code></pre></div></div>

<p>クライアントマシン再起動時にマウントされるかも確認しておく。</p>

<h3 id="14-ファイアウォール-ufw-の有効化">14. ファイアウォール (ufw) の有効化</h3>

<p>テストのために無効化していたファイアウォールを有効化に戻す。※サーバ側</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
</code></pre></div></div>

<p>実際に運用する場会は、 NVF サーバのポートを固定する設定を施す。<br />
ここでは、一旦ファイアウォールを有効化に戻しておく。（この後続けて、次記事の方法で NFS サーバのポート固定の設定を施すのであれば、この限りでない）</p>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="NFS" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) に NFS サーバを構築する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 trixiebookworm) - FTP サーバ構築！</title><link href="https://www.mk-mode.com/blog/2025/11/10/debian-13-ftp-installation/" rel="alternate" type="text/html" title="Debian 13 trixiebookworm) - FTP サーバ構築！" /><published>2025-11-10T00:20:00+09:00</published><updated>2025-11-10T00:20:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/10/debian-13-ftp-installation</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/10/debian-13-ftp-installation/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) に FTP サーバを構築する方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li>接続元のマシンは LMDE 6 (64bit) を想定。</li>
  <li>接続テストでは FileZilla という FTP クライアントを使用する。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-vsftpd-のインストール">1. vsftpd のインストール</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install vsftpd
</code></pre></div></div>

<h3 id="2-vsftpd-設定ファイルの編集">2. vsftpd 設定ファイルの編集</h3>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/vsftpd.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># anonymous によるログインを無効化</span>
<span class="nv">anonymous_enable</span><span class="o">=</span>NO

<span class="c"># ローカルアクセスの許可</span>
<span class="nv">local_enable</span><span class="o">=</span>YES

<span class="c"># 書き込み許可</span>
<span class="nv">write_enable</span><span class="o">=</span>YES

<span class="c"># アスキーモードでの転送を許可</span>
<span class="nv">ascii_upload_enable</span><span class="o">=</span>YES
<span class="nv">ascii_download_enable</span><span class="o">=</span>YES

<span class="c"># chroot 有効化</span>
<span class="nv">chroot_local_user</span><span class="o">=</span>YES

<span class="c"># chroot リスト有効化</span>
<span class="nv">chroot_list_enable</span><span class="o">=</span>YES

<span class="c"># chroot リスト指定</span>
<span class="nv">chroot_list_file</span><span class="o">=</span>/etc/vsftpd.chroot_list

<span class="c"># chroot ディレクトリへの書き込み許可</span>
<span class="nv">allow_writeable_chroot</span><span class="o">=</span>YES

<span class="c"># ディレクトリごと一括での転送を有効化</span>
<span class="nv">ls_recurse_enable</span><span class="o">=</span>YES

<span class="c"># chroot のルートディレクトリ指定</span>
<span class="c"># ( 指定しない場合はユーザーのホームディレクトリ直下 )</span>
<span class="c"># public_htmlを指定した場合で、且つ当該ディレクトリがないとログインできないので注意</span>
<span class="nv">local_root</span><span class="o">=</span>public_html

<span class="c"># seccomp filter をオフにする</span>
<span class="nv">seccomp_sandbox</span><span class="o">=</span>NO

<span class="c"># PASV モード有効化</span>
<span class="nv">pasv_enable</span><span class="o">=</span>YES
<span class="nv">pasv_min_port</span><span class="o">=</span>4000
<span class="nv">pasv_max_port</span><span class="o">=</span>4005
</code></pre></div></div>

<h3 id="3-ホームディレクトリより上層へのアクセス許可設定">3. ホームディレクトリより上層へのアクセス許可設定</h3>

<p>ホームディレクトリより上層へのアクセスを許可するユーザのリストを作成する。（上記設定ファイル内の “/etc/vsftpd.chroot_list” のこと）<br />
指定は、１行に１ユーザ。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/vsftpd.chroot_list</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>foo
</code></pre></div></div>

<h3 id="4-ssl-サーバの構築">4. SSL サーバの構築</h3>

<p>vsftpd を SSL/TLS で使用できるようにするには SSL サーバが必要であるので、未インストールなら OpenSSL をインストールする。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install openssl
</code></pre></div></div>

<h3 id="5-サーバ証明書の作成">5. サーバ証明書の作成</h3>

<p>vsftpd を SSL/TLS で 10 年使用できるようサーバ証明書を作成する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /etc/ssl/private
# openssl req -x509 -nodes -newkey rsa:2048 -keyout vsftpd.pem -out vsftpd.pem -days 3650

      :
===&lt; 中略 &gt;===
      :

-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP                                    # &lt;= 国の略名
State or Province Name (full name) [Some-State]:Shimane                 # &lt;= 都道府県名
Locality Name (eg, city) []:Matsue                                      # &lt;= 市区町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:mk-mode.com  # &lt;= 組織名（何でもよい）
Organizational Unit Name (eg, section) []:                              # &lt;= 部署名（空でよい）
Common Name (e.g. server FQDN or YOUR name) []:ftp.mk-mode.com          # &lt;= ホスト名
Email Address []:root@mk-mode.com                                       # &lt;= 管理者メールアドレス
</code></pre></div></div>

<p>作成したサーバ証明書のパーミッションを設定する。（所有者読み込み専用に）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chmod 400 vsftpd.pem
</code></pre></div></div>

<h3 id="6-vsftpd-設定ファイルの編集">6. vsftpd 設定ファイルの編集</h3>

<p>サーバ証明書を使用できるよう vsftpd 設定ファイルを以下のように編集する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/vsftpd.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">rsa_cert_file</span><span class="o">=</span>/etc/ssl/private/vsftpd.pem         <span class="c"># 編集（上記で設定した証明書）</span>
<span class="nv">rsa_private_key_file</span><span class="o">=</span>/etc/ssl/private/vsftpd.pem  <span class="c"># 編集（上記で設定した証明書）</span>
<span class="nv">ssl_enable</span><span class="o">=</span>YES                                    <span class="c"># 編集（SSL有効化）</span>
<span class="nv">ssl_ciphers</span><span class="o">=</span>HIGH
<span class="nv">ssl_tlsv1</span><span class="o">=</span>YES
<span class="nv">ssl_sslv2</span><span class="o">=</span>NO
<span class="nv">ssl_sslv3</span><span class="o">=</span>NO
<span class="nv">force_local_data_ssl</span><span class="o">=</span>YES
<span class="nv">force_local_logins_ssl</span><span class="o">=</span>YES
</code></pre></div></div>

<h3 id="7-vsftpd-の再起動">7. vsftpd の再起動</h3>

<p>設定を有効化するために、vsftpd を再起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart vsftpd
</code></pre></div></div>

<h3 id="8-ファイアウォール-ufw-の設定">8. ファイアウォール (ufw) の設定</h3>

<p>外部に公開する場合は、TCP ポート 21(FTP) へのアクセスを許可する必要がある。<br />
また、 PASV モードで運用する場合は、 <code class="language-plaintext highlighter-rouge">/etc/vsftpd.conf</code> の <code class="language-plaintext highlighter-rouge">pasv_min_port</code> から <code class="language-plaintext highlighter-rouge">pasv_max_port</code> で設定したポートも開放する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw allow 21/tcp
Rule added

# ufw allow 4000,4001,4002,4003,4004,4005/tcp
Rule added

# ufw status
Status: active

To                         Action      From
--                         ------      ----
9999/tcp                   ALLOW       192.168.11.0/24
53                         ALLOW       Anywhere
21/tcp                     ALLOW       Anywhere
4000,4001,4002,4003,4004,4005/tcp ALLOW       Anywhere
</code></pre></div></div>

<h3 id="9-動作確認">9. 動作確認</h3>

<p>クライアント側からコマンドラインや FTP クライアントでサーバに接続して、アップロード・ダウンロード等各種操作が可能かチェックする。<br />
FTP クライアント FileZilla なら以下のように設定してログイン。</p>

<ul>
  <li>ホスト：サーバホスト名 or サーバ IP アドレス</li>
  <li>プロトコル：「FTP - ファイル転送プロトコル」</li>
  <li>暗号化：「明示的な FTP over TLS が必要」</li>
  <li>ログオンの種類：「通常」 or 「パスワードを尋ねる」</li>
  <li>ユーザ：ユーザ名</li>
  <li>転送モード：「アクティブ」</li>
</ul>

<p>lftp を使用するなら、インストール後、設定を行なう。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install lftp
</code></pre></div></div>

<p>Filename: <code class="language-plaintext highlighter-rouge">~/.lftprc</code></p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>set ftp:ssl-auth TLS
set ftp:ssl-force true
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes
set ftp:ssl-protect-fxp yes
set ssl:verify-certificate no
</code></pre></div></div>

<p>そして、ログイン。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ lftp -u masaru 192.168.11.101
</code></pre></div></div>

<h3 id="10-自動起動の設定">10. 自動起動の設定</h3>

<p>vsftpd インストール直後はマシン起動時に自動で vsftpd が起動するようになっている。</p>

<p>自動起動しないように設定するなら以下のようにする。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl disable vsftpd
Synchronizing state of vsftpd.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install disable vsftpd
Removed '/etc/systemd/system/multi-user.target.wants/vsftpd.service'.

# systemctl is-enabled vsftpd
disabled  # &lt;= disabled であることを確認
</code></pre></div></div>

<p>逆に自動起動するように設定するなら以下のようにする。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl enable vsftpd
Synchronizing state of vsftpd.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable vsftpd
Created symlink '/etc/systemd/system/multi-user.target.wants/vsftpd.service' → '/usr/lib/systemd/system/vsftpd.service'.

# systemctl is-enabled vsftpd
enabled  # &lt;= enabled であることを確認
</code></pre></div></div>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="FTP" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) に FTP サーバを構築する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - DNS サーバ BIND9 の chroot 化！</title><link href="https://www.mk-mode.com/blog/2025/11/09/debian-13-bind-chroot/" rel="alternate" type="text/html" title="Debian 13 (trixie) - DNS サーバ BIND9 の chroot 化！" /><published>2025-11-09T00:20:00+09:00</published><updated>2025-11-09T00:20:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/09/debian-13-bind-chroot</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/09/debian-13-bind-chroot/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) に構築した DNS サーバを chroot 化する方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li>DNS サーバ BIND9 が構築済みであることを想定。</li>
  <li>chroot ディレクトリは <code class="language-plaintext highlighter-rouge">/var/bind9/chroot/</code> とする。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-systemd-ユニットファイルの編集">1. SystemD ユニットファイルの編集</h3>

<p><code class="language-plaintext highlighter-rouge">bind9.service</code> ファイルは以下のようになっているだろう。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/systemd/system/bind9.service</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">[</span>Unit]
<span class="nv">Description</span><span class="o">=</span>BIND Domain Name Server
<span class="nv">Documentation</span><span class="o">=</span>man:named<span class="o">(</span>8<span class="o">)</span>
<span class="nv">After</span><span class="o">=</span>network.target
<span class="nv">Wants</span><span class="o">=</span>nss-lookup.target
<span class="nv">Before</span><span class="o">=</span>nss-lookup.target

<span class="o">[</span>Service]
<span class="nv">Type</span><span class="o">=</span>notify
<span class="nv">EnvironmentFile</span><span class="o">=</span>-/etc/default/named
<span class="nv">ExecStart</span><span class="o">=</span>/usr/sbin/named <span class="nt">-f</span> <span class="nv">$OPTIONS</span>
<span class="nv">ExecReload</span><span class="o">=</span>/usr/sbin/rndc reload
<span class="nv">ExecStop</span><span class="o">=</span>/usr/sbin/rndc stop
<span class="nv">Restart</span><span class="o">=</span>on-failure

<span class="o">[</span>Install]
<span class="nv">WantedBy</span><span class="o">=</span>multi-user.target
<span class="nv">Alias</span><span class="o">=</span>bind9.service
</code></pre></div></div>

<p>次に <code class="language-plaintext highlighter-rouge">/etc/default/named</code> の <code class="language-plaintext highlighter-rouge">OPTIONS</code> を次のように編集する。（IPv6 を使用しない例）</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/default/named</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">OPTIONS</span><span class="o">=</span><span class="s2">"-u bind -4 -t /var/bind9/chroot"</span>
</code></pre></div></div>

<h3 id="2-chroot-ディレクトリの作成">2. chroot ディレクトリの作成</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mkdir -p /var/bind9/chroot/{etc,dev,run/named,var/cache/bind,usr/share}
</code></pre></div></div>

<h3 id="3-スペシャルファイルの作成">3. スペシャルファイルの作成</h3>

<p>chroot 化に必要なスペシャルファイルを作成し、パーミッションを変更する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mknod /var/bind9/chroot/dev/null c 1 3
# mknod /var/bind9/chroot/dev/random c 1 8
# mknod /var/bind9/chroot/dev/urandom c 1 9
# chmod 666 /var/bind9/chroot/dev/{null,random,urandom}
</code></pre></div></div>

<h3 id="4-ディレクトリの移動">4. ディレクトリの移動</h3>

<p>元々の BIND ディレクトリを chroot 用ディレクトリへ移動する。<br />
root hints ファイルも移動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mv /etc/bind /var/bind9/chroot/etc
# mv /usr/share/dns /var/bind9/chroot/usr/share/
</code></pre></div></div>

<h3 id="5-シンボリックリンクの作成">5. シンボリックリンクの作成</h3>

<p>BIND を chroot 用ディレクトリにリンクするようシンボリックリンクを設定する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ln -s /var/bind9/chroot/etc/bind /etc/bind
</code></pre></div></div>

<h3 id="6-localtime-コピー">6. localtime コピー</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cp /etc/localtime /var/bind9/chroot/etc/
</code></pre></div></div>

<h3 id="7-所有者グループパーミッションの変更">7. 所有者・グループ・パーミッションの変更</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chown bind:bind /var/bind9/chroot/etc/bind/rndc.key
# chown bind:bind /var/bind9/chroot/run/named
# chmod 775 /var/bind9/chroot/{var/cache/bind,run/named}
# chgrp bind /var/bind9/chroot/{var/cache/bind,run/named}
</code></pre></div></div>

<h3 id="8-apparmor-の設定">8. AppArmor の設定</h3>

<p>以下の内容のファイルを新規作成。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/apparmor.d/local/usr.sbin.named</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/var/bind9/chroot/etc/bind/<span class="k">**</span> r,
/var/bind9/chroot/var/<span class="k">**</span> rw,
/var/bind9/chroot/dev/<span class="k">**</span> rw,
/var/bind9/chroot/run/<span class="k">**</span> rw,
/var/bind9/chroot/usr/<span class="k">**</span> r,
</code></pre></div></div>

<p>そして、変更を適用。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl reload apparmor
</code></pre></div></div>

<h3 id="9-システムログの設定">9. システムログの設定</h3>

<p>rsyslog にログを出力するよう、以下の内容のファイルを新規作成。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/rsyslog.d/bind-chroot.conf</code></p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$AddUnixListenSocket /var/bind9/chroot/dev/log
</code></pre></div></div>

<h3 id="10-syslogd-の再起動">10. syslogd の再起動</h3>

<p>システムログ設定を編集したので、syslogd を再起動。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart rsyslog
</code></pre></div></div>

<h3 id="11-bind-の再起動">11. BIND の再起動</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart named
</code></pre></div></div>

<h3 id="12-参考サイト">12. 参考サイト</h3>

<ul>
  <li><a href="https://wiki.debian.org/Bind9#Debian_Jessie_and_later" title="Bind9 - Debian Wiki">Bind9 - Debian Wiki</a></li>
</ul>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="DNS" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) に構築した DNS サーバを chroot 化する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - DNS サーバ BIND9 構築！</title><link href="https://www.mk-mode.com/blog/2025/11/08/debian-13-bind-installation/" rel="alternate" type="text/html" title="Debian 13 (trixie) - DNS サーバ BIND9 構築！" /><published>2025-11-08T00:00:00+09:00</published><updated>2025-11-08T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/08/debian-13-bind-installation</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/08/debian-13-bind-installation/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) に DNS サーバを構築する方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li>サーバのローカル IP アドレスは <code class="language-plaintext highlighter-rouge">192.168.11.3</code>、グローバル IP アドレスは <code class="language-plaintext highlighter-rouge">xxx.yyy.zzz.aaa</code> を想定。</li>
  <li>ドメイン名は <code class="language-plaintext highlighter-rouge">mk-mode.com</code>、マシンのホスト名は <code class="language-plaintext highlighter-rouge">foo</code>、ネームサーバホスト名は <code class="language-plaintext highlighter-rouge">ns</code> を想定。</li>
  <li>セカンダリ DNS は用意しない。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-bind-のインストール">1. BIND のインストール</h3>

<p>（<code class="language-plaintext highlighter-rouge">bind9-utils</code> は <code class="language-plaintext highlighter-rouge">dig</code> コマンド用）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install bind9 bind9-utils
</code></pre></div></div>

<h3 id="2-bind-設定ファイルの編集">2. BIND 設定ファイルの編集</h3>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/named.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>include <span class="s2">"/etc/bind/named.conf.options"</span><span class="p">;</span>
include <span class="s2">"/etc/bind/named.conf.local"</span><span class="p">;</span>
//include <span class="s2">"/etc/bind/named.conf.root-hints"</span><span class="p">;</span>    <span class="c"># &lt;= 削除（view "internal" 内で設定するので）</span>
include <span class="s2">"/etc/bind/named.conf.internal-zones"</span><span class="p">;</span>  <span class="c"># &lt;= 追加</span>
include <span class="s2">"/etc/bind/named.conf.external-zones"</span><span class="p">;</span>  <span class="c"># &lt;= 追加</span>
</code></pre></div></div>

<h3 id="3-内部向けゾーンファイルの作成">3. 内部向けゾーンファイルの作成</h3>

<p>BIND 設定ファイルで指定している内部向けゾーンファイルを以下のように作成する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/named.conf.internal-zones</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>view <span class="s2">"internal"</span> <span class="o">{</span>
    <span class="c"># 内部向け設定の対象範囲定義</span>
    match-clients <span class="o">{</span>
        localhost<span class="p">;</span>
        internal-network<span class="p">;</span>
    <span class="o">}</span><span class="p">;</span>

    <span class="c"># 内部向け正引きゾーン定義</span>
    zone <span class="s2">"mk-mode.com"</span> IN <span class="o">{</span>
        <span class="nb">type </span>primary<span class="p">;</span>
        file <span class="s2">"/etc/bind/mk-mode.com.lan"</span><span class="p">;</span>
        allow-update <span class="o">{</span> none<span class="p">;</span> <span class="o">}</span><span class="p">;</span>
    <span class="o">}</span><span class="p">;</span>

    <span class="c"># 内部向け逆引きゾーン定義</span>
    zone <span class="s2">"11.168.192.in-addr.arpa"</span> IN <span class="o">{</span>
        <span class="nb">type </span>primary<span class="p">;</span>
        file <span class="s2">"/etc/bind/11.168.192.db"</span><span class="p">;</span>
        allow-update <span class="o">{</span> none<span class="p">;</span> <span class="o">}</span><span class="p">;</span>
    <span class="o">}</span><span class="p">;</span>
    include <span class="s2">"/etc/bind/named.conf.root-hints"</span><span class="p">;</span>

    empty-zones-enable no<span class="p">;</span>
<span class="o">}</span><span class="p">;</span>
</code></pre></div></div>

<p>最後の <code class="language-plaintext highlighter-rouge">empty-zones-enable no;</code> は、ログに以下のようなメッセージが出力されないための対処。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Warning: view internal: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
</code></pre></div></div>

<h3 id="4-外部向けゾーンファイルの作成">4. 外部向けゾーンファイルの作成</h3>

<p>BIND 設定ファイルで指定している外部向けゾーンファイルを以下のように作成する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/named.conf.external-zones</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>view <span class="s2">"external"</span> <span class="o">{</span>
    match-clients <span class="o">{</span> any<span class="p">;</span> <span class="o">}</span><span class="p">;</span>  <span class="c"># 全て対象（内部向け範囲以外のホスト）</span>
    allow-query <span class="o">{</span> any<span class="p">;</span> <span class="o">}</span><span class="p">;</span>    <span class="c"># 問合せは全て許可</span>
    recursion no<span class="p">;</span>            <span class="c"># 再帰検索禁止</span>

    <span class="c"># 外部向け正引きゾーン定義</span>
    zone <span class="s2">"mk-mode.com"</span> IN <span class="o">{</span>
        <span class="nb">type </span>primary<span class="p">;</span>
        file <span class="s2">"/etc/bind/mk-mode.com.wan"</span><span class="p">;</span>
        allow-update <span class="o">{</span> none<span class="p">;</span> <span class="o">}</span><span class="p">;</span>
    <span class="o">}</span><span class="p">;</span>

    <span class="c"># 外部向け正引き情報を定義 *注</span>
    zone <span class="s2">"zzz.yyy.xxx.in-addr.arpa"</span> IN <span class="o">{</span>
        <span class="nb">type </span>primary<span class="p">;</span>
        file <span class="s2">"/etc/bind/zzz.yyy.xxx.db"</span><span class="p">;</span>
        allow-update <span class="o">{</span> none<span class="p">;</span> <span class="o">}</span><span class="p">;</span>
    <span class="o">}</span><span class="p">;</span>
<span class="o">}</span><span class="p">;</span>
</code></pre></div></div>

<h3 id="5-オプション設定ファイルの編集">5. オプション設定ファイルの編集</h3>

<p>その他の設定用ファイルを以下のように編集する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/named.conf.options</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// ローカルネットワークの定義
acl internal-network <span class="o">{</span>                                     <span class="c"># &lt;= 追加</span>
        192.168.11.0/24<span class="p">;</span>                                   <span class="c"># &lt;= 追加</span>
<span class="o">}</span><span class="p">;</span>                                                         <span class="c"># &lt;= 追加</span>

options <span class="o">{</span>
        // bindのバージョン情報の非表示化
        version         <span class="s2">"unknown"</span><span class="p">;</span>                         <span class="c"># &lt;= 追加</span>

        directory <span class="s2">"/var/cache/bind"</span><span class="p">;</span>

        // 名前解決の問い合わせを受け付ける範囲
        allow-query <span class="o">{</span> localhost<span class="p">;</span> internal-network<span class="p">;</span> <span class="o">}</span><span class="p">;</span>      <span class="c"># &lt;= 追加</span>

        // ゾーン情報の転送要求を許可する範囲
        allow-transfer <span class="o">{</span> localhost<span class="p">;</span> <span class="o">}</span><span class="p">;</span>                     <span class="c"># &lt;= 追加</span>

        // 再帰的な問合せを許可する範囲
        allow-recursion <span class="o">{</span> localhost<span class="p">;</span> internal-network<span class="p">;</span> <span class="o">}</span><span class="p">;</span>  <span class="c"># &lt;= 追加</span>
        dnssec-validation auto<span class="p">;</span>                            <span class="c"># &lt;= 追加</span>
        listen-on port 53 <span class="o">{</span> any<span class="p">;</span> <span class="o">}</span><span class="p">;</span>                        <span class="c"># &lt;= 追加</span>

        auth-nxdomain no<span class="p">;</span>     <span class="c"># conform to RFC1035</span>

        // IPv6 は使用する場合は <span class="s2">"none"</span> を <span class="s2">"any"</span> に
        listen-on-v6 <span class="o">{</span> none<span class="p">;</span> <span class="o">}</span><span class="p">;</span>
<span class="o">}</span><span class="p">;</span>

<span class="c"># EDNS0 の無効化</span>
<span class="c"># "error (unexpected RCODE REFUSED) ..." の出力抑止</span>
server 0.0.0.0 <span class="o">{</span>
        edns no<span class="p">;</span>
<span class="o">}</span><span class="p">;</span>

logging <span class="o">{</span>
        // エラーログ <span class="s2">"DNS format error ... invalid response"</span> の出力抑止
        category resolver <span class="o">{</span> null<span class="p">;</span> <span class="o">}</span><span class="p">;</span>
        // エラーログ <span class="s2">"error (connection refused) resolving"</span> の出力抑止
        category lame-servers <span class="o">{</span> null<span class="p">;</span> <span class="o">}</span><span class="p">;</span>
<span class="o">}</span><span class="p">;</span>
</code></pre></div></div>

<h3 id="6-内部向け正引きゾーン定義ファイルの作成">6. 内部向け正引きゾーン定義ファイルの作成</h3>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/mk-mode.com.lan</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$TTL</span> 86400
@   IN  SOA     ns.mk-mode.com. root.mk-mode.com. <span class="o">(</span>
        2025100201  <span class="p">;</span>Serial
        3600        <span class="p">;</span>Refresh
        1800        <span class="p">;</span>Retry
        604800      <span class="p">;</span>Expire
        86400       <span class="p">;</span>Minimum TTL
<span class="o">)</span>

        IN  NS      ns.mk-mode.com.
        IN  A       192.168.11.101
        IN  MX 10   ns.mk-mode.com.
ns      IN  A       192.168.11.3
foo     IN  A       192.168.11.3
var     IN  A       192.168.11.2
baz     IN  A       192.168.11.101
www     IN  CNAME   ns.mk-mode.com.
ftp     IN  CNAME   ns.mk-mode.com.
mail    IN  CNAME   ns.mk-mode.com.
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">hoge</code>, <code class="language-plaintext highlighter-rouge">fuga</code> はローカルネットワーク内の別のマシン。<br />
<code class="language-plaintext highlighter-rouge">www</code>, <code class="language-plaintext highlighter-rouge">ftp</code>, <code class="language-plaintext highlighter-rouge">mail</code> は別名定義。</p>

<h3 id="7-外部向け正引きゾーン定義ファイルの作成">7. 外部向け正引きゾーン定義ファイルの作成</h3>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/mk-mode.com.wan</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$TTL</span> 86400
@   IN  SOA     ns.mk-mode.com. root.mk-mode.com. <span class="o">(</span>
        2025100201  <span class="p">;</span>Serial
        3600        <span class="p">;</span>Refresh
        1800        <span class="p">;</span>Retry
        604800      <span class="p">;</span>Expire
        86400       <span class="p">;</span>Minimum TTL
<span class="o">)</span>

        IN  NS      ns.mk-mode.com.
        IN  A       xxx.yyy.zzz.aaa
        IN  MX 10   ns.mk-mode.com.
ns      IN  A       xxx.yyy.zzz.aaa
</code></pre></div></div>

<h3 id="8-内部向け逆引きゾーン定義ファイルの作成">8. 内部向け逆引きゾーン定義ファイルの作成</h3>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/11.168.192.db</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$TTL</span> 86400
@   IN  SOA     ns.mk-mode.com. root.mk-mode.com. <span class="o">(</span>
        2025100201  <span class="p">;</span>Serial
        3600        <span class="p">;</span>Refresh
        1800        <span class="p">;</span>Retry
        604800      <span class="p">;</span>Expire
        86400       <span class="p">;</span>Minimum TTL
<span class="o">)</span>

        IN  NS      ns.mk-mode.com.
        IN  PTR     mk-mode.com.
        IN  A       255.255.255.0
3       IN  PTR     ns.mk-mode.com.
3       IN  PTR     foo.mk-mode.com.
2       IN  PTR     var.mk-mode.com.
101     IN  PTR     baz.mk-mode.com.
</code></pre></div></div>

<h3 id="9-外部向け逆引きゾーン定義ファイルの作成">9. 外部向け逆引きゾーン定義ファイルの作成</h3>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/bind/zzz.yyy.xxx.db</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$TTL</span> 86400
@   IN  SOA     ns.mk-mode.com. root.mk-mode.com. <span class="o">(</span>
        2025100201  <span class="p">;</span>Serial
        3600        <span class="p">;</span>Refresh
        1800        <span class="p">;</span>Retry
        604800      <span class="p">;</span>Expire
        86400       <span class="p">;</span>Minimum TTL
<span class="o">)</span>

        IN  NS      ns.mk-mode.com.
        IN  PTR     mk-mode.com.
        IN  A       255.255.255.254
aaa     IN  PTR     ns.mk-mode.com.
</code></pre></div></div>

<p>（<code class="language-plaintext highlighter-rouge">255.255.255.254</code> はグローバル IP が１個のみの場合の設定値）</p>

<h3 id="10-問合せ先-dns-サーバの追加">10. 問合せ先 DNS サーバの追加</h3>

<p>DNS サーバー自身も問合せ先に追加する。<br />
最初から記載のあるルータの IP アドレス（インストール・初期設定時のもの）をセカンダリ、今回構築のサーバ自身をプライマリに設定するので、ルータより先に記述する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/resolv.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>domain localdomain
search localdomain       <span class="c"># &lt;= 追加</span>
nameserver 192.168.11.3  <span class="c"># &lt;= 追加（今設定中のサーバマシンの IP アドレス）</span>
nameserver 192.168.11.1  <span class="c"># ルータの IP アドレス</span>
</code></pre></div></div>

<h3 id="11-ipv6-の無効化設定">11. IPv6 の無効化設定</h3>

<p>システムとして IPv6 を無効にしている場合は、以下のように <code class="language-plaintext highlighter-rouge">/etc/default/named</code> を編集する。
（<code class="language-plaintext highlighter-rouge">/var/log/syslog</code> に <code class="language-plaintext highlighter-rouge">... named[9999]: error (network unreachable) resolving ...</code> のようなエラーが出力されないようにするため）</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/default/named</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">OPTIONS</span><span class="o">=</span><span class="s2">"-u bind -4"</span>
</code></pre></div></div>

<h3 id="12-bind-の再起動">12. BIND の再起動</h3>

<p>設定を有効化するために BIND を再起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart bind9
</code></pre></div></div>

<p>もし、この際に次のようなエラーとなる場合、</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: ホストが落ちています
</code></pre></div></div>

<p>これは、 SystemD が正常に起動していない（SystemCtl がインストールされていない）ためなので、 SystemCtl をインストールする。</p>

<h3 id="13-動作確認">13. 動作確認</h3>

<p>DNS サーバが正常に機能する（正引きで IP アドレス、逆引きでホスト名が返ってくる）か、確認してみる。
・内部向け正引きテスト</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dig ns.mk-mode.com.

; &lt;&lt;&gt;&gt; DiG 9.20.11-4-Debian &lt;&lt;&gt;&gt; ns.mk-mode.com.
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 20348
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 5bb4de70b01c8ee30100000068dddea4377d61e260c26d68 (good)
;; QUESTION SECTION:
;ns.mk-mode.com.                        IN      A

;; ANSWER SECTION:
ns.mk-mode.com.         86400   IN      A       192.168.11.3

;; Query time: 0 msec
;; SERVER: 192.168.11.3#53(192.168.11.3) (UDP)
;; WHEN: Thu Oct 02 11:08:36 JST 2025
;; MSG SIZE  rcvd: 87
</code></pre></div></div>

<p>・内部向け逆引きテスト</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dig -x 192.168.11.3

; &lt;&lt;&gt;&gt; DiG 9.20.11-4-Debian &lt;&lt;&gt;&gt; -x 192.168.11.3
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 6826
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: a4f16205a483276c0100000068dddec471ff09e6e2099c01 (good)
;; QUESTION SECTION:
;3.11.168.192.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
3.11.168.192.in-addr.arpa. 86400 IN     PTR     p183.mk-mode.com.
3.11.168.192.in-addr.arpa. 86400 IN     PTR     ns.mk-mode.com.

;; Query time: 0 msec
;; SERVER: 192.168.11.3#53(192.168.11.3) (UDP)
;; WHEN: Thu Oct 02 11:09:08 JST 2025
;; MSG SIZE  rcvd: 129
</code></pre></div></div>

<p>・外部向け正引きテスト</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dig www.isc.org

; &lt;&lt;&gt;&gt; DiG 9.20.11-4-Debian &lt;&lt;&gt;&gt; www.isc.org
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 44769
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 168a1f252af84ee90100000068dddedc0d138d056d655a3f (good)
;; QUESTION SECTION:
;www.isc.org.                   IN      A

;; ANSWER SECTION:
www.isc.org.            300     IN      CNAME   isc.map.fastlydns.net.
isc.map.fastlydns.net.  60      IN      A       151.101.90.217

;; Query time: 780 msec
;; SERVER: 192.168.11.3#53(192.168.11.3) (UDP)
;; WHEN: Thu Oct 02 11:09:32 JST 2025
;; MSG SIZE  rcvd: 119
</code></pre></div></div>

<p>・外部向け逆引きテスト</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dig -x 151.101.90.217

; &lt;&lt;&gt;&gt; DiG 9.20.11-4-Debian &lt;&lt;&gt;&gt; -x 151.101.90.217
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NXDOMAIN, id: 43324
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 80fbf217b53192350100000068dddef63efa7ab5a357e24e (good)
;; QUESTION SECTION:
;217.90.101.151.in-addr.arpa.   IN      PTR

;; AUTHORITY SECTION:
151.in-addr.arpa.       3600    IN      SOA     pri.authdns.ripe.net. dns.ripe.net. 1758790516 3600 600 864000 3600

;; Query time: 2452 msec
;; SERVER: 192.168.11.3#53(192.168.11.3) (UDP)
;; WHEN: Thu Oct 02 11:09:58 JST 2025
;; MSG SIZE  rcvd: 144
</code></pre></div></div>

<h3 id="14-ファイアウォール-ufw-の設定">14. ファイアウォール (ufw) の設定</h3>

<p>実際に運用する場合は、外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可する必要がある。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw allow 53
Rule added

# ufw status
Status: active

To                         Action      From
--                         ------      ----
9999/tcp                   ALLOW       192.168.11.0/24
53                         ALLOW       Anywhere
</code></pre></div></div>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="DNS" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) に DNS サーバを構築する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - サービスの管理！</title><link href="https://www.mk-mode.com/blog/2025/11/07/debian-13-service-management/" rel="alternate" type="text/html" title="Debian 13 (trixie) - サービスの管理！" /><published>2025-11-07T00:00:00+09:00</published><updated>2025-11-07T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/07/debian-13-service-management</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/07/debian-13-service-management/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) でのサービスの管理についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<p><strong>※※※ Debian 13 では sysv-rc-conf をインストールできない(251001) ※※※</strong></p>

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-systemd-の使用方法">1. SystemD の使用方法</h3>

<p>以下は vsftpd サーバの例。（<code class="language-plaintext highlighter-rouge">vsftpd.service</code> が正式なサービス名だが <code class="language-plaintext highlighter-rouge">.service</code> は省略可能）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ systemctl start vsftpd        # &lt;= vsftpd サービスの起動
$ systemctl stop vsftpd         # &lt;= vsftpd サービスの停止
$ systemctl status vsftpd       # &lt;= vsftpd サービスの状況確認
$ systemctl enable vsftpd       # &lt;= vsftpd サービスの自動起動設定
$ systemctl disble vsftpd       # &lt;= vsftpd サービスの自動起動解除
$ systemctl is-enabled vsftpd   # &lt;= vsftpd サービスが自動起動設定されているか
$ systemctl list-unit-files -t service | grep vsftpd  # &lt;= vsftpd 起動設定の確認
$ systemctl -t service          # &lt;= 起動中サービス一覧の確認
$ systemctl -t service --all    # &lt;= 全サービス一覧の確認
$ systemctl poweroff            # &lt;= システム Shutdown 後電源 OFF
$ systemctl halt                # &lt;= システム Shutdown 後 Halt
$ systemctl reboot              # &lt;= システム Shutdown 後リブート
</code></pre></div></div>

<p>SystemD 未対応のサービスの場合でも自動で従来の SysVinit にサービスの管理を移譲しますが、 <code class="language-plaintext highlighter-rouge">systemctl list-unit-files</code> での確認はできないので注意。</p>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) でのサービスの管理についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - ファイアウォール設定！</title><link href="https://www.mk-mode.com/blog/2025/11/06/debian-13-firewall-setting/" rel="alternate" type="text/html" title="Debian 13 (trixie) - ファイアウォール設定！" /><published>2025-11-06T00:00:00+09:00</published><updated>2025-11-06T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/06/debian-13-firewall-setting</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/06/debian-13-firewall-setting/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) でファイアウォールを設定する方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li>接続元のマシンは LMDE 6 (64bit) を想定。</li>
  <li>ufw (= <code class="language-plaintext highlighter-rouge">Uncomplicated Firewall</code>) という nftables のフロントエンドツールを使用する。</li>
  <li>ファイアウォールのルールは、取り急ぎ最低限の設定のみ。（運用する環境やインストールしたサービスに合わせて適宜行う）</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-ufw-のインストール">1. ufw のインストール</h3>

<p>依存する <code class="language-plaintext highlighter-rouge">nftables</code> 等もインストールされる。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install ufw
</code></pre></div></div>

<h3 id="2-ufw-の起動">2. ufw の起動</h3>

<p>起動していなければ、起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl start ufw
</code></pre></div></div>

<h3 id="3-ufw-の自動起動設定">3. ufw の自動起動設定</h3>

<p>自動起動設定になっていなければ、設定する。（自動起動する設定になっているはず）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl enable ufw
</code></pre></div></div>

<h3 id="4-設定ファイルの編集">4. 設定ファイルの編集</h3>

<p>IPv6 を使用しない場合は以下のように編集しておく</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/default/ufw</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">IPV6</span><span class="o">=</span>no
</code></pre></div></div>

<h3 id="5-各種コマンドについて">5. 各種コマンドについて</h3>

<p>各種コマンドの使用法について簡単に説明する。<br />
（以下のサービス名、ポート番号は一例）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw status            # &lt;= 状況確認
# ufw enable            # &lt;= ファイアウォールの有効化
# ufw disable           # &lt;= ファイアウォールの無効化
# ufw default deny      # &lt;= 全アクセスの拒否
# ufw default allow     # &lt;= 全アクセスの許可
# ufw deny smtp         # &lt;= SMTP サービスのアクセスを拒否
# ufw allow ftp         # &lt;= FTP サービスのアクセスを許可
# ufw deny 25/tcp       # &lt;= TCP ポート 25 でのアクセスを拒否
# ufw allow 80/udp      # &lt;= UDP ポート 80 でのアクセスを許可
# ufw allow 53          # &lt;= TCP ポート 53, UDP ポート 53 でのアクセスを拒否
# ufw allow in http     # &lt;= HTTP サービスのアクセスを IN のみ許可
# ufw reject out smtp   # &lt;= SMTP サービスのアクセスを OUT のみ却下
# ufw allow proto tcp from any to any port 8080:8090
                        # &lt;= TCP ポート 8080 〜 8090 での全アクセスを許可
# ufw allow proto tcp from 192.168.11.0/24 to any port 9999
                        # &lt;= TCP ローカルネットワーク 192.168.11.0/24 からの
                        #    TCP ポート 9999 でのアクセスを許可
# ufw delete 3          # &lt;= 3 番目のルールを削除
</code></pre></div></div>

<p>その他、詳細な説明は <code class="language-plaintext highlighter-rouge">man ufw</code> で確認可。</p>

<h3 id="6-その他">6. その他</h3>

<p>一般的には、一旦全てのアクセスを拒否し、許可したいポートのみ解放するという形式となる。</p>

<p>サーバインストール直後（SSH サーバ導入済み）なら、以下のようにローカルネットからのみ SSH 接続を許可するようにし、後に各種サービスを運用するたびに解放するポートを設定すればよいだろう。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

# ufw allow proto tcp from 192.168.11.0/24 to any port 9999
Rules updated

# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

# ufw status
Status: active

To                         Action      From
--                         ------      ----
9999/tcp                   ALLOW       192.168.11.0/24
</code></pre></div></div>

<p>ファイアウォールを有効にする際に SSH 接続できるように設定しておかないとリモートで操作できなるのでご注意を。</p>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="ファイアウォール" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) でファイアウォールを設定する方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - 時刻同期設定(systemd-timesyncd)！</title><link href="https://www.mk-mode.com/blog/2025/11/05/debian-13-systemd-timesyncd/" rel="alternate" type="text/html" title="Debian 13 (trixie) - 時刻同期設定(systemd-timesyncd)！" /><published>2025-11-05T00:00:00+09:00</published><updated>2025-11-05T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/05/debian-13-systemd-timesyncd</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/05/debian-13-systemd-timesyncd/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) 上で systemd-timesyncd サービスを使用して時刻同期する設定についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/Linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li><code class="language-plaintext highlighter-rouge">ntpd</code> や <code class="language-plaintext highlighter-rouge">chronyd</code> は使用しない。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-ntp-機能の有効化">1. NTP 機能の有効化</h3>

<p>まず、現状の NTP の設定状況を確認する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># timedatectl status
               Local time: 水 2025-10-01 15:24:14 JST
           Universal time: 水 2025-10-01 06:24:14 UTC
                 RTC time: 水 2025-10-01 06:24:14
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">NTP service</code> が <code class="language-plaintext highlighter-rouge">active</code> になっていれば、 NTP 機能は有効になっているということ。（次項 2 へ）</p>

<p><code class="language-plaintext highlighter-rouge">NTP service</code> が <code class="language-plaintext highlighter-rouge">inactive</code> になっていれば、 NTP 機能が無効になっているということなので、以下を実行して NTP 機能を有効化する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># timedatectl set-ntp true
</code></pre></div></div>

<h3 id="2-ntp-サーバの設定">2. NTP サーバの設定</h3>

<p>以下は当方の例。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/systemd/timesyncd.conf</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">[</span>Time]
<span class="nv">NTP</span><span class="o">=</span>ntp.nict.jp
<span class="nv">FallbackNTP</span><span class="o">=</span>ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">NTP</code> がメイン、 <code class="language-plaintext highlighter-rouge">FallbackNTP</code> が予備（ある意味「予備」であるが、厳密にはそうではない）。</li>
  <li>複数のサーバを設定する場合は半角スペースで区切る。</li>
</ul>

<h3 id="3-時刻同期デーモンの再起動">3. 時刻同期デーモンの再起動</h3>

<p>設定を有効化するために時刻同期デーモン <code class="language-plaintext highlighter-rouge">systemd-timesyncd</code> を再起動する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl restart systemd-timesyncd
</code></pre></div></div>

<ul>
  <li>元々 ntpd や chronyd を起動していた場合は <code class="language-plaintext highlighter-rouge">systemd-timesyncd</code> は起動していなかったであろうから、 <code class="language-plaintext highlighter-rouge">restart</code> でなく <code class="language-plaintext highlighter-rouge">start</code> とする。</li>
</ul>

<h3 id="4-時刻同期デーモン自動起動の設定">4. 時刻同期デーモン自動起動の設定</h3>

<p><code class="language-plaintext highlighter-rouge">systemd-timesyncd</code> は自動起動する設定になっているはずだが、自動起動する設定になっていない場合は、設定しておく。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># systemctl enable systemd-timesyncd
# systemctl is-enabled systemd-timesyncd
</code></pre></div></div>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Linux" /><category term="Debian" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) 上で systemd-timesyncd サービスを使用して時刻同期する設定についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry><entry><title type="html">Debian 13 (trixie) - アンチウィルスソフト導入！</title><link href="https://www.mk-mode.com/blog/2025/11/04/debian-13-anti-virus-installation/" rel="alternate" type="text/html" title="Debian 13 (trixie) - アンチウィルスソフト導入！" /><published>2025-11-04T00:00:00+09:00</published><updated>2025-11-04T00:00:00+09:00</updated><id>https://www.mk-mode.com/blog/2025/11/04/debian-13-anti-virus-installation</id><content type="html" xml:base="https://www.mk-mode.com/blog/2025/11/04/debian-13-anti-virus-installation/"><![CDATA[<p>Debian GNU/Linux 13 (trixie) にウイルス対策ソフト ClamAV をインストールする方法についての記録です。</p>

<p>以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。<br />
（当然ながら、興味がなければスルーしてください）</p>

<!--more-->

<h3 id="0-前提条件">0. 前提条件</h3>

<ul>
  <li>Debian GNU/linux 13.0.0 (trixie; 64bit) での作業を想定。</li>
  <li>root ユーザでの作業を想定。</li>
</ul>

<h3 id="1-clamav-のインストール">1. ClamAV のインストール</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y update
# apt -y install clamav
</code></pre></div></div>

<p>ClamAV インストール後は、ウイルスデータベース更新のサービス <code class="language-plaintext highlighter-rouge">clamav-freshclam</code> が自動で起動しているはず。<br />
また、しばらくすると、 <code class="language-plaintext highlighter-rouge">/var/lib/clamav/</code> ディレクトリ配下にウイルスデータベースがダウンロードされる。<br />
ダウンロードの状況は、ログファイル <code class="language-plaintext highlighter-rouge">/var/log/clamav/freshclam.log</code> で確認できる。</p>

<h3 id="2-ウイルススキャンのテストclamscan-ウイルス無しの場合">2. ウイルススキャンのテスト（<code class="language-plaintext highlighter-rouge">clamscan</code>, ウイルス無しの場合）</h3>

<p>以下のようにして、ウイルススキャンを行ってみる。<br />
（スキャンするディレクトリを指定するなら、最後にディレクトリを指定する）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># clamscan --infected --remove --recursive

----------- SCAN SUMMARY -----------
Known viruses: 8708636
Engine version: 1.4.3
Scanned directories: 5
Scanned files: 5
Infected files: 0
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 27.205 sec (0 m 27 s)
Start Date: 2025:10:01 15:06:10
End Date:   2025:10:01 15:06:37
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">--infected</code> : 感染ファイルのみ結果出力</li>
  <li><code class="language-plaintext highlighter-rouge">--remove</code> : 感染ファイルを削除（注意）<br />
（<code class="language-plaintext highlighter-rouge">--move</code> で感染ファイルを別ディレクトリへ移動してもよいだろう）</li>
  <li><code class="language-plaintext highlighter-rouge">--recursive</code> : サブディレクトリも再帰的にスキャン</li>
</ul>

<p>その他のオプションについては <code class="language-plaintext highlighter-rouge">clamscan --help</code> 等で確認</p>

<h3 id="3-テスト用ウイルスファイルの準備">3. テスト用ウイルスファイルの準備</h3>

<p>ウイルスが有る場合に正常に機能するかをテストするために、まずテスト用ウイルスを用意する。</p>

<p>File: <code class="language-plaintext highlighter-rouge">eicar.com</code></p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
</code></pre></div></div>

<ul>
  <li><a href="https://www.eicar.org/download-anti-malware-testfile/" title="Download Anti Malware Testfile - EICAR">ここ</a> からダウンロードすることも可能。</li>
  <li><a href="https://files.trendmicro.com/products/eicar-file/eicar.com">これ</a> をダウンロードしてもよい。</li>
</ul>

<h3 id="4-ウイルススキャンのテストclamscan-ウイルス有りの場合">4. ウイルススキャンのテスト（<code class="language-plaintext highlighter-rouge">clamscan</code>, ウイルス有りの場合）</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># clamscan --infected --remove --recursive
/root/eicar.com: Eicar-Signature FOUND
/root/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Known viruses: 8708636
Engine version: 1.4.3
Scanned directories: 5
Scanned files: 6
Infected files: 1
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 27.144 sec (0 m 27 s)
Start Date: 2025:10:01 15:07:08
End Date:   2025:10:01 15:07:36
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">--infected</code> : 感染ファイルのみ結果出力</li>
  <li><code class="language-plaintext highlighter-rouge">--remove</code> : 感染ファイルを削除（注意）<br />
（<code class="language-plaintext highlighter-rouge">--move</code> で感染ファイルを別ディレクトリへ移動してもよいだろう）</li>
  <li><code class="language-plaintext highlighter-rouge">--recursive</code> : サブディレクトリも再帰的にスキャン</li>
</ul>

<p>その他のオプションについては <code class="language-plaintext highlighter-rouge">clamscan --help</code> 等で確認</p>

<h3 id="5-clamav-デーモン-のインストール">5. ClamAV <strong>デーモン</strong> のインストール</h3>

<p><code class="language-plaintext highlighter-rouge">clamscan</code> によるウイルススキャンは重いため、リアルタイムスキャンには <code class="language-plaintext highlighter-rouge">clamdscan</code> を使用する。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt -y install clamav-daemon
</code></pre></div></div>

<p>ClamAV デーモンインストール後は、<code class="language-plaintext highlighter-rouge">clamav-daemon</code> が自動で起動しているはず。</p>

<h3 id="6-ウイルススキャンのテストclamdscan-ウイルス無しの場合">6. ウイルススキャンのテスト（<code class="language-plaintext highlighter-rouge">clamdscan</code>, ウイルス無しの場合）</h3>

<p>以下のようにして、<code class="language-plaintext highlighter-rouge">clamdscan</code> でウイルススキャンを行ってみる。<br />
（スキャンするディレクトリを指定するなら、最後にディレクトリを指定する）</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># clamdscan --fdpass --infected --remove

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 16.896 sec (0 m 16 s)
Start Date: 2025:10:01 15:08:06
End Date:   2025:10:01 15:08:23
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">--fdpass</code> : clamav と異なるユーザでスキャンする場合<br />
（今回、 root ユーザなので）</li>
  <li><code class="language-plaintext highlighter-rouge">--infected</code> : 感染ファイルのみ結果出力</li>
  <li><code class="language-plaintext highlighter-rouge">--remove</code> : 感染ファイルを削除（注意）<br />
（<code class="language-plaintext highlighter-rouge">--move</code> で感染ファイルを別ディレクトリへ移動してもよいだろう）</li>
  <li><code class="language-plaintext highlighter-rouge">clamdscan</code> では <code class="language-plaintext highlighter-rouge">--recursive</code> オプションは使用不可</li>
</ul>

<h3 id="7-テスト用ウイルスファイルのダウンロード">7. テスト用ウイルスファイルのダウンロード</h3>

<p>（3. と同じ）</p>

<h3 id="8-ウイルススキャンのテストclamdscan-ウイルス有りの場合">8. ウイルススキャンのテスト（<code class="language-plaintext highlighter-rouge">clamdscan</code>, ウイルス有りの場合）</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># clamdscan --fdpass --infected --remove
/root/eicar.com: Eicar-Signature FOUND
/root/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.027 sec (0 m 0 s)
Start Date: 2025:10:01 15:08:49
End Date:   2025:10:01 15:08:49
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">--fdpass</code> : clamav と異なるユーザでスキャンする場合<br />
（今回、 root ユーザなので）</li>
  <li><code class="language-plaintext highlighter-rouge">--infected</code> : 感染ファイルのみ結果出力</li>
  <li><code class="language-plaintext highlighter-rouge">--remove</code> : 感染ファイルを削除（注意）<br />
（<code class="language-plaintext highlighter-rouge">--move</code> で感染ファイルを別ディレクトリへ移動してもよいだろう）</li>
  <li><code class="language-plaintext highlighter-rouge">clamdscan</code> では <code class="language-plaintext highlighter-rouge">--recursive</code> オプションは使用不可</li>
</ul>

<h3 id="9-freshclam-の設定">9. freshclam の設定</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dpkg-reconfigure clamav-freshclam
</code></pre></div></div>

<p>インタラクティブに次の項目を設定できる。</p>

<ul>
  <li>ウイルスデータベースの更新方法<br />
<code class="language-plaintext highlighter-rouge">daemon</code> / <code class="language-plaintext highlighter-rouge">ifup.d</code> / <code class="language-plaintext highlighter-rouge">cron</code> / <code class="language-plaintext highlighter-rouge">manual</code> ?<br />
（当方、 <code class="language-plaintext highlighter-rouge">daemon</code> とした）</li>
  <li>データベースを取得するためのミラーサイトの選択<br />
（以下の1番目を選択。2,3番目はデフォルト）
    <ul>
      <li><code class="language-plaintext highlighter-rouge">DatabaseMirror db.jp.clamav.net</code></li>
      <li><code class="language-plaintext highlighter-rouge">DatabaseMirror db.local.clamav.net</code></li>
      <li><code class="language-plaintext highlighter-rouge">DatabaseMirror database.clamav.net</code></li>
    </ul>
  </li>
  <li>プロキシの設定<br />
（当方はプロキシは使用しない。何も入力せずに次へ）</li>
  <li>一日当たりの更新回数<br />
（当方、デフォルトの「1日24回」とした）</li>
  <li>データベース更新後に clamd に通知するか？<br />
（当方、「通知 <code class="language-plaintext highlighter-rouge">Yes</code>」とした）</li>
  <li>バイトコードデータベースをダウンロードするか？<br />
（当方、「ダウンロード <code class="language-plaintext highlighter-rouge">Yes</code>」とした（ある意味、ダウンロードは必須なので））</li>
  <li>プライベートミラーを私用するか？<br />
（当方、使用しない（ローカル環境で複数の ClamAV を使用しない）ので、何も入力せずに次へ）</li>
  <li>ログローテーションするか？<br />
（当方、「する <code class="language-plaintext highlighter-rouge">Yes</code>」とした）</li>
</ul>

<p>設定ファイルは以下のようになった。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/clamav/freshclam.conf</code></p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Automatically created by the clamav-freshclam postinst</span>
<span class="c"># Comments will get lost when you reconfigure the clamav-freshclam package</span>

DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose <span class="nb">false
</span>LogSyslog <span class="nb">false
</span>LogFacility LOG_LOCAL6
LogFileMaxSize 0
LogRotate <span class="nb">true
</span>LogTime <span class="nb">true
</span>Foreground <span class="nb">false
</span>Debug <span class="nb">false
</span>MaxAttempts 5
DatabaseDirectory /var/lib/clamav
DNSDatabaseInfo current.cvd.clamav.net
ConnectTimeout 30
ReceiveTimeout 0
TestDatabases <span class="nb">yes
</span>ScriptedUpdates <span class="nb">yes
</span>CompressLocalDatabase no
Bytecode <span class="nb">true
</span>NotifyClamd /etc/clamav/clamd.conf
<span class="c"># Check for new database 24 times a day</span>
Checks 24
DatabaseMirror db.jp.clamav.net
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net</code></pre></figure>

<h3 id="10-clamav-デーモンの設定">10. ClamAV デーモンの設定</h3>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dpkg-reconfigure clamav-daemon
</code></pre></div></div>

<p>設定項目が多数あるが、全てデフォルトでよい。</p>

<p>設定ファイルは以下のようになった。</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/clamav/clamd.conf</code></p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#Automatically Generated by clamav-daemon postinst</span>
<span class="c">#To reconfigure clamd run #dpkg-reconfigure clamav-daemon</span>
<span class="c">#Please read /usr/share/doc/clamav-daemon/README.Debian.gz for details</span>
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket <span class="nb">true
</span>LocalSocketGroup clamav
LocalSocketMode 666
<span class="c"># TemporaryDirectory is not set to its default /tmp here to make overriding</span>
<span class="c"># the default with environment variables TMPDIR/TMP/TEMP possible</span>
User clamav
ScanMail <span class="nb">true
</span>ScanArchive <span class="nb">true
</span>ArchiveBlockEncrypted <span class="nb">false
</span>MaxDirectoryRecursion 15
FollowDirectorySymlinks <span class="nb">false
</span>FollowFileSymlinks <span class="nb">false
</span>ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog <span class="nb">false
</span>LogRotate <span class="nb">true
</span>LogFacility LOG_LOCAL6
LogClean <span class="nb">false
</span>LogVerbose <span class="nb">false
</span>PreludeEnable no
PreludeAnalyzerName ClamAV
DatabaseDirectory /var/lib/clamav
OfficialDatabaseOnly <span class="nb">false
</span>SelfCheck 3600
Foreground <span class="nb">false
</span>Debug <span class="nb">false
</span>ScanPE <span class="nb">true
</span>MaxEmbeddedPE 10M
ScanOLE2 <span class="nb">true
</span>ScanPDF <span class="nb">true
</span>ScanHTML <span class="nb">true
</span>MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF <span class="nb">true
</span>ExitOnOOM <span class="nb">false
</span>LeaveTemporaryFiles <span class="nb">false
</span>AlgorithmicDetection <span class="nb">true
</span>ScanELF <span class="nb">true
</span>IdleTimeout 30
CrossFilesystems <span class="nb">true
</span>PhishingSignatures <span class="nb">true
</span>PhishingScanURLs <span class="nb">true
</span>PhishingAlwaysBlockSSLMismatch <span class="nb">false
</span>PhishingAlwaysBlockCloak <span class="nb">false
</span>PartitionIntersection <span class="nb">false
</span>DetectPUA <span class="nb">false
</span>ScanPartialMessages <span class="nb">false
</span>HeuristicScanPrecedence <span class="nb">false
</span>StructuredDataDetection <span class="nb">false
</span>CommandReadTimeout 30
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo <span class="nb">true
</span>OLE2BlockMacros <span class="nb">false
</span>AllowAllMatchScan <span class="nb">true
</span>ForceToDisk <span class="nb">false
</span>DisableCertCheck <span class="nb">false
</span>DisableCache <span class="nb">false
</span>MaxScanTime 120000
MaxScanSize 100M
MaxFileSize 25M
MaxRecursion 16
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
PCREMatchLimit 10000
PCRERecMatchLimit 5000
PCREMaxFileSize 25M
ScanXMLDOCS <span class="nb">true
</span>ScanHWP3 <span class="nb">true
</span>MaxRecHWP3 16
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime <span class="nb">true
</span>LogFileUnlock <span class="nb">false
</span>LogFileMaxSize 0
Bytecode <span class="nb">true
</span>BytecodeSecurity TrustSigned
BytecodeTimeout 60000
OnAccessMaxFileSize 5M</code></pre></figure>

<h3 id="11-ウイルススキャンの定期実行設定">11. ウイルススキャンの定期実行設定</h3>

<p>clamdscan による実行用スクリプトの作成。（一例。簡易版）</p>

<p>File: <code class="language-plaintext highlighter-rouge">/root/clamdscan.sh</code></p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#!/bin/bash</span>

<span class="nv">PATH</span><span class="o">=</span>/usr/bin:/bin

<span class="c"># ウイルススキャン</span>
<span class="nv">CLAMSCANLOG</span><span class="o">=</span><span class="sb">`</span><span class="nb">mktemp</span><span class="sb">`</span>
<span class="nv">TARGET</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span>mount | egrep <span class="nt">-v</span> <span class="s1">' type +(sysfs|proc|configfs) '</span> | <span class="nb">cut</span> <span class="nt">-d</span> <span class="s1">' '</span> <span class="nt">-f</span> 3<span class="si">)</span><span class="s2">"</span>
clamdscan <span class="nt">--fdpass</span> <span class="nt">--infected</span> <span class="nt">--remove</span> <span class="nv">$TARGET</span> <span class="o">&gt;</span> <span class="nv">$CLAMSCANLOG</span> 2&gt;&amp;1

<span class="c"># レポートのメール送信（ウイルス検知時のみ）</span>
<span class="c"># ※ログ内の行の最後に "FOUND" の文字列があるものをチェック</span>
<span class="k">if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="si">$(</span><span class="nb">grep </span>FOUND<span class="nv">$ $CLAMSCANLOG</span><span class="si">)</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
  </span><span class="nb">grep</span> <span class="nt">-A</span> 1 FOUND<span class="nv">$ $CLAMSCANLOG</span> | mail <span class="nt">-s</span> <span class="s2">"Virus Found in </span><span class="sb">`</span><span class="nb">hostname</span><span class="sb">`</span><span class="s2">"</span> root
<span class="k">fi</span>

<span class="c"># スキャンログをシスログに出力</span>
<span class="nb">cat</span> <span class="nv">$CLAMSCANLOG</span> | logger <span class="nt">-t</span> <span class="si">$(</span><span class="nb">basename</span> <span class="k">${</span><span class="nv">0</span><span class="k">}</span><span class="si">)</span>
<span class="nb">rm</span> <span class="nt">-f</span> <span class="nv">$CLAMSCANLOG</span></code></pre></figure>

<ul>
  <li>上記スクリプト内 <code class="language-plaintext highlighter-rouge">$TARGET</code> について、<br />
仮想ファイルシステムをスキャンする際に <code class="language-plaintext highlighter-rouge">LibClamAV Warning: fmap_readpage: pread fail: ...</code> という警告が出力されるので、それを抑止するため、スキャン対象を仮想ファイルシステム以外としている。</li>
  <li>それでもエラーになる（スキャンできない）ファイルが多数存在する。（<strong>要調査</strong>）</li>
</ul>

<p>実行権限付与。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chmod +x /root/clamdscan.sh
</code></pre></div></div>

<p>cron 登録。（毎日深夜2:50に実行する例）</p>

<p>File: <code class="language-plaintext highlighter-rouge">/etc/cron.d/clamdscan</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>50 2 <span class="k">*</span> <span class="k">*</span> <span class="k">*</span> root /root/clamdscan.sh <span class="o">&gt;</span> /dev/null
</code></pre></div></div>

<hr />

<p>以上。</p>]]></content><author><name>mk-mode.com</name></author><category term="サーバ構築" /><category term="Debian" /><category term="Linux" /><category term="ウイルス対策" /><summary type="html"><![CDATA[Debian GNU/Linux 13 (trixie) にウイルス対策ソフト ClamAV をインストールする方法についての記録です。 以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。 （当然ながら、興味がなければスルーしてください）]]></summary></entry></feed>