最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

linux系统安全加固手册 0.9

来源:动视网 责编:小OO 时间:2025-09-26 19:58:04
文档

linux系统安全加固手册 0.9

Linux系统安全加固手册1.安装最新安全补丁:项目:注释:1安装操作系统提供商发布的最新的安全补丁各常见的Linux发布安全信息的web地址:RedHatLinux:http://www.redhat.com/support/CalderaOpenLinux:http://www.calderasystems.com/support/security/ConectivaLinux:http://www.conectiva.com.br/atualizacoes/DebianGNU/Linux
推荐度:
导读Linux系统安全加固手册1.安装最新安全补丁:项目:注释:1安装操作系统提供商发布的最新的安全补丁各常见的Linux发布安全信息的web地址:RedHatLinux:http://www.redhat.com/support/CalderaOpenLinux:http://www.calderasystems.com/support/security/ConectivaLinux:http://www.conectiva.com.br/atualizacoes/DebianGNU/Linux
Linux系统安全加固手册

1.安装最新安全补丁:

项目:

注释:

1安装操作系统提供商发布的最新的安全补丁各常见的Linux发布安全信息的web地址:

RedHat Linux: http://www.redhat.com/support/

Caldera OpenLinux: http://www.calderasystems.com/support/security/

Conectiva Linux: http://www.conectiva.com.br/atualizacoes/

Debian GNU/Linux: http://www.debian.org/security/

Mandrake Linux: http://www.linux-mandrake.com/en/fupdates.php3

LinuxPPC: http://www.linuxppc.com/support/updates/security/

S.u.S.E. : http://www.suse.de/security/index.html

Yellow Dog Linux : http://www.yellowdoglinux.com/resources/errata.shtml

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服务器进程:

运行 chkconfig nfs off

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

2关闭NFS客户端进程:

运行 chkconfig nfslock off

chkconfig autofs off

3关闭NIS客户端进程:

chkconfig ypbind off

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

4关闭NIS服务器进程:

运行 chkconfig ypserv off

chkconfig yppasswd off

5关闭其它基于RPC的服务:

运行 chkconfig portmap off

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

6关闭SMB服务

运行 chkconfig smb off

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

7禁止Netfs脚本

chkconfig netfs off

如果不需要文件共享可禁止该脚本
8关闭打印机守护进程

chkconfig lpd off

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

9关闭启动时运行的 X Server

sed 's/id:5:initdefault:/id:3:initdefault:/' \

< /etc/inittab > /etc/inittab.new

mv /etc/inittab.new /etc/inittab

chown root:root /etc/inittab

chmod 0600 /etc/inittab

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

10关闭Mail Server

chkconfig postfix off

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

11关闭Web Server

chkconfig httpd off

可能的话,禁止该服务.

12关闭SNMP

chkconfig snmpd off

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

13关闭DNS Server

chkconfig named off

可能的话,禁止该服务

14关闭 Database Server

chkconfig postgresql off

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

15关闭路由守护进程

chkconfig routed off

chkconfig gated off

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

16关闭Webmin远程管理工具

chkconfig webmin off

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

17关闭Squid Web Cache

chkconfig squid off

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

18可能的话禁止inetd/xinetd

chkconfig inetd off 或

chkconfig xinetd off

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

19设置守护进程掩码

cd /etc/rc.d/init.d

if [ "`grep -l umask functions`" = "" ]; then

echo "umask 022" >> functions

fi

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

3.核心调整:

设置项注释:

1禁止core dump:

cat <>/etc/security/limits.conf

* soft core 0

* hard core 0

END_ENTRIES

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

2NFS客户端使用端口:

perl -i.orig -pe \

'next if (/^\\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(

}

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

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

/etc/exports

可以防止非用户发起的automouted NFS攻击.

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

chown root:root /etc/sysctl.conf

chmod 0600 /etc/sysctl.conf

详见: http://www.linuxhq.com/kernel/v2.4/doc/networking/ip-sysctl.txt.html

或http://www.linuxhq.com/kernel/v2.2/doc/networking/ip-sysctl.txt.html

4.日志系统:

设置项注释:

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

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

then

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

>>/etc/syslog.conf

fi

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

then

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

>>/etc/syslog.conf

fi

touch /var/log/secure

chown root:root /var/log/secure

chmod 600 /var/log/secure

.syslog中的AUTH 和AUTHPRIV facility包含了大量安全相关的信息, 不是所有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

chown root:root /etc/fstab

chmod 04 /etc/fstab

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

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

cd /etc/security

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

> console.perms.new

mv console.perms.new console.perms

grep -v supermount /etc/fstab > /etc/fstab.new

mv /etc/fstab.new /etc/fstab

chown root:root console.perms /etc/fstab

chmod 0600 console.perms

chmod 04 /etc/fstab

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

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

cd /etc

chown root:root passwd shadow group

chmod 4 passwd group

chmod 400 shadow

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

4对临时目录设置粘着位:

chmod +t /tmp

find /var -type d -perm -0222 -xdev -exec chmod +t {} \\;

临时目录不设置粘着位会导致普通用户可以任意删除其它用户建立的临时文件
5查找未认证的SUID/SGID可程序:

for part in \

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

{ print $2 }' /etc/fstab`

do

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

-type f -xdev -print

done

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

检查项注释:

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

for file in `echo /etc/pam.d/*` ; do

grep -v rhosts_auth $file > ${file}.new

mv ${file}.new $file

chown root:root $file

chmod 4 $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 -f cron.deny at.deny

echo root >cron.allow

echo root >at.allow

chown root:root cron.allow at.allow

chmod 400 cron.allow at.allow

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

5Crontab文件访问权限:

chown root:root /etc/crontab

chmod 400 /etc/crontab

chown -R root:root /var/spool/cron

chmod -R go-rwx /var/spool/cron

chown -R root:root /etc/cron.*

chmod -R go-rwx /etc/cron.*

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

6建立恰当的警告banner:

echo "Authorized uses only. All activity may be \

monitored and reported." >>/etc/motd

chown root:root /etc/motd

chmod 4 /etc/motd

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

echo "Authorized uses only. All activity may be \

monitored and reported." >> /etc/issue

echo "Authorized uses only. All activity may be \

monitored and reported." >> /etc/issue.net

END

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

7root登录到系统控制台:

cat </etc/securetty

tty1

tty2

tty3

tty4

tty5

tty6

END_FILE

chown root:root /etc/securetty

chmod 400 /etc/securetty

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

8设置LILO/GRUB口令:

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

restricted

password=

以root身份执行如下命令:

chown root:root /etc/lilo.conf

chmod 600 /etc/lilo.conf

lilo

对于GRUB:

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

password 

以root身份执行如下命令:

chown root:root /etc/grub.conf

chmod 600 /etc/grub.conf

可以有助于防止基于控制台的物理攻击
7.用户账号和环境:

检查项注释:

1清除或锁定系统账号:

for user in uucp operator

do

/usr/sbin/userdel $user

done

for user in adm alias apache axfrdns bin daemon dhcpd \

dnscache dnslog ftp games gdm gopher halt htdig ident \

lp mail mailnull named news nobody nscd postfix \

postgres qmaild qmaill qmailp qmailq qmailr qmails \

rpc rpcuser squid sympa sync tinydns xfs

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或更严格的:

for dir in \

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

do

chmod go-w $dir

done

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

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

for dir in \

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

do

for file in $dir/.[A-Za-z0-9]*

do

if [ -f $file ]; then

chmod o-w $file

fi

done

done

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

8删除用户的.netrc文件:

for dir in `cut -f6 -d: /etc/passwd`

do

rm -f $dir/.netrc

done

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

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

cd /etc

for file in profile csh.login csh.cshrc bashrc

do

if [ `grep -c umask $file` -eq 0 ];

then

echo "umask 022" >> $file

fi

chown root:root $file

chmod 444 $file

done

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

8.关键安全工具的安装:

检查项注释:

1安装SSH

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

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

文档

linux系统安全加固手册 0.9

Linux系统安全加固手册1.安装最新安全补丁:项目:注释:1安装操作系统提供商发布的最新的安全补丁各常见的Linux发布安全信息的web地址:RedHatLinux:http://www.redhat.com/support/CalderaOpenLinux:http://www.calderasystems.com/support/security/ConectivaLinux:http://www.conectiva.com.br/atualizacoes/DebianGNU/Linux
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top