linux主机安全加固方案.docx

上传人:b****7 文档编号:9214682 上传时间:2023-02-03 格式:DOCX 页数:17 大小:21.63KB
下载 相关 举报
linux主机安全加固方案.docx_第1页
第1页 / 共17页
linux主机安全加固方案.docx_第2页
第2页 / 共17页
linux主机安全加固方案.docx_第3页
第3页 / 共17页
linux主机安全加固方案.docx_第4页
第4页 / 共17页
linux主机安全加固方案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

linux主机安全加固方案.docx

《linux主机安全加固方案.docx》由会员分享,可在线阅读,更多相关《linux主机安全加固方案.docx(17页珍藏版)》请在冰豆网上搜索。

linux主机安全加固方案.docx

linux主机安全加固方案

 

1.安装最新安全补丁

项目:

注释:

1

安装操作系统提供商发布的最新的安全补丁

各常见的Linux发布安全信息的web地址:

RedHatLinux:

CalderaOpenLinux:

ConectivaLinux:

.br/atualizacoes/

DebianGNU/Linux:

http:

//www.debian.org/security/

MandrakeLinux:

http:

//www.linux-

LinuxPPC:

S.u.S.E.:

http:

//www.suse.de/security/index.html

YellowDogLinux:

2.网络和系统服务

inetd/xinetd网络服务:

设置项

注释:

1

确保只有确实需要的服务在运行:

先把所有通过ineted/xineted运行的网络服务关闭,再打开确实需要的服务

绝大多数通过inetd/xinetd运行的网络服务都可以被禁止,比如echo,exec,login,shell,who,finger等.对于telnet,r系列服务,ftp等,强烈建议使用SSH来代替.

2

设置xinetd访问控制

在/etc/xinetd.conf文件的”default{}”块中加入如下行:

only_from=//

每个/(比如192.168.1.0/24)对表示允许的源地址

启动服务:

设置项

注释:

1

关闭NFS服务器进程:

运行chkconfignfsoff

NFS通常存在漏洞会导致未授权的文件和系统访问.

2

关闭NFS客户端进程:

运行chkconfignfslockoff

chkconfigautofsoff

3

关闭NIS客户端进程:

chkconfigypbindoff

NIS系统在设计时就存在安全隐患

4

关闭NIS服务器进程:

运行chkconfigypservoff

chkconfigyppasswdoff

5

关闭其它基于RPC的服务:

运行chkconfigportmapoff

基于RPC的服务通常非常脆弱或者缺少安全的认证,但是还可能共享敏感信息.除非确实必需,否则应该完全禁止基于RPC的服务.

6

关闭SMB服务

运行chkconfigsmboff

除非确实需要和Windows系统共享文件,否则应该禁止该服务.

7

禁止Netfs脚本

chkconfignetfsoff

如果不需要文件共享可禁止该脚本

8

关闭打印机守护进程

chkconfiglpdoff

如果用户从来不通过该机器打印文件则应该禁止该服务.Unix的打印服务有糟糕的安全记录.

9

关闭启动时运行的XServer

sed's/id:

5:

initdefault:

/id:

3:

initdefault:

/'\

/etc/inittab.new

mv/etc/inittab.new/etc/inittab

chownroot:

root/etc/inittab

chmod0600/etc/inittab

对于专门的服务器没有理由要运行XServer,比如专门的Web服务器

10

关闭MailServer

chkconfigpostfixoff

多数Unix/Linux系统运行Sendmail作为邮件服务器,而该软件历史上出现过较多安全漏洞,如无必要,禁止该服务

11

关闭WebServer

chkconfighttpdoff

可能的话,禁止该服务.

12

关闭SNMP

chkconfigsnmpdoff

如果必需运行SNMP的话,应该更改缺省的communitystring

13

关闭DNSServer

chkconfignamedoff

可能的话,禁止该服务

14

关闭DatabaseServer

chkconfigpostgresqloff

Linux下常见的数据库服务器有Mysql,Postgre,Oracle等,没有必要的话,应该禁止这些服务

15

关闭路由守护进程

chkconfigroutedoff

chkconfiggatedoff

组织里仅有极少数的机器才需要作为路由器来运行.大多数机器都使用简单的”静态路由”,并且它不需要运行特殊的守护进程

16

关闭Webmin远程管理工具

chkconfigwebminoff

Webmin是一个远程管理工具,它有糟糕的认证和会话管理历史,所以应该谨慎使用

17

关闭SquidWebCache

chkconfigsquidoff

如果必需使用,应该谨慎配置

18

可能的话禁止inetd/xinetd

chkconfiginetdoff或

chkconfigxinetdoff

如果没有网络服务通过inetd/xinetd运行则可以禁止它们

19

设置守护进程掩码

cd/etc/rc.d/init.d

if["`grep-lumaskfunctions`"=""];then

echo"umask022">>functions

fi

系统缺省的umask值应该设定为022以避免守护进程创建所有用户可写的文件

 

3.核心调整

设置项

注释:

1

禁止coredump:

cat<>/etc/security/limits.conf

*softcore0

*hardcore0

END_ENTRIES

允许coredump会耗费大量的磁盘空间.

2

限制NFS客户端使用特权端口:

perl-i.orig-pe\

'nextif(/^\s*#/||/^\s*$/);

($res,@hst)=split("");

foreach$ent(@hst){

undef(%set);

($optlist)=$ent=~/\((.*?

)\)/;

foreach$opt(split(/,/,$optlist)){

$set{$opt}=1;

}

delete($set{"insecure"});

$set{"secure"}=1;

$ent=~s/\(.*?

\)//;

$ent.="(".join(",",keys(%set)).")";

}

$hst[0]="(secure)"unless(@hst);

$_="$res\t".join("",@hst)."\n";'\

/etc/exports

可以防止非特权用户发起的automoutedNFS攻击.

3

网络参数调整:

cat<>/etc/sysctl.conf

net.ipv4.ip_forward=0

net.ipv4.conf.all.accept_source_route=0

net.ipv4.tcp_max_syn_backlog=4096

net.ipv4.conf.all.rp_filter=1

END_SCRIPT

cat<>/etc/sysctl.conf

net.ipv4.conf.all.send_redirects=0

net.ipv4.conf.all.accept_redirects=0

net.ipv4.conf.default.accept_redirects=0

END_SCRIPT

chownroot:

root/etc/sysctl.conf

chmod0600/etc/sysctl.conf

详见:

4.日志系统

设置项

注释:

1

捕捉发送给AUTH和AUTHPRIVfacility的消息到日志文件/var/log/secure:

if[`grep-c'auth\.'/etc/syslog.conf`-eq0]

then

echo-e"auth.*\t\t\t\t/var/log/secure"\

>>/etc/syslog.conf

fi

if[`grep-c'authpriv\.'/etc/syslog.conf`eq0]

then

echo-e"authpriv.*\t\t\t\t/var/log/secure"\

>>/etc/syslog.conf

fi

touch/var/log/secure

chownroot:

root/var/log/secure

chmod600/var/log/secure

.syslog中的AUTH和AUTHPRIVfacility包含了大量安全相关的信息,不是所有Linux发布都记录这些日志信息.应该把这些信息记录到/var/log/secure文件中(该文件仅超级用户可读)

5.文件/目录访问许可权限

设置项

注释:

1

对/etc/fstab中的可移动介质增加”nosuid”选项:

awk'($2~/^\/m.*\/(floppy|cdrom)$/&&\

$3!

="supermount")\

{$4=sprintf("%s,nosuid",$4)};\

{print}'/etc/fstab>/etc/fstab.new

mv/etc/fstab.new/etc/fstab

chownroot:

root/etc/fstab

chmod0644/etc/fstab

可以移动介质是引入恶意代码的一个重要途径.该设置可以防止普通用户通过CDROM或软盘引入SUID程序

2

禁止普通用户来mount可移动文件系统:

cd/etc/security

egrep-v'(floppy|cdrom)'console.perms\

>console.perms.new

mvconsole.perms.newconsole.perms

grep-vsupermount/etc/fstab>/etc/fstab.new

mv/etc/fstab.new/etc/fstab

chownroot:

rootconsole.perms/etc/fstab

chmod0600console.perms

chmod0644/etc/fstab

在基于Linux的发布中普通用户在控制台上有更大的权限,可以使用CD-ROM和软盘驱动器.甚至在一些发布,比如MandrakeLinux上当在机器上插入软盘或光碟时系统会通过supermount来自动mount这些驱动器.

3

对passwd,shadow,和group文件设置正确的许可权限:

cd/etc

chownroot:

rootpasswdshadowgroup

chmod644passwdgroup

chmod400shadow

这些文件的属主和组应该为root,passwd和group文件的许可权限应该为644,shadow文件的许可权限应该为400

4

对临时目录设置粘着位:

chmod+t/tmp

find/var-typed-perm-0222-xdev-execchmod+t{}\;

临时目录不设置粘着位会导致普通用户可以任意删除其它用户建立的临时文件

5

查找未认证的SUID/SGID可程序:

forpartin\

`awk'($3=="ext2"||$3==“ext3”)\

{print$2}'/etc/fstab`

do

find$part\(-perm-04000-o-perm-02000\)\

-typef-xdev-print

done

6.系统访问,认证和授权

 

设置项

注释:

1

在PAM配置文件中删除.rhosts支持:

forfilein`echo/etc/pam.d/*`;do

grep-vrhosts_auth$file>${file}.new

mv${file}.new$file

chownroot:

root$file

chmod644$file

done

禁止.rhost支持有助于防止用户搞乱系统正常的访问控制机制

2

删除/etc/hosts.equiv文件:

rm/etc/hosts.equiv

/etc/hosts.equiv文件为系统上的所有用户设置全局信任关系,于.rhost的作用类似.

3

校验/etc/ftpusers文件的内容,确认root和系统用户存在在该文件中

/etc/ftpusers文件列出了所有禁止使用ftp的用户的名单,通常root和系统用户都应该禁止使用ftp

4

限制at/cron给授权的用户:

cd/etc/

rm-fcron.denyat.deny

echoroot>cron.allow

echoroot>at.allow

chownroot:

rootcron.allowat.allow

chmod400cron.allowat.allow

Cron.allow和at.allow文件列出了允许允许crontab和at命令的用户名单,在多数系统上通常只有系统管理员才需要运行这些命令

5

Crontab文件限制访问权限:

chownroot:

root/etc/crontab

chmod400/etc/crontab

chown-Rroot:

root/var/spool/cron

chmod-Rgo-rwx/var/spool/cron

chown-Rroot:

root/etc/cron.*

chmod-Rgo-rwx/etc/cron.*

系统的crontab文件应该只能被cron守护进程(它以超级用户身份运行)来访问,一个普通用户可以修改crontab文件会导致他可以以超级用户身份执行任意程序

6

建立恰当的警告banner:

echo"Authorizedusesonly.Allactivitymaybe\

monitoredandreported.">>/etc/motd

chownroot:

root/etc/motd

chmod644/etc/motd

cat<>/etc/rc.d/rc.local

echo"Authorizedusesonly.Allactivitymaybe\

monitoredandreported.">>/etc/issue

echo"Authorizedusesonly.Allactivitymaybe\

monitoredandreported.">>/etc/

END

改变登录banner可以隐藏操作系统类型和版本号和其它系统信息,这些信息可以会对攻击者有用.

7

限制root登录到系统控制台:

cat</etc/securetty

tty1

tty2

tty3

tty4

tty5

tty6

END_FILE

chownroot:

root/etc/securetty

chmod400/etc/securetty

通常应该以普通用户身份访问系统,然后通过其它授权机制(比如su命令和sudo)来获得更高权限,这样做至少可以对登录事件进行跟踪

8

设置LILO/GRUB口令:

在/etc/lilo.conf文件的开头加入如下行:

restricted

password=

以root身份执行如下命令:

chownroot:

root/etc/lilo.conf

chmod600/etc/lilo.conf

lilo

对于GRUB:

加入本行到/etc/grub.conf:

password

以root身份执行如下命令:

chownroot:

root/etc/grub.conf

chmod600/etc/grub.conf

可以有助于防止基于控制台的物理攻击

 

7.用户账号和环境

设置项

注释:

1

清除或锁定系统账号:

foruserinuucpoperator

do

/usr/sbin/userdel$user

done

foruserinadmaliasapacheaxfrdnsbindaemondhcpd\

dnscachednslogftpgamesgdmgopherhalthtdigident\

lpmailmailnullnamednewsnobodynscdpostfix\

postgresqmaildqmaillqmailpqmailqqmailrqmails\

rpcrpcusersquidsympasynctinydnsxfs

do

/usr/sbin/usermod-L-s/dev/null$user

done

Uucp和operator账号通常是不需要的,可以把它们从passwd和shadow文件中删除,其它账号视具体情况而定.要锁定一个账号,可以把该账号的shell改为一个无效的shell,比如/dev/null

验证没有遗留下来的’+’条目存在于passwd,shadow,group文件中:

grep^+:

/etc/passwd/etc/shadow/etc/group

这些条目可能会给攻击者提供一个途径来取得系统的访问权限,如果存在的化应该删除

2

验证是否有账号存在空口令的情况:

awk-F:

'($2==""){print$1}'/etc/shadow

所有账号应该有一个强口令或者使用类似”NP”或”*LOCKED*”的口令字串来锁定账号

3

检查除了root以外是否还有其它账号的UID为0:

awk-F:

'($3==0){print$1}'/etc/passwd

任何UID为0的账号在系统上都具有超级用户权限.

4

检查root用户的$PATH中是否有’.’或者所有用户/组用户可写的目录

超级用户的$PATH设置中如果存在这些目录可能会导致超级用户误执行一个特洛伊木马

5

删除属于root用户的具有潜在危险的文件:

rm-f/.[rs]hosts/.netrc/root/.[rs]hosts/root/.netrc

/.rhost,/.netrc或/root/.rhost,/root/.netrc文件都具有潜在的危险

6

用户的home目录许可权限是否为755或更严格的限制:

fordirin\

`awk-F:

'($3>=500){print$6}'/etc/passwd`

do

chmodgo-w$dir

done

用户home目录的许可权限限制不严可能会导致恶意用户读/修改/删除其它用户的数据或取得其它用户的系统权限

7

是否有用户的点文件是所有用户可读的:

fordirin\

`awk-F:

'($3>=500){print$6}'/etc/passwd`

do

forfilein$dir/.[A-Za-z0-9]*

do

if[-f$file];then

chmodo-w$file

fi

done

done

Unix/Linux下通常以”.”开头的文件是用户的配置文件,如果存在所有用户可读/写的配置文件可能会使恶意用户能读/写其它用户的数据或取得其它用户的系统权限

8

删除用户的.netrc文件:

fordirin`cut-f6-d:

/etc/passwd`

do

rm-f$dir/.netrc

done

.netrc文件中可能会包含未加密的口令

9

为用户设置合适的缺省umask值:

cd/etc

forfileinprofilecsh.logincsh.cshrcbashrc

do

if[`grep-cumask$file`-eq0];

then

echo"umask022">>$file

fi

chownroot:

root$file

chmod444$file

done

为用户设置缺省的umask值有助于防止用户建立所有用户可写的文件而危及用户的数据.

8.关键安全工具的安装

设置项

注释:

1

安装SSH

SSH是一个使用加密连接的安全的远程管理/数据传输协议.它可以用来替代telnet,r命令,ftp等传统的不安全的协议/命令.SSH的最新实现软件可以在ftp:

//下载

2

安装NTP

NTP(网络时间协议)用于使网络上的多个系统间的时间同步,精确的系统时间有利于保证系统日志的准确性.

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

当前位置:首页 > 人文社科 > 教育学心理学

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

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