VPSを使い始めたときの初期設定(Ubuntu編)
自分用メモ。
CentOSに飽きたのでUbuntuを使ってみた。基本的には同じ。インストールオプションでUbuntu17.04も選べたが、2018年1月にEodOfLifeを迎えているので、apt installを行うときにちょっと手間取る。後発バージョンを使うか、よりサポート期間の長い16.04を使う。
以下、Ubuntu16.04での例。TeraTermでSSH接続する。
1.ユーザーの追加
rootパスワードを変更しておく。
passwd
rootは作業に適さないので、一般ユーザーを追加する
adduser username
useraddでも追加されるが、adduserのほうがパスワードの設定など包括的にできて良い(気がする)。Full NameとかRoom Numberは全部そのまま初期設定でエンター。
追加したユーザーにsudo権限を付与。
gpasswd -a username sudo
sudoを実行するたびにパスワード入力するのは面倒くさいので、それほど気にしない環境なら以下のように変更(ちゃんとした環境ではやらないように)
visudo
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) NOPASSWD: ALL
Ctrl+O→そのままエンターで上書き保存(エディタはnanoになる)。Ctrl+Xで終了。
2.SSHの設定
SSHのポート設定とルートログインを無効にする。SSHサーバーがインストールされていなければ、「apt install openssh-server」でインストールする。
vi /etc/ssh/sshd_config
Port22は有名すぎてDoS攻撃の対象になるだけなので適当な数字に変更する。編集はiキーを押すと編集開始、ESCキーで編集終了になる。
# What ports, IPs and protocols we listen for Port XXXX #ここを22から変更
ルートログインも無効にする。
# Authentication: LoginGraceTime 120 PermitRootLogin no #ここをyesからnoに変更 StrictModes yes
ESCで編集モードを抜けて、「:wq」で設定を保存する。パスワードログインはよほど環境に自信があれば切ってもいいが、再起動後など何かの拍子で公開鍵ログインができなくなることがあるので、自信がなければ残しておいたほうが無難。
SSHサーバーを再起動。
systemctl restart ssh
3.アップデートをかける
apt update
apt upgrade -y
数分かかる
4.ファイアーウォールの設定
再起動後もiptablesの内容が維持されるようにiptables-persistentをインストール(ここだけUbuntuが特殊)
apt install iptables-persistent
これが出てこない場合は3のapt updateやapt upgradeを忘れているはず。以下、設定。ほぼこのサイトを継承。
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP #データを持たないパケットを破棄 iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #SYNflood攻撃と思われるものを破棄 iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP #ステルススキャンと思われるものを破棄 iptables -A INPUT -i lo -j ACCEPT #localhostからの通信とpingを許可 iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport XXXX -j ACCEPT #SSH用のポートを許可(2で設定したポート番号を入力) iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #HTTP(80)を許可 iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT #Webmin(10000)を許可 iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #確立済みの接続を許可 iptables -P INPUT DROP #許可した通信以外のサーバーから受信するパケットを拒否 iptables -P OUTPUT ACCEPT #サーバーから送信するパケットの許可
コピペする前にXXXXを指定したSSHポートで置き換えたか注意。これをやらないと次回ログインできなくなる(多分)。変更を保存。
/etc/init.d/netfilter-persistent save
5.公開鍵認証
TeraTermで公開鍵は作成済みのものとする。一旦ログアウトし、一般ユーザーで再ログイン(この場合ポート番号は変更済みのものを入力すること)。
ログインできたら「id_rsa.pub」をドラッグアンドドロップし、「~/」作業ディレクトリに「SCP」で転送。次のコマンドを実行。
mkdir .ssh chmod 700 .ssh cat id_rsa.pub > .ssh/authorized_keys chmod 600 .ssh/authorized_keys rm -f id_rsa.pub
ログアウトして、公開鍵認証でもログインできるか確認。
できたら終わり。お疲れ様でした。
参考資料
VPSを新規に借りた直後にすべきセキュリティ設定 | Time4VPSのまとめ
さくらのVPSでUbuntu16.04を建てた - Qiita
Ubuntuでiptablesを再起動後にも保持する方法 - Qiita
サクッとUbuntuサーバーの初期設定をする - Qiita
オプション1.Python3.6のインストール
追記:2018/5 公式サイトの方法だとget-pip.py実行時にエラーが出ることがあります。PPAを変更すると暫定的に解決できます。
デフォルトでインストールされているPython3.5だと一部のライブラリ(psutil)が上手く行かなかったので、Python3.6をインストールしたら上手くいった。インストール方法はこちらを参照。