サーバーを立てたりつぶしたりを繰り返している今日この頃ですが
少し長めに使うときには、セキュリティの面でもパフォーマンスの面でも
やっておきたい設定というのがいくつかあるので、CentOS7系の設定を書いておきます。
作業ユーザーの作成・wheelグループに追加
これは最優先というか、最初にやらないといけないものですね。
rootでのログインを禁止するためにも、作業用のユーザーを作っておく必要があります。
作業ユーザーの作成、作業ユーザーのパスワード設定を順にします。
VPSではrootのパスワードはさすがに設定していると思うので、ここでは特に書きません。
# useradd (username)
# passwd (username)
Changing password for user username.
New password:(password)
Retype New Password:(password)
wheelグループにユーザーを追加
# gpasswd -a (username) wheel
rootログイン禁止・公開鍵認証
SSHでつながる大半のホストに存在しているrootを狙った攻撃は非常に多いです。
rootは全権を持っているのでrootを奪われるとサーバーを侵入者の自由にできてしまいます。
攻撃側は、ユーザー名が判明しているのでパスワードアタックをかけるだけでよくなるため
rootではパスワードログインできないようにするというのがSSHでの基本的な対策となります。
また、作業ユーザーでログインするときもパスワードではなく公開鍵で認証するようにします。
これにより、rootでの作業が必要になるときは公開鍵とrootパスワード両方が必要になります。
/etc/ssh/sshd_configの設定を変更
# rootのログインを禁止する
PermitRootLogin no
# RSA認証を使用する
RSAAuthentication yes
# 公開鍵認証を使用する
PubkeyAuthentication yes
# パスワード認証を使用しない
PasswordAuthentication no
公開鍵の設定(id_rsa.pubは自分の公開鍵を転送しておきます)
※公開鍵のパーミッションは600にしておかないと認証時にエラーになります。
# mkdir /home/(username)/.ssh
# mv id_rsa.pub /home/(username)/.ssh/authorized_keys
# chmod 600 /home/(username)/.ssh/authorized_keys
# chmod 700 /home/(username)/.ssh
# chown -R (username):(username) /home/(username)/.ssh
sshサービスの再起動
# systemctl restart sshd.service
firewalldの起動
気が利いたVPSサービスだとファイアウォールが入っていたりしますが
全部がそんなサービスがではないので、サーバー側でもファイアウォールを有効にしておきます。
# systemctl start firewalld
設定されている通信の確認
# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
ntpの追加
正確な時間であればログは役に立ちますが、不正確だとあとで見返した時に困ります。
ntpの追加・ntpdateで時刻の調整を行います。
# yum install ntp ntpdate
/etc/ntp.confを開くと多くの場合このようになっています。
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
この中から一つを引き出し時刻を調整します。
# ntpdate 0.centos.pool.ntp.org
30 Jun 13:14:29 ntpdate[17544]: step time server 206.108.0.131 offset 2.493853 sec
ntpサービスを開始・自動起動を設定
# systemctl start ntpd
# systemctl enable ntpd
logwatchの設定
ログイン状況・ソフトウェアのアップデート履歴・ディスク状況などをまとめてメール送信する
logwatchという監視ツールがあるのでこれを入れておきます。
毎日メールを送って来るので少し鬱陶しいかもしれませんが、メールで送っておけば
後で確認したいときに検索性が良いので使っています。
メール送信のテスト
# logwatch --mailto [email protected]
テスト先のメールアドレスに結果が到着していれば、設定は半分完了です。
次は、このメールアドレスを既定の送信先にします。
/etc/logwatch/conf/logwatch.confに送信先メールアドレスの追加
# echo "MailTo = [email protected]" >> /etc/logwatch/conf/logwatch.conf
ネットワークの調整・最大ファイルオープン数の変更
空きポートがなくなると通信が滞るので、送受信に使えるポートの数を増加させます。
ポートもファイルオープン換算なので、最大ファイルオープン数の設定も変更します。
ログにToo many open filesが出る場合はこの設定値が低いことが多いです。
/etc/sysctl.confに送受信に使えるポート数の緩和設定を追加
# echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
# echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
# echo "net.ipv4.ip_local_port_range = 1024 65536" >> /etc/sysctl.conf
# /etc/sysconfig/initに最大ファイルオープン数の緩和設定を追加
# ulimit -n 65536
# echo "ulimit -n 65536" >> /etc/sysconfig/init