アカウントセキュリティ
動けばいいじゃんと軽視されがちですが、私は大事だと考えています。パスワードポリシー
ユーザーパスワードは8文字以上、大小文字・数字・記号も必須にしましょう。
またログインの際に一定回数パスワード認証に失敗したらロックするようにもします。
# vim /etc/login.defs #PASS_MIN_LEN 5 PASS_MIN_LEN 8
# vim /etc/pam.d/system-auth-ac auth required pam_env.so auth required pam_tally2.so pam_tally2.so onerr=fail deny=10 unlock_time=120 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so #password requisite pam_cracklib.so try_first_pass retry=3 type= password requisite pam_cracklib.so try_first_pass retry=10 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 #password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=1 password required pam_deny.so
# vim /etc/pam.d/password-auth-ac auth required pam_env.so auth required pam_tally2.so pam_tally2.so onerr=fail deny=10 unlock_time=120 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so #password requisite pam_cracklib.so try_first_pass retry=3 type= password requisite pam_cracklib.so try_first_pass retry=10 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 #password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=1 password required pam_deny.so設定に失敗すると上手くログインできなくなってしまうので注意して設定・確認しましょう。
※参考
値 | 説明 |
---|---|
retry=N | N回まで失敗が許されます。 |
type=XXX | プロンプトに使われる文字列。 |
difok=N | 現在のパスワードと N文字以上異なれば許可。 |
minlen=N | パスワードが N文字以上だと許可。 |
dcredit=-N | 数字が N文字以上含まれていれば許可。 |
ucredit=-N | 大文字が N文字以上含まれていれば許可。 |
lcredit=-N | 小文字が N文字以上含まれていれば許可。 |
ocredit=-N | その他の文字が N文字以上含まれていれば許可。 |
権限昇格制限
複数人、複数拠点で運用するサーバであればきちんと設計・制限しておきましょう。sudo権限
下記記事を参考にして頂ければと。
sudo関連のあれこれ
su権限
suコマンドを利用できるユーザーをwheelグループ所属ユーザーのみとする。
下記ファイルのコメントアウトを解除します。
# vim /etc/pam.d/su auth required pam_wheel.so use_uid
# vim /etc/login.defs SU_WHEEL_ONLY yes
不要サービスの停止
サーバ目的で利用するのであれば余計なリソースやポートが空かないよう。不要なサービスを停止しておきましょう。
# chkconfig --list
カーネルパラメータの調整
最低限の設定を。Smurf攻撃対策
# vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_broadcasts = 1kernelパニック発生時にOSを再起動するようにする。
# vim /etc/sysctl.conf kernel.panic = 10設定を反映
# sysctl -pこの時、追記した項目以外で下記のようなエラーが出力されます。
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key error: "net.bridge.bridge-nf-call-iptables" is an unknown key error: "net.bridge.bridge-nf-call-arptables" is an unknown keyこちらはネットワークブリッジを利用する目的以外でブリッジモジュールがインストールされていた場合、デフォルトで有効化されてしまうことを防ぐためにあえて記載してあるらしいです。
なのでそのままでもよいのですが、エラーが出ているという事はブリッジモジュールをインストールしていないという事なので、
エラーが気になる方はコメントアウトしてもいいかもしれません。
ACL
Linux標準のACLと言えばiptablesがあります。AWSなんかではインスタンス単位でACLを設定できるためあまりメリットはないですが
GW/FWで制御するような環境であれば設定しておりて損はないと思いますので設定しましょう。
私は設定スクリプトを作成し、デーモン利用ではなく利用します。
サーバ再起動時なんかには自動でスクリプトを実行するようにしておくとよりいいですね。
セキュリティアップデート
サーバとして利用を開始する前には一度フルアップデートを実施したほうがよいでしょう。構築作業中やインストールに利用したテンプレート・メディアによっては脆弱性に対するパッチが当たっていない場合があります。
# yum update※kernelのアップデートについては利用基盤やハード環境を考慮して行ってください。
場合によってはサポートを受けられなくなる可能性があります。
サービスインしてしまうとなかなかアップデートを気軽に行えなくなってしまうのが面倒ですね。
sysstatの設定
今や標準でインストールされているsysstat。そのままでも問題ありませんが、運用に合わせて設定を変更します。
初期設定だと28日分のシステムログを保持するようになっています。
もっと保持しておきたい場合。
# vim /etc/sysconfig/sysstat HISTORY=365
# vim /usr/lib64/sa/sa1 HISTORY=365
# vim /usr/lib64/sa/sa2 HISTORY=365またデフォルトでは10分おきにシステムログを取得します。それを5分毎に変更します。
# vim /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes #*/10 * * * * root /usr/lib64/sa/sa1 1 1 */5 * * * * root /usr/lib64/sa/sa1 1 1 # 0 * * * * root /usr/lib64/sa/sa1 600 6 & # Generate a daily summary of process accounting at 23:53 #53 23 * * * root /usr/lib64/sa/sa2 -A 58 23 * * * root /usr/lib64/sa/sa2 -A
時刻同期設定
同期サーバの設定インターネット上でシステム時刻を同期・調整するようにします。
最近のOSではPTP時刻同期に対応してきていますが、こちらはNTPで設定します。
今回は外部のNTPサーバを参照しするクライアントとして設定します。
どのサーバを参照するか。ある程度信頼性が求められるので怪しげなサーバは参照しないようにしましょう。
私はよく下記サービスを参照します。
インターネットマルチフィード 公開NTPサービス
# vim /etc/ntp.conf server ntp1.jst.mfeed.ad.jp iburst server ntp2.jst.mfeed.ad.jp iburst server ntp3.jst.mfeed.ad.jp iburstiburstを指定することで、初期時刻同期の収束時間が短くなるそうです。
ipv6の無効化
# vim /etc/ntp.conf #restrict -6 ::1
脆弱性・DDOS対策
NTPのDDOS対策
# vim /etc/ntp.conf disable monitor
slewモード設定
時刻同期方法をでデフォルトでslewモードにする
# vim /etc/sysconfig/ntpd OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -x"
NTP起動
ntpdを起動し同期を開始しましょう。
# chkconfig ntpd on # service ntpd start
ntpdateの設定
サーバ再起動時にはハードウェア時刻を参照し、起動します。
運用にてシステム時刻とハード時刻の同期を行っていれば大きな誤差なく起動しますが、
ハード時刻がずれていた場合に時刻誤差が大きく起動してこないよう
OS起動時にntpdateを実行するように設定しておきます。
# vim /etc/ntp/step-tickers # List of servers used for initial synchronization. ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
起動設定
# chkconfig ntpdate on長かったなー。
以上で商用?サーバを構築しよう!の初期設定が完了です。
個人利用であったり、そこまで求められないよっていう設定もあるとおもいます。
知らなかったことがあり、だれかの助けになっていれば幸いです。
他ミドルウェアのついてもボチボチ書いていきたいとおもっています。
技術評論社 (2013-08-20)
売り上げランキング: 4,627
売り上げランキング: 4,627