今回はセキリュティを中心にしたCentOS基本設定を行う。
主にというか、ほぼこちらの記事を元にさせていただき設定を行った。
はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ
そして補足的にコチラを参考にさせていただいた。
さくらのVPSを借りたら真っ先にやるべきssh設定
CentOSをサーバーとして活用するための基本的な設定
■ターミナルからのSSH接続
まず自宅のOSXからターミナルでVPSへこちらを参考にさせていただきつつ接続する。
01.さくらインターネットVPSを使ってみる。〜sshで接続してみる〜
$ ssh root@VPSのIPアドレス root@VPSのIPアドレス's password: SAKURA Internet [Virtual Private Server SERVICE] # ls -al
■ユーザー作成
root以外の作業ユーザーを作成しパスワードを設定する。
# adduser foo # passwd foo 新しいパスワード: 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。 # exit
先程作成のユーザーでログイン出来るか確認する
$ ssh foo@VPSのIPアドレス foo@VPSのIPアドレス's password: SAKURA Internet [Virtual Private Server SERVICE] $ exit
無事にユーザー作成された。
■SSH のポート番号を変更
22番ポートのままだとロボットの攻撃対象になりやすいらしいので変更する。
sshd_configを開きPort 22をコメントアウト、別のポートを指定する。
$nano /etc/ssh/sshd_config #Port 22 Port 10022 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ::
リスタート
$/etc/init.d/sshd restart sshd を停止中: [ OK ] sshd を起動中: [ OK ]
ポートのオプション -p 10022 でログイン確認する。
$ ssh -p 10022 root@VPSのIPアドレス root@VPSのIPアドレス's password: SAKURA Internet [Virtual Private Server SERVICE]
無事にポートが変更された。
■公開認証鍵で SSH 接続
パスワード認証から、公開鍵認証のみでssh接続するように変更する。
ローカルのターミナルでキーペア(秘密鍵と公開鍵)を生成する。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/foo/.ssh/id_rsa): //何も入れずリターンした。 Enter passphrase (empty for no passphrase): //パスワード Enter same passphrase again: //パスワード Your identification has been saved in /Users/foo/.ssh/id_rsa. Your public key has been saved in /Users/foo/.ssh/id_rsa.pub.
VPSサーバーへログインし.sshディレクトリを作成しておく。
このときrootではなく作成したユーザーでログインすること。
最初rootでログインしてしまい設定に失敗した。
ここから先はVPSサーバーにログインしたままにして、ローカルのターミナル作業が必要なときはもう一枚ウィンドウをたちあげて作業する。
$ ssh -p 10022 foo@VPSのIPアドレス foo@VPSのIPアドレス's password: SAKURA Internet [Virtual Private Server SERVICE] # ls -al //.sshディレクトリはないので作成 # mkdir .ssh
ローカルのターミナルでVPSサーバーへ公開鍵を転送する。
$ scp -P 10022 ~/.ssh/id_rsa.pub foo@VPSのIPアドレス:~/.ssh/authorized_keys foo@VPSのIPアドレス's password: id_rsa.pub 100% 402 0.4KB/s 00:00
VPSサーバーのディレクトリと公開鍵のパーミッションを変更する。
$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys
sshの設定(sshd_config)を変更して公開鍵でしかログインできないようにする。
PermitRootLoginをnoにしてrootでのログインを禁止する。
PasswordAuthenticationをnoにしてパスワードでのログインを禁止する。
PermitEmptyPasswordsをnoにして空パスワードでのログインを禁止する。
$ su パスワード: # nano /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no PermitEmptyPasswords no
sshdを再起動する。
# /etc/init.d/sshd restart sshd を停止中: [ OK ] sshd を起動中: [ OK ]
VPSにログインしたままのウィンドウは、そのままにして、もう一枚のウィンドウでログインのチェックをする。
rootでは入れないのを確認
$ ssh -p 10022 root@VPSのIPアドレス Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
認証鍵ユーザーでログイン出来るのを確認
$ ssh -p 10022 foo@VPSのIPアドレス SAKURA Internet [Virtual Private Server SERVICE]
■ファイアーウォールを構築する
iptablesで公開ポートを設定する。
基本的には、WEBLEさんのと同じ。
あとでnodeを入れるので3000を空けておく。
SSH 10022, HTTP 80, FTP 20, 21, SSL 443 Node 3000
改行のところにスペースが入るとダメなので要確認
# nano /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SSH 10022, HTTP 80, FTP 20, 21, SSL 443,Node 3000 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
iptablesを再起動し、設定反映されているか確認。
# /etc/rc.d/init.d/iptables restart # iptables -L
■不要なデーモンをストップ
不要なデーモンを停止しパフォーマンスを調整する。
起動中のデーモンを調べる。
# chkconfig --list | grep 3:on acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpdate 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
CentOSをサーバーとして活用するための基本的な設定の4番の表と比べてみたがあまり停止するのも無さそうなのでこのままで行くこととした。
■sudo コマンドにユーザーを追加する
sudo で root権限が使えるように設定する。
visudoコマンドを実行し最後に行を追加して記述する。
# visudo foo ALL=(ALL) ALL
■yumアップデート
最後にyumを最新状態にしておく。
yum update
これで基本設定は、とりあえず終わりにする。
これ以外は気がついた時に随時行うことにした。