バッファ・オーパーフロー対策(Exec-Shield)

Exec-Shieldを有効にして、バッファ・オーパーフロー攻撃をブロックする。
■ Exec-Shieldの設定

現状確認
[root@server1 ~]# cat /proc/sys/kernel/exec-shield
1
Exec-Shieldを有効にする。
[root@server1 ~]# echo 2 > /proc/sys/kernel/exec-shield
再確認
[root@server1 ~]# cat /proc/sys/kernel/exec-shield
2
起動時に、有効にする。
[root@server1 ~]# vi /etc/rc.d/rc.local
echo 2 > /proc/sys/kernel/exec-shield    ← 追加

■ Exec-Shieldの動作確認

[root@server1 ~]# wget http://pubs.research.avayalabs.com/src/libsafe-2.0-16.i386.rpm
--2011-09-19 19:34:28--  http://pubs.research.avayalabs.com/src/libsafe-2.0-16.i386.rpm
pubs.research.avayalabs.com をDNSに問いあわせています... 198.152.240.29
pubs.research.avayalabs.com|198.152.240.29|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 374371 (366K) [text/plain]
`libsafe-2.0-16.i386.rpm' に保存中
100%[=========================================================================>] 374,371     81.8K/s 時間 4.8s
2011-09-19 19:34:33 (76.5 KB/s) - `libsafe-2.0-16.i386.rpm' へ保存完了 [374371/374371]
[root@server1 ~]# rpm -ivh libsafe-2.0-16.i386.rpm  ← libsafeのインストール
準備中...                   ########################################### [100%]
1:libsafe                ########################################### [100%]
Adding libsafe to ld.so.preload for system wide protection
[root@server1 ~]# cp /usr/doc/libsafe-2.0/exploits/t1 ./  ← 攻撃ツールをコピー
[root@server1 ~]# rpm -e libsafe  ← libsafeのアンインストール
Removing libsafe from /etc/ld.so.preload (if exists)
[root@server1 ~]# ./t1  ← 攻撃ツールの実行
This program tries to use strcpy() to overflow the buffer.
If you get a /bin/sh prompt, then the exploit has worked.
Press any key to continue...abc;  ← 適当に入力
セグメンテーション違反です (コアダンプ)  ← バッファオーバーフローがブロックされた
[root@server1 ~]# rm ./t1  ← 攻撃ツールを削除
rm: remove 通常ファイル `./t1'? y  ← yと入力して攻撃ツールを削除