RedHat Linux 在存取控制服务上,除了 Firewall 方面可藉由 Netfilter 的机制,利用其程序工具 iptables 作系统服务的存取管理外,如要 deny 掉服务的存取,最简易的方式当然是把服务关闭,至于存取控制服务除 xinetd 的机制,外主要还是在于:利用现有的服务存取控制应用程序: 如 ntsysv、serviceconf、chkconfig 等掌控方式达成。
ntsysv
「ntsysv」为一 RedHat 开发的文字接口的应用程序,具有交互式的操作接口,外观乍看起来极像文字模式的安装画面,是用来设定每一个 runlevel 在系统激活时即欲加以激活的服务, 基本上其并非用来作服务的激活、停止及重新激活,如果你要作服务的激活、停止及重新激活,可下 service daemon stop(start or restart),例如: service ipchains restart ;是故其作的设定改变并不会立即生效,必须等到重新激活时始生效。
[myimg]upload/ntsysv.png[/myimg]
我们可以使用 ntsysv 来开启或关闭 xinetd 所管理的服务,也可以使用ntsysv来开启或关闭 /etc/rc.d目录架构下的服务。其语法如下(参考 man page):
ntsysv [--level ] [--back]
系统提示符号下输入:
# ntsysv (命令后不加参数,代表在设定目前这一层的 runlevel)
# ntsysv -levels 35 (命令后加数字,代表在设定目前 3及5的 runlevel)
# ntsysv --back (指在操作接口中显示 "Back"按钮,而非 "Cancel" 按钮)
serviceconf
「serviceconf」为一 RedHat 开发的图形接口的应用程序,具有交互式的操作接口,可用来设定 runlevel 3,4,5 在系统激活时即欲加以激活的 SysV及 xinetd 服务。它允许你激活、停止及重新激活 SysV 服务和重新激活 xinetd 服务。
在设定时需加注意者为:
1. 如果针对属于 xinetd 的服务,例如 swat 作激活、停止及重新激活后,应一并将xinetd 重新激活。
2. 在 serviceconf 中可以设定不同的 runlevel,所以在不同的 runlevel作服务的改设时,如欲立即生效,可在系统提示符号下输入 telinit 。
激活 serviceconf 方式如后:
1. 系统提示符号下输入serviceconf
2. KDE 面板上的主要选单按钮 => Red Hat => System => Serviceconf
3. GNOME面板上的主要选单按钮 => Programs => System => Serviceconf
[myimg]upload/serviceconf.png[/myimg]
chkconfig
「chkconfig」也是一个用来激活、关闭、及查询不同 runlevel ( 0~6 )中的相关系统服务。所以其主要作用在于查询( --list )、激活或关闭 /etc/rc.d 或 xinetd 之服务。
其语法如下(参考 man page):
chkconfig --list
chkconfig --list [服务名称]
chkconfig --add 服务名称
chkconfig --del 服务名称
chkconfig [--level
chkconfig [--level
用法:
1.查询不同 runlevel ( 0~6 )中的相关系统服务
# chkconfig -list 会得到下述查询结果
[root@pc80 root]# chkconfig --list
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
webmin 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ipchains 0:off 1:off 2:on 3:on 4:on 5:off 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
snmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ypbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rstatd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rusersd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
vncserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off
smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
postgresql 0:off 1:off 2:off 3:off 4:off 5:off 6:off
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
squid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
tux 0:off 1:off 2:off 3:off 4:off 5:off 6:off
named 0:off 1:off 2:off 3:off 4:off 5:off 6:off
arpwatch 0:off 1:off 2:off 3:off 4:off 5:off 6:off
gated 0:off 1:off 2:off 3:off 4:off 5:off 6:off
linuxconf 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetd based services:
echo-udp: off
echo: off
rlogin: off
rsh: off
ntalk: off
talk: off
telnet: off
wu-ftpd: on
linuxconf-web: off
imap: off
imaps: off
ipop2: off
ipop3: off
pop3s: off
swat: off
从上我们可看出在结构上值的注意之处:
A. chkconfig -list 查询的相关系统服务主要在于查询 /etc/rc.d 目录下和 xinetd
之服务。
B.chkconfig -list 查询的形态为各个 runlevel ( 0~6 ),而激活或关闭服务分别以 on 及 off 表示。
2. 激活或关闭 /etc/rc.d 或 xinetd 之服务
[root@pc80 root]# chkconfig swat on
[root@pc80 root]# chkconfig --list swat
swat on
3. 关闭特定 runlevel 中属于 /etc/rc.d 或 xinetd 之服务
[root@pc80 root]# chkconfig --level 2345 iptables off
[root@pc80 root]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
4. 激活特定 runlevel 中属于 /etc/rc.d 或 xinetd 之服务
root@pc80 root]# chkconfig --level 2345 iptables on
[root@pc80 root]# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
5. 重设特定 runlevel 中属于 /etc/rc.d 或 xinetd 之服务默认值
[root@pc80 root]# chkconfig --level 2345 iptables off
[root@pc80 root]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@pc80 root]# chkconfig --level 2345 iptables reset
[root@pc80 root]# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
此外,附带一提为查询 xinetd 和 /etc/rc.d 目录下有所不同,主要在于前者并无 runlevel 的查询结果:
xinetd :
[root@pc80 root]# chkconfig --list wu-ftpd
wu-ftpd on
/etc/rc.d 目录
[root@pc80 root]# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off