欢迎光临
我们一直在努力

云主机服务器系统加固

系统版本信息

命令:

lsb_release -a 

执行结果:

云主机服务器系统加固

结论:系统版本为CentOS 7.3 64位。

创建影子口令

命令:

ll /etc/shadow cat /etc/shadow 

执行结果:

云主机服务器系统加固

结论:已存在影子口令文件。

建立多帐户组,将用户账号分配到相应的帐户组

此步骤需要对应应用名称才可创建。

删除或锁定可能无用的帐户

命令:

cat /etc/passwd 

执行结果:

云主机服务器系统加固

结论:系统中只有root、系统用户、伪用户,没有其他用户存在,后续大数据平台应用使用账号名为cbdp,拥有sudo权限。

删除可能无用的用户组

同上。

检查是否存在空密码的账户

命令:

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

执行结果:

云主机服务器系统加固

结论:无空口令用户存在。

设置口令策略满足复杂度要求

执行历史:

#最小密码长度为8位 [root@Server-i-fzbwivul78 pam.d]# authconfig --passminlen=8 --update [root@Server-i-fzbwivul78 pam.d]# grep "^minlen" /etc/security/pwquality.conf minlen = 8 #在新密码中设置同一类的允许连续字符的最大数目4位 [root@Server-i-fzbwivul78 pam.d]# authconfig --passmaxclassrepeat=4 --update [root@Server-i-fzbwivul78 pam.d]# grep "^maxclassrepeat" /etc/security/pwquality.conf maxclassrepeat = 4 #在新密码中至少需要一个小写字符。 [root@Server-i-fzbwivul78 pam.d]# authconfig --enablereqlower --update [root@Server-i-fzbwivul78 pam.d]# grep "^lcredit" /etc/security/pwquality.conf lcredit = -1 #在新密码中至少需要一个大写字符 [root@Server-i-fzbwivul78 pam.d]# authconfig --enablerequpper --update [root@Server-i-fzbwivul78 pam.d]# grep "^ucredit" /etc/security/pwquality.conf ucredit = -1 #在新密码中至少需要一个数字 [root@Server-i-fzbwivul78 pam.d]# authconfig --enablereqdigit --update [root@Server-i-fzbwivul78 pam.d]# grep "^dcredit" /etc/security/pwquality.conf dcredit = -1 #密码包括至少一个特殊字符 [root@Server-i-fzbwivul78 pam.d]# authconfig --enablereqother --update [root@Server-i-fzbwivul78 pam.d]# grep "^ocredit" /etc/security/pwquality.conf ocredit = -1 [root@Server-i-fzbwivul78 pam.d]# 

设置默认用户密码使用天数,编辑配置文件/etc/login.defs:

vi /etc/login.defs 

修改PASS_MAX_DAYS为90天数,PASS_MIN_LEN修改为8位数。

修改如下:

云主机服务器系统加固

设置账号口令生存周期

命令:

#$DAYS为过期时间 chage -M $DAYS root 

执行结果:

云主机服务器系统加固

注意:修改密码过期时间需要慎重。

设定密码历史,不能重复使用最近5次口令

编辑/etc/pam.d/system-auth,找到下面一行

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok 

修改为:

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5 

限制ROOT用户远程登陆

vi /etc/ssh/sshd_config 

修改PermitRootLogin选项为:

PermitRootLogin no 

检查passwd、group文件权限设置

执行如下命令:

云主机服务器系统加固

结论:符合安全标准。

删除帐户目录下的.netrc/.rhosts/.shosts文件

命令:

rm ~/.netrc ~/.rhosts ~/.shosts 

执行结果:

云主机服务器系统加固

检查是否存在除root之外UID为0的用户

检查命令:

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

执行结果:

云主机服务器系统加固

结论:系统中无root以外的UID为0的账号。

设置账户权限

需根据实际情况,针对性的做账户权限设置。后续大数据平台应用使用账号名为cbdp,拥有sudo权限。

设置命令:usermod

账号锁定

需根据实际情况,针对指定账户锁定。后续大数据平台应用使用账号名为cbdp,拥有sudo权限

命令如下:

#锁定命令 passwd -l $account #解锁账号命令 passwd -u $account #禁止所有非root用户登录 touch /etc/nologin 

root用户环境变量的安全性

命令:

#检查变量中是否含有父目录 echo $PATH | egrep '(^|:)(\.|:|$)' #检查变量中的是否包含组目录权限为777的目录 find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls 

执行结果:

云主机服务器系统加固

远程连接的安全性配置

远程登录取消telnet采用ssh

检查/etc/securetty中是否包含pts/0字样:

grep "pts/0" /etc/securetty 

执行结果:

云主机服务器系统加固

结论:系统已禁用telnet登录。

限制ssh连接的IP配置

需要根据实际情况配置,配置文件为:/etc/hosts.allow/etc/hosts.deny

限制系统帐户FTP登录

命令:

cat /etc/passwd|grep ftp 

执行结果:

云主机服务器系统加固

如果含有ftp字段的用户,并且登陆shell为/sbin/nologin或者/usr/sbin/nologin,说明FTP用户无法登陆。如果登陆shell为非nologin,执行如下命令:

#$account 为要修改的ftp用户名称 usermod -s $account 

结论:此镜像中,已禁用ftp账号登录。

配置允许访问inetd服务的IP范围或主机名

此基础镜像系统中无inetd服务:

云主机服务器系统加固

设定连续认证失败次数超过6次锁定该账号

编辑文件/etc/pam.d/sshd,在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!,添加内容如下:

auth required pam_tally2.so deny=6 unlock_time=300 even_deny_root root_unlock_time=10 

执行结果如下:

云主机服务器系统加固

参数详解如下:

even_deny_root 也限制root用户; deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户; unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒; root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒; 

此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。

查看用户登录失败次数:

pam_tally2 --user root 

解锁指定用户:

# $account为被锁定的账号账号 pam_tally2 -r -u $account 

用户的umask安全配置

查看当年状态的umask,执行命令:

umask 

执行结果:

云主机服务器系统加固

需要将其修改为077,并永久生效,修改/etc/profile文件,将umask修改为077:

vi /etc/profile 

修改如下:

云主机服务器系统加固

测试结果:

云主机服务器系统加固

查找并删除未授权的SUID/SGID文件

命令:

for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do find $PART \( -perm -04000 -o -perm -02000 \) -type f -xdev -print ; done 

若存在未授权的文件,则低于安全要求,需要将其删除。建议经常性的对比suid/sgid文件列表,以便能够及时发现可疑的后门程序

执行结果:

云主机服务器系统加固

结论:此基础镜像中无未授权的SUID/SGID文件。

检查是否任何人都有写权限的文件

命令:

for PART in `awk '($3 == "ext2" || $3 == "ext3") \ { print $2 }' /etc/fstab`; do find $PART -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print; done 

若返回值非空,则低于安全要求。

执行结果:

云主机服务器系统加固

结论:结果为空,此基础镜像不存在任何人都有写权限的文件。

检查异常隐含文件

命令:

find / -xdev -name "..*" -print find / -xdev -name "...*" -print |cat -v 

执行结果:

云主机服务器系统加固

结论:镜像中不存在异常隐含文件。

重要目录和文件的权限设置

命令:

ls -l /etc/ls -l /etc/rc.d/init.d/ls -l /tmpls -l /etc/inetd.confls -l /etc/passwdls -l /etc/shadowls -l /etc/groupls -l /etc/securityls -l /etc/servicesls -l /etc/rc*.d 

若权限过低,则低于安全要求。
对于重要目录,建议执行如下类似操作:

这样只有root可以读、写和执行这个目录下的脚本。

检查没有所有者的文件或目录

定位系统中没有属主的文件用下面的命令:

for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do find $PART -nouser -o -nogroup -print; done 

执行结果:

云主机服务器系统加固

发现没有属主的文件往往就意味着有黑客入侵你的系统了。不能允许没有属主的文件存在。如果在系统中发现了没有主人的文件或目录,先查看它的完整性,如果一切正常,给它一个属主。有时候卸载程序可能会出现一些没有主人的文件或目录,在这种情况下可以把这些文件和目录删除掉。

禁用不必要的服务

查看自动启动服务的命令:

systemctl list-unit-files |grep enabled 

需要根据实际情况进行调整。禁用命令:

#$service为服务名称 systemctl disable $service 

禁用不必要的inetd服务

基础镜像中不存在inetd服务。

云主机服务器系统加固

关闭IP转发

编辑文件/etc/sysctl.conf,添加如下内容:

net.ipv4.ip_forward=0 

然后执行:

sysctl -p 

关闭转发源路由包

同上步操作。

增大最大半连接数防范SYN攻击

编辑文件/etc/sysctl.conf,添加如下内容:

net.ipv4.tcp_max_syn_backlog = 2048 

然后执行:

sysctl -p 

关闭ICMP重定向

编辑文件/etc/sysctl.conf,添加如下内容:

net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 

然后执行:

sysctl -p 

关闭响应echo广播

命令:

sysctl -a |grep echo_ignore_broadcasts 

执行结果:

云主机服务器系统加固

已经关闭echo广播相应,如果未关闭,修改/etc/sysctl.conf文件,添加如下内容:

net.ipv4.icmp_echo_ignore_broadcasts = 1 

关闭响应地址掩码和时间戳广播

CentOS系统中不存在,只有少数操作系统会进行响应的回应,这些系统包括ULTRIX OpenVMS, Windows 95/98/98 SE/ME, NT below SP 4, 和 SUN Solaris机器。

启用inetd日志记录

此基础镜像中无inetd服务。

syslog登录事件记录

命令:

cat /etc/rsyslog.conf |grep "authpriv.*" 

执行结果:

云主机服务器系统加固

结论:基础镜像已存在登陆日志审核记录规则。

Linux日志增强配置以及syslog系统事件审计

基础镜像已存在,执行cat /etc/rsyslog.conf,基础镜像配置如下:

# rsyslog configuration file # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html #### MODULES #### # The imjournal module bellow is now used as a message source instead of imuxsock. $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal #$ModLoad imklog # reads kernel messages (the same are read from journald) #$ModLoad immark # provides --MARK-- message capability # Provides UDP syslog reception #$ModLoad imudp #$UDPServerRun 514 # Provides TCP syslog reception #$ModLoad imtcp #$InputTCPServerRun 514 #### GLOBAL DIRECTIVES #### # Where to place auxiliary files $WorkDirectory /var/lib/rsyslog # Use default timestamp format $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # File syncing capability is disabled by default. This feature is usually not required, # not useful and an extreme performance hit #$ActionFileEnableSync on # Include all config files in /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf # Turn off message reception via local log socket; # local messages are retrieved through imjournal now. $OmitLocalLogging on # File to store the position in the journal $IMJournalStateFile imjournal.state #### RULES #### # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg :omusrmsg:* # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log # ### begin forwarding rule ### # The statement between the begin ... end define a SINGLE forwarding # rule. They belong together, do NOT split them. If you create multiple # forwarding rules, duplicate the whole block! # Remote Logging (we use TCP for reliable delivery) # # An on-disk queue is created for this action. If the remote host is # down, messages are spooled to disk and sent when it is up again. #$ActionQueueFileName fwdRule1 # unique name prefix for spool files #$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible) #$ActionQueueSaveOnShutdown on # save messages to disk on shutdown #$ActionQueueType LinkedList # run asynchronously #$ActionResumeRetryCount -1 # infinite retries if host is down # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional #*.* @@remote-host:514 

记录FTP日志

基础镜像中没有FTP应用服务。

设置远程日志服务器

根据实际情况部署,修改文件为/etc/rsyslog.conf

检查系统日志文件权限

命令:

cd /var/log && ll messages secure maillog cron spooler boot.log 

执行结果:

云主机服务器系统加固

禁用图形界面登录

云主机中默认已禁用图形界面。客户服务器安装系统时请取消安装图形界面。

字符交互界面帐户超时自动退出及系统超时注销

编辑/etc/profile文件,追加如下内容:

export TMOUT=180 

设置自动锁定时间为180秒。

系统漏洞补丁

根据公有云主机安全漏洞扫描的结果,对漏洞进行补丁升级:

云主机服务器系统加固

升级历史命令如下:

yum update libnl3 sudo wget dnsmasq gnutls libtasn1 openssh kernel curl bash -y 
  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《云主机服务器系统加固》
文章链接:https://www.456zj.com/3539.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址