Linux系统安全知识全方面专辑
我的评价:
本书讲述了linux安全的方方面面,并且以一问一答的方式介绍,思路清晰。文中提供了很
多有益的安全提示,是Linux系统维护人员的必备参考书。通过本书,你能了解到linux安
全的整体概念,从系统安全到应用安全,从单机安全到网络安全。但安全问题是一个不断变
化不断更新的过程而不是一个解决方案,所以本书只是提到当时为人所发现的安全问题的介
绍,新出现的安全问题可参考该书网站的更新和网上的安全警告。
第一章 linux安全问题概述
粘着位(Sticky bit)
如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所
有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,
其它用户就不以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置
才可使用。
# chmod 1770 xxx
文件属性
chattr命令修改
lsattr命令列出文件属性
文件属性定义
A 不要更新atime文件,当在笔记本电脑或NFS上限制磁盘I/0流量时,很有用,除2.0
系列外,这一属性不被其它内核支持。
a 文件仅能以追加方式打开,只有root才能设置这个属性。
c 文件保存在磁盘时,内核将自动压缩该文件。
d 文件标记,使其不能被转储。
i 文件不能被修改,删除或重命名,不能创建任何指向它的链接,并不能写入任何数据。
s 删除文件时,相应的磁盘存储块清零。
S 修改文件时,对其写入进行同步。
u 删除文件时,保存其内容。
Ulimit命令
设置限制 可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义
限制。
命令参数
-a 显示所有限制
-c core文件大小的上限
-d 进程数据段大小的上限
-f shell所能创建的文件大小的上限
-m 驻留内存大小的上限
-s 堆栈大小的上限
-t 每秒可占用的CPU时间上限
-p 管道大小
-n 打开文件数的上限
-u 进程数的上限
-v 虚拟内存的上限
除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。
domino type item value
domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hard or soft。item指
定想限制的资源。如cpu,core nproc or maxlogins
。value是相应的限制值。
信号
# kill -TERM XXXX 终止信号
# kill -HUP HTTPD 重读配置信号
特权端口
root用户是可绑定端口小于1024的惟一用户。可以信任来自于远程机器端口小于1024的连
接。
第二章 预防措施与从入侵中恢复
系统安全
简单的FIND命令
# find / \(-perm -02000 -o -perm -4000 \) -ls 可以找出系统中所有的setuserid and setgroupid
程序。
在最严格的情况下,可以去掉除/bin/su外所有已安装程序的setXid位。
系统安全扫描工具 cops tiger Nabou
扫描检测器
黑客入侵系统前所做的第一件事就是从网络上扫描系统,扫描检测器能及时获知,是一个良
好的入侵检测系统(IDS)
Klaxon Courtney Scanlogd PortSentry
加固系统
Bastille项目创建了一组模块来加固新近发布的RedHat。在安装完系统后可运行该补丁,
在什么时候都可运行,不必要一定是刚安装完系统。
加固的方法是:1、下载源代码到/root目录并解包。以root身份动行InteractiveBastille.pl脚
本。在回答完问题后,程序将做出相应改动。配置完成后,该工具把其保存在BackEnd.pl
中,如果希望加固同样配置的服务器,将它复制到新服务器并运行AutomatedBastille.pl即可。
Openwall Linux补丁
它是一个内核补丁。要这些补丁起作用,用户必须重新编译和安装新的打上补丁的内核。在
某些情况下,这些内核补丁和标准linux不完全兼容,因此在决定使用前必须确信理解其含
义。
LIDS
它包括内核级的端口扫描检测程序和安全警告程序。是内核补丁(现在适用于2.2.X和2.4.X,
但以后将不再支持2.2)和系统管理工具。其特性包括:
1、高级文件保护,甚至root也不能发现和处置受LIDS保护的文件。
2、进程保护,内核拒绝向受保护的进程发送信号(例如SIGKILL),进程也可以被完全隐
藏起来,在/proc下不会存在任何痕迹。
3、更好的访问控制,更有效地使用与特权相关的权能,包括禁止root更改这些权能。
4、内置式端口扫描检测,内置于内核的扫描程序能够检测到Nmap,SATAN等工具的绝大
部分扫描。
要安装LIDS,必须下载最新的linux内核正式版和LIDS源代码。使用LIDS给内核打上补丁,
然后重新编译内核。
日志文件分析
syslogd消信可标记为特定的功能和级别,在/etc/syslog.conf文件中可以根据这两个选项来设
置消信的去向。
syslogd功能 描述
auth 安全性/验证消息(负面)
authpriv 安全性/验证消息
cron cron and at
daemon 其它系统守护进程(sshd,xinetd,pppd等)
kern 内核消息
lpr 行打印系统
mail 邮件子系统(sendmail,postfix,qmail等)
news Usenet新闻消息
syslog 内部syslog消息
user 一般用户级消息
uucp UUCP子系统
local0-local7 自定义的级别
日志级别 描述
emerg 系统已不可用
alert 必须马上采取行动
crit 危急
err 错误
warning 警告
notice 普通但重要的情形
info 通知消息
debug 调试消息
syslog.conf每一行的配置格式为
facility.loglevel logtarget,所有字段用tab隔开
例子:
daemon.notice /var/log/daemon.log 把程序发送过来的功能为daemon,优先级为notice
或更高级别的所有日志消息记录到/var/log/daemon.log文件中,可以使用*号表示匹配所有功
能或日志级别。
目标 描述
/path/to/filename 将消息附加到所指定文件的文件尾,这是最常用的情形。
@loghost 写到loghost机器上的syslog服务器。可方便把日志发来多台机器上,
|/path/to/named_pipe 写到指定的命名管道(便于用外部程序过滤消息)。
user1,user2 写到所列用户。
* 写到所有登录用户。
/dev/console 写到已命名的终端。
日志文件许可
应设置日志只为root所有和写入,同时能够被log组(或你所希望的组)读取,而其他用户
没有任何权限。一个用户在输入用户名的地方使用了口令,在登录失败时,将会把用户名(在
此例中为口令,因为用户失误)记录到日志中。然后创建一个属于log组的虚构用户,并让
所有日志检查程序以该用户而不是root运行。日志检查程序不应当以root用户运行。
可以通过日志分析软件开监控日志,如logcheck,swatch和logsurfer。但最好的工具还是管理员自已写的脚本。
本书讲述了linux安全的方方面面,并且以一问一答的方式介绍,思路清晰。文中提供了很
多有益的安全提示,是Linux系统维护人员的必备参考书。通过本书,你能了解到linux安
全的整体概念,从系统安全到应用安全,从单机安全到网络安全。但安全问题是一个不断变
化不断更新的过程而不是一个解决方案,所以本书只是提到当时为人所发现的安全问题的介
绍,新出现的安全问题可参考该书网站的更新和网上的安全警告。
第一章 linux安全问题概述
粘着位(Sticky bit)
如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所
有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,
其它用户就不以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置
才可使用。
# chmod 1770 xxx
文件属性
chattr命令修改
lsattr命令列出文件属性
文件属性定义
A 不要更新atime文件,当在笔记本电脑或NFS上限制磁盘I/0流量时,很有用,除2.0
系列外,这一属性不被其它内核支持。
a 文件仅能以追加方式打开,只有root才能设置这个属性。
c 文件保存在磁盘时,内核将自动压缩该文件。
d 文件标记,使其不能被转储。
i 文件不能被修改,删除或重命名,不能创建任何指向它的链接,并不能写入任何数据。
s 删除文件时,相应的磁盘存储块清零。
S 修改文件时,对其写入进行同步。
u 删除文件时,保存其内容。
Ulimit命令
设置限制 可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义
限制。
命令参数
-a 显示所有限制
-c core文件大小的上限
-d 进程数据段大小的上限
-f shell所能创建的文件大小的上限
-m 驻留内存大小的上限
-s 堆栈大小的上限
-t 每秒可占用的CPU时间上限
-p 管道大小
-n 打开文件数的上限
-u 进程数的上限
-v 虚拟内存的上限
除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。
domino type item value
domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hard or soft。item指
定想限制的资源。如cpu,core nproc or maxlogins
。value是相应的限制值。
信号
# kill -TERM XXXX 终止信号
# kill -HUP HTTPD 重读配置信号
特权端口
root用户是可绑定端口小于1024的惟一用户。可以信任来自于远程机器端口小于1024的连
接。
第二章 预防措施与从入侵中恢复
系统安全
简单的FIND命令
# find / \(-perm -02000 -o -perm -4000 \) -ls 可以找出系统中所有的setuserid and setgroupid
程序。
在最严格的情况下,可以去掉除/bin/su外所有已安装程序的setXid位。
系统安全扫描工具 cops tiger Nabou
扫描检测器
黑客入侵系统前所做的第一件事就是从网络上扫描系统,扫描检测器能及时获知,是一个良
好的入侵检测系统(IDS)
Klaxon Courtney Scanlogd PortSentry
加固系统
Bastille项目创建了一组模块来加固新近发布的RedHat。在安装完系统后可运行该补丁,
在什么时候都可运行,不必要一定是刚安装完系统。
加固的方法是:1、下载源代码到/root目录并解包。以root身份动行InteractiveBastille.pl脚
本。在回答完问题后,程序将做出相应改动。配置完成后,该工具把其保存在BackEnd.pl
中,如果希望加固同样配置的服务器,将它复制到新服务器并运行AutomatedBastille.pl即可。
Openwall Linux补丁
它是一个内核补丁。要这些补丁起作用,用户必须重新编译和安装新的打上补丁的内核。在
某些情况下,这些内核补丁和标准linux不完全兼容,因此在决定使用前必须确信理解其含
义。
LIDS
它包括内核级的端口扫描检测程序和安全警告程序。是内核补丁(现在适用于2.2.X和2.4.X,
但以后将不再支持2.2)和系统管理工具。其特性包括:
1、高级文件保护,甚至root也不能发现和处置受LIDS保护的文件。
2、进程保护,内核拒绝向受保护的进程发送信号(例如SIGKILL),进程也可以被完全隐
藏起来,在/proc下不会存在任何痕迹。
3、更好的访问控制,更有效地使用与特权相关的权能,包括禁止root更改这些权能。
4、内置式端口扫描检测,内置于内核的扫描程序能够检测到Nmap,SATAN等工具的绝大
部分扫描。
要安装LIDS,必须下载最新的linux内核正式版和LIDS源代码。使用LIDS给内核打上补丁,
然后重新编译内核。
日志文件分析
syslogd消信可标记为特定的功能和级别,在/etc/syslog.conf文件中可以根据这两个选项来设
置消信的去向。
syslogd功能 描述
auth 安全性/验证消息(负面)
authpriv 安全性/验证消息
cron cron and at
daemon 其它系统守护进程(sshd,xinetd,pppd等)
kern 内核消息
lpr 行打印系统
mail 邮件子系统(sendmail,postfix,qmail等)
news Usenet新闻消息
syslog 内部syslog消息
user 一般用户级消息
uucp UUCP子系统
local0-local7 自定义的级别
日志级别 描述
emerg 系统已不可用
alert 必须马上采取行动
crit 危急
err 错误
warning 警告
notice 普通但重要的情形
info 通知消息
debug 调试消息
syslog.conf每一行的配置格式为
facility.loglevel logtarget,所有字段用tab隔开
例子:
daemon.notice /var/log/daemon.log 把程序发送过来的功能为daemon,优先级为notice
或更高级别的所有日志消息记录到/var/log/daemon.log文件中,可以使用*号表示匹配所有功
能或日志级别。
目标 描述
/path/to/filename 将消息附加到所指定文件的文件尾,这是最常用的情形。
@loghost 写到loghost机器上的syslog服务器。可方便把日志发来多台机器上,
|/path/to/named_pipe 写到指定的命名管道(便于用外部程序过滤消息)。
user1,user2 写到所列用户。
* 写到所有登录用户。
/dev/console 写到已命名的终端。
日志文件许可
应设置日志只为root所有和写入,同时能够被log组(或你所希望的组)读取,而其他用户
没有任何权限。一个用户在输入用户名的地方使用了口令,在登录失败时,将会把用户名(在
此例中为口令,因为用户失误)记录到日志中。然后创建一个属于log组的虚构用户,并让
所有日志检查程序以该用户而不是root运行。日志检查程序不应当以root用户运行。
可以通过日志分析软件开监控日志,如logcheck,swatch和logsurfer。但最好的工具还是管理员自已写的脚本。
相关推荐
xiaoemo0 2020-06-16
csdnyasin 2020-05-11
ROES 2020-02-23
gongruitao 2020-02-21
linuxhh 2020-01-03
sshong 2019-12-15
xinggm 2019-11-28
yanghj00 2019-09-15
dcbeyond 2019-09-06
汽车智能安全系统 2019-04-12
liushi 2019-09-02
黑木爷 2017-07-14
82266838 2018-03-20
lianshaohua 2014-01-16
BasicPython 2017-06-16
AlphaH的技术之旅 2017-02-06
zchen 2012-01-17