サーバの運営の初めにすること
ホームページ然り、
サーバを借りて何かをするときのスタートアップ手順とか
SSHクライアントの設定を詳細に書く
借りたサーバに繋げる
$ ssh root@***.***.***.***
PassWordはサーバを借りるときに設定したもの
"***.***.***.***"がサーバIPアドレス(ip_v4)
Winから繋げる場合はGitBashをつかう
Tera termでもいいかもしれない
パスワードを付ける
ユーザにパスワードを設定する
$passwd *USERNAME*
設定内容の確認、変更
$ cd /etc $ cat passwd
このファイルに設定の記載がある
フォーマットに関してはここから
確認するのは、ホームディレクトリと起動シェル
*USERNAME*: .... :*HOMEDIR_PATH*:/bin/bash
sudoの設定
sudo ができないので、それを設定する
rootユーザに切り替えて、
$ su $ usermod -aG sudo *USERNAME*
作成したユーザーでsudoコマンドが使えるようになる
firewalldのインストール
初期状態ではむき出しのままなので、
firewalldをインストールする
$sudo apt install firewalld
- 生きてるか確認
$systemctl status firewalld
- 設定の確認
$firewall-cmd --list-all
初期値ではSSHがパブリックに設定されている
firewallの設定
$cd /usr/lib/firewalld/services $ls
このパスにfirewalldに関する設定値のファイルが入っている
ファイル名がそのままサービス名となり、
サービス名をfirewalldに設定し、その設定はこのファイルから引用される
~ <port protocol="tcp" port="22"/> ~
となっている
tcpでポート22を空けますよ、ということになる
firewalldをインストールしたあと、
再度ログインしてみるとわかる
$ssh *USERNAME*@***.***.***.*** -p 22
ポート指定でログインして、22以外でログインできなければ正常に作動している
ルートでログインできなくする
$nano /etc/ssh/sshd_config
真ん中あたりでPermitRootLoginという項目がある
#(コメントアウト)をはずして
PermitRootLogin no
"no"にすることで、rootログインを禁止する
これで、rootをとる手順が、
登録ユーザでログイン→suで切り替え or sudoコマンドで権限昇格
となり、めんどくささが増す
SSHログインポートの変更
ログインのポート番号を既定の22から変更することで、
攻撃者に探す手間をつくる
$nano /etc/ssh/sshd_config
でPort欄に任意の番号を追加する
複数設定することも可能で、
これが記述ない場合は、Port 22で初期値が設定される
(初期はコメントアウト状態→既定)
- 複数設定する
Port **** Port ****
- リッスンポートの確認
$systemctl sshd restart $netstat -tlp
新規のポートのために、先のssh.xmlをコピーする
先のディレクトリに移動し、
$cp ssh.xml new_ssh.xml
で、内容のポートの欄と、サービス名を変更する
続いて、firewalld側に反映
Documentation - Manual Pages - firewall-cmd | firewalld
$firewall-cmd --add-service=new_ssh $firewall-cmd --reload $firewall-cmd --list-all
OKならサクセスと表示されるので、
リロードして、
.--list-allで追加されたかを確認
ここまで来たら、ログインを確かめる
.-p PORTNUMBER でいろいろな番号からアクセスしてみて
設定値でログイン出来たらOK
そしたら、22番(いらない番号)を消す
$firewall-cmd --remove-service=ssh --zone=public
publicにあるかは、あらかじめ--list-allで確認すること
消したらリロード
RSA4096認証
公開鍵認証方式のこと
ローカル側で、
$ssh-keygen -t rsa -b 4096
をして、パスフレーズを任意で入力(なしも可能)
保存するファイルパスを入力して作成完了
id_rsa.pubが公開鍵で、これをサーバに送る
保存場所はホームディレクトリの".ssh/authorized_keys"
内容をコピーして貼り付け
authorized_keysで保存した場合は、sshd_configの設定変更は
"PasswordAuthentication no"のみ
これは、パスワードによるログインを許可しないという設定
これをする前に、一度公開鍵認証でログインできるか確認することを推奨
ログアウトし、
$ssh *USERNAME*@***.***.***.*** -p *PORTNUM* -i rsa_id
秘密鍵をオプション-iの引数にしてSSHログインを開始
パスフレーズを入力してログインする
その後は-iオプションは必要ない
確認ができたら、先の"PasswordAuthentication no"をして、
パスワードでログインできないことを確認して終了
切断後のアプリケーション存続
SSHを切断したときに必要なプロセスが自動でキルされる
不要と判断されないように実行する必要がある
applingo.tokyo
$ nohup python hoge.py &