转贴:linux安全攻略

由 Linuxfish 在 09-04-2002 16:34 发表:

转贴:linux安全攻略

作者:大鹰

  1<[email protected]>   
  2  
  3前言   
  4  
  5呵呵,这篇文章的目的在于让读者对linux的安全配置有个大概的了解,呵呵,因为我也看过一些关于这方面的文章,说的太空了,呵呵   
  6  
  7其实我觉得linux机器要做一般的安全配置的话,分分钟就搞定了,嘿嘿   
  8  
  9  
 10  
 111,安装   
 12  
 13  
 14  
 15安装的时候,大家都轻车熟路了,呵呵,首先,隔离网络进行系统安装,当然选择custom方式,安装你需要的软件包。   
 16  
 17硬盘分区:如果用root分区纪录数据,如log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件。导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区被溢出啦,那就惨喽。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日   
 18  
 19  
 20  
 21志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区了,以下是我硬盘上的分区情况:   
 22  
 23/ root   
 24  
 25/var log   
 26  
 27/hacking 嘻嘻,我的一些黑软   
 28  
 29swap 不多说了   
 30  
 31/home   
 32  
 33  
 34  
 35当系统安装完重新启动后,最好打上相应系统的安全补丁,请大家养成良好的习惯,记住,你不是在自己家里装98,你装的是一个linux服务器   
 36  
 37  
 38  
 39,呵呵。对于redhat系统而言可以在: http://www.redhat.com/corp/support/errata/找到补丁。   
 40  
 41  
 42  
 43在redhat6.1以后的版本带有一个工具up2date,它能够测定哪些rpm包需要升级,然后自动从redhat的站点下载并完成安装。   
 44  
 45  
 46  
 472,关闭服务   
 48  
 49  
 50  
 51呵呵,有句话说的好,要想你的系统绝对安全,就是掐断网线,呵呵,当然我们的机器要对外提供服务,那是不现实的,所以关闭不必要的服务是必要的,因为有些服务会为您的系统带来麻烦。   
 52  
 53  
 54  
 55默认的linux就是一个强大的系统,运行了很多的服务。但,有许多服务是不需要的,很容易引起安全风险。第一个文件是/etc/inetd.conf,它制定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个:telnet和ftp,其他的许多如popd,imapd和rsh都是有可能引发安全问题的。用下面的命令显示没有被注释掉的服务:   
 56  
 57suneagle# grep -v "#" /etc/inetd.conf   
 58  
 59ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a   
 60  
 61telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd   
 62  
 63shell stream tcp nowait root /usr/sbin/tcpd in.rshd   
 64  
 65login stream tcp nowait root /usr/sbin/tcpd in.rlogind   
 66  
 67talk dgram udp wait nobody.tty /usr/sbin/tcpd in.talkd   
 68  
 69ntalk dgram udp wait nobody.tty /usr/sbin/tcpd in.ntalkd   
 70  
 71pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d   
 72  
 73imap stream tcp nowait root /usr/sbin/tcpd imapd   
 74  
 75finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd   
 76  
 77  
 78  
 79linuxconf stream tcp wait root /bin/linuxconf linuxconf --http   
 80  
 81  
 82  
 83exec stream tcp nowait root /bin/sh sh -i   
 84  
 85  
 86  
 87哈哈,大家看最后一行,不就被绑了个rootshell么?呵呵,有什么后果?呵呵看看,在远程的一台win2000机器上用如下命令:   
 88  
 89E:\cmd&gt;nc 192.0.0.88 512   
 90  
 91bash# id   
 92  
 93id   
 94  
 95uid=0(root) gid=0(root) groups=0(root)   
 96  
 97bash#   
 98  
 99知道了吧?嘿嘿,大家注意哦*^_^*   
100  
101  
102  
103我有写过一篇关于用这个文件绑后门的文章,呵呵,攻击性很强,这个命令可以帮你查出有没有后门,呵呵。   
104  
105  
106  
107下个要启动的是.rc脚本,它们决定了init进程要启动哪些服务。redhat系统下,这些脚本在/etc/rc.d/rc3.d(如果你的系统以x为默认启动的   
108  
109  
110  
111话,就是/etc/rc.d/rc5.d)。要在启动时禁止某个服务,只需要把大写的S替换为小写的s,同时,redhat也提供一个工具来帮助你关闭服务,   
112  
113  
114  
115输入/usr/sbin/setup,然后选择"system services",就可以定制系统启动时跑哪些服务。另外一个选择是chkconfig命令,很多linux版本的系   
116  
117  
118  
119统都自带这个工具。脚本名字中的数字是启动的顺序,以大写的K开头的是杀死进程用的。   
120  
121  
122  
123以下是一些主要的服务:   
124  
125S05apmd 笔记本需要   
126  
127S10xntpd 网络时间协议   
128  
129S11portmap 运行rpc服务必需   
130  
131S15sound 声卡相关   
132  
133S15netfs nfs客户端   
134  
135S20rstatd 避免运行r服务,远程用户可以从中获取很多信息   
136  
137S20rusersd   
138  
139S20rwhod   
140  
141S20rwalld   
142  
143S20bootparamd 无盘工作站   
144  
145S25squid 代理服务   
146  
147S34yppasswdd NIS服务器,此服务漏洞很多   
148  
149S35ypserv NIS服务器,此服务漏洞很多   
150  
151S35dhcpd dhcp服务   
152  
153S40atd 和cron很相似的定时运行程序的服务   
154  
155S45pcmcia pcmcia卡,笔记本   
156  
157S50snmpd SNMP,远程用户能从中获得许多系统信息   
158  
159S55named DNS服务   
160  
161S55routed RIP,没有必要就别运行它   
162  
163S60lpd 打印服务   
164  
165S60mars-nwe Netware的文件和打印服务   
166  
167S60nfs NFS服务器,漏洞极多   
168  
169S72amd automount,mount远程用的   
170  
171S75gated 另外一种路由服务,例如OSPF   
172  
173S80sendmail 邮件服务,如关闭,仍然可以发信,只是不能收信和作中继   
174  
175S85httpd web服务器   
176  
177S87ypbind NIS客户端   
178  
179S90xfs X font服务器   
180  
181S95innd News服务器   
182  
183Slinuxconf 这个都熟悉吧,呵呵,通过浏览器远程管理系统用的   
184  
185  
186  
187用这个命令察看在关闭启动脚本之前有多少服务在运行:   
188  
189suneagle# ps -eaf|wc -l   
190  
19154   
192  
193我的系统有54种服务在运行呢,呵呵   
194  
195  
196  
197当你关闭一些服务以后,重新运行以上命令看看少了多少服务。运行的服务越少,系统自然越安全了,嘿嘿。用下面命令察看哪些服务在运行:   
198  
199suneagle# netstat -na --ip   
200  
201Active Internet connections (servers and established)   
202  
203Proto Recv-Q Send-Q Local Address Foreign Address State   
204  
205tcp 0 136 192.0.0.88:23 192.0.0.5:1236 ESTABLISHED   
206  
207tcp 0 0 192.0.0.88:23 192.0.0.8:1113 ESTABLISHED   
208  
209tcp 0 0 192.0.0.88:139 192.0.0.8:1112 ESTABLISHED   
210  
211tcp 0 0 192.0.0.88:1024 61.153.17.24:23 ESTABLISHED   
212  
213tcp 0 0 192.0.0.88:23 192.0.0.8:1084 ESTABLISHED   
214  
215tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN   
216  
217tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN   
218  
219tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN   
220  
221tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN   
222  
223tcp 0 0 0.0.0.0:512 0.0.0.0:* LISTEN   
224  
225tcp 0 0 0.0.0.0:98 0.0.0.0:* LISTEN   
226  
227tcp 0 0 0.0.0.0:79 0.0.0.0:* LISTEN   
228  
229tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN   
230  
231tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN   
232  
233tcp 0 0 0.0.0.0:513 0.0.0.0:* LISTEN   
234  
235tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN   
236  
237tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN   
238  
239tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN   
240  
241tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN   
242  
243tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN   
244  
245udp 0 0 127.0.0.1:1024 0.0.0.0:*   
246  
247udp 0 0 192.0.0.88:138 0.0.0.0:*   
248  
249udp 0 0 192.0.0.88:137 0.0.0.0:*   
250  
251udp 0 0 0.0.0.0:138 0.0.0.0:*   
252  
253udp 0 0 0.0.0.0:137 0.0.0.0:*   
254  
255udp 0 0 0.0.0.0:518 0.0.0.0:*   
256  
257udp 0 0 0.0.0.0:517 0.0.0.0:*   
258  
259udp 0 0 0.0.0.0:111 0.0.0.0:*   
260  
261raw 0 0 0.0.0.0:1 0.0.0.0:* 7   
262  
263raw 0 0 0.0.0.0:6 0.0.0.0:* 7   
264  
265  
266  
267呵呵,我这个系统由于测试用,所以故意开了不少危险端口,呵呵,大家别学我哦,该关的就关啦,哈哈。   
268  
269  
270  
2713,日志纪录和增强   
272  
273关闭一些不必要的服务以后,日志也是需要我们关心的一块,配置好的unix系统日志非常强大,甚至可以做出陷阱,关于日志,我可以写长篇大论,这里就不很详细讲述日志的原理了,感兴趣的朋友可以参考相关资料或阅读我的另一篇文章《solaris系统日志原理》。   
274  
275好!所有的日志都在/var/log下(仅对linux系统而言),默认情况下linux的日志就很强大了,除了ftp。但我们可以通过修改/etc/ftpaccess或者/etc/inetd.conf,来保证每一个ftp连接日志都能够纪录下来。下面是一个修改inetd.conf的例子:   
276  
277ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o   
278  
279  
280  
281-l 每一个ftp连接都写到syslog   
282  
283-L 纪录用户的每一个命令   
284  
285-i 文件received,纪录到xferlog   
286  
287-o 文件transmitted,记录到xferlog   
288  
289  
290  
291账号的安全问题   
292  
293删除/etc/passwd&amp;/etc/shadow中的一些系统账号,如mail,news等等。尽量关闭匿名ftp服务,删掉ftp用户。   
294  
295/etc/ftpusers文件,包含了不能使用ftp的用户列表,root应该在其中。   
296  
297修改/etc/securetty,去除终端ttyp0-ttyp9,使root只能从console或者使用ssh登陆。/etc/issue,不要让次文件透露系统信息。同时要修改   
298  
299  
300  
301/etc/rc.d/rc/local。   
302  
303  
304  
305SUID程序是非常危险的,这些程序被普通用户以euid=0(即root)的身份执行,只能有少量程序被设置为SUID。用一下命令列出系统的SUID二进制程序:   
306  
307suneagle# find / -perm -4000 -print   
308  
309用chmod -s去掉一些不需要程序的suid位。   
310  
311  
312  
3134,连接服务器   
314  
315作为系统管理员,需要经常对系统进行关系和上传文件,这些通过通信过程必须要保证是安全的。我介绍两个方法:ssh和tcp wrappers。   
316  
317其实我比较偏向于用ssh,它把你和防火墙之间的通信全部进行了加密,而tcp wrappers没有做到加密一点,呵呵虽然现在先进的sniffer技术也可以嗅探到ssh的数据包,但它依然还是最安全的。建议用ssh完全取</[email protected]>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus