![]() |
LINUX |
Security_tips
*CentOS 5.5 の場合です
*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.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ selinux=0
initrd /initrd-2.6.18-194.el5.img
*permissiveモードにする
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ enforcing=0
initrd /initrd-2.6.18-194.el5.img
:setenforceコマンドで設定
*マシンを再起動した場合、/etc/selinux/configの内容で設定されます
$ su - password: # getenforce Enforcing
*permissiveモードにする
# setenforce 0
*確認
# getenforce Permissive
*enforcingモードにする
# setenforce 1
*確認
# getenforce Enforcing
exec-shieldの設定*CentOS 5.5では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
*修正後
# 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のインストール(例)
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
:RPM-GPG-KEYのインストールの確認
# rpm -qa |grep gpg-pubkey gpg-pubkey-e8562897-459f07a4
:RPM-GPG-KEYのアンインストール(例)
# rpm -e gpg-pubkey-e8562897-459f07a4
*同名のkeyを複数登録している場合
# rpm -e --allmatches gpg-pubkey-e8562897-459f07a4
RPMコマンドでファイル改竄のチェック*例 /sbin/initを調べる
# rpm -V `rpm -qf /sbin/init`
*なにか表示されたら変更があった可能性がある
Sファイルサイズが異なっている 5MD5チェックサムが異なる Lシンボリックリンクが変更されている Tファイルの更新時刻が変更されている Dデバイスファイルが変更されている Uファイルの所有者が変更されている Gファイルの所有グループが変更されている Mファイルのパーミッションが変更されている
suログインの制限:wheelグループにユーザ (sola) を追加します
# 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は無視されます
# echo sola >> /etc/at.allow
cron実行ユーザの制限*"root"と"sola"にcronの実行を許可します
*cron.allowが存在する場合 cron.denyは無視されます
# echo sola >> /etc/cron.allow
rootログインできる端末の制限*/etc/securetty ファイルを修正します
*(Xで仮想端末を使う場合は、制限しない)
console tty1 tty2
ログイン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)
# ldd /usr/local/sbin/sshd | grep libwrap
bash.historyに履歴を保存しない(ユーザsolaの場合)*/home/sola/.bash_profileに変数を追加します
HISTFILESIZE=0 export HISTFILESIZE
ログイン時に、最終ログインの記録を表示させない*ユーザーのホームディレクトリ直下に .hushlogin ファイルを作成
$ touch ~/.hushlogin
仮想コンソール画面をロックする*opensshログイン画面では使わない?
*vlockパッケージを使います
[root@venus:~]# 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ファイルを改竄することは難しいので、プロセス数を比較して変化を確かめる
# ls -d /proc/* | grep [0-9] | wc -l # ps ax | wc -l
setuid/setgidされたバイナリファイルの検出*setuid/setgidが設定されていると、user以外が実行してもuser/groupが実行したことになる
*setuid rootが設定されていると、一般userでもrootとして実行したのと同じになります。
# find / -perm +6000 -type f 2> /dev/null | xargs ls -al
*省略*
-rwsr-xr-x 1 root root 35864 Mar 15 2007 /bin/ping -rwsr-xr-x 1 root root 31244 Mar 15 2007 /bin/ping6
*一般ユーザがpingする必要がないならば、setuidを無効にします
# chmod a-s /usr/bin/{ping,ping6}
パスワードの作成*ランダムなパスワードを作成したい場合、mkpasswdコマンドを利用できます
*expectパッケージに含まれています
*-l(エル)オプションで桁数(デフォルトは9桁)を指示できます
*覚えにくいのが難点です。
[sola@venus sola]$ mkpasswd -l 20 gf0pzbqqy@stnjq4ISxl
![]() |
Copyright(c) 528p.com All Rights Reserved. |

