本讲义仅供教育人员参考,任何引用,请先取得作者的同意.
一.注意
国内学术网络辖域内,各级学校的网络主机,经常被骇客(Cracker)入侵,(注意:Hacker 本指对某方面有深入研究之人,但 Hacker 绝不是骇客!),这些被入侵的学校主机,其本身对骇客而言,甚少有任何实质价值(无财无利),许多学校主事者对该校的主机亦有类似的想法,有些人竟误以为主机内又没什么重要的档案或机密,无所谓!殊不知,醉翁之意不在酒,这些骇客,大部份,只想将它拿来当作中继的跳板,然后利用这些被入侵的主机,攻击其心目中主要的目标,将来,万一东窗事发,追查起来,顶多,只找到代罪羔羊而已,骇客即可全身而退!(那么你说,届时,帐会算在谁头上呢?)
一旦了解这一层,您还可再轻忽贵校主机的安全吗?
二.观念
以下有几个观念,要先建立起来:
1.每部网络主机,针对特定联机范围,只提供特定的网络服务,给特定的网络使用者(或主机).
2.网管人员,对该部主机,提供了哪些网络服务,要非常清楚.
3.基于上述,不必要的服务,要将它关闭.
4.目前,较好的解决方案是,建立起校园的网络防火墙. (千万不要来信问我:防火墙要用什么材质喔! :-Q)
5.开放原始码的系统,绝对比封闭的系统,在安全问题的解决对策上,有更快的反应速度及弹性,并且禁得起公众验证.
6.没有任何一种系统是绝对安全的,良好的安全设置及维护管理,才是正途.
三.简易防骇设定法
1.先了解自己的主机究竟提供了那些 daemon 服务?将不必要的服务统统关掉.
您可以执行 linuxconf 或 ntsysv 来查看,并应确实了解每个服务的用途.
以 linuxconf 为例:
linuxconf - control - Control service activity ,画面如下:
WEB、DNS(named)、smb(samba)、sendmail 视贵校需要而定,自行开关,除此之外,必要的有:
atd, crond, inet, keytable, network, random, syslog, xfs(若您跑X window的话)
除此之外,除非您真的了解您的需求,否则全部予以关闭.
2修改 /etc/inetd.conf,关掉只剩以下三个服务:
ftp stream tcp nowait root /usr/sbin/tcpd in.proftpd
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
关闭的方法就是在每列前面加上 #
以下是 /etc/inetd.conf 的范例文件:
# inetd.confThis file describes the services that will be available
#through the INETD TCP/IP super server.
To re-configure
#the running INETD process, edit this file, then send the
#INETD process a SIGHUP signal.
#
# Version:@(#)/etc/inetd.conf3.1005/27/93
#
# Authors:Original taken from BSD UNIX 4.3/TAHOE.
#Fred N. van Kempen,
#
# Modified for Debian Linux by Ian A. Murdock
#
# Modified for RHS Linux by Marc Ewing
#
# ## Echo, discard, daytime, and chargen are used primarily for testing.## To re-read this file after changes, just do a 'killall -HUP inetd'##echostreamtcpnowaitrootinternal#echodgramudpwaitrootinternal#discardstreamtcpnowaitrootinternal#discarddgramudpwaitrootinternal#daytimestreamtcpnowaitrootinternal#daytimedgramudpwaitrootinternal#chargenstreamtcpnowaitrootinternal#chargendgramudpwaitrootinternal#timestreamtcpnowaitrootinternal#timedgramudpwaitrootinternal## These are standard services.#ftpstreamtcpnowaitroot/usr/sbin/tcpdin.proftpdtelnetstreamtcp nowaitroot/usr/sbin/tcpdin.telnetd## Shell, login, exec, comsat and talk are BSD protocols.##shellstreamtcpnowaitroot/usr/sbin/tcpdin.rshd#loginstreamtcpnowaitroot/usr/sbin/tcpdin.rlogind#execstreamtcpnowaitroot/usr/sbin/tcpdin.rexecd#comsatdgramudpwaitroot/usr/sbin/tcpdin.comsat#talkdgramudpwaitnobody.tty/usr/sbin/tcpdin.talkd#ntalkdgramudpwaitnobody.tty/usr/sbin/tcpdin.ntalkd#dtalkstreamtcpwaitnobody.tty/usr/sbin/tcpdin.dtalkd## Pop and imap mail services et al##pop-2streamtcpnowaitroot/usr/sbin/tcpdipop2dpop-3streamtcpnowaitroot/usr/sbin/tcpdipop3d#imapstreamtcpnowaitroot/usr/sbin/tcpdimapd## The Internet UUCP service.##uucpstreamtcpnowaituucp/usr/sbin/tcpd/usr/lib/uucp/uucico-l## Tftp service is provided primarily for booting.Most sites# run this only on machines acting as "boot servers." Do not uncomment# this unless you *need* it.##tftpdgramudpwaitroot/usr/sbin/tcpdin.tftpd#bootpsdgramudpwaitroot/usr/sbin/tcpdbootpd## Finger, systat and netstat give out user information which may be# valuable to potential "system crackers."Many sites choose to disable# some or all of these services to improve security.##fingerstreamtcpnowaitnobody/usr/sbin/tcpdin.fingerd#cfinger streamtcpnowaitroot/usr/sbin/tcpdin.cfingerd#systatstreamtcpnowaitguest/usr/sbin/tcpd/bin/ps-auwwx#netstatstreamtcpnowaitguest/usr/sbin/tcpd/bin/netstat-f inet## Authentication##authstreamtcpwaitroot/usr/sbin/in.identd in.identd -e -o## End of inetd.conf#linuxconf stream tcp wait root /bin/linuxconf linuxconf --http#swatstreamtcpnowait.400root /usr/sbin/swat swat或者, /etc/inetd.conf 只存以下三个设定列(其它都删掉),亦可.ftpstreamtcpnowaitroot/usr/sbin/tcpdin.proftpdtelnetstreamtcp nowaitroot/usr/sbin/tcpdin.telnetdpop-3streamtcpnowaitroot/usr/sbin/tcpdipop3d之后,记得要重新激活 inetd :/etc/rc.d/init.d/inet restart3.限制联机范围a. 先检查是否有装 tcp_wrappers ?rpm -q tcp_wrappers若出现 tcp_wrappers-7.x-x 即表示 tcp_wrappers 已安装,若无,请安装 tcp_wrappers-7.x-x.i386.rpmb. 通常限制 telnet 及 ftp 的联机范围必须设定 /etc/hosts.allow 及 /etc/hosts.deny 这二个档案,前者,用来设定:哪些服务开放给特定的联机范围;后者,用来设定:哪些服务拒绝特定联机范围,优先权是:只要在 hosts.allow 中设定开放的,hosts.deny 中便不会拒绝(即first match first terminates的规则).例:编辑:/etc/hosts.allowin.telnetd: 163.26.199.0/255.255.255.0, 163.26.198.1, .sample.edu.tw : Allowin.proftpd: 163.26.199.0/255.255.255.0, 163.26.198.1, .sample.edu.tw : Allow编辑:/etc/hosts.denyin.telnetd: ALL : Denyin.proftpd: ALL : Deny上面这些设定是说:允许 163.26.199.0 这个 C class 范围(IP 范围的例子),和 163.26.198.1 这部主机(单一IP的例子),以及 sample.edu.tw 这个网域(以网域名称做判别的例子)的使用者 telnet 及 ftp 联机到我们的主机,而其它联机范围,则全部拒绝.请贵校自行调整上面的设定吧!(通常 telnet 设成只限校内及欲由校外连入维护时之IP)以麻豆国中为例vi /etc/hosts.allowin.telnetd: 163.26.197.0/255.255.255.0 : Allowin.proftpd: 163.26.197.0/255.255.255.0 : Allowvi /etc/hosts.denyin.telnetd: ALL : Denyin.proftpd: ALL : Deny4扫瞄自己的主机到底开放了那些服务信道(port)a. 安装 nmap (可至 ftp://ftp.tnc.edu.tw/pub/Sysop/nmap 下载)rpm -iv