【RHCA认证】RHS333:服务的基本安全selinux、tcpwr

一、selinux常用命令
ls -Zd /etc/       #查看etc目录的上下文
ps -Z    #查看进程的上下文
restorecon /etc/hosts    #恢复为默认的上下文
chcon -t tmp_t /etc/hosts   #设置指定的上下文
chcon –reference /etc/shadow anaconda-ks.cfg   #将shadow文件的上下文属性赋值给anaconda-ks.cfg文件
getenforce             #列出当前selinux的状态
setenforce 1           #设置selinux的状态 0表示禁止   1表示强制
sealert -b        #查看selinux警告日志
sealert -a  /var/log/audit/audit.log       #分析审计日志
semanage port -a -t http_cache_port_t -p tcp 9999       #设置http服务的默认安全端口为9999,原来默认的应该是80端口
 
二、Tcpwrapper使用
1、tcpwrapper  规则可以写在/etc/hosts.allow或者/etc/hosts.deny文件中。通常情况下,官方建议是将允许访问的规则写在/etc/hosts.allow文件中,将禁止访问的的规则写在/etc/hosts.deny中,系统在加载规则时,先读取/etc/hosts.allow文件中的内容,再读取/etc/hosts.deny文件中的内容,然后再逐条匹配,如果条件满足,则按照定义的规则进行处理。
2、其实我们也可以不用按照官方的建议来做,因为在hosts.allow文件中是可以写deny的规则,而在hosts.deny中也可以写allow的规则的。因为那样我们要再两个文件中编写规则比较麻烦。我们可以将/etc/hosts.allow文件始终保持为空的,将所有规则放入到/etc/hosts.deny中,那么为什么建议是将所有规则写入在hosts.deny中,而不是全部写入到hosts.allow中呢?那是因为有些特殊的规则用法是只能在hosts.deny文件中才能生效。
例如: sshd : ALL : twist /bin/echo “421 Connection prohibited.”
该规则就要必须放在/etc/hosts.deny中才能生效。
3、规则的写法:

服务名 : 访问范围  : 执行条件
sshd : 192.168.1. : DENY
sshd : .example.com : DENY
sshd : ALL : ALLOW
以上规则的作用:禁止192.168.1的网段和example.com域的主机ssh连接本机,其他的全部可以ssh连接到本机。(注意:建议访问范围最好是用ip段来控制,不要用域名来控制。)
 
4、执行条件详解:
allow  : 允许访问
deny   : 拒绝访问
spwan  : 拒绝访问 并且在自己这边执行后面自定义的命令或脚本
twist  : 拒绝访问 并且在访问者那边执行后面自定义的命令或脚本
serverity : 将来访者的信息记录到日志中,然后继续和后面的规则做比对
banners : 显示指定文件中的信息给client端
例如:
vsftpd : 192.168.0. : swpan /bin/echo $(date) %c %d >> /var/log/tcpwrap.log
vsftpd : 192.168.1. : twist /bin/echo “421 Connection prohibited.”
vsftpd : 192.168.2. : banners /var/banners
第一条规则,是拒绝192.168.0的网段访问,并且将日期和来访者的信息记录到tcpwrap.log中
第二条规则,是拒绝192.168.1的网段访问,并且在来访者客户端的那边显示提示信息”421 Connection prohibited.”
第三条规则,当192.168.2的网段访问,在客户端那边显示提示信息,信息内容由 /var/banners文件来指定。
5、注意事项:
如果规则执行条件中调用的系统的其他命令或文件,在开启了selinux为强制模式的情况下,要确保命令或文件是有可以被执行或读取的权限的
 
三、xinetd的配置
1、xinetd的作用是什么
xinetd服务是专门用来管理系统中某些服务的一个专门的服务,我们知道,在系统中每开启一个服务,就会产生服务对应的进程,并且监听一个特定的服务端口。在大多数时间,有的服务时很少被使用到的(例如telnet服务),那么,让该服务一直处于运行状态会导致系统CPU内存等资源白白浪费掉,那么我们能否做一些处理,让该服务在有人访问的时候才运行,没有人访问的时候就停止运行,这样才是最合理的利用资源。答案是肯定可以的,xinetd就是专门为了解决这个文件而设计的。xinetd服务一直处于监听状态,当发现有人访问了xinetd所托管的服务后,xinetd则启动系统相关的服务进程,监听指定的端口,这样就合理的使用了系统的全部资源。xinetd还可以限制服务的最大连接数、限制访问服务的ip地址范围、限制服务在某个特定的时间段允许或禁止访问、以及cpu等资源的使用限制等等,功能是很强大的。但是对于访问量比较大且比较频繁的服务,是没有必要使用xinetd这种托管方式的,那样可能会增加开销适得其反,例如ftp、http等。
2、xinetd的配置和使用
默认情况下,系统是没有安装xinetd服务的,需要yum install -y xinetd 来安装服务,然后再将服务设置为自动启动。安装好了之后,使用man xinetd.conf也可以看看具体的配置用法,都有说明,在 /etc/目录下会有一个xinetd.conf的配置文件,这个是xinetd服务的主配置文件。在/etc/xinetd.d目录下存放的都是一些有xineted托管的服务的配置文件,可以完成对某个服务精确控制。
例如:
service telnet
{
disable    = no  #将telnet服务设置为启用。如果disable = yes  表示禁用服务。
flags      = SENSOR  #设置为SENSOR,拒绝条件触发后,将在全局生效,即所有被xinetd托管的服务都有效
deny_time  = 2       #拒绝2分钟
no_access  = 192.168.0.3   #拒绝的IP范围
socket_type = stream
wait       = no
user       = root   #指定程序用什么身份来执行
server     = /usr/sbin/in.telnetd   #xinetd服务托管的程序,当被触发时就启动该程序来监听
access_times = 9:00-18:00    #允许访问的时间段为早上9点到下午6点
bind       = 192.168.0.100   #在指定的网络接口上监听 (在有多个网卡多个IP时,可以精确控制)
cps        = 25 30    #在同一时刻,有25个连接数,则暂停连接30秒
per_source = 15       #限制每个源IP最大只能有15个并发连接
}
具体讲讲一下三行:
flags      = SENSOR
deny_time  = 2
no_access  = 192.168.0.3
作用:禁止192.168.0.3的IP来使用telnet连接本机,如果他telnet连接了本机,那么被xinetd所管理的全部服务都禁止192.168.0.3来访问,禁止访问的时间为2分钟。SENSOR模式表示让xientd所管理的全部服务都生效改配置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/22400.html