nodev
私はファイルシステムをマウントし、特別なファイル/デバイスをマウントすることを許可しない「RH413 Red Hat Server Hardening」プロセスでこの内容を読みました。しかし、例を示していません。
しかし、RHELシステムで次のことを行ったところ、dd
nodevオプションを使用してファイルシステムをマウントすると、特殊文字デバイスをコマンドで生成されたファイルに関連付けることができないことがわかりました。後でnodev
オプションを削除し、dd
コマンドを使用して新しく作成されたファイルと文字デバイスを関連付けることができました。
オプションを使用してFSをマウントするとき、これは私たちが期待する動作ですか、nodev
それとも他のものが欠けていますか?
コマンドは次のとおりです。
[root@server Special]# mount | grep /Special
/dev/mapper/home on /Special type ext4 (rw,nodev,relatime,seclabel,data=ordered)
[root@server Special]#
[root@server Special]# ls -l
total 16
drwx------. 2 root root 16384 Feb 20 01:40 lost+found
crw-r--r--. 1 root root 1, 5 Feb 21 04:53 spFile
[root@server Special]#
[root@server Special]# dd if=spFile of=newDev bs=1K count=20000
dd: failed to open ‘spFile’: Permission denied
[root@server Special]#
nodev
追加して削除しますexec
。
[root@server ~]# mount | grep /Special
/dev/mapper/home on /Special type ext4 (rw,relatime,seclabel,data=ordered)
[root@server ~]#
[root@server Special]# dd if=spFile of=newDev bs=1K count=20000
20000+0 records in
20000+0 records out
20480000 bytes (20 MB) copied, 0.527708 s, 38.8 MB/s
[root@server Special]#
[root@server Special]# ls -l
total 20016
drwx------. 2 root root 16384 Feb 20 01:40 lost+found
-rw-r--r--. 1 root root 20480000 Feb 21 05:10 newDev
crw-r--r--. 1 root root 1, 5 Feb 21 04:53 spFile
[root@server Special]#
[root@server Special]# mkdir /spDev
[root@server Special]# mount newDev /spDev/
[root@server Special]# df -h /spDev/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 18M 326K 17M 2% /spDev
[root@server Special]#
ベストアンサー1
最初...
dd
次のコマンドで生成されたファイルと特殊文字デバイスを関連付けることができないことがわかりました。
あなたが示した実験はそうではありませんでした作るファイルを使用すると、dd
特殊文字を書き込むためにデバイスを使用しようとしますdd
。
1)デバイスファイルとは何ですか?
デバイスファイルはカーネルのデバイスへのリンクと考えることができます。ディスクには保存されますが、説明する物理デバイスは保存されたファイルシステムとは関係ありません。この点で、カーネル内の何かを指すシンボリックリンクに似ていると思います。
ファイル名は重要ではありません。シンボリックリンクに任意の名前を付けることができ、どこにでも配置できるように、デバイスファイルに名前を付けてどこにでも保存することができ、それでも同じデバイスを指します。
2) なぜセキュリティ問題が発生するのか?
明らかな理由で、誰もがデバイスに直接接続できるわけではありません。たとえば、通常のユーザーがハードドライブだけを読み取ったり、ファイルシステムとその権限を無視したりしたくない場合があります。
ドライブをコンピュータに接続してマウントすると、そのディスクに安全でない権限を持つデバイスファイルがある可能性があります。これは保護する必要があることを指すことがあります。したがって、ディスクを挿入した後、誤って他の人にデバイスへのアクセスを許可する可能性があります。
3)nodev
何をすべきか?
これによりセキュリティホールが閉じます。このファイルシステムに保存されているデバイスファイルを介して、すべてのプログラムがデバイスにアクセスすることを禁止するようにオペレーティングシステムに指示します。
実験では、DDを使用してデバイスファイル(デバイスに接続されている)を使用してデバイスに書き込みを試みます。最初のケースでは、nodev
インストールしたオペレーティングシステムがdd
(他のすべてのプログラムと共に)このデバイスファイルの使用を禁止するためです。
編集:デバイスファイルに関する追加情報
上記では、デバイスファイルがシンボリックリンクに似ていると述べました。デバイスファイルの場合、メジャー番号とマイナー番号はリンク先を指定します。オペレーティングシステムによる自動生成の例は次のとおりです。
$ ls -l /dev/zero /dev/random /dev/sda /dev/sda1
crw-rw-rw- 1 root root 1, 8 Feb 16 23:24 /dev/random
brw-rw---- 1 root disk 8, 0 Feb 16 23:24 /dev/sda
brw-rw---- 1 root disk 8, 1 Feb 16 23:24 /dev/sda1
crw-rw-rw- 1 root root 1, 5 Feb 16 23:24 /dev/zero
したがって、私のシステムからを呼び出すと、mknod foo c 1 8
同じ文字デバイスが作成されます/dev/random
。明らかに、これは同じデバイスであり、それを指す他のファイルです。
あなたの質問に対する印刷物によると、major number1
とMinor numberがあります5
。私のシステムでは/dev/zero
。