ラズパイ管理
SSH
公開鍵をサーバーに登録する
# ログイン $ ssh [email protected] # フォルダとファイルを作る(既に存在している場合は実行しなくても可) $ mkdir ~/.ssh $ touch ~/.ssh/authorized_keys # 権限の設定。ここを間違えると、公開鍵認証でログイン出来ないので注意 $ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys # 追記 $ vim ~/.ssh/authorized_keys
パスワード認証を禁止する
- 対象サーバーへログインした状態で以下のようにsshdを設定
- よくある話だが、sshd_config.d/以下にファイルを設定しオリジナルのファイルはいじらぬが吉
$ sudo vi /etc/ssh/sshd_config.d/pi.conf PasswordAuthentication no ChallengeResponseAuthentication no PermitRootLogin no <-- rootでログインしないのであれば
ログインテスト
- 別のコンソールで公開鍵認証でSSHできればOK、出来なければ設定を見直す
$ sudo systemctl reload sshd
ファイアウォール
- Debian 9 (Stretch) - ファイアウォール設定!
- 上記を参考にポート10022のみ空けて、sshdの待受ポートを変える
# apt-get install -y ufw # ufw allow 10022/tcp Rule added Rule added (v6) # vim /etc/ssh/sshd_config Port 10022 # systemctl reload sshd
- SSHの許可と拒否は/etc/hosts.{allow,deny}でもできる
- SSHのログイン時にIPアドレス制限を行う
- たしかにこの方法でもIPアドレス制限もできるが、 /var/log/auth.logを見るとアクセス試行が残ったりするので、以下の方法でFWを設定する
ufwのルール表示(番号付き)
$ sudo ufw status numbered verbose
ルールの削除
$ sudo ufw delete
任意のホストからのアクセスを許可する
$ sudo ufw allow from 192.168.0.0/24 to any port 10022
Apache
SFTPでリモートログインしたときに/var/www/html以下をpiユーザーで読み書きできないと不便なので、設定を変える。
# www-data グループがあることを確認 [email protected]:/var/www $ sudo cat /etc/group | grep www-data www-data:x:33 # /var/www/html/ 以下の権限を変更 $ sudo chown -R www-data:www-data /var/www/html/ $ sudo chmod 775 /var/www/html/ # piユーザーをwww-dataに加える $ sudo usermod -aG www-data pi
これで公開ディレクトリ「/var/www/html/」内に一般ユーザーがファイルをアップロードできるようになる。。。
WOL(対向サーバであるDebian11の設定)
- Debian11なのでNetworkManagerが使われている(嫌だなあ)
$ nmcli d DEVICE TYPE STATE CONNECTION enp7s0 ethernet 接続済み 有線接続 1
- 以下のようにnmcliを実行
$ sudo nmcli c modify "有線接続 1" 802-3-ethernet.wake-on-lan magic
- WOL有効化
$ sudo ethtool -s enp7s0 wol g
VPNクライアント
接続の匿名化のためにVPNサービスにつなぎたい
cyberghostvpn公式のやり方をアレンジ
openvpnのインストール
$ sudo apt-get install openvpn openssl openresolv
設定ファイルをclient以下にコピー
// このconf名がsystemctlで使われる $ sudo cp CG_JP.conf /etc/openvpn/client/ $ sudo cp ca.cert /etc/openvpn/client/ $ sudo cp client.crt /etc/openvpn/client/ $ sudo cp client.key /etc/openvpn/client/
openvpn client起動
$ sudo systemctl start [email protected]_JP
起動確認
$ sudo systemctl status [email protected]_JP ● [email protected]_JP.service - OpenVPN tunnel for CG_JP Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running)
curlでグローバルIPアドレスが変われば成功
$ curl httpbin.org/ip { "origin": "xxx.xxx.xxx.xxx" }
OKならば自動起動にする
$ sudo systemctl enable [email protected]_JP