![]() |
LINUX |
Security_tips
・CentOS 5.6 の場合です
・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-238.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ selinux=0
initrd /initrd-2.6.18-238.el5.img
・permissiveモードにする
title CentOS (2.6.18-238.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ enforcing=0
initrd /initrd-2.6.18-238.el5.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 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
・修正後
[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-5
:RPM-GPG-KEYのインストールの確認
[root@mars:~]
# rpm -qa |grep gpg-pubkey
gpg-pubkey-e8562897-459f07a4
:RPM-GPG-KEYのアンインストール(例)
[root@mars:~]
# rpm -e gpg-pubkey-e8562897-459f07a4
・同名のkeyを複数登録している場合
# rpm -e --allmatches gpg-pubkey-e8562897-459f07a4
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 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)
[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
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 35864 Mar 15 2007 /bin/ping -rwsr-xr-x 1 root root 31244 Mar 15 2007 /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. |

