1 Service Management
服务的四种管理方式:
- by init
根据/etc/inittab的runlevel—>/etc/rc?.d 下的link文件
- by System V scripts 如: /etc/init.d/httpd start
- by direct command
- by xinetd
2 Services Managed by init
- 可管理非TCP/IP的服务
- 提供respawn (再生)的能力
- Confgured in /etc/inittab
3 System V service Management
- System V类型的程序被包在SysV被始的脚本里 比如: /etc/init.d/httpd 文件就是一个script文件,真实的文件在/usr/sbin/httpd.
- service命令是SysV初始文件全部打包,即”wrapper of wrapper” #/etc/init.d/httpd start 可以用 #service httpd start代替
4 chkconfig
- 管理服务定义于不同的runlevel
- chkconfig –list
列出所有定义的runlevel值
chkconfig 服务名 –add or –del 添加或删除/etc/rc?.d/下的所有服务link文件,这些link文件都link到/etc/init.d/目录下,所以有自己开发system V程序,可以将它放到/etc/init.d/下 - chkconfig httpd on 开机时就要启动某服务
5 xinetd Managed Services
- xinetd服务是当xinetd程序回应连进请求时,才用xinetd程序启动xinetd服务.xinetd管理都是平时很少用到的程序;只启用xinetd程序来管理如telnet/rsh/rcp等服务就可以节省系统资源.
- xinetd管理的服务可用chkconfig来启用
6 The xinetd Deamon
- xinetd可管理以下网络资源与验证:
- 很少用到的服务,避免这些较少用到的服务浪费系统资源
- 可管理验证类的服务
- 对服务做统计和生成记录
- 对服务做IP位置的导向
- xinetd使用/etc/services
来设定各服务所使用的端口号
常用的服务对应端口: ftp-20,21, ssh-22, smtp-25, domain(DNS)-53, http-80, pop3-110, netbios(SMB)-137,138,139, https-443 - xinetd这个super deamon程序会链接到libwarp.so函数库,用于判断允许或拒绝接受哪些请求.增加安全性.
- 它拥有独立的配置文件
- /etc/xintd.conf
- /etc/xintd.d/<service> 各服务的设定文件
7 xinetd default controls
- 主要配置文件
- /etc/xinetd.conf
defaults {
instances=60 //60个xinetd管理的服务可同时执行
log_type=SYSLOG authpriv //产生的记录都记录在syslog里
log_on_success=HOST PID //远程成功登录,记录远程电脑的IP地址及进程PID
log_on_failure=HOST //远程登录失败,只记下IP地址
cps=25 30 //如果一秒内建立了25个以上连线就停止服务30秒,这样可以防止DoS(Denial of Service 拒绝服务攻击)
}
includedir /etc/xinetd.d //启动xinetd服务的同时读入 /etc/xinetd.d/下的配置文件
- /etc/xinetd.conf
8 xinetd service controls
- 由xinetd管理的服务有其自身的配置文件,它们放在/etc/xinetd.d/<service>
举例: #cat /etc/xinetd.d/telnet
service telnet
{
disable=yes //默认关闭该服务
flags=REUSE //连接断开后自动释放服务占用的内存
socket_type=stream //使用stream信息流的方式处理资料
wait=no //Multi-thread即允许多人可以连进
user=root //由root帐号管理该服务
server=/usr/sbin/in.telnetd //telnet是该服务的一脚本,真正的SysV程序位置
log_on_failure +=USERID //远程登录失败记录IP并记录使用者帐号
}
9 The /etc/sysconfig/
files
常用服务根据/etc/sysconfig/目录下的设定决定服务如何执行:
- named
- sendmail
- dhcpd
- samba
- init
- syslog
10 服务错误分析
- 检查以下几点
- 是否资料问题
- 是否程序问题
- 是否操作系统问题
- 是否电脑硬件问题
- 查看log记录
- 使用命令来显示更详细的信息
- 查看帮助文档
11 Security Enhanced Linux(SElinux)
当操作系统决定谁可以执行哪些操作时,在传统的Linux环境下根据文件中的user/group/other权限决定的.而在SElinux环境下则是由security administator(root帐号)决定控制存取权限.
当要执行某个进程或存取某文件及目录时,系统就会依照Policy所制定的内容来检查用户或进程相对应的权限;如果权限都符合,系统将允许该操作的执行,不符则返回deny的值.
当系统在检查用户或进程相对应的权限时,会拿一部分的暂存区来做运算,这个暂存区叫AVC(Access Vector Cache)
- 每个进程和对象都有SELinux的安全设置
- 所谓的Security context就是一些安全性的属性:包含identity(身份):role(角色):domain/type
- 在security policy context中定义了哪种操作需要security context权限.
ecurity context 是指一个对象,封装了跟安全有关的两个实体之间的共享状态信息。
查看SElinux的启用状态: sestatus
启用SElinux: vi /etc/sysconfig/selinux
12 SELinux Installation Options and control
- Installation options
- Enforcing - 强制启用
- Permissive - 仅提供警告,但无保护
- Disabeld
- Control Options when SELinux is enforced
targeted - 只保护与网络相关的服务
strict - 保护所有Linux的服务 - 修改完成后需执行 reboot
13 Controlling SElinux
- setenforce 0 and setenforce 1 当启用SELinux的targeted保护模式后,即使root用户也无法重启网络服务.这时就可以使用这两命令切换保护开启或关闭保护状态.
- getsebool
and setsebool
SELinux的设定方式采用Boolean值(Boolean:0 or 1)的方式来设定的.注意:0=inactive(受保护) 1=active(不受保护)
例如: getsebool httpd_disable_trans 查看某服务是否受SELinux保护,值为inactive为保护状态
setsebool -P httpd_disable_trans=1 -P选项为如果带有该参数,设定值会写到boolean的文件中.即改变了原来的的boolean值.如果不带-P只是暂时改变,并不写入文件中.- /etc/selinux/targeted/booleans 存放着SELinux设定的布尔值.也可以直接编辑这个文件决定哪些服务需要受它的保护.
- /etc/sysconfig/selinux 设定SElinux的状态.
- system-config-securitylevel 图形化界面管理
14 SELinux Contexts的查看及修改
- ps -Z 列出进程的contexts
- l s -Z 列出文件的contexts
- chcon 修改文件的contextes e.g. chon -t file1 file2 把文件2更改为文件1的contexts
- runcon : 使用特定的security context来执行命令.
- id -Z 查看当前用户的Security Context.
15 Troubleshooting SELinux
- 检查错误类型
- 查看 /var/log/message中有没有 AVC 的拒绝信息
- 查看文件或进程是否有正确的security context
- 检查SELinux里是否需要调整Boolean的设置值.