今回はクラッカー対策第三弾としてバッファオーバーフロー攻撃対策をします。
バッファオーバーフロー攻撃と言うのは、脆弱性をもつプログラムに対して許容量以上のデータを送り込み、そのプログラムが使用するメモリ領域を意図的にオーバーフローさせ、システムを機能停止にしたり、悪意のあるプログラムを実行する攻撃のことです。
バッファオーバーフロー攻撃を防ぐために「Exec-Shield」で対策したいと思います。
「Exec-Shield」はCentOS導入時にインストール済みですので、設定を変更して反映していきます。
[root@centos ~]# cat /proc/sys/kernel/exec-shield
1
現在の設定は1でした。なお設定値の意味ですが
0 : 無効
1 : 無効(実行ファイルごとに有効にする)
2 : 有効(実行ファイルごとに無効にする)
3 : 常に有効
です。
ここでは2の「有効(実行ファイルごとに無効にする)」に変更します
[root@CentOS ~]# echo 2 > /proc/sys/kernel/exec-shield
これで設定が変更されましたが、OSの再起動をすると値が元に戻ってしまうので設定ファイルから変更します。
viエディタが起動するので設定ファイルを変更します
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 4294967295
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 268435456
# exec-shield
kernel.exec-shield = 2 追加します
内容を保存しviエディタを終了します
設定が終わったのでバッファオーバーフロー攻撃をしてExec-Shieldの動作確認をします。
Exec-Shieldの動作確認を行うためにlibsafeというツールを使用します。
libsafeとはLinux用に開発されているバッファオーバーフローによる攻撃を防止するためのライブラリなのですがこの中に、テスト用のバッファオーバーフロー攻撃ツールがありますのでそれを使います。
[root@CentOS ~]# wget http://pubs.research.avayalabs.com/src/libsafe-2.0-16.i386.rpm
–23:01:01– 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]
Saving to: `libsafe-2.0-16.i386.rpm’
100%[=======================================>] 374,371 39.2K/s in 9.6s
23:01:32 (37.9 KB/s) – `libsafe-2.0-16.i386.rpm’ を保存しました [374371/374371]
libsafeのインストールします
[root@centos ~]# rpm -ivh libsafe-2.0-16.i386.rpm
準備中… ########################################### [100%]
1:libsafe ########################################### [100%]
Adding libsafe to ld.so.preload for system wide protection
テスト用のバッファオーバーフロー攻撃ツールをホームディレクトリにコピーします
[root@centos ~]# cp -p /usr/doc/libsafe-2.0/exploits/t1 ./
テスト用のバッファオーバーフロー攻撃ツールを実行します
[root@centos ~]# ./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…a 何か文字を入力して[Enter]キーを押下します。ここでは a と入力します。
セグメンテーション違反です
「Exec-Shield」が有効になっている為、「セグメンテーション違反です」のメッセージとともにテスト用バッファオーバーフロー攻撃ツールが停止されます。
テスト用バッファオーバーフロー攻撃ツールを削除します
[root@centos ~]# rm -f ./t1
libsafeをアンインストールします
[root@centos ~]# rpm -e libsafe
Removing libsafe from /etc/ld.so.preload (if exists)
これでバッファオーバーフローを利用して悪意のあるプログラムを実行される危険はなくなりました。
————————————————————————————————–
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その8 CentOS 5.2 にrootkit検知ツールを導入する
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その7 CentOS 5.2 にファイル改竄検知システムを導入する
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その6 CentOS 5.2 にアンチウィルスソフトを導入する
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その5 CentOS 5.2 ファイル転送準備
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その4 CentOS 5.2 インストール後の初期設定
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その2 CentOS 5.2 をインストールする
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その1 導入を検討する






