所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级

FusionCloud 6.3.0 安全管理指南 09

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
安全加固

安全加固

eReplication Server操作系统安全加固

对系统帐号进行登录限制
实施目的

对系统帐号进行登录限制,确保系统帐号仅被守护进程和服务使用。

问题影响

可能利用系统进程默认帐号登录,帐号越权使用。

系统当前状态

cat /etc/passwd 查看各帐号状态。

查看/etc/ssh/sshd_config中PermitRootLogin的值。

实施步骤
  1. 执行命令

    # chsh username -s /bin/false
    说明:

    此命令通过修改用户的shell来禁止用户登录。

    • 对Tomcat、GaussDB帐户,请使用/sbin/nologin来禁止其登录权限。
    • 对其他root、ICUser、DRManager以外帐户,请使用/bin/false来禁止其登录权限。
    • 对ICUser帐户,通过在配置文件/etc/ssh/sshd_config配置DenyUsers ICUser来禁止其远程登录权限(可本地登录,或通过登录到其它帐户,再切换到该帐户)。
    • 对root帐户,建议只禁止远程登录权限,通过将配置文件/etc/ssh/sshd_config中的PermitRootLogin设置为“no”来实现。

回退方案

将用户的shell修改成原来的。

判断依据

/etc/passwd 中的禁止登录帐号的shell 是 /bin/false或者/sbin/nologin。

禁止root的远程登录权限时,/etc/ssh/sshd_config中的PermitRootLogin值应为“no”

实施风险

重要等级

设置登录超时时间
实施目的

对于具备字符交互界面的设备,应配置定时帐户自动登出。

问题影响

管理员忘记退出被非法利用。

系统当前状态

查看/etc/profile 文件的配置状态,并记录。

实施步骤
  1. 编辑文件“/etc/profile”

    #vi /etc/profile

  2. 文件末尾增加如下行:

    export TMOUT=60

  3. 改变这项设置后,重新登录才能有效。
回退方案

修改“/etc/profile”的配置到加固之前的状态。

判断依据

TMOUT=60

说明:

TMOUT=60,单位为秒。

实施风险

重要等级

设置关键目录的权限
实施目的

在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。

问题影响

非法访问文件。

系统当前状态

运行ls -al /etc/ 记录关键目录的权限。

实施步骤
  1. 参考配置操作。

    通过chmod命令对目录的权限进行实际设置。

  2. 补充操作说明。

    “/etc/passwd”必须所有用户都可读, root 用户可写。

    –rw-r—r—

    /etc/shadow 不可读写 –---------

    “/etc/group”必须所有用户都可读, root 用户可写。

    –rw-r—r—

    使用如下命令设置:

    chmod 644 /etc/passwd

    chmod 000 /etc/shadow

    chmod 644 /etc/group

    如果是有写权限,就需移去组及其它用户对/etc 的写权限。(特殊情况除外)

    执行命令#chmod -R go-w /etc

回退方案

通过chmod 命令还原目录权限到加固前状态。

判断依据
[root@localhost sysconfig]# ls -al /etc/passwd | grep '^...-.--.--'
-rw-r--r-- 1 root root 720 Mar  8 15:45 /etc/passwd
[root@localhost sysconfig]# ls -al /etc/group | grep '^...-.--.--'
-rw-r--r-- 1 root root 347 Jan 27 19:25 /etc/group
[root@localhost sysconfig]# ls -al /etc/shadow | grep '^...-------'
---------- 1 root root 436 Mar  6 19:39 /etc/shadow
实施风险

重要等级

▲▲▲

设置关键文件的属性
实施目的
  • 增强关键文件的属性,减少安全隐患。
  • 使 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 /var/log/messages.*
# chattr +i /etc/shadow
# chattr +i /etc/passwd
# chattr +i /etc/group
说明:
  1. /var/log/目录下有可能不存在message.*的文件。
  2. 如果需要修改这些文件,请按照回退方案设置相关文件权限,比如修改帐号密码、创建用户等。
回退方案

使用chattr 命令还原被修改权限的目录。

# chattr -a /var/log/messages
# chattr -i /var/log/messages.*
# chattr -i /etc/shadow
# chattr -i /etc/passwd
# chattr -i /etc/group
说明:

使用软件包方式安装OceanStor BCManager之前,请确保该加固项被回退。

判断依据
# lsattr /var/log/messages
# lsattr /var/log/messages.*
# lsattr /etc/shadow
# lsattr /etc/passwd
# lsattr /etc/group

判断属性

说明:

当linux的文件系统为Reiserfs时,不支持使用lsattr命令。

实施风险

重要等级

▲▲

修改umask值
实施目的
  • 控制用户缺省访问权限,当在创建新文件或目录时,屏蔽掉新文件或目录不应有的访问允许权限。
  • 防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高限制。
问题影响

非法访问目录。

系统当前状态

执行more /etc/profile命令,检查是否包含umask值。

实施步骤
  1. 设置全局默认权限:

    在/etc/profile修改或添加umask 077

    #vi /etc/profile

    umask 077

  2. 设置单个用户默认权限:

    如果用户需要使用一个不同于默认全局系统设置的umask,可以编辑该用户目录下的.profile文件或.bash_profile文件:

    #vi $home/.profile (或.bash_profile)

    修改或者添加umask 077 #具体值可以根据实际需要进行设置,umask 的默认设置一般为 022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。

    说明:

    umask 的计算:

    umask 是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码777减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码 666 减去需要的默认权限对应的八进制数据代码值。

回退方案

修改“/etc/profile”文件到加固前状态。

实施风险

重要等级

▲▲▲

记录用户登录信息
实施目的

设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的帐号,登录是否成功、登录时间、以及远程登录时、用户使用的IP地址。

问题影响

无法对用户的登录进行日志记录。

系统当前状态

执行cat /etc/login.defs命令,记录LASTLOG_ENAB当前配置。

实施步骤
  1. 编辑/etc/login.defs:

    #vi /etc/login.defs

  1. 修改LASTLOG_ENAB的属性:

    LASTLOG_ENAB            yes

回退方案

还原“LASTLOG_ENAB”的设置到加固之前配置。

判断依据
  1. 验证方法:

    使用last命令察看登录日志

  2. 预期结果:
    # last
    root     :0/10.164.10 10.164.104.73    Fri Feb 20 14:29 - 16:53  (02:24)
    root     10.164.104.7 10.164.104.73    Fri Feb 20 14:29 - 16:53  (02:23)
    root     pts/3                         Fri Feb 20 14:21 - 14:28  (00:06)
    rokay    pts/3        10.164.104.73    Fri Feb 20 14:16 - 14:19
实施风险

重要等级

▲▲▲

记录系统安全事件
实施目的

通过设置让系统记录安全事件,方便管理员分析

问题影响

无法记录系统的各种安全事件

系统当前状态

cat /etc/syslog-ng/syslog-ng.conf

实施步骤
  1. 执行以下命令。

    # vi /etc/syslog-ng/syslog-ng.conf

  2. 添加以下行:

    destination d_errors { file("/var/log/errors"); };
    filter f_errors { level(err); };
    log { source(src); filter(f_errors); destination(d_errors); };
    
    destination d_authpriv { file("/var/log/authpriv_info"); };
    filter f_authpriv { level(info) and facility(authpriv); };
    log { source(src); filter(f_authpriv); destination(d_authpriv); };
    
    destination d_auth { file("/var/log/auth_none"); };
    filter f_auth { level(none) and facility(auth); };
    log { source(src); filter(f_auth); destination(d_auth); };
    
    destination d_info { file("/var/log/info"); };
    filter f_info { level(info); };
    log { source(src); filter(f_info); destination(d_info); };

  1. 重启syslog-ng服务

    # rcsyslog restart
    说明:

    其中log { source(s_sys); filter(f_errors); destination(d_errors); }; “src”视其源不同可能会为“s_sys”,配置时需注意。

    1. 增加安全日志后,日志将会大大增加。要注意监控磁盘可用空间,及时备份清理安全日志文件。
    2. 对维护有要求,需询问客户后确定是否实施。

回退方案

还原/etc/syslog-ng/syslog-ng.conf的设置到加固之前配置,重启syslog-ng服务。

判断依据
  1. 验证方法:

    查看/var/log/errors,/var/log/messages

    #more /var/log/errors
    #more /var/log/authpriv_info
    #more /var/log/info
    #more /var/log/auth_none
  1. 预期结果:

    记录有需要的设备相关的安全事件。

实施风险

重要等级

记录系统服务日志
实施目的

系统上运行的应用/服务也应该配置相应日志选项,比如cron。

问题影响

无法记录 cron 服务(计划任务)。

系统当前状态

cat /etc/syslog-ng/syslog-ng.conf

实施步骤
  1. 执行以下命令。

    # vi /etc/syslog-ng/syslog-ng.conf

  2. 添加以下行:

    destination d_cron { file("/var/log/cron"); };
    filter f_cron { level(info) and facility(cron); };
    log { source(src); filter(f_cron); destination(d_cron); };

  3. 重启syslog-ng服务

    # rcsyslog restart
    说明:

    其中log { source(src); filter(f_cron); destination(d_cron); }; “src”视其源不同可能会为“s_sys”,配置时需注意。

    另外,实施此项需要开启cron服务

回退方案

还原/etc/syslog-ng/syslog-ng.conf的设置到加固之前配置,重启syslog-ng服务。

判断依据
  1. 验证方法

    执行crontab -l命令,然后查看日志文件:#more /var/log/cron。

  2. 预期结果:

    日志中能够列出cron服务的详细日志信息。

实施风险

重要等级

更改主机解析地址的顺序
实施目的

更改主机解析地址的顺序,减少安全隐患。

问题影响

对本机未经许可的IP欺骗。

系统当前状态

cat /etc/host.conf

实施步骤
  1. 查看“/etc/host.conf”获取如何解析地址。
  2. 执行 vi /etc/host.conf,编辑“/etc/host.conf”文件, 加入下面数据:

    # Lookup names via DNS first then fall back to /etc/hosts.
    order hosts, bind
    # We have machines with multiple IP addresses.
    multi on
    # Check for IP address spoofing
    nospoof on

    第一项设置首先通过 DNS 解析 IP 地址,然后通过 hosts 文件解析。第二项设置检测是否“/etc/hosts”文件中的主机是否拥有多个 IP 地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的 IP欺骗。

回退方案

恢复/etc/host.conf 配置文件。

判断依据

查看/etc/host.conf 文件中的以下配置:

order bind,hosts
multi on
nospoof on
实施风险

重要等级

打开syncookie
实施目的

打开syncookie缓解syn flood攻击。

问题影响

syn flood攻击

系统当前状态

cat /proc/sys/net/ipv4/tcp_syncookies

实施步骤

执行以下命令,设置 /etc/rc.d/rc.local文件的/proc/sys/net/ipv4/tcp_syncookies为1。

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
回退方案

echo 0 > /proc/sys/net/ipv4/tcp_syncookies

判断依据

cat /proc/sys/net/ipv4/tcp_syncookies 值为 1。

实施风险

重要等级

不响应ICMP请求
实施目的

不响应ICMP请求,避免信息泄露。

问题影响

信息泄露

系统当前状态

cat /proc/sys/net/ipv4/icmp_echo_ignore_all

实施步骤

不响应ICMP请求:

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
回退方案

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

判断依据

cat /proc/sys/net/ipv4/icmp_echo_ignore_all 返回1

实施风险

重要等级

防syn攻击优化
实施目的

提高未连接队列大小

问题影响

tcp_syn_flood attack

系统当前状态

sysctl net.ipv4.tcp_max_syn_backlog

实施步骤

sysctl -w net.ipv4.tcp_max_syn_backlog="4096"

回退方案

sysctl -w net.ipv4.tcp_max_syn_backlog= 恢复加固之前的值

判断依据

sysctl net.ipv4.tcp_max_syn_backlog 值为 4096

实施风险

重要等级

禁止ICMP重定向
实施目的

主机系统应该禁止ICMP重定向,采用静态路由。

问题影响

发生ICMP重定向攻击。

系统当前状态

sysctl -a,记录待修改属性的当前值。

实施步骤
  1. 禁止系统发送ICMP重定向包:

    # vi /etc/sysctl.conf

  2. 只接受有可靠来源的重定向。

    net.ipv4.conf.default.secure_redirects=0
    net.ipv4.conf.all.secure_redirects=0
    net.ipv4.conf.default.send_redirects=0
    net.ipv4.conf.all.send_redirects=0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.all.accept_redirects = 0

  3. 执行以下命令使设置生效:

    # sysctl -p
    说明:

    根据业务需求情况确定是否禁止ICMP重定向。

回退方案

编辑/etc/sysctl.conf,恢复原设置,执行sysctl -p使设置生效。

判断依据
  1. 验证方法:

    使用sysctl -a查看配置:

    #sysctl -a
  1. 预期结果:

    相关设置符合预期

实施风险

重要等级

关闭网络数据包转发
实施目的

对于不做路由功能的系统,应该关闭数据包转发功能。

问题影响

无。

系统当前状态

sysctl -a,记录待修改属性的当前值。

实施步骤
  1. 关闭数据包转发功能:

    # vi /etc/sysctl.conf

  2. 关闭IP转发:

    net.ipv4.ip_forward = 0

  1. 关闭转发源路由包:

    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.default.accept_source_route = 0

  2. 执行以下命令使设置生效:

    # sysctl -p

回退方案

编辑/etc/sysctl.conf,恢复原设置,执行sysctl -p使设置生效。

判断依据
  1. 验证方法:

    使用sysctl -a查看配置:

    #sysctl -a
  2. 预期结果:

    相关设置符合预期。

实施风险

重要等级

补丁装载
实施目的

可以使系统版本为最新并解决安全问题。

问题影响

系统存在严重的安全漏洞

系统当前状态
uname -a
rpm -qa
cat /proc/version
实施步骤

rpm -ivh补丁包

回退方案

rpm -e 补丁包

判断依据
  1. 验证方法:
    # rpm -qa
  2. 预期结果:

    系统安装必要的补丁。

实施风险

重要等级

▲▲

说明:

应根据需要及时进行补丁装载。对服务器系统应先进行兼容性测试。

禁用无用inetd/xinetd服务
实施目的

关闭无效的服务,提高系统性能,增加系统安全性。

问题影响

不用的服务会带来很多安全隐患。

系统当前状态

chkconfig -l记录当前状态。

实施步骤
  1. 关闭inetd服务

    # chkconfig 服务名 off

  2. 关闭xinetd服务

    修改其配置文件,在其属性中修改Disable 为yes,如没有,请添加

    #vi /etc/xinetd.d/服务名
    disable       =  yes

  3. 重启inetd服务

    # /etc/init.d/xinetd restart

回退方案

恢复记录的原inetd/xinetd服务状态。

判断依据
  1. 验证方法:
    # chkconfig -l
  2. 预期结果:

    仅有允许的服务处于开启状态

实施风险

重要等级

▲▲▲

说明:

建议关闭的服务:

chargen、chargen-udp、cups-lpd、cvs、daytime、daytime-udp、echo、echo-udp、fam、netstat、rsync、servers、services、systat、time、time-udp

请根据需要开启相应的服务。

为空口令用户设置密码
实施目的

禁止空口令用户,存在空口令是很危险的,用户不用口令认证就能进入系统。

问题影响

用户被非法利用。

系统当前状态

awk -F: '($2 == ""){print $1}' /etc/passwd

实施步骤
  1. 执行以下命令查询空口令用户。

    awk -F: '($2 == ""){print $1}' /etc/passwd

  2. 用root 用户登录Linux 系统,执行passwd 命令,给用户增加口令。

    例如:passwd test

回退方案

root 身份设置用户口令,取消口令。

判断依据
awk -F: '($2 == ""){print $1}' /etc/passwd

返回值为空。

实施风险

重要等级

删除root之外UID为0的用户
实施目的

帐号与口令-检查是否存在除 root 之外 UID 为0 的用户。

问题影响

帐号权限过大,容易被非法利用。

系统当前状态

awk -F: '($3 == 0) { print $1 }' /etc/passwd

实施步骤

删除除root 以外的UID为0的用户。

回退方案

判断依据

返回值包括“root”以外的条目,则低于安全要求。

实施风险

重要等级

说明:

UID 为0 的任何用户都拥有系统的最高特权,保证只有 root用户的 UID 为0。

缺省密码长度限制
实施目的

防止系统弱口令的存在,减少安全隐患。

对于采用静态口令认证技术的设备,口令长度至少 8 位。

问题影响

增加密码被暴力破解的成功率。

系统当前状态

cat /etc/login.defs

实施步骤
  1. 执行以下命令。

    # vi /etc/login.defs

  2. 按如下设置

    PASS_MIN_LEN  8

  3. 退出root用户重新登录,密码设置生效。
回退方案

vi /etc/login.defs ,修改设置到系统加固前状态。

判断依据

PASS_MIN_LEN 8

实施风险

重要等级

▲▲▲

缺省密码生存周期限制
实施目的

对于采用静态口令认证技术的设备,帐户口令的生存期不长于90 天,减少口令安全隐患。

问题影响

密码被非法利用,并且难以管理。

系统当前状态

运行 cat /etc/login.defs 查看状态,并记录。

实施步骤
  1. 执行以下命令。

    # vi /etc/login.defs

  2. 按如下设置

    PASS_MAX_DAYS  90
    PASS_MIN_DAYS  0

回退方案

vi /etc/login.defs ,修改设置到系统加固前状态。

判断依据

PASS_MAX_DAYS 90

PASS_MIN_DAYS 0

实施风险

重要等级

▲▲▲

防火墙规则设置
实施目的

如果网络环境需要对访问服务器的网络连接做限制,如只允许连接指定的IP,那么可以配置iptables防火墙规则。

问题影响

系统当前状态

运行 iptables -L -n -v --line-numbers 查看现有规则定义的详细信息,并记录。

实施步骤
  1. 针对用于维护的客户端IP开放22端口,比如远程登录服务器设置防火墙规则的客户端IP

    iptables -A INPUT -s <IP地址/掩码> -p tcp –dport 22 -j ACCEPT

  2. 设置数据包流入的默认策略为DROP:

    iptables -P INPUT DROP

  3. 设置环回网络的规则,即允许服务器内部通信

    iptables -A INPUT -i lo -j ACCEPT

  4. 根据业务环境开放指定的IP,包括所有管理设备的IP、访问BCManager的客户端IP、VPN服务器的IP等。

    iptables -A INPUT -s <IP地址/掩码> -j ACCEPT

  5. 保存规则:

    iptables-save > /etc/sysconfig/iptables

  6. 将如下命令加入自启动脚本/etc/init.d/boot.local:

    iptables-restore < /etc/sysconfig/iptables
    说明:
    1. 请使用VNC(本地终端)登录操作系统进行配置,以root身份执行。
    2. 如果远程登录服务器设置防火墙规则,先对客户端IP开放22端口,否则设置后将失去连接。所有防火墙规则设置完成后,如果不再需要该客户端IP访问服务器的22端口,请按照回退方案删除对应的规则,删除后只能通过VNC(本地终端)登录操作系统,请慎重。

回退方案
  1. 回退指定的规则

    删除num参数指定的第几条规则:

    iptables -D INPUT num
  2. 整个设置回退

    回退到加固前的状态,比如iptables -P INPUT ACCEPT,然后根据num参数删除添加的规则

说明:

删除22端口的规则,如果是远程登录,没有执行iptables -P INPUT ACCEPT,将导致该客户端与服务器无法连接。只能通过其他允许的客户端IP和VNC(本地终端)登录操作系统进行维护操作。

判断依据

只有规则中指定的端口能被连接访问。

实施风险

重要等级

▲▲

口令过期提醒
实施目的

口令到期前多少天开始通知用户口令即将到期。

问题影响

密码被非法利用,并且难以管理。

系统当前状态

运行 cat /etc/login.defs 查看状态,并记录。

实施步骤
  1. 执行以下命令。

    # vi /etc/login.defs

  2. 按如下设置

    PASS_WARN_AGE  7

回退方案

vi /etc/login.defs ,修改设置到系统加固前状态。

判断依据

PASS_WARN_AGE 7

实施风险

重要等级

▲▲▲

关闭sftp服务
实施目的

如果不限制ftp/sftp用户对目录的访问,不对上传或下载的文件的属性进行控制,可能导致各种安全问题,包括:信息泄露、越权访问、上传和执行恶意代码

问题影响

关闭sftp服务以后,系统将禁止上传或下载文件。

系统当前状态

系统当前默认关闭sftp服务。

实施步骤
  1. 执行vi /etc/ssh/sshd_config命令。

    将Subsystem sftp internal-sftp -l INFO -f AUTH整行注释

  2. 按如下设置

    #Subsystem sftp  internal-sftp -l INFO -f AUTH

回退方案
  1. 执行vi /etc/ssh/sshd_config命令。
  2. 将#Subsystem sftp internal-sftp -l INFO -f AUTH取消注释
  3. 执行service sshd restart , 重新启动ssh服务
判断依据
  1. 执行cat /etc/ssh/sshd_config,查看sftp配置如下:

    Subsystem sftp internal-sftp -l INFO -f AUTH

  1. 通过sftp能正常上传和下载文件。
实施风险

重要等级

▲▲▲

过滤流入与流出的ICMP timestamp报文
实施目的

ICMP timestamp存在请求响应漏洞, 当前Server环境不需要使用ICMP timestamp包,需要禁用。

问题影响

系统当前状态

默认已禁用ICMP timestamp包的流入和流出。

实施步骤

以DRManager帐户登录操作系统, 然后执行su - root命令切换到root帐户,再执行以下命令对操作系统进行加固。

  1. 禁止icmp timestamp数据包流入:

    iptables -I INPUT -p icmp --icmp-type timestamp-request -j DROP

  2. 禁止icmp timestamp数据包流出:

    iptables -I OUTPUT -p icmp --icmp-type timestamp-reply -j DROP

  3. 保存防火墙规则:

    iptables-save > /etc/sysconfig/iptables

  4. 指定在操作系统重启时自动加载防火墙规则:

    SuSE Linux执行: echo "iptables-restore < /etc/sysconfig/iptables" >> /etc/init.d/boot.local

    RedHat Linux执行:echo "iptables-restore < /etc/sysconfig/iptables" >>/etc/rc.d/rc.local

回退方案
  1. 执行iptables -L -n --line-numbers获取对应icmp timestamp规则的序号num
  2. 执行iptables -t nat -D POSTROUTING num删除对应的规则。
  3. 执行iptables-save > /etc/sysconfig/iptables重新保存防火墙规则。
判断依据

执行iptables -nL命令查看是否还有icmp timestamp规则存在,若不存在则说明解除加固成功。

实施风险

重要等级

▲▲▲

禁用sshd服务
实施目的

禁用操作系统的远程登录权限,降低操作系统被恶意操作的风险。

问题影响

无法通过putty等工具远程连接到操作系统。

系统当前状态

默认已关闭sshd服务。

实施步骤
  1. 以root用户登录到待关闭sshd服务的操作系统。
  2. 执行service sshd stop命令停止sshd服务。
  3. 执行chkconfig sshd off命令关闭在操作系统启动时自启动该服务。
回退方案
  1. 通过VNC方式登录到待启用sshd服务的操作系统。
  2. 执行service sshd start命令启动sshd服务。
  3. 执行chkconfig sshd on命令设置开机自启动该服务。
判断依据

执行回退操作后,执行service sshd status查看sshd服务是否处于运行状态,再通过putty等工具远程连接操作系统,能成功连接则回退成功。

实施风险

重要等级

▲▲▲

eReplication Server数据库安全加固

修改数据库用户默认口令
实施目的

软件包方式安装时,数据库管理员帐户GaussDB的密码是用户自定义的,数据库访问帐号及其密码也是用户自定义的。

如果安装后必须修改密码,修改时帐户密码的复杂度要求如下:

  • 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),三类字符中的两类字符。需要包含特殊字符,特殊字符只能是下列字符~!@#$%*-_=+\\[{}];:,./?
  • 最少8个字符,最多15个字符。
  • 不能和用户名相同。
  • 不能和当前密码相同。
问题影响

为了保证用户的安全登录。

系统当前状态
说明:

该项已经完成配置,保持默认。

实施步骤
  1. 执行以下命令,变更GaussDB或者RDDBUser用户的密码。请提前关闭OceanStor BCManager服务器。

    #/usr/local/gaussdb/bin/gsql -U GaussDB -d postgres -p 6432 

  2. 根据提示输入GaussDB的原密码,然后执行以下命令修改数据库帐号密码,其中xxx代表数据库帐户名称。

    #POSTGRES=# ALTER USER xxx IDENTIFIED BY "newpwd" replace "oldpwd"; 

    以上命令执行成功后,新密码即刻生效,如果修改的是RDDBUser的密码,在修改后需要同步修改OceanStor BCManager 配置的数据库访问密码,具体方法参考《FusionCloud 6.3.0 命令参考》 中的“灾备服务 > eReplication > 修改eReplication Server访问数据库帐号密码”。

回退方案

恢复原始密码到加固前的设置。

判断依据

使用新密码连接数据库,如果登录成功,则修改成功。

实施风险

重要等级

▲▲▲

打开log_connections配置
实施目的

审计客户端何时连接到数据库。

问题影响

如果不打开该配置,则在遇到攻击进行审计时无法详细定位攻击事件。

系统当前状态

系统安装后已经默认实现该加固。

实施步骤
  1. 在<Gaussdb_Install_Dir>/gs/app/data目录下的postgresql.conf配置文件中修改log_connections = on。
  2. 修改后重启数据库。
回退方案

将postgresql.conf还原到之前的状态。

判断依据
登录数据库,使用如下语句检查。
POSTGRES=# show log_connections;
log_connections
-----------------
on
(1 row)
实施风险

重要等级

▲▲▲

打开log_disconnections配置
实施目的

审计客户端何时退出数据库。

问题影响

如果不打开该配置,则在遇到攻击进行审计时无法详细定位攻击事件。

系统当前状态

系统安装后已经默认实现该加固。

实施步骤
  1. 在<Gaussdb_Install_Dir>/gs/app/data的postgresql.conf配置文件中修改log_disconnections = on。
  2. 修改后重启数据库。
回退方案

将postgresql.conf还原到之前的状态。

判断依据

登录数据库,使用如下语句检查。

POSTGRES=# show log_disconnections;
log_ disconnections
-----------------
on
(1 row)
实施风险

重要等级

▲▲▲

设置UNIX域套接字的访问权限
实施目的

只有用户和组允许UNIX域套接字的访问权限。

问题影响

默认UNIX域套接字的访问权限是所有人都可以连接,这样会造成越权访问和攻击。

系统当前状态

unix_socket_permissions设置了UNIX域套接字的访问权限。权限为0770。

说明:

系统安装后已经默认实现该加固。

实施步骤
  1. 在<Gaussdb_Install_Dir>/opt/gs/data的postgresql.conf配置文件中修改unix_socket_permissions to 0770。
  2. 修改后重启数据库。
回退方案

将postgresql.conf还原到之前的状态。

判断依据

登录数据库,使用如下语句检查。

POSTGRES=# SELECT name,setting FROM pg_settings WHERE name = 'unix_socket_permissions';
NAME           | SETTING
-------------------------+---------
unix_socket_permissions | 0770
(1 row)
实施风险

重要等级

▲▲▲

修改数据库datconnlimit配置
实施目的

限制GaussDB数据库允许的最大并发连接数。

问题影响

设置GaussDB目标数据库的最大连接数以后,该数据库的并发连接数将受到限制, 达到最大连接数以后,将不能再连接到该数据库。

系统当前状态

系统默认已做此加固, 当前非模板数据库的连接数默认限制为100。

回退方案
  1. 执行以下命令登录到GaussDB数据库,其中端口号以当前实际使用的端口号为准。

    #/usr/local/gaussdb/bin/gsql -U GaussDB -d postgres -p 6432

  2. 成功登录到数据库以后, 执行以下SQL语句将指定的数据库连接数限制删除。

    update pg_database set datconnlimit=-1 where datname=<DATABASE_NAME>

判断依据

执行以下SQL语句查看修改是否成功,当DATACONNLIMIT显示‘-1’时表示修改成功。

select datconnlimit from pg_database where datname=<DATABASE_NAME>
实施风险

重要等级

▲▲▲

修改角色连接限制rolconnlimit配置
实施目的

限制GaussDB数据库角色的最大并发连接数。

问题影响

设置GaussDB数据库角色的最大连接数以后,使用该角色并发连接的数目将受到限制, 达到最大连接数以后,将不能再使用该角色连接到数据库。

系统当前状态

当前数据库有两个默认帐户, 分别为GaussDB与RDDBUser,RDDBUser角色的最大并发连接数为100,GaussDB为数据库超级管理员角色, 不能限制最大连接数, 只受全局连接数限制,当前默认值为800。

回退方案
  1. 执行以下命令登录到GaussDB数据库,其中端口号以当前实际使用的端口号为准。

    #/usr/local/gaussdb/bin/gsql -U GaussDB -d postgres -p 6432

  2. 成功登录到数据库以后, 执行以下SQL语句将指定角色的连接数限制删除。

    alter role <ROLENAME> connection limit -1;

判断依据

修改成功后, 直接执行SQL select rolname,rolconnlimit from pg_roles;查看对应角色的ROLCONNLIMIT为‘-1’时表示修改成功。

实施风险

重要等级

▲▲▲

禁用模板数据库连接
实施目的

系统依据模板数据库来创建新数据库,这些数据库不允许修改。需要避免使用客户端或其他手段连接及操作模板数据库。

问题影响

无法通过命令行或客户端工具连接到模板数据库

系统当前状态

当前数据库中包含TEMPLATE0、TEMPLATE1两个模板数据库,均禁止连接。

执行SQL"select DATNAME,DATALLOWCONN from pg_database where DATISTEMPLATE=true"可查看模板数据库是否允许连接。

回退方案

登录到数据库,执行以下SQL语句可打开对应模板数据库的连接。

update pg_database set DATALLOWCONN=true where DATISTEMPLATE=true and DATNAME=<TEMPLATE_NAME>
判断依据

登录到数据库以后, 执行以下SQL语句查询对应的模板数据库连接是否开启成功,当执行结果为“t”时表示修改成功。

select DATNAME,DATALLOWCONN from pg_database where DATISTEMPLATE=true;
实施风险

重要等级

▲▲▲

eReplication Server Tomcat安全加固

删除Tomcat默认管理控制台或管理员帐户
实施目的

默认情况下,Tomcat存在管理控制台,其地址一般为http://[IP]:[Port]/admin。管理台的应用文件,在$tomcat\server\webapps下,有admin和manager两个应用。其用户密码,在$tomcat\conf/tomcat-users.xml中定义。在$tomcat\webapps下的admin.xml和manager.xml文件,定义了可以通过访问/admin和/manager进入控制台的通道。默认情况下,可以轻易的登录tomcat管理台,造成严重安全问题。

系统当前状态

系统默认对该项进行了加固。

实施步骤
  1. 删除$tomcat\webapps下admin.xml和manager.xml文件;
  2. 删掉$tomcat\conf\tomcat-users.xml中的用户和密码;
  3. 删除$tomcat\server\webapps下的admin和manager两个应用;
  4. 删除$tomcat\webapps下的admin和manager两个应用。
回退方案

恢复实施步骤之前的文件及其配置项。

判断依据

Tomcat启动后,访问http://[IP]:[Port]/admin提示不能访问。

实施风险

重要等级

▲▲▲

禁用应用程序自动部署功能
实施目的

默认情况下,tomcat启动时,会自动部署$appBase下面的所有应用。例如,当$appBase的值为webapps时,那么任意一个应用,只要被放进webapps目录下,在tomcat启动时,都会被发布。这有可能导致恶意或者未经测试的应用程序被自动部署在服务器上。因此,这里必须禁用掉Tomcat的自动部署功能。

系统当前状态

系统默认对该项进行了加固。

实施步骤

修改配置文件$tomcat/conf/server.xml如下:

autoDeploy="false"              //自动部署
deployOnStartup="false"         //在启动时自动部署
回退方案

恢复实施步骤之前的配置项。

判断依据

检查server.xml的配置项host标签中是否存在autoDeploy="false" deployOnStartup="false"。

实施风险

重要等级

▲▲▲

禁用不必要的http方法:DELETE、PUT、TRACE、HEAD、OPTIONS等
实施目的

Tomcat服务器提供默认http方法包括GET、HEAD、POST、PUT、DELETE、OPTIONS。在这些方法中,PUT、DELETE方法很少被使用到,并且极易被利用来进行攻击。

系统当前状态

系统默认对该项进行了加固。

实施步骤
  1. 禁用Trace的方法:

    在$tomcat/conf/server.xml禁用trace方法,即配置allowTrace为false:

    <Connector port="80" maxThreads="150" connectionTimeout="20000" redirectPort="8443" />
    说明:

    如果不存在allowTrace参数,则不用配置,因为该参数的默认值为false;如果配置了该参数,需要确保参数值为false。

  2. 在$tomcat/conf/web.xml文件的<web-app>节中增加以下内容:

    <security-constraint>
    <web-resource-collection>
    <url-pattern>/*</url-pattern>
    <http-method>OPTIONS</http-method>
    <http-method>HEAD</http-method>
    <http-method>PUT</http-method>
    <http-method>DELETE</http-method>
    <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint>
    </auth-constraint>
    </security-constraint>

回退方案

恢复实施步骤之前的配置项。

判断依据

检查server.xml和web.xml的配置项与实施步骤是否一致。

实施风险

重要等级

▲▲▲

定制Tomcat出错信息
实施目的

Tomcat发生服务器端出错时(例如:Tomcat在找不到网页时,会报404错误),错误页面上会附带当前服务器版本号,还可能泄露其他服务器端信息。黑客可以通过版本号,查询当前Tomcat服务器的默认配置信息,以及该版本的安全漏洞。

系统当前状态

系统默认对该项进行了加固。

实施步骤

在配置文件$tomcat/conf/web.xml的倒数第二行(即</web-app>之前的那一行)添加如下内容:

<error-page> 
 <error-code>400</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>401</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>402</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>403</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>404</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>405</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>406</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>407</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>413</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>414</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>500</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page> 
 <error-code>501</error-code>
 <location>/pages/error.html</location> 
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/pages/error.html</location>
</error-page>

error.html的大小必须大于512个字节,否则IE会自动调用自己的友好提示界面。特别提醒,禁止给响应码302配置错误页面,否则所有重定向都将指向该错误页面。<location>的配置值是自定义错误页面相对于当前Web应用的根目录的路径,需要根据自定义错误页面的实际路径配置。

回退方案

恢复实施步骤之前的配置项。

判断依据

访问不存在的资源是否跳转到了error界面。

实施风险

重要等级

▲▲▲

更改Tomcat服务器默认shutdown端口号和命令
实施目的

Tomcat服务器提供默认shutdown端口(8005)和命令(SHUTDOWN),很容易被黑客捕获利用关闭服务器,进而威胁到服务器和应用等。

系统当前状态

系统默认对该项进行了加固。

实施步骤
  1. 使用shutdown.sh关闭tomcat。
  2. 修改“$home/conf/server.xml”文件,更改默认端口和shutdown命令为其他大于8位的任意字符串,例如:

    <Server port="-1" shutdown="CLOSETHESERVER"> 
    //这里shutdown命令建议12个字符,包含大小写字母、数字和特殊字符

  3. 使用startup.sh启动tomcat。
回退方案

恢复实施步骤之前的文件及其配置项。

判断依据

检查tomcat目录conf下的server.xml文件。

实施风险

重要等级

▲▲▲

限制http请求的消息主体和消息头的大小
实施目的

此指令给了服务器管理员更大的可控性。

系统当前状态

系统默认对该项进行了加固。

实施步骤

在配置文件$tomcat/conf/server.xml中的为Connector节点配置以下属性:

maxHttpHeaderSize = 8192
maxPostSize = 30240

配置示例:

<Connector maxHttpHeaderSize="8192" maxPostSize="30240" connectionTimeout="50000"
说明:

推荐请求头大小限制为8192Byte,推荐请求体大小限制为10240Byte,如果产品有特殊需求,可以进行相应调整。

回退方案

恢复实施步骤之前的文件及其配置项。

判断依据

检查tomcat目录conf下的server.xml文件。

实施风险

重要等级

▲▲▲

禁止配置Tomcat的网络连接超时时间为0或-1
实施目的

connectionTimeout为网络连接超时时间毫秒数,当配置为0或-1时,表示永不超时,在受到DOS攻击时,很快就会导致最大连接数被完全占用,进而导致Tomcat服务器无法访问。因此这里禁止配置connectionTimeout为0和-1,通常推荐的超时时间为20s和30s。特殊情况下,请根据具体性能需求进行调优。

系统当前状态

系统默认对该项进行了加固。

实施步骤

在配置文件$tomcat/conf/server.xml中的每个Connector的“connectionTimeout”属性为50000:

 <Connector maxPostSize="30240" connectionTimeout="50000"
说明:

如果产品有特殊性能需求,可以进行相应调整。

回退方案

恢复实施步骤之前的文件及其配置项。

判断依据

检查tomcat目录conf下的server.xml文件。

实施风险

重要等级

▲▲▲

配置Tomcat的会话超时时间为10分钟
实施目的

Tomcat服务器提供的默认超时时间为30分钟,这个时间过长,除了导致空闲连接消耗的处理资源损失外,受攻击的时间窗也相应变长。

系统当前状态

系统默认对该项进行了加固。

实施步骤

修改$tomcat下所有的web.xml配置文件如下:

<session-config>
        <session-timeout>10</session-timeout>      //将30修改为10
</session-config>
说明:

产品实际的会话超时时间根据自己的业务情况来设置一个默认值,建议为10分钟。

回退方案

恢复实施步骤之前的文件及其配置项。

判断依据

检查tomcat目录conf下的web.xml文件。

实施风险

重要等级

▲▲▲

修改Tomcat版本信息
实施目的

Tomcat的server.info、server.number、server.built字段包含了服务器的版本等信息,黑客通过这些信息可以更轻易地知道对应Tomcat版本的安全缺陷。

说明:

修改之前建议备份当前的版本信息,以便后期维护、版本升级时能够查到实际版本信息。

系统当前状态

系统默认对该项进行了加固。

实施步骤
  1. 从catalina.jar中抽取出ServerInfo.properties文件。

    Tomcat5.5:$ cd $tomcat/server/lib
    Tomcat6.0:$ cd $tomcat/lib
    $ jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties

  2. 编辑ServerInfo.properties。

    vi org/apache/Catalina/util/ServerInfo.properties

    修改server.info、server.number和server.built参数的值:

    server.info=webserver
    server.number=1.0
    server.built=May 19 2014 10:26:15

  3. 使用修改后的ServerInfo.properties更新catalina.jar

    $ jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties

  4. 删除操作过程中产生的org目录及文件

    $ rm -rf org

说明:

步骤 2中的参数属性值可根据需要自行修改。

回退方案

恢复实施步骤之前的文件及其配置项。

判断依据

检查tomcat目录“server/lib”下的“catalina.jar”“org/apache/Catalina/util/ServerInfo.properties”文件是否按步骤配置。

实施风险

重要等级

▲▲▲

禁用X-Prowerd-By特性
实施目的

xpoweredBy设置决定了Tomcat是否在X-Powered-By HTTP Header中提供其版本等信息,设置为false可以使攻击者更难获知服务器的安全缺陷。

系统当前状态

当前已设置xpoweredBy属性值为false。

实施步骤

在#TOMCAT_HOME#/conf/server.xml文件中每一个Connector中加上xpoweredBy属性并设置为false,或者保证Connector中没有xpoweredBy。

<Connector ... xpoweredBy="false" />
判断依据

查看#TOMCAT_HOME#/conf/server.xml文件中的Connector节点中无xpoweredBy或xpoweredBy的属性值为false即可。

实施风险

重要等级

▲▲▲

增加会话ID的随机强度
实施目的

增加会话ID随机强度,使用不确定的会话标识符,降低服务器被攻击的风险。

系统当前状态

当前Tomcat默认已做此加固,使用了更为安全的随机会话标识。

实施步骤

修改eReplication安装目录下的Runtime/Tomcat6/conf/context.xml文件,在Manager节点中添加randomClass属性:<Manager ... randomClass="java.security.SecureRandom" />。

回退方案

修改eReplication安装目录下的Runtime/Tomcat6/conf/context.xml文件,删除Manager节点中的randomClass属性。

判断依据

Manager节点中的randomClass属性已被移除。

实施风险

重要等级

▲▲▲

开启Tomcat的日志功能
实施目的

这些日志可以提供异常访问的线索。Tomcat可以记录所有的访问请求,同样,异常的请求也会记录。日志文件可以记录系统发生的重要事件,可以帮助我们找到安全事件的原因等,因此,日志文件必须包含访问的关键信息,例如请求用户的ip、访问的网址等。

系统当前状态

系统默认对该项进行了加固。

实施步骤

在配置文件$tomcat/conf/server.xml中,在<Engine>的<host>标签里添加如下内容:

<Valve className="com.huawei.lego.tomcat.log.LocalAccessLog" directory="logs" prefix="localhost_access." suffix="log" pattern="%h %l %u %t &quot;%r&quot; %s %b" rotatable="false"/>

说明:

该段信息默认存在<host>的标签的注释中,但是直接取消注释,并不能使其生效。例如Tomcat6.0.20便不支持除了<Engine>以外的标签。

回退方案

目前该功能由软件包提供,为了安全需要,不支持回退方案。

判断依据

检查tomcat目录中是否按照规范打印localhost_access日志。

实施风险

重要等级

▲▲▲

Console安全加固

开启日志记录
  • 加固原理
    1. 记录Tomcat的启动、停止日志,在安装部署和启动脚本中记录每个一个操作的时间,操作结果,状态等。
    2. 记录Tomcat运行过程中接收到的请求记录,异常信息等。
  • 加固方法
    1. 在安装部署的脚本每一个操作记录到对应的日志文件中。
    2. 在eReplication Console所在虚拟机里 Tomcat的配置文件server.xml配置日志输出信息(/opt/huawei/console/tomcat/conf/server.xml)。
      <Valve className="com.huawei.wcc.secas.Log4JAccessLogValve"
      pattern="%a %{X-Real-IP}i %{X-Forwarded-For}i %h %l %u %t &quot;%r&quot; %s %b %D" />
    3. 其他日志记录位置的配置文件

      /opt/huawei/console/tomcat/lib/log4j.properties

      -    log4j.appender.CATALINA.File=${catalina.home}/logs/catalina.out
      -    log4j.appender.LOCALHOST.File=${catalina.home}/logs/localhost.log
      -    log4j.appender.ACCESSLOG.File=/var/log/console/localhost_access_log.log

      /opt/huawei/console/tomcat/webapps/{csdr|csha|vha}/WEB-INF/classes/config/log4j.properties

      -    log4j.appender.A3.file=/var/log/console/home.log
使用非root帐号运行
  • 加固原理

    使用非root帐户,即csdr帐户运行Tomcat,以控制其最小权限。

  • 加固方法

    在eReplication Console虚拟机内/etc/console/control.sh 文件中指定运行Tomcat服务的用户。

    su -s /bin/bash -c "sh $TOMCAT_DIR/bin/startup.sh" $program_user 2>&1 > /dev/null
限制访问协议
  • 加固原理

    所有请求都使用Https协议,保证浏览器到服务器之间的传输通道的安全性。

  • 加固方法

    在server.xml文件中做如下配置:

    1. 开启SSL协议
      SSLEnabled="true"
    1. 指定SSL协议版本只支持TLSv1.2
      sslEnabledProtocols=" TLSv1.2"
    1. 设置安全加密套件
      ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
证书密码密文保存
  • 加固原理

    默认情况下Tomcat配置文件中的证书密码是明文,存在安全风险。首先将证书密码通过安全加密方式生成密文保存在server.xml中,启动服务时将证书密码解密后使用。

  • 加固方法
    1. 证书密码设置成密文。
      keystorePass="d2NjX2NyeXB0ATQxNDU1MzVGNDM0MjQzOzQxMzE0MjQ1MzgzNDQ0Mzg0NDQzMzAzNDMxMzM0NTM4NDM0NjQ2MzYzNjQ2NDEzMjM5NDEzOTQzMzUzNDM3NDM7OzMxMzAzMDMwMzA7NUU1NjFFNTQyRDQyRTM4QzdFMDE3N0M4RkQ1RjcyRTk7RTBCRjY0NzE2RDlERUM0Njs"
    1. 在配置文件中指定重写后的是实现类。
      protocol="com.huawei.wcc.secas.Http11Protocol"
限制最大请求数
  • 加固原理

    限制Tomcat接收的请求个数防止对服务进行暴力攻击。

  • 加固方法

    在Tomcat配置文件server.xml中设置最大请求个数。

    maxThreads="150"
支持SSL证书替换
  • 加固原理

    Tomcat默认使用版本自定义的证书,客户可将其替换成自己的证书。

  • 加固方法

    请参考“《FusionCloud 6.3 安全管理》 > 灾备服务 > eReplication > 更换eReplication Server的Tomact证书”章节进行替换。

  • 回退方案
    1. 在替换证书之前,先将待替换的所有证书进行备份。
    2. 使用备份的证书重新参照证书替换的方法进行替换。
翻译
下载文档
更新时间:2019-01-25

文档编号:EDOC1100015665

浏览量:28410

下载量:788

平均得分:
本文档适用于这些产品
相关文档
相关版本
Share
上一页 下一页