首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
javascript
emoji
runtime
buffer
数组
merge
integer
client
keyword
cmd
php7
email
list
sum
nodejs
replace
format
lua
perl
cPlusPlus
get
callback
hashcode
scala
timezone
plugins
datetime
chat
process
substring
metadata
case
loops
golang
text
stream
fetch
heatmap
httprequest
window
php5
blob
grid
httpclient
rsa
filter
settings
hashset
expression
ip
hashtable
usb
utf-8
md5
python3
import
future
yaml
netty
testing
split
range
node.js
random
jar
web3
hash
io
eval
select
dll
spring
byte
js
match
controller
cSharp
solr
tree
当前位置:
开发笔记
>
编程语言
> 正文
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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
漏洞
深入剖析电子邮件系统的安全漏洞及防范措施
随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ...
[详细]
蜡笔小新 2024-12-25 17:59:04
replace
DLP数据泄露检测原理浅析
最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ...
[详细]
蜡笔小新 2024-12-25 18:19:32
get
POJ 1691 矩形涂色问题 (DFS/状态压缩DP)
本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ...
[详细]
蜡笔小新 2024-12-25 18:27:21
callback
掌握远程执行Linux脚本和命令的技巧
本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ...
[详细]
蜡笔小新 2024-12-26 19:47:05
datetime
利用存储过程构建年度日历表的详细指南
本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ...
[详细]
蜡笔小新 2024-12-26 18:20:17
format
macOS系统及其关键功能解析
本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ...
[详细]
蜡笔小新 2024-12-26 18:05:04
format
使用Python在SAE上开发新浪微博应用的初步探索
最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ...
[详细]
蜡笔小新 2024-12-26 13:36:52
get
深入理解Java泛型:JDK 5的新特性
本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ...
[详细]
蜡笔小新 2024-12-26 11:15:56
get
并发编程:深入理解设计原理与优化
本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ...
[详细]
蜡笔小新 2024-12-26 01:14:06
list
基于KVM的SRIOV直通配置及性能测试
SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ...
[详细]
蜡笔小新 2024-12-25 19:26:39
sum
Web前端开发中的HTML与CSS命名规范
作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ...
[详细]
蜡笔小新 2024-12-25 11:06:17
sum
脑机接口:连接未来的桥梁
脑机接口(BCI)技术正逐步将科幻变为现实,从帮助听障人士恢复听力到使瘫痪者重新站立,甚至可能将多年的学习过程压缩至瞬间。本文探讨了这一前沿技术的现状、挑战及其未来前景。 ...
[详细]
蜡笔小新 2024-12-24 23:49:49
sum
2018 区块链技术峰会:专家深度解析核心技术与应用前景
2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ...
[详细]
蜡笔小新 2024-12-24 10:56:15
get
构建个人博客站点:基于LAMP环境的WordPress部署指南
本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ...
[详细]
蜡笔小新 2024-12-23 20:23:57
cmd
雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ...
[详细]
蜡笔小新 2024-12-22 21:59:11
小忠
这个家伙很懒,什么也没留下!
Tags | 热门标签
javascript
emoji
runtime
buffer
数组
merge
integer
client
keyword
cmd
php7
email
list
sum
nodejs
replace
format
lua
perl
cPlusPlus
get
callback
hashcode
scala
timezone
plugins
datetime
chat
process
substring
RankList | 热门文章
1
win7关闭电脑开机硬盘自检的方法详解
2
VUE uni-app开发环境的创建和使用方法详解
3
宇宙之外的世界是什么?探索宇宙的未知之谜
4
从Oracle安全移植到国产达梦数据库的DBA实践与攻略
5
2022年手机选购指南:高性价比手机推荐及挑选技巧
6
Facebook脸书面试题:插入区间的解决方法及复杂度分析
7
Python中如何隐藏密码输入
8
STM32与FPGA的对比及学习建议
9
NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
10
vscode mac下无法跳转到引用的解决方法
11
GregorianCalendar类方法的介绍及使用注意事项
12
组织原型方法时下面这些方法哪个更好
13
lintcode(12)——最小子串覆盖的解题思路和代码实现
14
使用集算器将日志文件结构化,轻松使用SQL查询
15
IT联合协会创始人分享的学习、创业和人生感悟
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有