MyLaptop Linux 操作記録

kaliLinuxベアメタルを使うに当たって今のPCの状態がどうなっているのかを把握するために記載。
IaC使えば良いんだろうけど、手軽さが無くなるためやめた。

# インストール時
3種のデスクトップマネージャのインストール
言語設定英語
地域設定日本
# インストール後
## aptでのサクッとインストール
~~~
apt update
apt full-upgrade # ディストリビューション自体のアップグレード 不要だが、いちおう確認
apt upgrade -y

apt install -y aptitude
apt install -y cu # screenはもとから入ってたけど一応
apt install -y neofetch
apt install -y ibus-mozc --> rebbot
chromeのインストール --> reboot  フォント設定を好みに変更 そのままだと明朝体がメインになってた
apt install -y boxes
apt install -y virtualbox
apt install -y docker.io
apt install -y docker-compose
apt install -y pandoc
apt install -y remmina
apt install -y sl
~~~

## Python関連
### Jypyter-Notebook
~~~
pip install notebook
export PATH="/home/<usernameを入れる>/.local/bin:$PATH"
~~~

### pyenv関連
https://qiita.com/koooooo/items/b21d87ffe2b56d0c589b
~~~
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo '' >> ~/.zshrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
source ~/.zshrc
pyenv -v 
sudo apt install -y libbz2-dev
sudo apt install -y libreadline-dev
sudo apt install -y libssl-dev
pyenv install 3.12.0
pyenv global 3.12.0
~~~

### 適当にすべてを最新バージョンに()
~~~
pip list -o | awk '{print $1}' >pythonversion.txt && cat ./pythonversion.txt | awk 'NR>=3' | xargs pip install -U && rm pythonversion.txt 
~~~

## IPAフォント よくわからんがとりあえず
~~~
sudo apt install -y fonts-ipafont
fc-cache -fv
fc-list | grep -i ipa
~~~

## 音
### スピーカ 起動後スピーカから音が出ない、dummyinputしか出力がない場合のみ
pulseaudioが入っていない場合はapt install -y pulseaudio
~~~
systemctl --user enable pulseaudio
~~~
#### Bluetooth(特に意味なかった もともと高音質)
sudo apt install -y pulseaudio-module-bluetooth
sudo apt install -y libldacbt-enc2

## プリンタ
設定のプリンタの項目で表示がトラブってる感じだったら実行
~~~
sudo apt install -y cups-daemon
~~~



## iptables
iptablesの後継で高速化されたnftablesが入ってる。nftコマンドが利用可能であるが、iptablesコマンドでもできることは同じらしいということで。
~~~
# 初期化
sudo iptables --flush
# 全通信の拒否
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP

# ループバックインタフェースでのすべての送受信の許可
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

# 送信に対する受信を許可
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# DNS通信の送信許可(TCP,UDP port53)
sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# NTP通信の送信許可
sudo iptables -A OUTPUT -p udp --dport 123 -j ACCEPT

# HTTP HTTPS通信の送信許可
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

# SSH通信の送信許可
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

# ICMP通信の送受信許可
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo iptables -A OUTPUT -p icmp -j ACCEPT

# cloudflare-warpの通信許可
# https://qiita.com/KeioCF/items/5699bb95104d10d18d19
sudo iptables -A OUTPUT -p udp --dport 2408 -j ACCEPT
~~~

## WARP
$(lsb_release -cs)をbookwormに書き換えて実行。kali用のパッケージが無いため、debian用のパッケージを拝借。kaliはdebian派生だからいけるかと。
~~~
sudo curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
sudo apt-get update && sudo apt-get install cloudflare-warp
warp-cli register
warp-cli connect
~~~
下記コマンドで"warp=on"があれば接続OK
~~~
curl https://www.cloudflare.com/cdn-cgi/trace/ 
~~~
"warp=off"であれば、ログを確認し原因を突き止めよ。iptablesの穴開けを忘れていないかな？
~~~
cat /var/log/cloudflare-warp/cfwarp_service_log.txt
~~~

## デスクトップに秒を表示
~~~
gsettings set org.gnome.desktop.interface clock-show-seconds true
~~~

## ClamAV
ここは要検討 不要論あるし。
~~~
sudo apt install clamav-daemon clamav-base clamav-freshclam
sudo systemctl start clamav-daemon.service
sudo clamscan -r /
~~~

## rootユーザのPW設定
## ユーザのログイン可能状況の確認
/etc/passwdでrootと現在のユーザ以外のデフォルトシェルが、ログインできないシェルになっているかを確認
各行の末尾がnologinやfalseであれば、いけてる

## LaTeX
https://qiita.com/rainbartown/items/d7718f12d71e688f3573
~~~
sudo apt install texlive-full -y
~~~

## snapでのインストール
~~~
sudo apt install -y snapd
sudo systemctl enable --now snapd.apparmor
sudo snap find spectacle
sudo snap install onlyoffice-ds
sudo snap install onlyoffice-desktopeditors
~~~


# 検討事項
- aptリポジトリの場所選び。
    - 現状はデフォルト
    - 日本国内のところにする
    - https://launchpad.net/ubuntu/+archivemirrors
    - Ubuntuのリポジトリとか、他のディストリビューションのリポジトリを参照してしまってよいのか
- sudoersでパスワードレスでsudoコマンドを使用できるようにするか
    - 実施するメリット
        - sudoの度にPWを聞かれないため楽である。
        - PWの覗き見によるPW漏洩の機会削減
    - 実施するデメリット
        - 離席時に他人にPC触られたら全てが終わる
            - WinLocの徹底
            - サスペンドまでの時間の短縮
    - 代案 パスワードレスにするコマンドのホワイトリスト化
- ICMPのINPUTは果たして開ける必要があるのか
    - pingdeath攻撃対策とか()
- 【保留】gconf2パッケージが入らないが、どうするか
    - mattermost,onlyoffice
- 【終了】UDP INPUT traceroute
    - tracerouteはLinuxではUDPである。パケットを見てもクライアントへの正当な応答であるかが判別できない。
    - 対処
        - 【採用】tracerouteにIオプションTオプションをつけ、ICMP、TCPでtracerouteする。
            - 不要な穴あけ不要。
        - 【不採用】traceroute用にポートを決めておき、そのポートに限りUDPのINPUTを許可
            - tracerouteのために穴開けるのは馬鹿らしい

# 保留
- gconf2のパッケージが必要であることによる問題
    - OnlyOfficeのインストール --> gconf2のインストールが必要で、これは非推奨になり、今後使われなくなる可能性が高いパッケージであるため。
    - Mattermostのインストール --> gconf2のインストールが必要で、これは非推奨になり、今後使われなくなる可能性が高いパッケージであるため。