このチュートリアルでは、Ubuntuで自動セキュリティ更新(無人アップグレード)を設定する方法を説明します。洞窟の下に住んでいない場合は、おそらくEquifaxの大規模なデータ侵害を知っているでしょう。 2017年5月から7月の間に、名前、社会保障番号、生年月日、運転免許証、20万枚のクレジットカード番号など、1億4300万人のEquifaxの顧客情報が盗まれました。
2017年3月、Apache Structsに重大な脆弱性が発見され、Apache Foundationは、脆弱性の存在を発表したときにその修正をリリースしました。ただし、Equifaxは2か月間脆弱性にパッチを適用しなかったため、大規模なデータ侵害が発生しました。複雑なアプリケーションを実行している企業は、更新をインストールする前に広範なテストを行う必要がある場合がありますが、個人使用の単純なLinuxサーバーがある場合は、脆弱性にパッチを適用するために自動セキュリティ更新をできるだけ早くオンにすることができます。
Ubuntuサーバーでの自動セキュリティ更新(無人アップグレード)の構成
まず、unattended-upgrades
をインストールします パッケージ。
sudo apt update sudo apt install unattended-upgrades
update-notifier-common
をインストールする必要があります 自動再起動を設定するためのパッケージ。
sudo apt install update-notifier-common
次に、50unattended-upgrades
を編集します ファイル。
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
このファイルでは、どのパッケージを自動的に更新するかを構成できます。デフォルトでは、次の行に示すように、セキュリティ更新プログラムのみが自動的にインストールされます。したがって、このセクションを変更する必要はありません。
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}"; "${distro_id}:${distro_codename}-security"; // Extended Security Maintenance; doesn't necessarily exist for // every release and this system may not have it installed, but if // available, the policy for updates is such that unattended-upgrades // should also install from here by default. "${distro_id}ESMApps:${distro_codename}-apps-security"; "${distro_id}ESM:${distro_codename}-infra-security"; // "${distro_id}:${distro_codename}-updates"; // "${distro_id}:${distro_codename}-proposed"; // "${distro_id}:${distro_codename}-backports"; };
- 最初のオリジン
"${distro_id}:${distro_codename}"
セキュリティアップデートは、セキュリティ以外のソースから新しい依存関係を取り込む可能性があるため、必要です。このオリジンはソフトウェアアップデートを提供していません。 - 2つ目の原因は、定期的なセキュリティ更新です。
- 3番目と4番目のオリジン(ESMAppsとESM)は、拡張されたセキュリティメンテナンス用です。つまり、保守終了に達したUbuntuリリースを実行するユーザー向けです。そのままにしておくことができます。
メール通知
Ubuntuがセキュリティアップデートのインストールに失敗することがあるため、手動アップデートが必要です。セキュリティが更新されるたびに電子メール通知を受け取りたい場合は、次の行を見つけてコメントを外してください。 (最初の二重スラッシュを削除します。)
Ubuntu 18.04
//Unattended-Upgrade::Mail "root";
Ubuntu 20.04
//Unattended-Upgrade::Mail "";
以下のように通知を受信するメールアドレスを指定できます。
Unattended-Upgrade::Mail "[email protected]";
セキュリティの更新中にエラーが発生した場合にのみメール通知を受信する場合は、次の行のコメントを解除してください。
Ubuntu 18.04
//Unattended-Upgrade::MailOnlyOnError "true";
Ubuntu 20.04では、次の行を見つける必要があります
//Unattended-Upgrade::MailReport "on-change";
コメントを外して変更します-変更
Unattended-Upgrade::MailReport "only-on-error";
未使用の依存関係の自動削除
おそらくsudo apt autoremove
を実行する必要があります 更新するたびに、次の行を見つけます:
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
この行のコメントを外し、false
を変更します true
に 。
Unattended-Upgrade::Remove-Unused-Dependencies "true";
自動再起動
Linuxカーネルのセキュリティ更新プログラムがインストールされている場合、カーネル更新プログラムを適用するには、Ubuntuサーバーを再起動する必要があります。サーバーを自分または数人だけが使用している場合は、自動再起動を有効にすると便利です。次の行を見つけます。
//Unattended-Upgrade::Automatic-Reboot "false";
コメントを外して、false
を変更します true
に 自動再起動を有効にするには
Unattended-Upgrade::Automatic-Reboot "true";
再起動を実行する時刻を指定することもできます。デフォルトでは、再起動はカーネルアップデートのインストール直後に行われます。午前4時に再起動するように設定しました。サーバーに正しいタイムゾーンを設定していることを確認してください。
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
ファイルを保存して閉じます。
サーバーが多くのユーザーによって使用されている場合、または高い稼働時間が必要な場合(このブログなど)、自動再起動を有効にしないでください。代わりに、Canonical livepatchを使用して、再起動せずにLinuxカーネルにパッチを適用できます。
- 正規のLivePatchサービス:再起動せずにUbuntuでLinuxカーネルにパッチを適用する
自動セキュリティ更新を有効にする
自動セキュリティ更新が構成されたので、20auto-upgrades
を作成して有効にする必要があります。 ファイル。
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
次の2行をコピーしてファイルに貼り付けます。
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
- 最初の行は
apt
になります 「apt-get update
」を実行します 」毎日自動的に。 2に設定されている場合は、1日おきに。 (0 =無効) - 2行目は
apt
になります セキュリティ更新プログラムを自動的にインストールします。 (1 =有効、0 =無効)
ファイルを保存して閉じます。
特定の時間に無人アップグレードを実行する
無人アップグレードは午前12時から午前7時の間にランダムに実行され、全員が同時に更新を実行することによるミラーサーバーへの負荷の急増を防ぎます。次のコマンドを使用して、無人アップグレードを手動で実行できます。
sudo unattended-upgrade -v
このコマンドをCronジョブに追加することもできます。
sudo crontab -e
Crontabファイルの最後に次の行を追加して、無人アップグレードが毎日午前2時に実行されるようにします。
0 2 * * * sudo /usr/bin/unattended-upgrade -v
SMTPリレーの設定
セキュリティが更新されるたびに電子メール通知を受信するには、サーバーが電子メールを送信できる必要があります。これがメールサーバーの場合、あとはbsd-mailx
をインストールするだけです。 パッケージ。
sudo apt install bsd-mailx
これがメールサーバーでない場合は、SMTPリレーを設定する必要があります。 Postfix SMTPサーバーをインストールしてから、メールサービスプロバイダーを介してメールを中継できます。
いくつかのメールサービスプロバイダーがあります (ESP)リレーホストとして機能できます。少額の料金を請求するものもあれば、毎月無料の割り当てを提供するものもあります。この記事では、1日あたり300通のメールを無料で送信できるメールサービスプロバイダーであるSendinblueの使用方法を紹介します。
sendinblue.comで無料のアカウントを作成します。ユーザープロファイルを完成させたら、Transactional
をクリックします タブをクリックすると、SMTP設定が表示されます。 SMTP設定がない場合、トランザクションメールサービスを有効にするには、Sendinblueカスタマーサービスに連絡する必要があります。

次に、SendinblueSMTP設定を使用するようにPostfixSMTPサーバーを構成する必要があります。
次のコマンドを使用して、UbuntuにPostfixSMTPサーバーをインストールしましょう。
sudo apt install postfix libsasl2-modules
次のメッセージが表示されたら、Tabキーを押してEnterキーを押します。
次に、2番目のオプションを選択します:Internet Site
。
次に、システムメール名を設定します。たとえば、ドメイン名linuxbabe.com
を入力します 。
Postfixをインストールしたら、Nanoなどのコマンドラインテキストエディタでメインの構成ファイルを開きます。
sudo nano /etc/postfix/main.cf
次の行を見つけます。
relayhost =
デフォルトでは、その値は空です。 relayhost
の値を設定します [smtp-relay.sendinblue.com]:587
へ 。
relayhost = [smtp-relay.sendinblue.com]:587
次に、このファイルの最後に次の行を追加します。
# outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000
ファイルを保存して閉じます。次に、/etc/postfix/sasl_passwd
を作成します ファイル。
sudo nano /etc/postfix/sasl_passwd
以下のように、SMTPリレーホストとSMTP資格情報をこのファイルに追加します。 smtp_username
を置き換えます およびsmtp_password
SendinBlueによって提供された独自のユーザー名とパスワードを使用します。ユーザー名とパスワードの間にコロンがあることに注意してください。
[smtp-relay.sendinblue.com]:587 smtp_username:smtp_passowrd
ファイルを保存して閉じます。次に、postmap
を使用して対応するハッシュデータベースファイルを作成します 。
sudo postmap /etc/postfix/sasl_passwd
これで、ファイル/etc/postfix/sasl_passwd.db
が作成されます。 。変更を有効にするには、Postfixを再起動します。
sudo systemctl restart postfix
デフォルトでは、sasl_passwd
およびsasl_passwd.db
ファイルは、サーバー上のすべてのユーザーが読み取ることができます。権限を600に変更して、rootのみがこれら2つのファイルの読み取りと書き込みを行えるようにします。
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
今後、PostfixはSendinblue経由でメールを送信します。
送信者アドレスの追加
Sendinblueアカウントダッシュボードの右上隅にあるドロップダウンメニューをクリックして、送信者とIPを選択します タブをクリックして、ドメインと送信者アドレスを追加します。

テストメールの送信
これで、mailx
を使用してテストメールを送信できます。 以下のようなコマンド。
sudo apt install bsd-mailx echo "this is a test email." | mailx -r from-address -s hello to-address
SMTP構成が正しい場合は、メールが届きます。
メールが送信されませんか?
メールログを確認できます(/var/log/mail.log
)メールが送信されない理由をデバッグします。
/etc/postfix/main.cf
でリレーホストを角かっこで囲む場合 ファイル。
relayhost = [smtp-relay.sendinblue.com]:587
次に、ホスト名を/etc/postfix/sasl_passwd
でラップする必要もあります。 ファイル。
[smtp-relay.sendinblue.com]:587 [email protected]:YourGmailPassword
ハッシュデータベースファイルを再生成することを忘れないでください。
sudo postmap /etc/postfix/sasl_passwd
変更を有効にするには、Postfixを再起動します。
sudo systemctl restart postfix
受信メールを無効にする
デフォルトでは、Postfixは受信メールを受け入れるように構成されています。メールを送信するだけで、受信メールを受け入れないようにPostfixを設定できます。 /etc/postfix/main.cf
で次の行を見つけます ファイル。
inet_interfaces = all
Postfixがローカルホストでのみリッスンするように次のテキストに変更してください。
inet_interfaces = loopback-only
メールレポート
無人アップグレードによって送信される可能性のあるメールは3つあります:
- 無人アップグレードが返されました:True。これは、パッケージが正常にインストールされたことを意味します。
- 無人アップグレードが返されました:False。これは、アップデートのインストール時にエラーが発生したことを意味します。通常、人間の介入が必要です。このメールを受け取った場合は、手動で
sudo apt upgrade
を実行する必要があります 。 - 無人アップグレードが返されました:なし。利用可能なアップデートはありますが、システムはそれらのインストールを拒否しました。
ログ
ログは/var/log/unattended-upgrades/
にあります ディレクトリ。
再起動を確認
checkrestart
コマンドは、アップグレード後に再起動する必要があるプロセスを見つけるのに役立ちます。 debian-goodies
から入手できます。 パッケージ。
sudo apt install debian-goodies sudo checkrestart