○ Security_tips

・CentOS 6.x の場合です
・selinux,exec-shield,RPM-GPG-KEY,su,at,batch,cron,root,shell
・libwrap,bash.history,hushlogin,vlock,setuid,setgid,mkpasswd

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○selinuxのモード変更

:/etc/selinux/configで設定

# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled- SELinux is fully disabled.
SELINUX=enforcing

・再起動

:kernel起動時にオプションを付ける (SELINUX=enforcingの場合)

・selinuxを無効にする

title CentOS (2.6.32-696.el6.i686)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-696.el6.i686 ro root=/dev/sda3 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM nomodeset crashkernel=auto selinux=0 
    initrd /initramfs-2.6.32-696.el6.i686.img

・permissiveモードにする

title CentOS (2.6.32-696.el6.i686)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-696.el6.i686 ro root=/dev/sda3 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM nomodeset crashkernel=auto enforcing=0 
    initrd /initramfs-2.6.32-696.el6.i686.img

:setenforceコマンドで設定

・マシンを再起動した場合、/etc/selinux/configの内容で設定されます

[sola@mars:~]
$ su -
password:
[root@mars:~]
# getenforce
Enforcing

・permissiveモードにする

# setenforce 0

・確認

# getenforce
Permissive

・enforcingモードにする

# setenforce 1

・確認

# getenforce
Enforcing

○exec-shieldの設定

・CentOS 6.xではexec-shieldが有効になっています
・(デフォルト値は CentOSの設定では 1 になっています)
・メモリオーバーフローを制御します
・exec-shield= 0 - always-disabled
・exec-shield= 1 - default disabled, except binaries that enable it
・exec-shield= 2 - default enabled, except binaries that disable it

/etc/sysctl.confで設定します

kernel.exec-shield = 2

・修正後

[root@mars:~]
# sysctl -p

・exec-shieldの設定を間違って、kernelが起動しなくなった場合
・grubの起動画面で kernelのオプションに exec-shield=0 を与えます

・ファイルごとにexec-shieldを有効・無効に設定できます
・execstackコマンドを使います
・$ man execstackでマニュアルを読みましょう

# execstack [OPTION...] [FILES]
# execstack -s filename (execstackをsetするとexec-shieldが無効になる)
# execstack -c filename(execstackをclearするとexec-shieldが有効になる)
# execstack -q filename (確認 X 無効 - 有効)

○RPM-GPG-KEYのインストール・アンインストール

:RPM-GPG-KEYのインストール(例)

[root@mars:~]
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

:RPM-GPG-KEYのインストールの確認

[root@mars:~]
# rpm -qa |grep gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3

:RPM-GPG-KEYのアンインストール(例)

[root@mars:~]
# rpm -e gpg-pubkey-c105b9de-4e0fd3a3

・同名のkeyを複数登録している場合

# rpm -e --allmatches gpg-pubkey-c105b9de-4e0fd3a3

○RPMコマンドでファイル改竄のチェック

・例 /sbin/initを調べる

[root@mars:~]
# rpm -V `rpm -qf /sbin/init`

・なにか表示されたら変更があった可能性がある

Sファイルサイズが異なっている
5MD5チェックサムが異なる
Lシンボリックリンクが変更されている
Tファイルの更新時刻が変更されている
Dデバイスファイルが変更されている
Uファイルの所有者が変更されている
Gファイルの所有グループが変更されている
Mファイルのパーミッションが変更されている

○suログインの制限

:wheelグループにユーザ (sola) を追加します

[root@mars:~]
# gpasswd -a sola wheel

:/etc/pam.d/suファイルの修正(変更追加分)

auth required pam_wheel.so use_uid

:/etc/login.defsファイルに追加します

SU_WHEEL_ONLY yes

○at、batch実行ユーザの制限

・"root"と"sola"にat、batchの実行を許可します
・at.allowが存在する場合 at.denyは無視されます

[root@mars:~]
# echo sola >> /etc/at.allow

○cron実行ユーザの制限

・"root"と"sola"にcronの実行を許可します
・cron.allowが存在する場合 cron.denyは無視されます

[root@mars:~]
# echo sola >> /etc/cron.allow

○rootログインできる端末の制限

・/etc/securetty ファイルを修正します
・(Xで仮想端末を使う場合は、制限しない)

console
vc/1
vc/2
tty1
tty2

○仮想コンソールを減らす

:/etc/sysconfig/init

・省略

#ACTIVE_CONSOLES=/dev/tty[1-6]
ACTIVE_CONSOLES=/dev/tty[1-2]

・省略


○singleユーザモードでパスワード要求

・rootのパスワードを要求されるので注意

:/etc/sysconfig/init

・省略

# Set to '/sbin/sulogin' to prompt for password on single-user mode
# Set to '/sbin/sushell' otherwise
#SINGLE=/sbin/sushell
SINGLE=/sbin/sulogin

○ログインshellでアクセス制限

・CentOSの場合
・useraddまたはusermodコマンドの-sオプションで指定します
・(デフォルトは/bin/bash)

ログインshell コンソールログイン FTPログイン
/bin/bash Yes Yes
/sbin/nologin No Yes(パスワード要)
/bin/false No No

○libwrapによるアクセス制限の設定

・libwrapをリンクして作られているコマンドはhosts.allow、hosts.denyで制御できます
・設定したその時点で有効になります

・/etc/hosts.allow ファイルを編集します

ALL: 127.0.0.1
vsftpd: 192.168.0.
sendmail: 192.168.0.
sshd: ALL

・/etc/hosts.deny ファイルを編集します

ALL: ALL

・ライブラリの動的リンクの確認(例 sshd)

[root@mars:~]
# ldd /usr/local/sbin/sshd | grep libwrap

○bash.historyに履歴を保存しない(ユーザsolaの場合)

・/home/sola/.bash_profileに変数を追加します

HISTFILESIZE=0
export HISTFILESIZE

○ログイン時に、最終ログインの記録を表示させない

・ユーザーのホームディレクトリ直下に .hushlogin ファイルを作成

[sola@mars:~]
$ touch ~/.hushlogin

○仮想コンソール画面をロックする

・opensshログイン画面では使わない?
・vlockパッケージを使います

[root@mars:~]
# vlock
This TTY is now locked.
Use Alt-function keys to swith to other virtual consoles.
Please enter the password to unlock.
root's Password:

○/procのプロセス数とpsコマンドのプロセス数を比較する

・マシンをhackされる場合、psコマンドを改竄される場合が多い
・procファイルを改竄することは難しいので、プロセス数を比較して変化を確かめる

[root@mars:~]
# ls -d /proc/* | grep [0-9] | wc -l
# ps ax | wc -l

・または

# ls --color=no -d /proc/* | grep [0-9] | wc -l
# ps ax | wc -l

○setuid/setgidされたバイナリファイルの検出

・setuid/setgidが設定されていると、user以外が実行してもuser/groupが実行したことになる
・setuid rootが設定されていると、一般userでもrootとして実行したのと同じになります。

[root@mars:~]
# find / -perm +6000 -type f 2> /dev/null | xargs ls -al

・省略

-rwsr-xr-x 1 root root      36892 Jul 19 15:55 /bin/ping
-rwsr-xr-x 1 root root      32016 Jul 19 15:55 /bin/ping6

・一般ユーザがpingする必要がないならば、setuidを無効にします

[root@mars:~]
# chmod a-s /usr/bin/{ping,ping6}

○パスワードの作成

・ランダムなパスワードを作成したい場合、mkpasswdコマンドを利用できます
・expectパッケージに含まれています
・-l(エル)オプションで桁数(デフォルトは9桁)を指示できます
・覚えにくいのが難点です。

[sola@mars:~]
$ mkpasswd -l 20
gf0pzbqqy@stnjq4ISxl

○ Copyright(c) 528p.com All Rights Reserved.