确认UID为零的账号只有root账号。
• 添加口令策略 • 加强口令的复杂度等,降低被猜解的可能性。 • 操作步骤 • 使用命令 vi /etc/login.defs 修改配置文件。 • PASS_MAX_DAYS 90 #新建用户的密码最长使用天数 • PASS_MIN_DAYS 0 #新建用户的密码最短使用天数 • PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数 • 使用chage命令修改用户设置。 • 例如,chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>表示将此用户的密码最长使用天数设为30,最短使用天数设为0,密码2000年1月1日过期,过期前七天警告用户。 • 设置连续输错三次密码,账号锁定五分钟。使用命令 vi /etc/pam.d/common-auth修改配置文件,在配置文件中添加 auth required pam_tally.so onerr=fail deny=3 unlock_time=300。 • • 限制用户su • 限制能su到root的用户。 • 操作步骤 • 使用命令 vi /etc/pam.d/su修改配置文件,在配置文件中添加行。例如,只允许test组用户su到root,则添加 auth required pam_wheel.so group=test。 • • 禁止root用户直接登录 • 限制root用户直接登录。 • 操作步骤 • 创建普通权限账号并配置密码,防止无法远程登录; • 使用命令 vi /etc/ssh/sshd_config修改配置文件将PermitRootLogin的值改成no,并保存,然后使用service sshd restart重启服务。history USER=`whoami` USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` if [ "$USER_IP" = "" ]; then USER_IP=`hostname` fi if [ ! -d /var/log/history ]; then mkdir /var/log/history chmod 777 /var/log/history fi if [ ! -d /var/log/history/${LOGNAME} ]; then mkdir /var/log/history/${LOGNAME} chmod 300 /var/log/history/${LOGNAME} fi export HISTSIZE=4096 DT=`date +"%Y%m%d_%H:%M:%S"` export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT" chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null• 运行 [root@xxx /]# source /etc/profile 加载配置生效。 • 注意: /var/log/history 是记录日志的存放位置,可以自定义。 • 通过上述步骤,可以在 /var/log/history 目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP、时间的日志文件,包含此用户本次的所有操作(root用户除外)。 • 同时,建议您使用OSS服务收集存储日志。
service rsyslog ststus,service auditd status, cat /etc/audit/auditd.conf中是否配置 write_logs = yes log_file = /var/log/audit/audit.log log_format = RAW max_log_file = 8 num_logs = 5 max_log_file_action = ROTATE cat /etc/audit/audit.rules查看是否存在 -w /etc/passwd -p rwa -k passwd_changes -w /etc/shadow -p rwa -k shadow_changes -w /etc/sudoers -p rwa -k sudoers_changes -w /etc/rsyslog.conf -p rwa -k rsyslog_changes -w /etc/group -p rwa -k group_changes -w /var/log/message -p rwa -k message_changes -w /var/log/secure -p rwa -k secure_changes -w /var/log/maillog -p rwa -k maillog_changes -w /var/log/cron -p rwa -k cron_changes -w /var/log/spooler -p rwa -k spooler_changes -w /etc/audit/audit.rules -p rwa -k audit_changes -w /etc/audit/rules.d/audit.rules -p rwa -k audit_changes cat /etc/rsyslog.conf 查看是否存在 kern.warning;*.err;*.info;kern.debug;daemon.notice;mail.none;authpriv.none;cron.none /var/log/kern.log
定期对操作系统进行漏洞扫描并修补发现的漏洞,未更新系统内核至官方最新安全版。
• Webshell如何被注入 • 常见的Webshell植入方式以下类型: • 利用站点上传漏洞,上传Webshell。 • 系统前台的上传业务可被利用来上传Webshell脚本,而被上传的目录往往对用户开放可执行权限。在Web中有上传图像、资料文件的地方,上传完后通常会向客户端返回上传文件的完整URL信息;该URL一般是常见的image、upload等目录。 • 如果Web服务器对网站存取权限或者文件夹目录权限控制不严,就可能被利用来实现Webshell攻击。攻击者可以利用上传功能上传一个脚本文件,然后通过URL访问并执行这个脚本;然后攻击者就可以上传Webshell到网站的任意目录中,从而拿到网站的管理员控制权限。 • 黑客获取管理员的后台密码,登录到后台系统,利用后台的管理工具向配置文件写入Webshell木马;或者私自添加上传类型,允许上传类似ASP、PHP格式的脚本程序文件。 • 利用数据库备份与恢复功能获取Webshell。例如,备份时把备份文件的后缀改成 .asp;如果后台有MySQL数据查询功能,黑客可以执行select..in To outfile查询输出PHP文件,并把代码插入到MySQL,从而生成Webshell的木马。 • 系统中其他站点被攻击,或者服务器上还搭载了FTP服务器。FTP服务器被攻击时被注入了Webshell的木马,导致网站系统被感染。 • 黑客直接攻击Web服务器系统漏洞,实现入侵。Web服务器在系统层面也可能存在漏洞,如果黑客利用其漏洞攻击服务器系统;在获取其权限后,黑客就可以在Web服务器目录里上传Webshell文件。 • • 综上,Webshell能够入侵到系统,一般是由于以下原因: • 通过Web站点漏洞上传Webshell。 • Webshell能够被注入,在很大程度是由于服务器或中间件的安全漏洞。例如,以下常见漏洞都可能被利用来注入Webshell:旧版本的IIS目录解析漏洞、文件名解析漏洞、应用后台暴露和弱口令、Fast-CGI解析漏洞、Apache文件解析漏洞、截断上传、后台数据库备份功能上传、数据库语句上传漏洞等。 • 站点部署时混入了Webshell文件。 • 大量的用户在使用从网上下载的第三方开源代码时,其代码本身已经混入了Webshell的恶意脚本,造成二次入侵或多次入侵。所以在部署前期,如果不是新开发的代码,都需要对代码进行恶意文件扫描查杀,防止上线后被入侵。