1、身份鉴权
1)口令复杂度
涉及用户密码,配置口令复杂度
安全基线说明:
对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、大小写字母和特殊符号中至少2类
pam认证实现:用户登录到系统的时候,经过pam检查。pam是系统的模块
配置方法:
/etc/pam.d/system-auth文件中是否对 pam_cracklib.so 的参数进行了正确设置。
pam_pwquality.so系统默认的是:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
系统默认:
修改为:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 authtok_type=alexmk_linux
参数解释:
difok=3 :新旧密码必须有多少位不同,3表示,必须有3位不同
minlen=8 :密码最少8位
ucredit=-1 :u,up,大写字母,-1(负1)表示最少1位
lcredit=-1 :l,low,小写字母,最少1位
dcredit=-1 :d,digital,数字,最少1位
ocredit= :o,other,除了数字、大小写字母以外的字符
authtok_type=alexmk_linux :提示域名。默认为空
如果没有pam_pwquality,则使用pam_cracklib,例如:
password requisite pam_cracklib.so difok=3 minlen=8 ucredit=1 lcredit=1 dcredit=1
设置后,测试一下:把test用户密码设为1:
[root@m01 ~]#id test
uid=1000(test) gid=1000(test) groups=1000(test),10(wheel)
[root@m01 ~]#echo 1 | passwd test
Changing password for user test.
New alexmk_linux password: BAD PASSWORD: The password is a palindrome
Retype new alexmk_linux password: Password change aborted.
New alexmk_linux password: Password change aborted.
New alexmk_linux password: Password change aborted.
passwd: Have exhausted maximum number of retries for service
[root@m01 ~]#
提示错误。
注意这是限制普通用户的密码,如果要限制root,则在末尾添加enforce_for_root即可。
2)口令认证失败锁定次数
比如远程连接,失败多少次就锁定
配置:在/etc/pam.d/login、/etc/pam.d/ssh文件第一行添加:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=300
用户登录失败3次,则锁定300秒
解锁用户:
pam_tally2 -u 用户名 --reset
例如:
[root@m01 ~]#pam_tally2 -u test --reset
Login Failures Latest failure From
test 9 07/23/23 20:19:40 192.168.10.1
[root@m01 ~]#
如果要锁定root,则加上even_deny_root
3)口令生存周期
定期更新密码
面向新用户:/etc/login.defs文件设置
PASS_MAX_DAYS 90 # 新建用户的密码最长使用天数
PASS_MIN_DAYS 0 # 新建用户的密码最短使用天数
PASS_WARN_AGE 7 # 新建用户的密码到期提前提醒天数
PASS_MIN_LEN 5 # 密码长度最少几位
旧用户(已有的用户):使用passwd命令修改
passwd -x 天数 用户名
查看用户密码过期时间:
passwd -S 用户名
4)配置使用ssh方式远程访问
远程连接只保留ssh方式,禁用telnet
[root@m01 ~]#systemctl is-active sshd
[root@m01 ~]#systemctl is-enabled sshd
[root@m01 ~]#systemctl is-enabled telnet
[root@m01 ~]#systemctl is-active telnet
[root@m01 ~]#
查看telnet端口是否打开
[root@m01 ~]#nmap -p23 192.168.10.61
安装telnet服务:
[root@m01 ~]#yum install telnet-server
[root@m01 ~]#systemctl start telnet.socket
5)配置历史口令
历史密码:设置最近的5次密码不能相同
红帽系列:修改/etc/pam.d/system-auth文件
在password sufficient pam_unix.so这一行的末尾加上:
remember=数字,如:5
如果要限制root:在password部分的开头
password requisite pam_pwhistory.so remember=5 enforce_for_root
该设置通用适用于普通用户,因此,不需要password sufficient pam_unix.so这一行
suse系统:/etc/security/pam_pwcheck文件添加remember=5
6)身份鉴权脚本
a)检查是否配置口令复杂度
/etc/pam.d/system-auth文件的pam_pwquality这行要有:
minlen、ucredit、lcredit、dcredit这4个参数
minlen=右边内容,过滤出密码最少几位
ucredit、lcredit、dcredit 最少几位,不做要求
b)检查口令认证失败锁定次数
/etc/pam.d/sshd、 /etc/pam.d/login两个文件中的首行要有:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=300
c)口令生存时间
新用户:
/etc/login.defs文件PASS_MAX_DAYS 是否小于等于90
旧用户:
先过滤出可以登录的用户,命令解释器:/bin/bash
passwd -S 检查的第5列或/etc/shadow文件的第5列
判断第5列小于等于90
d)历史口令配置
/etc/pam.d/system-auth文件password首行password requisite pam_pwhistory.so
有没配置remember参数
具体脚本:
[root@m01 /server/script/devops-shell]#vim project_secure_check.sh
#0、diy funcs
funcs=/server/script/devops-shell/funcs_diy.sh
. /server/script/devops-shell/funcs_log.sh
logfile=/var/log/project_secure_check.log
if [ -f $funcs ];then
. $funcs
else
echo "$funcs not found"
exit 1
fi
#1、user password
user_password_fuzadu() {
#配置复杂度的参数个数
cnt=`grep -v "#" /etc/pam.d/system-auth | grep 'pam_pwquality' | grep -Eo 'minlen|ucredit|lcredit|dcredit' | wc -l`
if [ $cnt -eq 4 ];then
#密码最少多少位
password_minlen=`grep -v "#" /etc/pam.d/system-auth | grep 'pam_pwquality' | grep -Eo 'minlen=[0-9]+' | cut -d"=" -f2`
greenecho "密码复杂度配置成功"
greenecho "密码最少${password_minlen}位"
log INFO "[密码复杂度配置成功,密码最少${password_minlen}位]" $logfile
else
redecho "密码复杂度未配置"
log ERROR "[密码复杂度未配置]" $logfile
fi
}
user_password_lock() {
#参数个数
cnt=`grep -nv "#" /etc/pam.d/sshd /etc/pam.d/login | grep 'pam_tally2.so' | grep -oE 'onerr|deny|unlock_time' | wc -l
`
if [ $cnt -eq 6 ];then
deny_num=`grep -nv "#" /etc/pam.d/sshd /etc/pam.d/login | grep 'pam_tally2.so' | grep -oE -m1 'deny=[0-9]+' | cut -d'=' -f2`
greenecho "远程连接失败锁定配置成功"
greenecho "连接失败次${deny_num}次,会被锁定"
log INFO "[远程连接失败锁定配置成功,失败次数:${deny_num}]" $logfile
else
redecho "远程连接锁定未配置"
log ERROR "[远程连接失败锁定未配置]" $logfile
fi
}
user_password_expire() {
msg="用户密码过期时间配置"
#新用户
expire=`grep -i ^pass_max_days /etc/login.defs | cut -f2`
if [ $expire -le 90 ];then
greenecho "${msg}成功"
log INFO "[${msg}成功]" $logfile
else
redecho "${msg}失败"
log ERROR "[${msg}失败]" $logfile
fi
#旧用户
#过滤出可以登录的用户
user_lists=`grep '/bin/bash' /etc/passwd | cut -d: -f1`
#检查密码过期日期(第5列为天数)
for user in $user_lists
do
expire_date=`passwd -S $user | awk '{print $5}'`
if [ $expire_date -gt 90 ];then
echo "$user 没有配置密码过期时间"
fi
done
}
user_password_history() {
msg="历史密码是否重复功能"
cnt=`grep -v '#' /etc/pam.d/system-auth | grep 'pam_pwquality' | grep remember | wc -l`
if [ $cnt -eq 1 ];then
greenecho "${msg}成功"
log INFO "[${msg}成功]" $logfile
else
redecho "${msg}失败"
log ERROR "[${msg}失败]" $logfile
fi
}
#main
main() {
user_password_fuzadu
user_password_lock
user_password_expire
user_password_history
}
main
执行效果:
2、访问控制
2.1禁用共享用户
是否有多个人共用Linux账号情况。判断方法:最近2次登录ip
2.2 锁定无关用户
注释或删除或锁定
需要统计哪些虚拟用户没有使用,注释掉即可。
一般情况下,需要锁定的用户有:
ip、nuucp、hpdb、sync、adm、ftp
锁定用户:
passwd -l 用户名
解锁:
passwd -u 用户名
2.3 清除uid为0的非root账户
一些情况下,有些人员(黑客)处于便捷性考虑,创建了uid为0,名字不是root的用户
创建uid为0的非root用户,,用户名:haha:
[root@m01 ~]#useradd -o -u 0 haha
[root@m01 ~]#id haha
uid=0(root) gid=0(root) groups=0(root)
[root@m01 ~]#
本质还是root用户
检查:
[root@m01 ~]#awk -F: '$3==0 && $1!="root"' /etc/passwd
haha:x:0:1001::/home/haha:/bin/bash
[root@m01 ~]#
删除:
[root@m01 ~]#userdel -r haha
2.4 设置umask值
可以在/etc/profile、/etc/bashrc、用户家目录下的.bash_profie、用户家目录下的.profile、用户家目录下的.bashrc等文件中设置umask值。但,具体得看系统的发行版本。
默认的umask:
root:0022
普通用户:0002
/etc/profile文件中的默认umask:
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
推荐安全的umask是:027,则
文件默认权限:666-027=64(-1),如果umask有奇数,则结果所在的位置要加1,所以,结果是640
目录默认权限:777-027=750
如果改成027,有可能导致某些服务异常。非必要,不要改
2.5 重要目录与文件的权限
一些重要目录、文件:
[root@m01 ~]#ls -ld /etc/ 权限:755
[root@m01 ~]#ls -ld /etc/rc.d/init.d/ 权限:755
[root@m01 ~]#ls -ld /tmp/ 权限:1777
[root@m01 ~]#ls -ld /etc/inetd.conf
[root@m01 ~]#ls -ld /etc/passwd 权限:644
[root@m01 ~]#ls -ld /etc/shadow 权限:000
[root@m01 ~]#ls -ld /etc/group 权限:644
[root@m01 ~]#ls -ld /etc/security/ 权限:755
[root@m01 ~]#ls -ld /etc/services 权限:644
[root@m01 ~]#ls -ld /etc/rc*.d 权限:777,但/etc/rc.d为755
推荐使用aide监控
2.6 控制未授权的suid和sgid
suid:一般用于命令,普通用户可以运行这个命令具有这个命令所有者(root)的权限
sgid:一般用于命令,普通用户可以运行这个命令具有这个命令用户组(root)的权限
检查:
[root@m01 ~]#find / -perm /+s 2>/dev/null | xargs ls -ld --color
[root@m01 ~]#find / -perm /+s 2>/dev/null | xargs ls -ld --color | wc -l
30
[root@m01 ~]#
默认一般是30个。
/+s:所有者、用户组任意位置有s权限
2.6 控制任何人都有写权限的目录
主要的目录其他人的权限:rwx
检查:
[root@m01 ~]#find / -type d -perm /o=w | xargs ls -ld
2.7 控制任何人都有写权限的文件
文件的其他人权限:rw
检查命令:
[root@m01 ~]#find / -type f -perm /o=w 2>/dev/null | xargs ls -ld 2>/dev/null | egrep -v '/proc/|/sys/'
其中,/sys/、/proc/是虚拟目录,可以排除
结果应该是0
2.8 删除没有属主的文件
可能是从其他地方下载的文件,所有者、用户组可能不是名字而是数字(uid、gid)
检查:
[root@m01 ~]#find / -type f \( -nouser -o -nogroup \) | xargs ls -ld
结果应该是0
2.9 控制异常或隐藏文件、目录
查找:
[root@m01 ~]#find / -type d -name ".*" | xargs ls -ld | wc -l
13
[root@m01 ~]#find / -type f -name ".*" | xargs ls -ld | wc -l
1095
[root@m01 ~]#
安装完成系统并部署好服务后,检查并获取一个数值,然后下次检查对比数值是否变化
2.10 禁止ctrl+alt_del
禁止重启按键,查看:
[root@m01 ~]#systemctl list-unit-files | grep ctrl
ctrl-alt-del.target disabled
[root@m01 ~]#
默认没开启。如果开启,则
在 "/etc/inittab" 文件中注释掉下面这行(使用#)
ca::ctrlaltdel:/sbin/shutdown –t3 –r now
改为:
#ca::ctrlaltdel:/sbin/shutdown –t3 –r now
输入如下命令使改动生效: #/sbin/init q
2.11 访问控制脚本
锁定虚拟用户
uid=0,用户名不是root
suid、sgid数量
任何人都有读写权限的文件和目录
没有用户组或所有者的文件
[root@m01 /server/script/devops-shell]#vim access_ctrl.sh
#1、锁定虚拟用户
access_ctrl_lockuser() {
msg="锁定一些不使用的虚拟用户"
user_list="ip|nuucp|hpdb|sync|adm|ft"
cnt=`egrep -v '#' /etc/passwd | egrep "${user_list}" | wc -l`
if [ $cnt -eq 0 ];then
echo "${msg} 成功"
else
echo "${msg} 失败"
echo "未锁定的虚拟用户数量:${cnt}"
fi
}
#2、uid=0,用户名不是root
access_ctrl_notroot() {
msg="检查uid为0,用户名不是root的用户"
cnt=`awk -F: '$3==0 && $1!="root" {print $1}' /etc/passwd | wc -l`
if [ $cnt -eq 0 ];then
echo "${msg} 成功"
else
echo "${msg} 失败"
echo "uid为0,用户名不是root的数量:${cnt}"
fi
}
#3、suid、sgid数量
access_ctrl_suidsgid() {
msg="检查系统是否有新增的suid、sgid"
now=30
cnt=`find / -perm /+s 2>/dev/null | xargs ls -ld --color | wc -l`
if [ $cnt -gt $now ];then
echo "${msg} 成功"
else
echo "${msg} 失败"
echo "检查系统有新增的suid、sgid文件"
fi
}
#4、任何人都有读写权限的文件和目录
access_ctrl_dir() {
msg="检查系统是否有新增的所有人都有读写权限的目录"
now=9
cnt=`find / -type d -perm /o=w | xargs ls -ld | wc -l`
if [ $cnt -lt $now ];then
echo "${msg} 成功"
else
echo "${msg} 失败"
echo "检查系统有新增的所有人都有读写权限的目录,数量:${cnt}"
fi
}
access_ctrl_file() {
msg="检查系统是否有新增的所有人都有读写权限的文件"
now=0
cnt=`find / -type f -perm /o=w 2>/dev/null | xargs ls -ld 2>/dev/null | egrep -v '/proc/|/sys/' | wc -l`
if [ $cnt -eq $now ];then
echo "${msg} 成功"
else
echo "${msg} 失败"
echo "检查系统有新增的所有人都有读写权限的文件,数量:${cnt}"
fi
}
#5、检查没有属主的文件
access_ctrl_nousergroup() {
msg="检查系统是否有没有属主的文件"
now=0
cnt=`find / -type f \( -nouser -o -nogroup \) 2>/dev/null | xargs ls -ld | wc -l`
if [ $cnt -gt $now ];then
echo "${msg} 成功"
else
echo "${msg} 失败"
echo "检查系统有有属主的文件,数量:${cnt}"
fi
}
access_ctrl() {
access_ctrl_lockuser
access_ctrl_dir
access_ctrl_file
access_ctrl_notroot
access_ctrl_suidsgid
access_ctrl_nousergroup
}
access_ctrl
3、安全审计
记录用户每时每刻的操作
未来推荐交给vpn+堡垒机
3.1 PROMPT_COMMAND命令实现操作记录功能
环境变量:
作用:记录写的命令会在用户执行命令后运行
步骤:
修改环境变量内容,history 1写入到某个文件中
例如:
[root@m01 ~]#export PROMPT_COMMAND="history 1 >> /tmp/audi.log"
执行一些命令后,查看该文件
[root@m01 ~]#ls
[root@m01 ~]#cd /server/script/devops-shell/
[root@m01 /server/script/devops-shell]#cd
[root@m01 ~]#cat /tmp/audi.log
1030 export PROMPT_COMMAND="history 1 >> /tmp/audi.log"
1031 ls
1032 cd /server/script/devops-shell/
1033 cd
[root@m01 ~]#
history 1:1条历史命令
要记录更详细的信息,则通过脚本实现:
[root@m01 /server/script/devops-shell]#vim audit.sh
cmd=`history 1`
user=`whoami`
time=`date +%F_%T`
logfile=/tmp/audit-`whoami`.log
echo "[$time] [$user] [$cmd]" >>$logfile
然后PROMPT_COMMAND加载该脚本:
[root@m01 ~]#export PROMPT_COMMAND=". /server/script/devops-shell/audit.sh"
执行命令,查看/tmp/audit.log文件:
[root@m01 ~]#id
uid=0(root) gid=0(root) groups=0(root)
[root@m01 ~]#whoami
root
[root@m01 ~]#cat /tmp/audit.log
[2023-07-25_22:57:41] [root] [ 1040 export PROMPT_COMMAND=". /server/script/devops-shell/audit.sh"]
[2023-07-25_22:57:43] [root] [ 1041 id]
[2023-07-25_22:57:46] [root] [ 1042 whoami]
[root@m01 ~]#
永久生效:
把export PROMPT_COMMAND=". /server/script/devops-shell/audit.sh"命令写入/etc/profile文件的末尾
存在的问题:如果用户把/tmp/audit.log删除了,就无法查看了,怎么做到用户只能追加,不能删除该文件呢?
3.2 将操作日志实时发送到备份服务器,防止本地的操作日志被删除
3.3 配置认证日志
[root@m01 ~]#cat /etc/rsyslog.conf
authpriv.* /var/log/secure
3.4 ntp时间同步配置
为了保证日志记录时间的准确性,建议配置NTP服务器,并与NTP服务器时间同步
以 root 账户登录 Linux 系统
在/etc/ntp.conf 文件中配置时间服务器。
# vi /etc/ntp.conf
在配置文件末尾可见如下行:
server 127.0.0.1 local clock
fudge 127.0.0.1 stratum 10
在如上两行下添加 NTP 服务器 IP
server x.x.x.x minpoll 4 maxpoll 4
保存退出后,执行开机自启动命令。
# chkconfig xntpd on
利用 date 命令查看系统当前时间,与监控终端时间比较,若相差超过 1000s,
利用 ntpdate 命令与时间服务器强制同步。
# ntpdate x.x.x.x
配置完成后,启动 ntp 服务。
# /etc/init.d/xntpd start
3.5 配置远程日志服务器
建议系统配置远程日志功能,将需要重点关注的日志内容传输到日志服务器进行备份
4、安全环境变量
1)TMOUT
TMOUT:用户不进行任何操作,自动退出,单位是:秒
export TMOUT=3
2)HIST开头的环境变量
这些环境变量与历史命令有关
HISTSIZE:历史history记录最近多少条命令,默认1000条
HISTFILESIZE:历史命令history文件记录多少(家目录下的.bash_history),一般与HISTSIZE一致
HISTCONTROL:控制history命令何时记录,ignorespace命令以空格开头的就不会被记录。默认是ignoredups,去除重复命令。ignoreboth:结合ignoredups和ignorespace的功能
HISTFILE:指定历史命令的文件路径和文件名,默认是当前用户家目录下的.bash_history
检查:
# 使用env命令检查上述环境变量,比如:
[root@m01 ~]#env | egrep "HISTSIZE|HISTFILE"
HISTSIZE=1000
[root@m01 ~]#
3)限制root用户远程登录
在服务端的/etc/ssh/sshd_config 文件中配置:
PermitRootLogin no #注意,配置前要配置好普通用户+sudo
Port XX #修改默认的22端口
PasswordAuthentication no //yes改为no
ChallengeResponseAuthentication no //yes改为no
RSAAuthentication yes //去掉前面的注释
PubkeyAuthentication yes //去掉前面的注释
AuthorizedKeysFile .ssh/authorized_keys //去掉前面的注释
禁止适用密码登录:
执行:客户端ssh-keygen命令,生成客户端秘钥,把id_rsa.pub公钥发送给服务端(ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@ip),默认是22端口,如果修改了端口,则:
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@ip -p 端口
-i:指定公钥文件,默认是:~/.ssh/id_rsa.pub,如果生成密钥的时候适用默认的~/.ssh/id_rsa.pub,则可以省略-i选项。写成:ssh-copy-id 用户名@ip -p 端口
如果是Windows使用Xshell,则:点击工具–>新建用户秘钥生成向导,生成公钥
用户秘钥生成:
点击下一步:
再点击下一步:
名称:可以根据实际填写,密码:可以不用设置,但为了安全,建议设置。
点击下一步:
点击:“是”:
点击“保存为文件”:
文件名:id_rsa_2048.pub,这个就是公钥。
最后,点击完成:
id_rsa_2048:这个就是私钥,可以导出来。在别的电脑,导入。
生成的秘钥对:id_rsa_2048.pub(公钥)、id_rsa_2048(私钥)
把公钥内容复制到服务端的用户家目录的.ssh/authorized_keys文件中即可。如果该文件不存在,自行创即可(要注意目录、文件的权限,.ssh目录700,文件600权限)。
然后Xshell登录的时候使用秘钥登录:
如果创建秘钥的时候没有设置密码,则密码不需要填写。
6、安全辅助工具
aide:增强版本的MD5对比工具,对比文件属性信息是否变化。yum安装即可
chkrootkit:rootkit检查工具,系统文件或命令是否改变。二进制安装。
clamav:扫描系统是否有病毒,任何地方。yum安装。
hm河马:webshell网站后门(扫描站点目录)。二进制安装
6.1 安装
安装
[root@m01 ~]#tar xf project-secure-aide-clamav-iptables-rpms.tar.gz
[root@m01 ~]#cd project-secure-rpms/
[root@m01 ~/project-secure-rpms]#yum localinstall *.rpm
6.2 aide
1)配置
配置文件:/etc/aide.conf
分两部分:1、定义格式(监控哪些指标MD5,属性信息指标)。2、用于指定监控哪些文件或目录+格式
定义监控格式:
# These are the default rules.
#
#p: permissions 权限
#i: inode: inode
#n: number of links 硬连接数
#u: user 用户
#g: group 用户组
#s: size 大小
#b: block count block数量
#m: mtime 修改时间
#a: atime 访问时间
#c: ctime 文件属性变化时间
#S: check for growing size
#acl: Access Control Lists
#selinux SELinux security context
#xattrs: Extended file attributes
#md5: md5 checksum
#sha1: sha1 checksum
#sha256: sha256 checksum
#sha512: sha512 checksum
#rmd160: rmd160 checksum
#系统定义了一些集合(监控指标的合集):
FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
NORMAL = sha256
指定监控哪些文件或目录+格式:
格式:文件或目录 格式
例如:
/bin/ FIPSR
/sbin/ FIPSR
/usr/local/bin/ FIPSR
/usr/local/sbin/ FIPSR
/etc/ FIPSR
!/usr/local/sinb/xxx 表示排除xxx
2)使用
第一次使用,需要初始化:
[root@m01 ~]#aide --init
AIDE, version 0.15.1
### AIDE database at /var/lib/aide/aide.db.new.gz initialized.
[root@m01 ~]#
对比:
[root@m01 ~]#mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
#检查
[root@m01 ~]#aide --check
AIDE, version 0.15.1
### All files match AIDE database. Looks okay!
[root@m01 ~]#
#配置或代码升级或更新
[root@m01 ~]#aide --update
[root@m01 ~]#mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
6.3 chkrootkit
rootkit 修改感染了系统的命令
软件组成:
shell脚本
c语言代码,需要执行make编译
1)安装
#安装依赖
[root@m01 ~]#tar xf chkrootkit-rpms.tar.gz
[root@m01 ~]#cd chkrootkit-rpms/
[root@m01 ~/chkrootkit-rpms]#yum localinstall *.rpm
#解压命令
[root@m01 ~]#tar xf chkrootkit.tar.gz
[root@m01 ~]#cd chkrootkit-0.57/
#执行make编译
[root@m01 ~/chkrootkit-0.57]#make
2)执行
[root@m01 ~/chkrootkit-0.57]#./chkrootkit
#或者
[root@m01 ~/chkrootkit-0.57]#./chkrootkit | egrep -v 'not|nothing'
6.4 clamav
可以通过yum安装
更新:
#1、开始定时更新
[root@m01 ~]#systemctl start clamav-freshclam.service
使用:clamscan 选项 目录
[root@m01 ~]#clamscan -ri /tmp/
Infected files: 0 被感染的文件个数
-r:扫描目录
-i:只有异常的时候才提示
6.5 hm河马
专门扫描webshell(网站后门),扫描站点目录
Linux版使用教程:https://www.shellpub.com/doc/hm_linux_usage.html
1)安装
#官网下载后,解压
[root@m01 ~]#mkdir -p /app/tools/hm
[root@m01 ~]#tar xf hm-linux-amd64.tgz -C /app/tools/hm
[root@m01 ~]#cd /app/tools/hm/
2)使用
普通扫描:
./hm scan 站点目录
深度扫描
./hm deepscan 站点目录