1、2.5.4 不响应 ICMP 请求 112.5.5 防 syn 攻击优化 112.5.6 补丁装载 112.5.7 关闭无效服务 112.5.8 关闭无效服务和进程自动启 132.5.9 禁止/etc/rc.d/init.d 下某些脚本的执行 132.5.10 加固 snmp 服务 132.5.11 修改 ssh 端口 142.6 恶意代码防范 142.7 资源控制 152.7.1 隐藏系统提示信息 152.7.2 设置登录超时时间 152.7.3 资源限制 163 推荐安装工具 17前言近几年来Internet变得更加不安全了。网络的通信量日益加大,越来越多的重要交易正在通过网络完成,与此同
2、时数据被损坏、截取和修改的风险也在增加。只要有值得偷窃的东西就会有想办法窃取它的人。Internet的今天比过去任何时候都更真实地体现出这一点,基于Linux的系统也不能摆脱这个“普遍规律”而独善其身。因此,优秀的系统应当拥有完善的安全措施,应当足够坚固、能够抵抗来自Internet的侵袭,这正是Linux之所以流行并且成为Internet骨干力量的主要原因。但是,如果你不适当地运用Linux的安全工具,它们反而会埋下隐患。配置拙劣的安全系统会产生许多问题,本文将为你解释必须掌握的Linux安全知识。本文讲述了如何通过基本的安全措施,使Linux系统变得可靠。1 概述1.1 适用范围1.2 外
3、部引用说明1.3 术语和定义1.4 符号和缩略语(对于规范出现的英文缩略语或符号在这里统一说明。)缩写英文描述中文描述2 LINUX主机安全加固本规范所指的设备为采用LINUX操作系统的设备。本规范提出的安全配置要求,在未特别说明的情况下,均适用于采用LINUX操作系统的设备。本规范从运行LINUX操作系统设备的身份鉴别、访问控制、安全审计、剩余信息保护、入侵防范、恶意代码防范、资源控制七个方面提出安全配置要求。2.1 身份鉴别2.1.1 为空口令用户设置密码实施目的禁止空口令用户,存在空口令是很危险的,用户不用口令认证就能进入系统检测方法查看文件中每行的第二个值是为空还是“X”,“X”则有密
4、码,空则为无密码。如example:3:example:/bin/example操作指南root身份登录后,在命令行状态下可直接输入命令,或在图形界面状态下右键点击桌面空白处,选择“打开终端”,执行下列命令#cat /etc/passwd使用passwd命令,给空密码的用户添加密码。2.1.2 缺省密码长度限制防止系统弱口令的存在,减少安全隐患。对于采用静态口令认证技术的设备,口令长度至少 8 位。cat /etc/login.defs查看是否有如下行:PASS_MIN_LEN 81、参考配置操作 # vi /etc/login.defs 把下面这行 PASS_MIN_LEN 5 改为 2.1
5、.3 缺省密码生存周期限制对于采用静态口令认证技术的设备,帐户口令的生存期不长于 90 天,减少口令安全隐患。运行 cat /etc/login.defs 查看是否有如下行:PASS_MAX_DAYS 90 PASS_MIN_DAYS 01、 参考配置操作 2.1.4 口令过期提醒口令到期前多少天开始通知用户口令即将到期PASS_WARN_AGE 72、 参考配置操作 PASS_WARN_AGE 7 2.1.5 限制超级管理员远程登录限制具备超级管理员权限的用户远程登录。远程执行管理员权限操作,应先以普通权限用户远程登录后,再切换到超级管理员权限账。/etc/ssh/sshd_config 中
6、 PermitRootLogin noSSH: #vi /etc/ssh/sshd_config 把 PermitRootLogin yes 改为 PermitRootLogin no 重启 sshd 服务#service sshd restart CONSOLE:在/etc/securetty文件中配置:CONSOLE = /dev/tty012.1.6 使用 ssh 加密传输提高远程管理安全性运行 # ps elf|grep ssh 查看状态,是否存在ssh进程。2.2 访问控制2.2.1 为不同的管理员分配不同的账号根据不同类型用途设置不同的帐户账号,提高系统安全cat /etc/pas
7、swd 查看当前用户列表为用户创建账号:#useradd username #创建账号 #passwd username #设置密码 修改权限:#chmod 750 directory #其中 755 为设置的权限,可根据实际情况设置相应的权限,directory 是要更改权限的目录) 使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。2.2.2 去除不需要的帐号、修改默认帐号的 shell 变量删除系统不需要的默认帐号、更改危险帐号缺省的 shell 变量cat /etc/passwd 记录当前用户列表, cat /etc/shadow 记录当前密码配置# userdel l
8、p # groupdel lp 如果下面这些系统默认帐号不需要的话,建议删除。lp, sync, shutdown, halt, news, uucp, operator, games, gopher 等 修改一些系统帐号的 shell 变量,例如 uucp,ftp 和 news 等,还有一些仅仅需要 FTP 功能的帐号,一定不要给他们设置/bin/bash 或者/bin/sh 等 Shell 变量。可以在/etc/passwd 中将它们的 shell 变量设为/bin/false 或者/dev/null 等,也可以使用usermod -s /dev/null username 命令来更改 u
9、sername 的 shell为/dev/null。2.2.3 对系统账号进行登录限制对系统账号进行登录限制,确保系统账号仅被守护进程和服务使用/etc/passwd 中的禁止登陆账号的 shell 是 /sbin/nologinVi /etc/passwd 例如修改 lynn:x:500:/home/lynn:/sbin/bash 更改为:/sbin/nologin 该用户就无法登录了。禁止所有用户登录。touch /etc/nologin 除 root 以外的用户不能登录了。2、补充操作说明 禁止交互登录的系统账号,比如 daemon,bin,sys、adm、lp、uucp、nuucp、s
10、mmsp 等等2.2.4 除 root 之外 UID 为 0 的用户帐号与口令-检查是否存在除 root 之外 UID 为 0 的用户awk -F: ($3 = 0) print $1 /etc/passwd返回值包括“root”以外的条目,则低于安全要求删除 处 root 以外的 UID 为 0 的用户。2.2.5 设置关键目录的权限在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。运行 ls al /etc/ 记录关键目录和文件的权限通过 chmod 命令对目录的权限进行实际设置。etc/passwd 必 须 所 有 用 户 都 可 读 , root 用 户 可 写 rw-r
11、r /etc/shadow 只有 root 可读 r- /etc/group 必 须 所 有 用 户 都 可 读 , root 用 户 可 写 使用如下命令设置:chmod 644 /etc/passwd chmod 600 /etc/shadow chmod 644 /etc/group 如果是有写权限,就需移去组及其它用户对/etc 的写权限(特殊情况除外) 执行命令#chmod -R go-w /etc2.2.6 修改 umask 值控制用户缺省访问权限,当在创建新文件或目录时,屏蔽掉新文件或目录不应有的访问允许权限。防止同属于该组的其 它用户及别的组的用户修改该用户的文件或更高限制。m
12、ore /etc/profile more /etc/csh.login more /etc/csh.cshrc more /etc/bashrc 检查是否包含 umask 值设置默认权限:vi /etc/profile vi /etc/csh.login vi /etc/csh.cshrc vi /etc/bashrc 在末尾增加 umask 027 修改文件或目录的权限,操作举例如下:#chmod 444 dir ; #修改目录 dir 的权限为所有人都为只读。根据实际情况设置权限;如果用户需要使用一个不同于默认全局系统设置的 umask,可以在需要的时候通过命令行设置,或者在用户的 sh
13、ell 启动文件中配置 3、补充说明 umask 的默认设置一般为 022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。umask 的计算:umask 是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码 777 减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码 666 减去需要的默认权限对应的八进制数据代码值。2.2.7 设置目录权限设置目录权限,防止非法访问目录查看重要文件和目录权限:ls l判断 /etc/init.d/* 下的文件权限 750 以下ls l 更改权限:对于重要目录,
14、建议执行如下类似操作:# chmod -R 750 /etc/init.d/* 这样只有 root 可以读、写和执行这个目录下的脚本。2.2.8 设置关键文件的属性增强关键文件的属性,减少安全隐患。使 messages 文件只可追加。使轮循的 messages 文件不可更改。# lsattr /var/log/messages # lsattr /var/log/messages.* # lsattr /etc/shadow # lsattr /etc/passwd # lsattr /etc/group判断属性# chattr +a /var/log/messages # chattr +i
15、 /var/log/messages.* # chattr +i /etc/shadow # chattr +i /etc/passwd # chattr +i /etc/group 建议管理员对关键文件进行特殊设置(不可更改或只能追加等)。2.2.9 对 root 为 ls、rm 设置别名为 ls 设置别名使得 root 可以清楚的查看文件的属性(包括不可更改等特殊属性)。 为 rm 设置别名使得 root 在删除文件时进行确认,避免误操作。查看当前 shell:# echo $SHELL 如果是 csh:# vi /.cshrc 如果是 bash:# vi /.bashrc查看内容是否有a
16、lias ls=ls -aol alias rm =rm i 类似的定义# vi /.bashrc 加入 alias ls = ls -aol alias rm = rm -i 重新登录之后查看是否生效。2.2.10 使用 PAM 禁止任何人 su 为 root避免任何人可以 su 为 root,减少安全隐患。cat /etc/pam.d/su编辑 su 文件(vi /etc/pam.d/su),在开头添加下面两行:auth sufficient /lib/security/pam_rootok.so auth required /lib/security/pam_wheel.so group
17、=wheel 这表明只有 wheel 组的成员可以使用 su 命令成为 root 用户。你可以把用户添加到 wheel 组,以使它可以使用 su 命令成为root 用户。添加方法为:# chmod G10 username2.3 安全审计2.3.1 启用日志记录功能 登陆认证服务记录运行 cat /etc/syslog.conf 查看状态,是否有如下行authpriv.* /var/log/secure cat /etc/syslog.conf # The authpriv file has restricted access. authpriv.* /var/log/secure * aut
18、h, authpriv:主要认证有关机制,例如 telnet, login, ssh 等需要认证的服务都是使用此一机制2.3.2 记录系统安全事件通过设置让系统记录安全事件,方便管理员分析Cat /etc/syslog.conf 是否记录系统安全事件修改配置文件 vi /etc/syslog.conf, 配置如下类似语句:*.err;kern.debug;daemon.notice; /var/adm/messages 定义为需要保存的设备相关安全事件。2.3.3 启用记录 cron 行为日志功能对所有的 cron 行为进行审计。Cat /etc/syslog.conf | grep cron
19、Vi /etc/syslog.conf # Log cron stuff cron.* /var/log/cron 2.3.4 增加 ftpd 审计功能增加 ftpd 审计功能,增强 ftpd 安全性。Cat /etc/inetd.conf 是否有如下行: ftpd -l -r -A S cat /etc/syslog.conf是否有如下行:ftp.* /var/log/ftpd# vi /etc/inetd.conf ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -r -A -S 其中:-l 成功/失败的 ftp 会话被 syslo
20、g 记录 -r 使 ftpd 为只读模式,任何命令都不能更改文件系统 -A 允许 anonymous 用户登录,/etc/ftpwelcome 是欢迎信息 -S 对 anonymous ftp 传输进行记录 在/etc/syslog.conf 中,增加 ftp.* /var/log/ftpd 使日志产生到/var/log/ftpd 文件 重新启动 inetd 进程:# kill -1 cat /var/run/inetd.pid2.4 剩余信息保护暂无。2.5 入侵防范2.5.1 设置访问控制列表设置访问控制列表,使得只有可信主机才能访问服务器在/etc/(x)inetd.conf 中启用的特
21、定网络服务。查看/etc/hosts.allow 和/etc/hosts.deny 2 个文件的配置状态,并记录。使用 TCP_Wrappers 可以使系统安全面对外部入侵。最好的策略就是阻止所有的主机(在“/etc/hosts.deny”文件中加入“ ALL:ALLALL, PARANOID ” ) , 然 后 再 在“/etc/hosts.allow” 文件中加入所有允许访问的主机列表。第一步: 编辑 hosts.deny 文件(vi /etc/hosts.deny),加入下面该行:# Deny access to everyone. ALL: ALLALL, PARANOID 第二步:
22、编辑 hosts.allow 文件(vi /etc/hosts.allow),加入允许访问的主机列表,比如:ftp: 202.54.15.99 202.54.15.99 和 是允许访问 ftp 服务的 IP 地址和主机名称。第三步: tcpdchk 程序是 TCP_Wrapper 设置检查程序。它用来检查你的 TCP_Wrapper 设置,并报告发现的潜在的和真实的问题。设置完后,运行下面这个命令:# tcpdchk2.5.2 更改主机解析地址的顺序更改主机解析地址的顺序,减少安全隐患。Cat /etc/host.conf/etc/host.conf order bind,hosts nosp
23、oof on“/etc/host.conf” 说明了如何解析地址。编辑“/etc/host.conf” 文 件 ( vi /etc/host.conf ), 加 入 下 面 该 行 :# Lookup names via DNS first then fall back to /etc/hosts. # We have machines with multiple IP addresses. multi on # Check for IP address spoofing nospoof on 第一项设置首先通过 DNS 解析 IP 地址,然后通过 hosts 文件解析。第二项设置检测是否“/
24、etc/hosts”文件中的主机是否拥有多个 IP 地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的 IP 欺骗。2.5.3 打开 syncookie打开 syncookie 缓解 syn flood 攻击Cat /proc/sys/net/ipv4/tcp_syncookies 值为 1# echo 1 /proc/sys/net/ipv4/tcp_syncookies 可以加入/etc/rc.d/rc.local 中。2.5.4 不响应 ICMP 请求不响应 ICMP 请求,避免信息泄露Cat /proc/sys/net/ipv4/icmp_echo_ignore_all 返回 1不响应 ICMP 请求: /proc/sys/net/ipv4/icmp_echo_ignore_all2.5.5 防 syn 攻击优化提高未连接队列大小sysctl net.ipv4.tcp_max_syn_backlog 值为 2048 sysctl -w net.ipv4.tcp_max_syn_backlog=20482.5.6 补丁装载可以使系统版本为最新并解决安全问题Uname a Rpm qa cat /proc/version查看 http:/www.redhat
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1