一.注意
國內學術網路轄域內,各級學校的網路主機,經常被駭客(Cracker)入侵,(注意:Hacker 本指對某方面有深入研究之人,但 Hacker 絕不是駭客!),這些被入侵的學校主機,其本身對駭客而言,甚少有任何實質價值(無財無利),許多學校主事者對該校的主機亦有類似的想法,有些人竟誤以為 主機內又沒什麼重要的檔案或機密,無所謂!殊不知,醉翁之意不在酒,這些駭客,大部份,只想將它拿來當作中繼的跳板,然後利用這些被入侵的主機,攻擊其心 目中主要的目標,將來,萬一東窗事發,追查起來,頂多,只找到代罪羔羊而已,駭客即可全身而退!(那麼你說,屆時,帳會算在誰頭上呢?)
一旦了解這一層,您還可再輕忽貴校主機的安全嗎?
二.觀念
以下有幾個觀念,要先建立起來:
- 每部網路主機,針對特定連線範圍,只提供特定的網路服務,給特定的網路使用者(或主機).
- 網管人員,對該部主機,提供了哪些網路服務,要非常清楚.
- 基於上述,不必要的服務,要將它關閉.
- 目前,較好的解決方案是,建立起校園的網路防火牆. (千萬不要來信問我:防火牆要用什麼材質喔! :-Q)
- 開放原始碼的系統,絕對比封閉的系統,在安全問題的解決對策上,有更快的反應速度及彈性,並且禁得起公眾驗證.
- 沒有任何一種系統是絕對安全的,良好的安全設置及維護管理,才是正途.
三.簡易防駭設定法
先了解自己的主機究竟提供了那些 daemon 服務?將不必要的服務統統關掉.您可以執行 ntsysv 來查看,並應確實了解每個服務的用途.
- WEB、DNS(named)、smb(samba)、sendmail 視個人需求而定,自行開關,除此之外,必要的有:
atd, crond, inet, keytable, network, random, syslog, xfs(若您跑X window的話)
除此之外,除非您真的了解您的需求,否則全部予以關閉.
- 修改 /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.conf This 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.conf 3.10 05/27/93
#
# Authors: Original taken from BSD UNIX 4.3/TAHOE.
# Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
# Modified for Debian Linux by Ian A. Murdock <imurdock@shell.portal.com>
#
# Modified for RHS Linux by Marc Ewing <marc@redhat.com>
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
# Echo, discard, daytime, and chargen are used primarily for testing.
#
# To re-read this file after changes, just do a 'killall -HUP inetd'
#
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
#time stream tcp nowait root internal
#time dgram udp wait root internal
#
# These are standard services.
#
ftp stream tcp nowait root /usr/sbin/tcpd in.proftpd
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat and talk are BSD protocols.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait nobody.tty /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait nobody.tty /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody.tty /usr/sbin/tcpd in.dtalkd
#
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
# The Internet UUCP service.
#
#uucp stream tcp nowait uucp /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.
#
#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
#
# 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.
#
#finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd
#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
#
# Authentication
#
#auth stream tcp wait root /usr/sbin/in.identd in.identd -e -o
#
# End of inetd.conf
#linuxconf stream tcp wait root /bin/linuxconf linuxconf --http
#swat stream tcp nowait.400 root /usr/sbin/swat swat
或者, /etc/inetd.conf 只存以下三個設定列(其它都刪掉),亦可.
之後,記得要重新啟動 inetd :
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/rc.d/init.d/inet restart
- 限制連線範圍
a. 先檢查是否有裝 tcp_wrappers ?
rpm -q tcp_wrappers
若出現 tcp_wrappers-7.x-x 即表示 tcp_wrappers 已安裝,若無,請安裝 tcp_wrappers-7.x-x.i386.rpm
b. 通常限制 telnet 及 ftp 的連線範圍
必須設定 /etc/hosts.allow 及 /etc/hosts.deny 這二個檔案,前者,用來設定:哪些服務開放給特定的連線範圍;後者,用來設定:哪些服務拒絕特定連線範圍,優先權是:只要在 hosts.allow 中設定開放的,hosts.deny 中便不會拒絕(即first match first terminates的規則).
例:
編輯:/etc/hosts.allow
in.telnetd: 163.26.199.0/255.255.255.0, 163.26.198.1, .sample.edu.tw : Allow
in.proftpd: 163.26.199.0/255.255.255.0, 163.26.198.1, .sample.edu.tw : Allow
編輯:/etc/hosts.deny
in.telnetd: ALL : Deny
in.proftpd: ALL : Deny
上面這些設定是說:允許 163.26.199.0 這個 C class 範圍(IP 範圍的例子),和 163.26.198.1 這部主機(單一IP的例子),以及 sample.edu.tw 這個網域(以網域名稱做判別的例子)的使用者 telnet 及 ftp 連線到我們的主機,而其它連線範圍,則全部拒絕.(通常 telnet 設成只限校內及欲由校外連入維護時之IP)
- 掃瞄自己的主機到底開放了那些服務通道(port)
a. 安裝 nmap (可至 ftp://ftp.tnc.edu.tw/pub/Sysop/nmap 下載)
rpm -ivh nmap-2.3BETA10-2.i386.rpm
或
rpm -ivh nmap*.rpm
b. 掃瞄貴校的主機
nmap 163.26.197.1 (以麻豆國中為例)
像這樣子,該開放的開放,不該開放的全部關閉,便較安全.
*注意:nmap可不能隨便拿來掃射別人的主機喔!(有如小孩拿大槍上街?) 未經站主的允許便掃瞄別人的服務通道,會被視為入侵的一種意圖或行為,往往會引起抗議和法律糾紛喔!不可不小心哪! (當然有不讓對方知道的方法 ;-) )
*nmap 原始站台:http://www.insecure.org/nmap/
四.維護工作
經常查看系統記錄檔,監控主機運作,了解使用者的行為,追蹤異常的現象,定期做好備份的工作.萬一不幸被入侵,務必要清查入侵來源,了解漏洞何在,然後清除後門,備份重要檔案,重新安裝系統.(必要時,請求中心協助)
五.不定期更新(update)系統
請務必查看 http://www.redhat.com/apps/support/updates.html,根據其說明,更新系統的版本,修補系統各種可能的漏洞.
六.隨時注意網路上的安全議題
台灣電腦網路危機處理中心 http://www.cert.org.tw/ ,有電子報可供訂閱.
網路上也有非常多的相關站台,這就要靠您自行去發掘啦!
(http://www.rootshell.com 這個站台,您不可不去喲!)
留言列表