Ubuntuデスクトップ 20.04 LTSで構築したことまとめ

2021年末から正月含めてUbuntuのサーバ環境構築を続けていました。一度設定して稼働を始めれば、そこまで困ることはないのですが、不具合が生じて再設定をしはじめると何をしたのか分からなくなってきてしまうので、この記事を備忘録として残してお

2021年末から正月含めてUbuntuのサーバ環境構築を続けていました。

一度設定して稼働を始めれば、そこまで困ることはないのですが、不具合が生じて再設定をしはじめると何をしたのか分からなくなってきてしまうので、この記事を備忘録として残しておきます。

Ubuntuでやっていること

  • SSHサーバ
  • ファイルサーバー(Samba / WebDAV)
  • プロキシサーバ・キャッシュサーバ(Squid SSL Bump)
  • Webサーバ(Nginx)
  • 仮想サーバ(Ubuntu on Ubuntu)
  • リモートデスクトップ

構築してあれこれUbuntuにやらせているのですが、細かい所でWindowsと比較すると使いづらいというか、いちいち自分で設定が必要になるのでそこらへんの細かい点も記載します。

Ubuntu構築

Ubuntu構築

UFWでポート全閉じ

UbuntuのファイアウォールはUFWで管理されています。ポートを開けっぱなしにしているとすぐに攻撃を受けるため、起動できたらすぐポートを全部閉じるようにしています。

sudo ufw enable
sudo ufw default deny

SSHインストールと公開鍵・秘密鍵の設定

サーバ本体はリビングか物置に置きっぱなしにする予定なので、公開鍵設定だけさせて、他人がログインできないように設定させます。

sudo apt update
sudo apt install openssh-server

SSH鍵の作成

cd .ssh
sudo ssh-keygen -t rsa -b 4096パスフレーズを聞かれますがEnter押しっぱなしでスルーします。任意で設定可能です。.sshディレクトリ内にid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作られるので、秘密鍵をSSH接続したい端末(Windows)へ送ります。id_rsa内のテキストをコピペしたNotionに貼り付けてid_rsaとして保存。Windows 10のPuttyというアプリを使っているんですが、独自形式へ変換が必要でした。

公開鍵認証へ設定変更。SSHの最低限やるべきセキュリティ対策

SSH configをいじって公開鍵認証しか受け付けないようにします。下準備

cd .ssh
sudo touch authorized_keys
sudo chmod 600 authorized_keys
sudo cat id_rsa.pub >> authorized_keys
sudo cat id_rsa_win.pub >> authorized_keys

設定ファイルをいじります。

cd /etc/ssh
sudo vim sshd_configPort 2989 #ポート変更
PermitRoot Login no #rootログインを禁止
PubkeyAuthentication yes #公開鍵認証を許可
PasswordAuthentication no #パスワードログイン拒否
ChallengeResponseAuthentication no #チャレンジレスポンス認証を拒否ポート番号は適当にいれています。お好みで設定ください。公開鍵認証しか許可しなければひとまず攻撃をうけることは少ないと思います。sudo systemctl restart sshd設定したらSSHを再起動します。指定したポートをufwとルーターで開放します。

ウェブサーバNginxインストール

このブログのサブドメインを自宅サーバ宛てに向けてWebDAVやプロキシサーバとして利用します。

Ubuntu公式リポジトリのnginxではWebDAVモジュールがないので、ソースからビルドしていきます。

sudo apt source nginx
sudo apt install debhelper dh-systemd dpkg-dev quilt lsb-release libssl-dev libpcre3-dev zlib1g-dev
sudo git clone https://github.com/arut/nginx-dav-ext-module.git

sudo vim ./debian/rules

config.status.nginx: config.env.nginx cd $(BUILDDIR_nginx) && \ # 最後の方に” –add-module=/path/to/nginx-../nginx-dav-ext-module “を追加。 # ディレクトリは適宜変更。 CFLAGS=“” ./configure –prefix=/etc/nginx … –add-module=/path/to/nginx-../nginx-dav-ext-module touch $@

config.status.nginx_debug: config.env.nginx_debug cd $(BUILDDIR_nginx_debug) && \ # 上と同様のものを追加。 CFLAGS=“” ./configure –prefix=/etc/nginx –sbin-path=/usr/sbin/nginx … –add-module=/path/to/nginx-..*/nginx-dav-ext-module touch $@

Qiita

sudo dpkg-buildpackage -uc -bnginx-dav-ext-moduleオプションを組み込んで、パッケージを作ります。完了するとdebができあがっているのでdpkg -i nginx… .debをしてあげれば完了。

プロキシサーバSquidインストール

httpsじゃない時代はSquidだけインストールすればキャッシュしてくれて便利だったんですけど、httpsのSSLが当たり前になってからというものSquidのSSL Bump設定が必要になりました。

しかもSSL Bump設定してもキャッシュ効いているのかわからないくらい遅い。なんか、ビルドした意味があったのか不明です。だからプロキシサーバとして利用しています。

sudo apt install dpkg-dev
sudo wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/squid/4.13-1ubuntu4.2/squid_4.13-1ubuntu4.2.debian.tar.xz
sudo vim …./debian/rulesDEB_CONFIGURE_EXTRA_FLAGS :=の後ろの方に–with-openssl –enable-ssl –enable-ssl-crtd を記入。sudo apt install devscripts build-essential fakeroot libssl-dev libldap2-dev libpam0g-dev libdb-dev cdbs libsasl2-dev debhelper libcppunit-dev libkrb5-dev comerr-dev libcap2-dev libecap3-dev libexpat1-dev libxml2-dev pkg-config libnetfilter-conntrack-dev nettle-dev libgnutls28-dev dh-apparmor ed依存関係をインストール。sudo debuild -us -uc -bパッケージビルドします。sudo dpkg -i ~/squid*.debインストールします。

SSL証明書作成

こちらを参考にSSL Bumpの設定をします。

DebianにフォワードプロキシSquidを入れてWebフィルタリングをしよう

SSL Bumpが終わったら匿名プロキシの設定をします。

Setup High Anonymous Elite Proxy with Squid

漏れ漏れくんでランクAになったので満足です。

向いていない人・買い替えなくてよい人

現在の機器や設定で同じ用途を満たせている人には、買い替えや構成変更は向いていません。製品仕様やOSの手順は公開当時から変わっているため、最新情報はメーカーや公式ドキュメントで確認してください。

AUTHOR

UPTIME

「ちゃんと使う」を軸に、ガジェットや作業環境を買ったあとまで検証するメディアです。