首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
cmd
string
version
client
dockerfile
match
byte
less
heap
sum
uri
heatmap
window
httprequest
main
replace
buffer
bash
triggers
list
instance
filter
blob
php5
select
md5
get
perl
java
require
scala
python
lua
cookie
httpclient
copy
const
iostream
typescript
bitmap
js
metadata
hashtable
vbscript
jar
jsp
random
export
node.js
search
io
loops
install
cPlusPlus
foreach
javascript
数组
go
settings
timezone
schema
grid
bit
command
case
post
vba
join
function
cpython
merge
emoji
substring
hashset
ip
runtime
hashcode
expression
spring
当前位置:
开发笔记
>
编程语言
> 正文
Linux用户安全
作者:小忠 | 来源:互联网 | 2023-10-12 12:32
1.口令安全UNIX系统中的etcpasswd文件含有全部系统需要知道的关于每个用户的信息(加密后的口令也可能存于etcshadow文件中).etcpasswd中包含有用户的登录名
1.口令安全
UNIX系统中的/etc/passwd文件含有全部系统需要知道的关于每个用户的信息(加密后的口令也可能存于/etc/shadow文件中).
/etc/passwd中包含有用户的登录名,经过加密的口令,用户号,用户组号,用户注释,用户主目录和用户所用的shell程序.其中用户号(UID)和用户组号(GID) 用于UNIX系统唯一地标识用户和同组用户及用户的访 问权限.
/etc/passwd中存放的加密的口令用于用户登录时输入的口令经计算后相比较,符合则允许登录,否则拒绝用户登录.用户可用passwd命令修改自己的口令, 不 能直接修改/etc/passwd中的口令部份.
一个好的口令应当至少有6个字符长,不要取用个人信息(如生日,名字,反向拼写的登录名,房间中可见的东西),普通的英语单词也不好(因为可用字典攻击法),口令中最好有一些非字母(如数字,标点符号,控制字符等),还要好记一些, 不能写在纸上或计算机中的文件中,选择口令的一个好方法是将两个不相关的词用一个数字或控制字符相连,并截断为8个字符.当然,如果你能记住8位乱码自然更好.
不应使用同一个口令在不同机器中使用,特别是在不同级别的用户上使用同一口令,会引起全盘崩溃.用户应定期改变口令,至少6个月要改变一次,系统管理员可以强制用户定期做口令修改.
为防止眼明手快的人窃取口令,在输入口令时应确认无人在身边.
2.文件许可权
文件属性决定了文件的被访问权限,即谁能存取或执行该文件.用ls -l可以列出详细的文件信息,如:
-rwxrwxrwx 1 pat cs440 70 Jul 28 21:12 zombin 包括了文件许可,文件联结数,文件所有者名,文件相关组名,文件长度,上次存取日期和文件名.
其中文件许可分为四部分:
-:表示文件类型.
第一个rwx:表示文件属主的访问权限.
第二个rwx:表示文件同组用户的访问权限.
第三个rwx:表示其他用户的访问权限.
若某种许可被限制则相应的字母换为-.
在许可权限的执行许可位置上,可能是其它字母,s,S,t,T.s和S可出现在所有者和同组用户许可模式位置上,与特殊的许可有关,后面将要讨论,t和T可出现在其他用户的许可模式位置上,与"粘贴位"有关而与安全无关.小写字母(x,s,t) 表示执行许可为允许,负号或大写字母(-,S或T)表示执行许可为不允许.
改变许可方式可使用chmod命令,并以新许可方式和该文件名为参数.新许可方式以3位8进制数给出,r为4,w为2,x为1.如rwxr-xr--为754.
chmod也有其它方式的参数可直接对某组参数修改,在此不再多说,详见UNIX 系统的联机手册.
文件许可权可用于防止偶然性地重写或删除一个重要文件(即使是属主自己)!
改变文件的属主和组名可用chown和chgrp,但修改后原属主和组员就无法修改回来了.
3.目录许可
在UNIX系统中,目录也是一个文件,用ls -l列出时,目录文件的属性前面带一个d,目录许可也类似于文件许可,用ls列目录要有读许可,在目录中增删文件要有写许可,进入目录或将该目录作路径分量时要有执行许可,故要使用任一个文件,必须有该文件及找到该文件的路径上所有目录分量的相应许可.仅当要打开一个文件时,文件的许可才开始起作用,而rm,mv只要有目录的搜索和写许可, 不需文件的许可,这一点应注意.
4.umask命令
umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入 .profile文件,就可控制该用户后续所建文件的存取许可.umask命令与chmod命令的作用正好相反,它告诉系统在创建文件时不给予什么存取许可.
5.设置用户ID和同组用户ID许可
用户ID许可(SUID)设置和同组用户ID许可(SGID)可给予可执行的目标文件 (只有可执行文件才有意义)当一个进程执行时就被赋于4个编号,以标识该进程隶属于谁,分别为实际和有效的UID,实际和有效的GID.有效的UID和GID一般和实际的UID和GID相同,有效的UID和GID用于系统确定该进程对于文件的存取许可. 而设置可执行文件的SUID许可将改变上述情况,当设置了SUID时,进程的有效UID 为该可执行文件的所有者的有效UID,而不是执行该程序的用户的有效UID,因此, 由该程序创建的都有与该程序所有者相同的存取许可.这样,程序的所有者将可通过程序的控制在有限的范围内向用户发表不允许被公众访问的信息.
同样,SGID是设置有效GID.
用chmod u+s 文件名和chmod u-s文件名来设置和取消SUID设置.用 chmod g+s 文件名和chmod g-s文件名来设置和取消SGID设置.
当文件设置了SUID和SGID后,chown和chgrp命令将全部取消这些许可.
6.cp mv ln和cpio命令
cp拷贝文件时,若目的文件不存在则将同时拷贝源文件的存取许可,包括SUID 和SGID许可.新拷贝的文件属拷贝的用户所有,故拷贝另人的文件时应小心,不要被其他用户的SUID程序破坏自己的文件安全.
mv移文件时,新移的文件存取许可与原文件相同,mv仅改变文件名.只要用户有目录的写和搜索许可,就可移走该目录中某人的SUID程序且不改变其存取许可. 若目录许可设置不正确,则用户的SUID程序可被移到一个他不能修改和删除的目录中,将出现安全漏洞.
ln为现有文件建立一个链,即建立一个引用同一文件的新名字.如目的文件已经存在,则该文件被删除而代之以新的链,或存在的目的文件不允许用户写它, 则请求用户确认是否删除该文件,只允许在同一文件系统内建链.若要删除一个 SUID文件,就要确认文件的链接数,只有一个链才能确保该文件被删除.若SUID文件已有多个链,一种方法是改变其存取许可方式,将同时修改所有链的存取许可, 也可以chmod 000 文件名,不仅取消了文件的SUID和SGID许可,而且也取消了文件的全部链.要想找到谁与自己的SUID程序建立了链,不要立刻删除该程序,系统管理员可用ncheck命令找到该程序的其它链.
cpio命令用于将目录结构拷贝到一个普通文件中,而后可再用cpio命令将该普通文件转成目录结构.用-i选项时,cpio从标准输入设备读文件和目录名表,并将其内容按档案格式拷贝到标准输出设备,使用-o选项时,cpio从标准输入设备读取先已建好的档案,重建目录结构.cpio命令常用以下命令做一完整的目录系统档案:
find fromdir -print cpio -o > archive
根据档案文件重建一个目录结构命令为:
cpio -id
cpio的安全约定如下:
(1)档案文件存放每个文件的信息,包括文件所有者,小组用户,最后修改时 间,最后存取时间,文件存取许可方式.
*根据档案建立的文件保持存放于档案中的存取许可方式.
*从档案中提取的每个文件的所有者和小组用户设置给运行cpio -i命令 的用户,而不是设置给档案中指出的所有者和小组用户.
*当运行cpio -i命令的用户是root时,被建立的文件的所有者和小组用户 是档案文件所指出的.
*档案中的SUID/SGID文件被重建时,保持SUID和SGID许可,如果重建文件 的用户不是root,SUID/SGID许可是档案文件指出的用户/小组的许可.
(2)现存文件与cpio档案中的文件同名时,若现存文件比档案中的文件更新, 这些文件将不被重写.
(3)如果用修改选项U,则同名的现存的文件将被重写.可能会发生一件很奇怪的事:如被重写的文件原与另一个文件建了链,文件被重写后链并不断 开,换言之,该文件的链将保持,因此,该文件的所有链实际指向从档案中提取出来的文件,运行cpio无条件地重写现存文件以及改变链的指向.
(4)cpio档案中可含的全路径名或父目录名给出的文件.
7.su和newgrp命令
(1)su命令:可不必注销户头而将另一用户又登录进入系统,作为另一用户工作. 它将启动一新的shell并将有效和实际的UID和GID设置给另一用户.因此必须严格将root口令保密.
(2)newgrp命令:与su相似,用于修改当前所处的组名.
8.文件加密
crypt命令可提供给用户以加密文件,使用一个关键词将标准输入的信息编码为不可读的杂乱字符串,送到标准输出设备.再次使用此命令,用同一关键词作用于加密后的文件,可恢复文件内容.
一般来说,在文件加密后,应删除原始文件,只留下加密后的版本,且不能忘记加密关键词.
在vi中一般都有加密功能,用vi -x命令可编辑加密后的文件.关于加密关键词的选取规则与口令的选取规则相同.
由于crypt程序可能被做成特洛依木马,故不宜用口令做为关键词.最好在加密前用pack或compress命令对文件进行压缩后再加密.
9.其它安全问题
(1)用户的.profile文件
由于用户的HOME目录下的.profile文件在用户登录时就被执行.若该文件 对其他人是可写的 则系统的任何用户都能修改此文件,使其按自己的要求 工作.这样可能使得其他用户具有该用户相同的权限.
(2)ls -a
此命令用于列出当前目录中的全部文件,包括文件名以.开头的文件,查看 所有文件的存取许可方式和文件所有者,任何不属于自己但存在于自己的 目录中的文件都应怀疑和追究.
(3).exrc文件 为编辑程序的初始化文件,使用编辑文件后,首先查找$HOME/.exrc文件和 ./.exrc文件,若该文件是在$HOME目录中找到,则可像.profile一样控制它的存取方式,若在一个自己不能控制的目录中,运行编辑程序,则可能运行 其他人的.exrc文件,或许该.exrc文件存在那里正是为了损害他人的文件安全.为了保证所编辑文件的安全,最好不要在不属于自己或其他人可写的 目录中运行任何编辑程序.
(4)暂存文件和目录
在UNIX系统中暂存目录为/tmp和/usr/tmp,对于程序员和许多系统命令都使用它们,如果用这些目录存放暂存文件,别的用户可能会破坏这些文件. 使用暂存文件最好将文件屏蔽值定义为007,但最保险的方法是建立自己的暂存文件和目录:$HOME/tmp,不要将重要文件存放于公共的暂存目录.
(5)UUCP和其它网络
UUCP命令用于将文件从一个UNIX系统传送到另一个UNIX系统,通过UUCP传送的文件通常存于/usr/spool/uucppublic/login目录,login是用户的登录名,该目录存取许可为777,通过网络传输并存放于此目录的文件属于 UUCP所有,文件存取许可为666和777,用户应当将通过UUCP传送的文件加密,并尽快移到自己的目录中.其它网络将文件传送到用户HOME目录下的 rjc目录中.该目录应对其他人是可写可搜索的,但不必是可读的,因而用户的rjc目录的存取许可方式应为733,允许程序在其中建立文件.同样,传送 的文件也应加密并尽快移到自己的目录中.
(6)特络依木马
在UNIX系统安全中,用特络依木马来代表一种程序,这种程序在完成某种具 有明显意图的功能时,还破坏用户的安全.如果PATH设置为先搜索系统目 录,则受特络依木马的攻击会大大减少.如模似的crypt程序.
(7)诱骗
类似于特络依木马,模似一些东西使用户泄漏一些信息,不同的是,它由某 人执行,等待无警觉的用户来上当.如模似的login.
(
计算机病毒
计算机病毒通过把其它程序变成病毒从而传染系统的,可以迅速地扩散,特 别是系统管理员的粗心大意,作为root运行一个被感染的程序时.实验表 明,一个病毒可在一个小时内(平均少于30分钟)取得root权限.
(9)要离开自己已登录的终端
除非能对终端上锁,否则一定要注销户头.
(10)智能终端
由于智能终端有send和enter换码序列,告诉终端送当前行给系统,就像是 用户敲入的一样.这是一种危险的能力,其他人可用write命令发送信息给 本用户终端,信息中如含有以下的换码序列:
移光标到新行(换行)
在屏幕上显示"rm -r *"
将该行送给系统
后果大家可以想象.
禁止其他用户发送信息的方法是使用mesg命令,mesg n不允许其他用户发 信息,mesg y允许其他用户发信息.即使如此仍是有换码序列的问题存在, 任何一个用户用mail命令发送同样一组换码序列,不同的要用!rm -r *替 换rm -r *.mail将以!开头的行解释为一条shell命令,启动shell,由shell 解释该行的其它部分,这被称为shell换码.为避免mail命令发送换码序列到自己的终端,可建立一个过滤程序,在读mail文件之前先运行过滤程序, 对mail文件进行处理:
myname="$LOGNAME";
tr -d[01-07][-13-37]>$HOME/mailbox;
> /usr/mail/$myname;
mail -f $HOME/mailbox
其中tr将标准输入的字符转换手写到标准输出中.这只是一个简单的思路,
从原则上来说,此程序应为一C程序,以避免破坏正发送到的文件,可用锁文 件方式实现.
(11)断开与系统的联接
用户应在看到系统确认用户登录注销后再离开以免在用户未注销时由他人 潜入.
(12)cu命令
该命令使用户能从一个UNIX系统登录到另一个UNIX系统,此时,在远地系统 中注销用户后还必须输入"~"后回车,以断开cu和远地系统的联接. cu还有两个安全问题:
*如本机安全性弱于远地机,不提倡用cu去登录远地机,以免由于本地机的 不安全而影响较安全的远地机.
*由于cu的老版本处理"~"的方法不完善,从安全性强的系统调用安全性弱 的系统时,会使弱系统的用户使用强系统用户的cu传送强系统的 /etc/passwd文件,除非确信正在使用的cu是正确版本,否则不要调用弱系 统.
10.保持户头安全的要点
(1)保持口令的安全
*不要将口令写下来.
*不要将口令存于终端功能键或MODEM的字符串存储器中.
*不要选取显而易见的信息作口令.
*不要让别人知道.
*不要交替使用两个口令.
*不要在不同系统上使用同一口令.
*不要让人看见自己在输入口令.
(2)不要让自己的文件或目录可被他人写.
*如果不信任本组用户,umask设置为022.
*确保自己的.profile除自己外对他人都不可读写.
*暂存目录最好不用于存放重要文件.
*确保HOME目录对任何人不可写.
*uucp传输的文件应加密,并尽快私人化.
(3)若不想要其他用户读自己的文件或目录,就要使自己的文件和目录不允许 任何人读.
*umask设置为006/007.
*若不允许同组用户存取自己的文件和目录,umask设置为077.
*暂存文件按当前umask设置,存放重要数据到暂存文件的程序,就被写成能 确保暂存文件对其他用户不可读.
*确保HOME目录对每个用户不可读.
(4)不要写SUID/SGID程序.
(5)小心地拷贝和移文件.
*cp拷贝文件时,记住目的文件的许可方式将和文件相同,包括SUID/SGID许 可在内,如目的文件已存在,则目的文件的存取许可和所有者均不变.
*mv移文件时,记住目的文件的许可方式将和文件相同,包括SUID/SGID许可 在内,若在同一文件系统内移文件,目的文件的所有者和小组都不变,否 则,目的文件的所有者和小组将设置成本用户的有效UID和GID.
*小心使用cpio命令,它能复盖不在本用户当前目录结构中的文件,可用t选 项首先列出要被拷贝的文件.
(6)删除一个SUID/SGID程序时,先检查该程序的链接数,如有多个链,则将存取 许可方式改为000,然后再删除该程序,或先写空该程序再删除,也可将该程 序的i结点号给系统管理员去查找其他链.
(7)用crypt加密不愿让任何用户(包括超级用户)看的文件.
*不要将关键词做为命令变量.
*用ed -x或vi -x编辑加密文件.
(8)除了信任的用户外,不要运行其他用户的程序.
(9)在自己的PATH中,将系统目录放在前面.
(10)不要离开自己登录的终端.
(11)若有智能终端,当心来自其他用户,包括write命令,mail命令和其他用户 文件的信息中有换码序列.
(12)用CTRL+D或exit退出后,在断开与系统的联接前等待看到login:提示.
(13)注意cu版本.
*不要用cu调用安全性更强的系统.
*除非确信cu不会被诱骗去发送文件,否则不要用cu调用安全性较弱的系统.
linux
安全
unix
文件
加密
shell
乱码
搜索
io
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
漏洞
分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ...
[详细]
蜡笔小新 2024-11-24 18:25:00
get
在Linux系统中使用EncFS实现文件夹加密
为了保护个人隐私或敏感数据不被未经授权的访问,可以通过加密技术来增强安全性。本文介绍如何在Linux系统上使用EncFS工具创建和管理加密文件夹,以确保即使在系统登录状态下,特定文件夹中的数据也保持加密状态。 ...
[详细]
蜡笔小新 2024-11-24 17:06:52
get
PHP Memcached 使用详解
本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ...
[详细]
蜡笔小新 2024-11-24 09:51:34
get
Linux线程中私有数据的管理与保护
本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ...
[详细]
蜡笔小新 2024-11-23 13:45:37
require
binlog2sql,你该知道的数据恢复工具
binlog2sql,你该知道的数据恢复工具 ...
[详细]
蜡笔小新 2024-11-22 18:58:43
bash
首次周测解析与答案
本文档提供了首次周测的答案解析,涵盖特殊符号、命令作用、路径说明以及实战练习等内容。 ...
[详细]
蜡笔小新 2024-11-25 14:28:11
java
深入理解PHP中的超全局变量与AJAX技术
本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ...
[详细]
蜡笔小新 2024-11-24 16:35:09
list
2023年1月28日网络安全热点
涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ...
[详细]
蜡笔小新 2024-11-24 10:29:06
java
Java中提取字符串的最后一部分
本文介绍了如何使用Java中的substring()和split()方法来提取字符串的最后一部分,特别是在处理包含特殊字符的路径时的方法与技巧。 ...
[详细]
蜡笔小新 2024-11-23 17:45:24
list
2023年7月7日网络安全动态
汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ...
[详细]
蜡笔小新 2024-11-23 13:35:48
list
LaTeX高级应用技巧
本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ...
[详细]
蜡笔小新 2024-11-23 12:47:16
bash
Docker安全策略与管理
本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ...
[详细]
蜡笔小新 2024-11-21 20:03:03
java
二维码的实现与应用
本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ...
[详细]
蜡笔小新 2024-11-21 17:10:15
java
JavaMail抄送功能问题及解决方案
本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ...
[详细]
蜡笔小新 2024-11-19 12:12:24
window
编译lunix 内核详解
通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是 ...
[详细]
蜡笔小新 2024-11-19 10:17:13
小忠
这个家伙很懒,什么也没留下!
Tags | 热门标签
cmd
string
version
client
dockerfile
match
byte
less
heap
sum
uri
heatmap
window
httprequest
main
replace
buffer
bash
triggers
list
instance
filter
blob
php5
select
md5
get
perl
java
require
RankList | 热门文章
1
构建Elasticsearch环境与课程索引
2
Android L - Material Design 主题与布局解析
3
HTTP缓存机制详解:ETag与304状态码
4
MAX809与MAX810微处理器复位芯片
5
循环双链表中指定位置的元素插入方法
6
Java中 ((NULL)null).say() 方法调用分析
7
Windows 网络编程中的核心结构体解析
8
网页过渡动画效果解析
9
‘漂’字详解:新华字典中的读音、笔画及常见组合
10
Python 字典操作性能优化
11
ESP32作为TCP客户端的通信实现
12
使用QT构建基础串口辅助工具
13
深入了解调度员的职业特点与要求
14
IntelliJ IDEA 必备插件与快捷键指南
15
Linux 内核与用户空间交互机制
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有