# useradd centos ←ユーザーを追加 # passwd centos ←centosにパスワードを設定(パスワードは2回入力する)
# userdel -r centos
# id admin ←ユーザー"admin"が所属するグループを確認 uid=500(admin) gid=500(admin) 所属グループ=500(admin),10(wheel) context=user_u:system_r:unconfined_tgroupsコマンドでも所属グループを確認できます。
# groups admin admin : admin wheel
長いコマンドや良く使うコマンドに対して、別名を設定できます。
ここでは例として、viコマンドを実行した場合、vimで開くように設定してみます。
# vi /etc/bashrc : : (最終行に追記) alias vi='vim'(2)一旦ログオフしてログインし直す。
# source /etc/bashrc
(1)設定追加
$ vi ~/.bashrc : : (最終行に追記) alias vi='vim'(2)一旦ログオフしてログインし直す。
# source ~/.bashrc
alias ipconfig='ifconfig'とか設定しておくと、以外と便利かもしれませんw
初期設定では、root権限のあるユーザーでないとsudoを実行できません。
[admin@centos ~]$ sudo /etc/init.d/httpd start
[sudo] password for admin:
admin is not in the sudoers file. This incident will be reported.
CentOSでsudoを利用できるようにするには、様々な方法がありますがたとえば以下のようにユーザーadminをwheelグループに追加して、wheelグループでsudoコマンドを利用できるように設定変更する方法があります。
(1)まず、ユーザーadminをwheelグループに追加します。
# usermod -G wheel admin
(2)visudoを実行してwheelグループがsudoコマンドを実行できるようにします。
# visudo
(3)以下の行を検索して、コメントアウトを外す
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
以上でCentOSでadminユーザーがsudoコマンドを利用可能になります。
sudoが利用できるようになったか確認します。
[admin@centos ~]$ sudo /etc/init.d/httpd start
httpd を起動中: [ OK ]
[admin@centos ~]$ sudo /etc/init.d/httpd stop
httpd を停止中: [ OK ]
ユーザー"admin"でsudoコマンドが使えるようになりました。
デフォルト設定ではrootのパスワードがわかれば、管理者権限で何でも行なえてしまいます。
ここではユーザー"admin"をwheelグループに所属させて、
wheelグループに登録されているユーザーのみ管理者権限に切り替えられるように設定します。
[root@centos ~]# usermod -G wheel admin
[root@centos ~]# vi /etc/pam.d/su
#auth required pam_wheel.so use_uid
↓コメントをはずす
auth required pam_wheel.so use_uid
これでwheelグループに属するユーザーのみ、管理権限に切り替えられるようになりました。
「root権限に切り替えられるユーザーを制限する」の設定を行なった後はwheelグループに所属するユーザーが「su -」コマンドを打った場合、パスワード認証が行なわれ、正しいパスワードを入れるとrootになれるようになります。ここで説明する設定を変更すると、「su -」コマンドを打った場合、パスワードなしにroot権限になれます。
[root@centos ~]# vi /etc/pam.d/su # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid ↓コメントをはずす auth sufficient pam_wheel.so trust use_uid
これでrootにパスワード無しで切り替えられるようになりました。
サーバーの不正アクセスの手段として、sshへの辞書攻撃が良くあります。
これを防ぐために一番危険なrootでのssh接続を出来ないように設定しましょう。
[root@centos ~]# vi /etc/ssh/sshd_config
:
:
#PermitRootLogin yes
↓
PermitRootLogin no
[root@centos ~]# /etc/rc.d/init.d/sshd restart
sshd を再読み込み中: [ OK ]
これで、root権限でssh接続できなくなります。
ただし、root以外のユーザー権限ではssh接続可能です。
ssh接続はデフォルトで120秒以内に認証に成功しない場合、接続をシャットダウンします。
これを自分のタイプスピードに合わせて可能な限り短く設定することで、より安全にサーバーを運用できます。
[root@centos ~]# vi /etc/ssh/sshd_config
:
:
#LoginGraceTime 2m (デフォルトは120秒)
↓
LoginGraceTime 20
[root@centos ~]# /etc/rc.d/init.d/sshd restart
sshd を再読み込み中: [ OK ]
これで、制限時間(例では20秒)以内にssh接続の認証に成功しないと接続を切断されるようになり、若干安全になりました。
CentOSにはExec-Shieldというバッファオーバーフロー対策機能が備わっています。
デフォルトの設定では1(基本的に有効と明示しない限り無効)に設定されています。
これを有効にします。
[root@centos ~]# echo 2 > /proc/sys/kernel/exec-shield
元の設定に戻すには1をechoします。
[root@centos ~]# echo 1 > /proc/sys/kernel/exec-shield
echo 2しただけでは次回再起動時に設定が元に戻ってしまいます。
以下のファイルに設定を書き込んで、常に有効になるように設定します。
[root@centos ~]# vi /etc/sysctl.conf
最終行に下記を追記
kernel.exec-shield = 2
設定が終わったら、一旦再起動します。
例として、ここではApacheサーバーでの設定を例にあげます。
(1)実行ファイルのパス確認
[root@centos ~]# which httpd
/usr/sbin/httpd
(2)有効に設定
[root@centos ~]# execstack -c /usr/sbin/httpd
(3)無効に設定
[root@centos ~]# execstack -s /usr/sbin/httpd
(4)確認
[root@centos ~]# execstack -q /usr/sbin/httpd
パスの頭に"X"がついていれば無効、"-"がついていれば有効に設定されているのがわかります。