linux安全配置.docx

上传人:b****5 文档编号:8020178 上传时间:2023-01-28 格式:DOCX 页数:13 大小:23.62KB
下载 相关 举报
linux安全配置.docx_第1页
第1页 / 共13页
linux安全配置.docx_第2页
第2页 / 共13页
linux安全配置.docx_第3页
第3页 / 共13页
linux安全配置.docx_第4页
第4页 / 共13页
linux安全配置.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

linux安全配置.docx

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

linux安全配置.docx

linux安全配置

1.概述  

Linux服务器版本:

RedHatLinuxAS  

对于开放式的操作系统---Linux,系统的安全设定包括系统服务最小化、限制远程存取、隐藏重要资料、修补安全漏洞、采用安全工具以及经

常性的安全检查等。

本文主要从用户设置、如何开放服务、系统优化等方面进行系统的安全配置,以到达使Linux服务器更安全、稳定。

  

2.用户管理  

在Linux系统中,用户帐号是用户的身份标志,它由用户名和用户口令组成。

系统将输入的用户名存放在/etc/passwd文件中,而将输入的口令

以加密的形式存放在/etc/shadow文件中。

在正常情况下,这些口令和其他信息由操作系统保护,能够对其进行访问的只能是超级用户(root)和

操作系统的一些应用程序。

但是如果配置不当或在一些系统运行出错的情况下,这些信息可以被普通用户得到。

进而,不怀好意的用户就可以

使用一类被称为“口令破解”的工具去得到加密前的口令。

  

2.1删除系统特殊的的用户帐号和组帐号:

  

#userdelusername  

userdeladm  

userdellp  

userdelsync  

userdelshutdown  

userdelhalt 

userdelnews  

userdeluucp  

userdeloperator  

userdelgames  

userdelgopher  

以上所删除用户为系统默认创建,但是在常用服务器中基本不使用的一些帐号,但是这些帐号常被黑客利用和攻击服务器。

  

#groupdelusername  

groupdeladm  

groupdellp  

groupdelnews  

groupdeluucp  

groupdelgames  

groupdeldip  

同样,以上删除的是系统安装是默认创建的一些组帐号。

这样就减少受攻击的机会。

  

2.2用户密码设置:

  

安装linux时默认的密码最小长度是5个字节,但这并不够,要把它设为8个字节。

修改最短密码长度需要编辑login.defs文件

(vi/etc/login.defs)  

PASS_MAX_DAYS99999##密码设置最长有效期(默认值)  

PASS_MIN_DAYS0##密码设置最短有效期  

PASS_MIN_LEN5##设置密码最小长度  

PASS_WARN_AGE7##提前多少天警告用户密码即将过期。

  

2.3修改自动注销帐号时间:

  

自动注销帐号的登录,在Linux系统中root账户是具有最高特权的。

如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的安全

隐患,应该让系统会自动注销。

通过修改账户中“TMOUT”参数,可以实现此功能。

TMOUT按秒计算。

编辑你的profile文件(vi/etc/profile

),在"HISTSIZE="后面加入下面这行:

  

  TMOUT=300  

  300,表示300秒,也就是表示5分钟。

这样,如果系统中登陆的用户在5分钟内都没有动作,那么系统会自动注销这个账户。

  

2.4给系统的用户名密码存放文件加锁:

  

chattr+i/etc/passwd  

chattr+i/etc/shadow  

chattr+i/etc/gshadow  

chattr+i/etc/group  

注:

chattr是改变文件属性的命令,参数i代表不得任意更动文件或目录,此处的i为不可修改位(immutable)。

查看方法:

lsattr/etc/passwd 

3.服务管理  

在Linux系统的服务管理方面,如果想做到服务的最好安全,其中主要的就是升级服务本身的软件版本,另外一个就是关闭系统不使用的服务,

做到服务最小化。

  

3.1关闭系统不使用的服务:

  

cd/etc/init.d##进入到系统init进程启动目录  

在这里有两个方法,可以关闭init目录下的服务,一、将init目录下的文件名mv成*.old类的文件名,即修改文件名,作用就是在系统启动的时

候找不到这个服务的启动文件。

二、使用chkconfig系统命令来关闭系统启动等级的服务。

  

注:

在使用以下任何一种方法时,请先检查需要关闭的服务是否是本服务器特别需要启动支持的服务,以防关闭正常使用的服务。

  

第一种:

修改文件名的方法  

Cd/etc/init.d/  

mvapmdapmd.old##笔记本需要  

mvnetfsnetfs.old##nfs客户端  

mvyppasswddyppasswdd.old##NIS服务器,此服务漏洞很多  

mvypservypserv.old##NIS服务器,此服务漏洞很多  

mvdhcpddhcpd.old##dhcp服务  

mvportmapportmap.old##运行rpc(111端口)服务必需  

mvlpdlpd.old##打印服务  

mvnfsnfs.old##NFS服务器,漏洞极多  

mvsendmailsendmail.old##邮件服务,漏洞极多  

mvsnmpdsnmpd.old##SNMP,远程用户能从中获得许多系统信息  

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

mvatdatd.old##和cron很相似的定时运行程序的服务  

第二种:

使用chkcofig命令来关闭不使用的系统服务  

chkconfig?

Clevel35apmdoff  

chkconfig?

Clevel35netfsoff  

chkconfig?

Clevel35yppasswddoff  

chkconfig?

Clevel35ypservoff  

chkconfig?

Clevel35dhcpdoff 

chkconfig?

Clevel35portmapoff  

chkconfig?

Clevel35lpdoff  

chkconfig?

Clevel35nfsoff  

chkconfig?

Clevel35sendmailoff  

chkconfig?

Clevel35snmpdoff  

chkconfig?

Clevel35rstatdoff  

chkconfig?

Clevel35atdoff  

注:

以上chkcofig命令中的3和5是系统启动的类型,3代表系统的多用启动方式,5代表系统的X启动方式。

  

3.2给系统服务端口列表文件加锁  

主要作用:

防止未经许可的删除或添加服务  

chattr+i/etc/services  

3.3修改ssh服务的root登录权限  

修改ssh服务配置文件,使的ssh服务不允许直接使用root用户来登录,这样建设系统被恶意登录攻击的机会。

  

vi/etct/ssh/sshd_config  

PermitRootLoginyes  

将这行前的#去掉后,修改为:

PermitRootLoginno  

4.系统文件权限  

Linux文件系统的安全主要是通过设置文件的权限来实现的。

每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户

组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。

特别注意,权限为SUID和SGID的可执行文件,在程序运行过程中,

会给进程赋予所有者的权限,如果被黑客发现并利用就会给系统造成危害。

  

4.1修改init目录文件执行权限:

  

chmod-R700/etc/init.d/*  

4.2修改部分系统文件的SUID和SGID的权限:

  

chmoda-s/usr/bin/chage  

chmoda-s/usr/bin/gpasswd  

chmoda-s/usr/bin/wall  

chmoda-s/usr/bin/chfn  

chmoda-s/usr/bin/chsh  

chmoda-s/usr/bin/newgrp  

chmoda-s/usr/bin/write  

chmoda-s/usr/sbin/usernetctl  

chmoda-s/usr/sbin/traceroute  

chmoda-s/bin/mount  

chmoda-s/bin/umount  

chmoda-s/bin/ping  

chmoda-s/sbin/netreport  

4.3修改系统引导文件  

chmod600/etc/grub.conf  

chattr+i/etc/grub.conf  

5.系统优化  

5.1虚拟内存优化:

  

一般来说,linux的物理内存几乎是完全used。

这个和windows非常大的区别,它的内存管理机制将系统内存充分利用,并非windows无论多大的

内存都要去使用一些虚拟内存一样。

  

在/proc/sys/vm/freepages中三个数字是当前系统的:

最小内存空白页、最低内存空白页和最高内存空白。

注意,这里系统使用虚拟内存的原则是:

如果空白页数目低于最高空白页设置,则使用磁盘交换空间。

当达到最低空白页设置时,使用内存交换

内存一般以每页4k字节分配。

最小内存空白页设置是系统中内存数量的2倍;最低内存空白页设置是内存数量的4倍;最高内存空白页设置是系

统内存的6倍。

  

以下以1G内存为例修改系统默认虚拟内存参数大小:

  

echo"204840966444">/proc/sys/vm/freepages  

6.日志管理  

6.1系统引导日志:

  

dmesg  

使用dmesg命令可以快速查看最后一次系统引导的引导日志。

通常它的  

内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。

  

6.2系统运行日志:

  

A、Linux日志存储在/var/log目录中。

这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。

大多数日志

只有root才可以读,不过只需要修改文件的访问权限就可以让其他人可读。

  

以下是常用的系统日志文件名称及其描述:

  

lastlog记录用户最后一次成功登录时间  

loginlog不良的登陆尝试记录 

messages记录输出到系统主控台以及由syslog系统服务程序产生的消息  

utmp记录当前登录的每个用户  

utmpx扩展的utmp  

wtmp记录每一次用户登录和注销的历史信息wtmpx扩展的wtmp  

vold.log记录使用外部介质出现的错误  

xferkig记录Ftp的存取情况sulog记录su命令的使用情况  

acct记录每个用户使用过的命令  

aculog拨出自动呼叫记录  

B、/var/log/messages  

messages日志是核心系统日志文件。

它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。

IO错误、网络错误和其他系统错误

都会记录到这个文件中。

其他信息,比如某个人的身份切换为root,也在这里列出。

如果服务正在运行,比如DHCP服务器,您可以在

messages文件中观察它的活动。

通常,/var/log/messages是您在做故障诊断时首先要查看的文件。

  

C、/var/log/XFree86.0.log  

这个日志记录的是Xfree86Xwindows服务器最后一次执行的结果。

如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失

败的原因。

D、在/var/log目录下有一些文件以一个数字结尾,这些是已轮循的归档文件。

日志文件会变得特别大,特别笨重。

Linux提供了一个命令来

轮循这些日志,以使您的当前日志信息不会淹没在旧的无关信息之中。

logrotate通常是定时自动运行的,但是也可以手工运行。

当执行后,

logrotate将取得当前版本的日志文件,然后在这个文件名最后附加一个“.1”。

其他更早轮循的文件为“.2”、“.3”,依次类推。

文件名

后的数字越大,日志就越老。

  

可以通过编辑/etc/logrotate.conf文件来配置logrotate的自动行为。

通过manlogrotate来学习logrotate的全部细节。

  

其中:

  

#rotatelogfilesweekly  

weekly  

这里代表每个日志文件是每个星期循环一次,一个日志文件保存一个星期的内容。

  

#keep4weeksworthofbacklogs  

rotate4  

这里代表日志循环的次数是4次,即可以保存4个日志文件。

  

E、定制日志  

可以通过编辑/et/syslog.conf和/etc/sysconfig/syslog来配置它们的行为,可以定制系统日志的存放路径和日志产生级别。

  

6.3系统各用户操作日志:

last  

单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

  

history  

history命令能够保存最近所执行的命令。

如果是root命令所保存的命令内容在/root/.bash_history文件中,如果是普通用户,操作所命令保

存在这个用户的所属目录下,即一般的/home/username/.bash_history。

这个history的保存值可以设置,编辑/etc/profile文件,其中的

HISTSIZE=1000的值就是history保存的值。

  

7.防火墙  

7.1iptables类型防火墙:

  

7.1.1iptables概念:

  

Iptalbes(IP包过滤器管理)是用来设置、维护和检查Linux内核的IP包过滤规则的。

  

可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。

每个链都是一个规则列表,对对应的包进行匹配:

每条规则指定应

当如何处理与之相匹配的包。

这被称作’target’(目标),也可以跳向同一个表内的用户定义的链。

  

通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。

这些规则具有目标,它们告诉内核对来自某些源

、前往某些目的地或具有某些协议类型的信息包做些什么。

如果某个信息包与规则匹配,那么使用目标ACCEPT允许该信息包通过。

还可以使

用目标DROP或REJECT来阻塞并杀死信息包。

对于可对信息包执行的其它操作,还有许多其它目标。

  

根据规则所处理的信息包的类型,可以将规则分组在链中。

处理入站信息包的规则被添加到INPUT链中。

处理出站信息包的规则被添加到

OUTPUT链中。

处理正在转发的信息包的规则被添加到FORWARD链中。

这三个链是基本信息包过滤表中内置的缺省主链。

另外,还有其它许多

可用的链的类型(如PREROUTING和POSTROUTING),以及提供用户定义的链。

每个链都可以有一个策略,它定义“缺省目标”,也就是要执

行的缺省操作,当信息包与链中的任何规则都不匹配时,执行此操作。

  

建立规则并将链放在适当的位置之后,就可以开始进行真正的信息包过滤工作了。

这时内核空间从用户空间接管工作。

当信息包到达防火墙时

,内核先检查信息包的头信息,尤其是信息包的目的地。

我们将这个过程称为路由。

  

如果信息包源自外界并前往系统,而且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表的INPUT链。

如果信息包源自系统内部或

系统所连接的内部网上的其它源,并且此信息包要前往另一个外部系统,那么信息包被传递到OUTPUT链。

类似的,源自外部系统并前往外部

系统的信息包被传递到FORWARD链。

  

7.1.2iptables实例1:

  

#!

/bin/sh  

#禁止系统的转发包功能 

echo0>/proc/sys/net/ipv4/ip_forward  

#清楚iptables原有规则,并设置iptables默认规则  

iptables-tnat-FPOSTROUTING  

iptables-tnat-FPREROUTING  

iptables-tnat-FOUTPUT  

iptables-F  

iptables-PINPUTDROP  

iptables-PFORWARDACCEPT  

iptables-POUTPUTACCEPT  

#在input规则中需要打开的tcp、upd端口  

iptables-AINPUT-jACCEPT-ptcp--dport80  

iptables-AINPUT-jACCEPT-ptcp--dport22  

iptables-AINPUT-jACCEPT-ptcp--dport25  

iptables-AINPUT-jACCEPT-ptcp--dport1352  

iptables-AINPUT-pudp--destination-port53-jACCEPT  

#在input规则中状态为:

STATERELATED的包都接受  

iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT  

#启用系统ip转发功能  

echo1>/proc/sys/net/ipv4/ip_forward  

<--end-->  

7.1.3iptables实例2:

  

注:

这个实例中,只需要设置tcp、udp端口和服务器网络段ip范围即可,其他已经默认设置好。

  

#!

/bin/sh  

#make:

yongzhang  

#time:

2004-06-18  

#e-mail:

********************.cn  

PATH=/sbin:

/bin:

/usr/sbin:

/usr/bin  

##tcpallowports  

TPORTS="8022"  

##udpallowports  

UPORTS="53"  

##internalserver_iprange  

SERVER_IP="172.18.10.0/24"  

##disableforwarding  

echo0>/proc/sys/net/ipv4/ip_forward  

##resetdefaultpolicies  

iptables-PINPUTACCEPT  

iptables-PFORWARDACCEPT  

iptables-POUTPUTACCEPT  

iptables-tnat-PPREROUTINGACCEPT  

iptables-tnat-PPOSTROUTINGACCEPT  

iptables-tnat-POUTPUTACCEPT  

##delalliptablesrules  

iptables-FINPUT  

iptables-FFORWARD  

iptables-FOUTPUT  

##cleanallnon-defaultchains  

iptables-X  

iptables-tnat-X  

##iptablesdefaultrules  

iptables-PINPUTDROP  

iptables-PFORWARDDROP  

iptables-POUTPUTACCEPT  

##allowpingpackets  

iptables-AINPUT-pICMP-s0/0--icmp-type0-jACCEPT  

iptables-AINPUT-pICMP-s0/0--icmp-type3-jACCEPT  

iptables-AINPUT-pICMP-s0/0--icmp-type5-jACCEPT  

iptables-AINPUT-pICMP-s0/0--icmp-type8-jACCEPT  

iptables-AINPUT-pICMP-s0/0--icmp-type11-jACCEPT  

#iptables-AINPUT-pICMP-s0/0--icmp-type11-mlimit--limit5/s-jACCEPT  

iptables-AFORWARD-pICMP-jACCEPT  

##enableforwarding  

iptables-AFORWARD-mstate--stateESTABLISHED,RELATED-jACCEPT  

##STATERELATEDforrouter  

iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT 

##acceptinternalpacketsontheinternali/f  

iptables-AINPUT-s$SERVER_IP-ptcp-jACCEPT  

##openportsonrouterforserver/services  

##TCPPORTS  

forATPin$TPORTS  

do  

iptables-AINPUT!

-s$SERVER_IP-d$SERVER_IP-ptcp--destination-port$ATP-jACCEPT  

iptables-AFORWARD-ptcp--destination-port$ATP-jACCEPT  

done  

##UDPPORTS  

forAUPin$UPORTS  

do  

iptables-AINPUT-pudp--destination-port$AUP-jACCEPT  

iptables-AFORWARD-pudp--desti

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

当前位置:首页 > 总结汇报 > 学习总结

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

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