Linux 安全设置.docx

上传人:b****8 文档编号:9685547 上传时间:2023-02-05 格式:DOCX 页数:43 大小:41.30KB
下载 相关 举报
Linux 安全设置.docx_第1页
第1页 / 共43页
Linux 安全设置.docx_第2页
第2页 / 共43页
Linux 安全设置.docx_第3页
第3页 / 共43页
Linux 安全设置.docx_第4页
第4页 / 共43页
Linux 安全设置.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

Linux 安全设置.docx

《Linux 安全设置.docx》由会员分享,可在线阅读,更多相关《Linux 安全设置.docx(43页珍藏版)》请在冰豆网上搜索。

Linux 安全设置.docx

Linux安全设置

linux安全攻略

 

对Linux/UNIX系统安全的考虑(面对不熟悉Linux的人)。

很显然,面对Linux/UNIX的安全问题我没有太多资格来评价,以至于,拿到一份系统日至都不能分析出究竟是出了什么问题。

但是,我希望尝试对一个完全陌生的系统实施安全保障,虽然不知效果会怎么样,但这的确是有价值的一个尝试,谁也不能保证自己对任何系统都熟悉,但工作又不允许为不同的系统配备相应的专职管理员。

首先可以肯定的是,任何系统都有补丁,这是必然要打的。

下面是服务和端口,如果只想用web:

80,那么,其他的端口完全可以利用前面的router/Firewall屏蔽掉,而只针对网管使用的IP地址开放,另外,如果能在服务器上安装snort之类的IDS系统,并且及时针对WEB内容升级过滤代码,完全有可能抵御大部分溢出和扫描。

另外,借鉴别人的方法也是必不可少的,这里推荐一位业界友人的文章,他曾是南京补天的solaris大拿,后来去了理工华泰,现在可能是去了北航的什么研究室,看来只有前辈的地位一直没怎么变:

 

1,安装

安装的时候,大家都轻车熟路了,呵呵,首先,隔离网络进行系统安装,当然选择custom方式,安装你需要的软件包。

硬盘分区:

如果用root分区纪录数据,如log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件。

导致系统崩溃。

所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区被溢出啦,那就惨喽。

最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区了,以下是我硬盘上的分区情况:

/root

/varlog

/hacking嘻嘻,我的一些黑软

swap不多说了

/home

当系统安装完重新启动后,最好打上相应系统的安全补丁,请大家养成良好的习惯,记住,你不是在自己家里装98,你装的是一个linux服务器,呵呵。

对于redhat系统而言可以在:

在redhat6.1以后的版本带有一个工具up2date,它能够测定哪些rpm包需要升级,然后自动从redhat的站点下载并完成安装。

2,关闭服务

呵呵,有句话说的好,要想你的系统绝对安全,就是掐断网线,呵呵,当然我们的机器要对外提供服务,那是不现实的,所以关闭不必要的服务是必要的,因为有些服务会为您的系统带来麻烦。

默认的linux就是一个强大的系统,运行了很多的服务。

但,有许多服务是不需要的,很容易引起安全风险。

第一个文件是/etc/inetd.conf,它制定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个:

telnet和ftp,其他的许多如popd,imapd和rsh都是有可能引发安全问题的。

用下面的命令显示没有被注释掉的服务:

suneagle#grep-v"#"/etc/inetd.conf

ftpstreamtcpnowaitroot/usr/sbin/tcpdin.ftpd-l-a

telnetstreamtcpnowaitroot/usr/sbin/tcpdin.telnetd

shellstreamtcpnowaitroot/usr/sbin/tcpdin.rshd

loginstreamtcpnowaitroot/usr/sbin/tcpdin.rlogind

talkdgramudpwaitnobody.tty/usr/sbin/tcpdin.talkd

ntalkdgramudpwaitnobody.tty/usr/sbin/tcpdin.ntalkd

pop-3streamtcpnowaitroot/usr/sbin/tcpdipop3d

imapstreamtcpnowaitroot/usr/sbin/tcpdimapd

fingerstreamtcpnowaitnobody/usr/sbin/tcpdin.fingerd

linuxconfstreamtcpwaitroot/bin/linuxconflinuxconf--http

execstreamtcpnowaitroot/bin/shsh-i

哈哈,大家看最后一行,不就被绑了个rootshell么?

呵呵,有什么后果?

呵呵看看,在远程的一台win2000机器上用如下命令:

E:

\cmd>nc192.0.0.88512

bash#id

id

uid=0(root)gid=0(root)groups=0(root)

bash#

知道了吧?

嘿嘿,大家注意哦*^_^*

我有写过一篇关于用这个文件绑后门的文章,呵呵,攻击性很强,这个命令可以帮你查出有没有后门,呵呵。

下个要启动的是.rc脚本,它们决定了init进程要启动哪些服务。

redhat系统下,这些脚本在/etc/rc.d/rc3.d(如果你的系统以x为默认启动的话,就是/etc/rc.d/rc5.d)。

要在启动时禁止某个服务,只需要把大写的S替换为小写的s,同时,redhat也提供一个工具来帮助你关闭服务,输入/usr/sbin/setup,然后选择"systemservices",就可以定制系统启动时跑哪些服务。

另外一个选择是chkconfig命令,很多linux版本的系统都自带这个工具。

脚本名字中的数字是启动的顺序,以大写的K开头的是杀死进程用的。

以下是一些主要的服务:

S05apmd笔记本需要

S10xntpd网络时间协议

S11portmap运行rpc服务必需

S15sound声卡相关

S15netfsnfs客户端

S20rstatd避免运行r服务,远程用户可以从中获取很多信息

S20rusersd

S20rwhod

S20rwalld

S20bootparamd无盘工作站

S25squid代理服务

S34yppasswddNIS服务器,此服务漏洞很多

S35ypservNIS服务器,此服务漏洞很多

S35dhcpddhcp服务

S40atd和cron很相似的定时运行程序的服务

S45pcmciapcmcia卡,笔记本

S50snmpdSNMP,远程用户能从中获得许多系统信息

S55namedDNS服务

S55routedRIP,没有必要就别运行它

S60lpd打印服务

S60mars-nweNetware的文件和打印服务

S60nfsNFS服务器,漏洞极多

S72amdautomount,mount远程用的

S75gated另外一种路由服务,例如OSPF

S80sendmail邮件服务,如关闭,仍然可以发信,只是不能收信和作中继

S85httpdweb服务器

S87ypbindNIS客户端

S90xfsXfont服务器

S95inndNews服务器

Slinuxconf这个都熟悉吧,呵呵,通过浏览器远程管理系统用的

用这个命令察看在关闭启动脚本之前有多少服务在运行:

suneagle#ps-eaf|wc-l

54

我的系统有54种服务在运行呢,呵呵

当你关闭一些服务以后,重新运行以上命令看看少了多少服务。

运行的服务越少,系统自然越安全了,嘿嘿。

用下面命令察看哪些服务在运行

suneagle#netstat-na--ip

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp0136192.0.0.88:

23192.0.0.5:

1236ESTABLISHED

tcp00192.0.0.88:

23192.0.0.8:

1113ESTABLISHED

tcp00192.0.0.88:

139192.0.0.8:

1112ESTABLISHED

tcp00192.0.0.88:

102461.153.17.24:

23ESTABLISHED

tcp00192.0.0.88:

23192.0.0.8:

1084ESTABLISHED

tcp000.0.0.0:

1390.0.0.0:

*LISTEN

tcp000.0.0.0:

800.0.0.0:

*LISTEN

tcp000.0.0.0:

250.0.0.0:

*LISTEN

tcp000.0.0.0:

5150.0.0.0:

*LISTEN

tcp000.0.0.0:

5120.0.0.0:

*LISTEN

tcp000.0.0.0:

980.0.0.0:

*LISTEN

tcp000.0.0.0:

790.0.0.0:

*LISTEN

tcp000.0.0.0:

1430.0.0.0:

*LISTEN

tcp000.0.0.0:

1100.0.0.0:

*LISTEN

tcp000.0.0.0:

5130.0.0.0:

*LISTEN

tcp000.0.0.0:

5140.0.0.0:

*LISTEN

tcp000.0.0.0:

230.0.0.0:

*LISTEN

tcp000.0.0.0:

210.0.0.0:

*LISTEN

tcp000.0.0.0:

1130.0.0.0:

*LISTEN

tcp000.0.0.0:

1110.0.0.0:

*LISTEN

udp00127.0.0.1:

10240.0.0.0:

*

udp00192.0.0.88:

1380.0.0.0:

*

udp00192.0.0.88:

1370.0.0.0:

*

udp000.0.0.0:

1380.0.0.0:

*

udp000.0.0.0:

1370.0.0.0:

*

udp000.0.0.0:

5180.0.0.0:

*

udp000.0.0.0:

5170.0.0.0:

*

udp000.0.0.0:

1110.0.0.0:

*

raw000.0.0.0:

10.0.0.0:

*7

raw000.0.0.0:

60.0.0.0:

*7

呵呵,我这个系统由于测试用,所以故意开了不少危险端口,呵呵,大家别学我哦,该关的就关啦,哈哈。

3,日志纪录和增强

关闭一些不必要的服务以后,日志也是需要我们关心的一块,配置好的unix系统日志非常强大,甚至可以做出陷阱,关于日志,我可以写长篇大论,这里就不很详细讲述日志的原理了,感兴趣的朋友可以参考相关资料或阅读我的另一篇文章《solaris系统日志原理》。

好!

所有的日志都在/var/log下(仅对linux系统而言),默认情况下linux的日志就很强大了,除了ftp。

但我们可以通过修改/etc/ftpaccess或者/etc/inetd.conf,来保证每一个ftp连接日志都能够纪录下来。

下面是一个修改inetd.conf的例子:

ftpstreamtcpnowaitroot/usr/sbin/tcpdin.ftpd-l-L-i-o

-l每一个ftp连接都写到syslog

-L纪录用户的每一个命令

-i文件received,纪录到xferlog

-o文件transmitted,记录到xferlog

账号的安全问题

删除/etc/passwd&/etc/shadow中的一些系统账号,如mail,news等等。

尽量关闭匿名ftp服务,删掉ftp用户。

/etc/ftpusers文件,包含了不能使用ftp的用户列表,root应该在其中。

修改/etc/securetty,去除终端ttyp0-ttyp9,使root只能从console或者使用ssh登陆。

/etc/issue,不要让次文件透露系统信息。

同时要修改

/etc/rc.d/rc/local。

SUID程序是非常危险的,这些程序被普通用户以euid=0(即root)的身份执行,只能有少量程序被设置为SUID。

用一下命令列出系统的SUID二

进制程序:

suneagle#find/-perm-4000-print

用chmod-s去掉一些不需要程序的suid位。

4,连接服务器

作为系统管理员,需要经常对系统进行关系和上传文件,这些通过通信过程必须要保证是安全的。

我介绍两个方法:

ssh和tcpwrappers。

其实我比较偏向于用ssh,它把你和防火墙之间的通信全部进行了加密,而tcpwrappers没有做到加密一点,呵呵虽然现在先进的sniffer技术

也可以嗅探到ssh的数据包,但它依然还是最安全的。

建议用ssh完全取代telnet/ftp,它能够确保数据在网络中的安全传输。

ssh和tcpwrapper

都有它们自己的日志纪录,并设有访问控制策略,大家如果要深入了解ssh的话,可以参考想关书籍。

tcpwrappers尽管没有对数据进行加密,但它有日志系统并且可以控制哪些人可以访问你的系统,它在inetd中包装了其他的二进制文件,如

telnet,ftp,finger等等。

系统用tcpwrapper进行inetd监听连接,记录了所有请求并且与访问控制列表作比较,如果允许连接,tcpwrapper将

调用实际的服务器进程来连接,如in.telnetd服务,如果拒绝,连接将断开。

对linux用户比较幸运的是tcpwrapper已经被默认安装了,我们所

要做的就是编辑/etc/hosts.allow和/etc/hosts.deny两个文件,注意以下事项:

1,尽量使用ip

2,首先通过/etc/hosts.deny禁止来自任何地方对所有服务的访问:

ALL:

ALL

然后在/etc/hosts.allow中添加要授权的机器及服务。

冒号左边为服务,冒号右边为授权机器。

5,加固系统

一上的措施足以应付一般的网络攻击,但你的系统不是100%安全的,从来就没有绝对安全的系统,不是么?

嘿嘿。

我们来进一步加固系统!

编辑/etc/groups,增加wheel组(其实我很喜欢freebsd的地方,就是默认freebsd这些工作做的很好)。

这个组包含了一些用户,可以执行/bin/su等强大的命令。

对其他用户执行这些命令的控制,可以改善系统的安全。

如下命令:

suneagle#/bin/chgrpwheel/bin/su

suneagle#/bin/chmod4750/bin/su

然后锁定一些文件:

.rhosts,.netrc,/etc/hosts.equiv。

r命令可以通过这些文件远程连入你的系统。

先touch这些文件,然后chmod至0。

suneagle#/bin/touch/root/.rhosts/root/.netrc/etc/hosts.equiv;/bin/chmod0/root/.rhosts/root/.netrc/etc/hosts.equiv

linux还有一个众所周知的命令:

chattr,呵呵+i操作,即使是root,也在-i之前改不了它们,先在你的系统的/etc/shadow,/etc/inetd.conf等文件来个chattr+i可以避免一下exploit给你添后门什么的,呵呵。

bash的问题

对于bash用户来讲,有个.bash_history文件,可以记录你的所用的命令,谁也不希望其他人包括root知道自己敲了哪些命令吧?

我有两种方法

来解决这个问题

1,在自己的.bash_profile文件中加入一行:

HISTFILESIZE=0

记住不要把HISTSIZE置零,那样就无法使用上下健来调用历史命令了。

2,删除自己目录下的.bash_history,然后建立一个连接:

suneagle$ln-s/dev/null$HOME/.bash_history

这样,大家理解吧?

历史命令都掉到黑洞洞里啦~~~~~

最后,保证物理安全,建立在/etc/lilo.conf中设置密码来控制linux的启动,呵呵,虽然也是可以被破解的,嘿嘿,因为它是明文存放,破解

方法吗,知者知之,不知者就不知啦,嘿嘿。

ok,写了这么多,大概把安全性讲了一下,但里面每个知识点又可以单独写文章,呵呵,学无止尽啊。

虽然我看得不怎么明白,但至少可以作为一种安全角度的参考,再贴上一篇:

发信人:

Sinbad

标题:

装备Linux

(1)

发信站:

辛巴达(FriSep2710:

08:

062002)

发信人:

Sinbad

标题:

装备Linux

(1)

发信站:

辛巴达(ThuSep2815:

13:

152000)

装备Linux

(1)

bySinbad

Aug23,2000

http:

//sinbad.dhs.org

1.安装

首先与网络隔离进行系统的安装,选择custom方式,仅仅安装需要的软件。

硬盘分区:

如果用root分区纪录数据,例如log文件和email,就可能因为拒绝服务产

生大量日志或垃圾邮件,导致系统崩溃。

所以,建议为/var开辟单独的分区,用来存

放日志和邮件,以避免root分区被溢出。

还可以为特殊的应用程序单独开一个分区,

特别是能产生大量日志的程序。

如果有不怀好意的用户,建议为/home单独分一个区,

这样他们就不能填满/分区。

一般Server分区看来是这样:

/-根分区

/var-400MB

swap-一般256MB

当系统安装完重新启动以后,就要打上安全补丁。

对RedHat系统,可以在http:

//www

找到补丁,要经常更新。

采用RPM的系统,可以

很容易的升级,例如:

rpm-Uvhwu-ftpd-2.6.0-14.6x.i386.rpm

如果系统与Internet是连接的,可以直接从ftp站点升级:

rpm-Uvhftp:

//

RH6.1以后的版本带有一个工具up2date,它能够测定哪些RPM包需要升级,然后自动从

RedHat的站点下载并完成安装。

这个软件能够很好的被定制并且易于使用。

2.关闭服务

安装完软件包和补丁以后,下面作的就是装备系统。

包括关闭一些服务、增加日志、

修改一些文件和配置TCPWrappers。

首先我们来关闭一些服务。

默认的linux是一个强大的系统,运行了很多服务。

但是有

许多服务是不需要的,很容易引起安全风险。

第一个文件是/etc/inetd.conf,它指定

了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个:

telnet和ftp,其他

的许多例如popd,imapd和rsh有可能引发安全问题。

下面的命令显示出没有被注释掉

的服务:

grep-v"^#"/etc/inetd.conf

下一个要启动的是.rc脚本,它们决定了init进程要启动哪些服务。

RH系统下,这些脚

本在/etc/rc.d/rc3.d(如果以GUI方式启动,就是/etc/rc.d/rc5.d,比如KDE,Gnom

e等等)。

要在启动时禁止某个服务,只要把大写的S替换为小写的s,同时,RH也提供

了一个很好的工具来关闭服务,只要输入/usr/sbin/setup,然后选择“systemserv

ices”,就可以定制系统启动时跑哪些服务。

另外一个选择是chkconfig命令,许多发

行版本都自带这个工具。

脚本名字中的数字是启动的顺序,以大写的K开头的是杀死进

程用的。

S05apmd(只有笔记本需要)

S10xntpd(网络时间协议)

S11portmap(运行rpc服务必需,例如NIS或NFS)

S15sound(声卡相关)

S15netfs(nfs客户端)

S20rstatd(避免运行r服务,远程用户能够从中得到很多信息)

S20rusersd

S20rwhod

S20rwalld

S20bootparamd(无盘工作站,应该很少需要此服务)

S25squid(代理服务)

S34yppasswdd(NIS服务器,此服务漏洞很多)

S35ypserv(NIS服务器,此服务漏洞很多)

S35dhcpd(dhcp服务)

S40atd(和cron很相似的定时运行程序的服务)

S45pcmcia(pcmcia卡,笔记本用)

S50snmpd(SNMP,远程用户能从中获得许多系统的信息)

S55named(DNS服务,最近版本在http:

//www.isc.org/bind.html)

S55routed(RIP,不要运行它除非你真的需要)

S60lpd(打印服务)

S60mars-nwe(Netware的文件和打印服务)

S60nfs(NFS服务器,漏洞极多,尽量不要使用)

S72amd(AutoMount,用来mount远程系统)

S75gated(另外一种路由服务,例如OSPF)

S80sendmail(邮件服务,如果你关闭sendmail,仍能够发信,只是不能收信和作中

继)

S85httpd(Web服务器,最近版本在http:

//www.apache.org)

S87ypbind(NIS客户端)

S90xfs(Xfont服务器)

S95innd(News服务器)

S99linuxconf(通过浏览器远程配置系统)

查看在关闭启动脚本之前有多少服务在运行:

psaux|wc-l

当你关闭一些服务以后,重新运行以上命令看看少了多少服务。

运行的服务越少,系

统越安全。

同时,用下面的命令看看哪些服务还在运行:

netstat-na--ip

3.日志纪录和增强

关闭一些不必要的服务以后,我们开始日志纪录,所有的日志都在/var/log目录下。

默认情况linux的日志功能很完善,除了ftp。

可以修改/etc/ftpaccess或者/etc/ine

td.conf,一般都是修改/etc/inetd.conf,下面的写法保证了每一个ftp连接的日志都

能够记录下来:

ftpstreamtcpnowaitroot/usr/sbin/tcpdin.ftpd-l-L-i-o

-l每一个ftp连接都写到syslog

-L纪录用户的每一个命令

-i文件received,纪录到xferlog

-o文件transmitted,纪录到xferlog

使用shadow密码,运行命令pwconv。

(现在的6.2版本都默认用MD5)

删除/etc/passwd&/etc/shadowv中的一些系统账号,如news等等。

如果不需要匿名ft

p服务,删除ftp用户。

对一个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1