linux安全配置Word下载.docx
《linux安全配置Word下载.docx》由会员分享,可在线阅读,更多相关《linux安全配置Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
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
Clevel35netfsoff
Clevel35yppasswddoff
Clevel35ypservoff
Clevel35dhcpdoff
Clevel35portmapoff
Clevel35lpdoff
Clevel35nfsoff
Clevel35sendmailoff
Clevel35snmpdoff
Clevel35rstatdoff
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>
<
--end-->
7.1.3iptables实例2:
这个实例中,只需要设置tcp、udp端口和服务器网络段ip范围即可,其他已经默认设置好。
#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
##resetdefaultpolicies
iptables-PINPUTACCEPT
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-PFORWARDDROP
##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
##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
iptables-AINPUT-pudp--destination-port$AUP-jACCEPT
iptables-AFORWARD-pudp--desti