如何使包含关键数据的某些文件受到保护?例如,假设我有一些重要的文件,是否有任何方法或策略可以使这些文件在Ubuntu上受到更多保护?我什至希望有人试图打开某些文件时要求输入密码。就安全策略而言,这会影响Ubuntu版本吗?我可以在外部使用任何加密算法吗?问候。
chown root
和chmod go-rwx
?
如何使包含关键数据的某些文件受到保护?例如,假设我有一些重要的文件,是否有任何方法或策略可以使这些文件在Ubuntu上受到更多保护?我什至希望有人试图打开某些文件时要求输入密码。就安全策略而言,这会影响Ubuntu版本吗?我可以在外部使用任何加密算法吗?问候。
chown root
和chmod go-rwx
?
Answers:
最好的方法是chattr +i {file}
。这将设置不可变属性,然后任何人(包括root)都无法修改,删除,重命名文件或创建硬链接。
唯一可以编辑文件的人是root。(S)他必须通过删除不可变位来取消此操作:chattr -i {file}
然后可以对文件执行任何操作。再次设置+ i会锁定文件,无法进行任何修改。
但是,这不会阻止格式化存储文件的分区。这样可以防止文件被盗。
如果需要,您甚至可以在完整的安装点上执行此操作:
chattr +i -R /discworld
会使整个“ discworld”以及其中的任何东西都不可变(chattr -i -R /discworld
撤消它;))
如果不执行任何特殊操作,则可以通过删除所有者以外的所有人的权限来使他人难以阅读,更改或删除文件。让root成为文件的所有者,并将其放在只有root有权访问的目录中。
sudo mkdir /home/secret #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret
将(sudo mv file /home/secret
)文件移到其中并执行
sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file
chmod
并chown
接受多个参数:chmod 600 file1 file2
或chmod 600 file*
除此之外,请使用加密...
保护文档的一种非常安全的方法是加密(前提是您销毁了原始文档并正确存储了加密版本)。
可以绕开权限(如其他答案所建议)(请参阅此)。
因此,我建议您正确加密文件。方法如下:
(有关图形界面方法,请参见此答案的结尾)
确保已gpg
安装。
例如,要加密名为的文件Important_File.txt
,请使用
$ gpg -c Important_File.txt
现在输入密码(稍后将在需要时使用该密码)。
现在,您将获得一个带有原始名称和.gpg
扩展名的文件,例如Important_File.txt.gpg
。
删除原始文件,并保留.gpg
版本。如果您不使用安全shred
实用程序(在SSD驱动器或SD卡上仍然无法使用),可能很容易从磁盘上获取原始文件:
$ shred Important_File.txt
现在我们只能Important_File.txt.gpg
在一起。
每当您需要阅读时,只需
$ gpg Important_File.txt.gpg
然后输入您在第一个命令中设置的密码。您将获得原件Important_File.txt
。
注意:这只会保护任何人(使用加密)都无法读取加密文件的内容
.gpg
,但是任何人都可以删除,复制或移动它!为了对此提供基本保护,请对加密.gpg
文件使用其他答案的许可权方法。
图形界面(GUI)方法
安装Seahorse应用程序。
然后,您可以从“文件”应用程序执行此操作:
rm
或从文件管理器中删除),则检索原始未加密文件可能很容易。您需要覆盖它以使其不可恢复,例如使用shred
。不过,这在SSD和闪存驱动器上也没有用...
如果您是系统上的单个用户,并且没有人在没有您权限的情况下可以合理地访问您的计算机,那么按照Zanna的回答,您可以使用此命令来阻止访问:
sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt
在这种情况下,该文件只能由root
用户读取和/或写入。如果没有人在未经您许可的情况下可以引导您的计算机或提起硬盘驱动器,则这被视为“足够安全”。root
在这种情况下,我们使用的是用户,因为root
即使没有权限,用户也始终可以读取文件。通过使用root用户,我们强制只有一个用户可以访问它。
如果要以任何方式,形状或形式i
将文件标记为不可更改,则可以使用属性将文件标记为不可变。在这种情况下,文件的权限被锁定,在任何情况下都不得更改。因此,您可以执行以下命令以使文件不可更改,并保护其免受删除和权限更改的影响:
sudo chattr +i /my/secret/file.txt
如果要更改它,请将替换为+i
以-i
暂时解锁文件。有关更深入的信息,请参见Rinzwind的答案。
现在,如果其他人可以访问您的计算机(远程sudo
访问或任何形式的物理访问),这将立即崩溃。攻击者可以利用root
力量来读取文件,插入实时USB或仅拉动硬盘驱动器。
因此,我们需要加密文件。我个人更喜欢使用“文件容器”,以便您可以在其中粘贴更多内容并根据需要进行扩展。chattr +i
仍然建议您使用该文件,以免意外删除(或更改)文件。最后,如果您使用的是加密映像,则可以设置权限,以使其他人在装入磁盘时可以访问非常有限的文件子集,从而使其非常适合服务器。该指南最初在这里可用,并且已在此处进行了改编。
首先,您要创建一个磁盘映像以供使用。在此示例中,我们将其设为5 GB。
dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
然后,我们需要对您的图像进行加密:
sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img
您可以在此处选择输入首选的加密密码。完成此操作后,我们需要公开裸块设备:
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
现在,我们有一个解密的文件容器,但是没有文件系统,它就像没用一样好。让我们修复一下:
sudo mkfs.ext4 /dev/mapper/my-secret-device
现在,我们需要一个位置来安装新分区。在这种情况下,我将其放在/crypt
。我的用户为1000,因此,我将设置分区以仅允许我(和root)对其进行读取/写入。
sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
现在,我可以使用文件工具导航到,/crypt
并且可以将所有敏感文件存储在那里。完成后,需要卸载并重新加密分区。
sudo umount /crypt
sudo cryptsetup luksClose my-secret-device
现在,我将在映像文件上设置适当的分区,以使只有我和root可以访问它,并且不能再对其进行更改。
chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img
每当我想打开该文件进行读取时,我只需要运行以下两个命令,就可以轻松地对其进行别名:
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
我的加密数据将在处可用,/crypt
并且将保持只读状态,并且只有我和root用户可以访问。
如果要更改文件,则需要更改权限,然后挂载:
sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
现在,您在这里需要小心,因为如果用户在系统上具有root用户,他们可以修改/破坏您的加密分区,从而使其失去用处。他们还可以从驱动器中窃取数据,但前提是必须将其打开。但是,如果不显式打开数据,他们将无法窃取数据,甚至无法看到数据的存在。因此,当您打开加密卷时,有责任确保系统足够安全,以免任何root用户联机。
TL; DR:
制作保管库:
dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mkfs.ext4 /dev/mapper/my-secret-device
填写保管库:
sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
锁定保管库:
sudo umount /crypt
sudo cryptsetup luksClose my-secret-device
冻结库:
chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img
打开库:
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
cryptsetup
记录所有输入密码的方式代替...
您可以使用encfs进行目录加密。
基本上,您需要创建2个目录,其中1个目录将存储加密数据,而1个目录将访问该数据:
mkdir ~/.encrypted
mkdir ~/private
然后执行(每次要“挂载”目录时都需要执行此行):
encfs ~/.encrypted/ ~/private/
除非您对此有更多了解,否则只需按ENTER即可进行标准设置(仅在第一次时提出)。
然后输入您的密码,它将被挂载。
您的数据将仅由您的用户安全地访问~/private/
(您几乎可以忽略~/.encrypted
)
要卸载它:
sudo umount ~/private/
要么
fusermount -u ~/private/
就那么简单。
您可以使用cryptkeeper加密数据,这确实是一个非常好的应用程序,可以为文件提供安全性。您可以使用以下方法安装它:
sudo apt-get update
sudo apt-get install cryptkeeper
我通常建议您以名称开头的文件夹进行加密,.
因为将其放在文件名之前会隐藏它。这是一个小技巧,但可以。
要取消隐藏文件夹,请使用Ctrl+ h或反之亦然。
ls
肯定不会工作。
ls
,您可以使用-a
开关显示所有(即包括隐藏的)文件。