(目录)
一、密码策略的强化
authconfig --passminlen=12 --passminclass=4 --passmaxrepeat=2 --update
密码策略的修改将保存在/etc/security/pwquality.conf中。
二、用户密码管理及生成工具
1. 密码管理
- KeePassXC(电脑端)—— 推荐 下载地址:https://keepassxc.org/download/
- KeePassA(安卓手机端) 官网:https://github.com/AriaLyy/KeepassA
- KeePass(电脑端) 下载地址:https://keepass.info/download.html
2. 密码生成
# 使用openssl
openssl rand -base64 12
# 使用pwgen
yum install -y pwgen
pwgen -c -n -y 12 1
3. 弱密码检测
- John the ripper 官网:https://www.openwall.com/john
- Hydra 官网:https://github.com/vanhauser-thc/thc-hydra
- kscan 官网:https://github.com/lcvvvv/kscan
- Aopo 官网:https://github.com/ExpLangcn/Aopo
三、用户特权的限制
1. 限制su -
限制只有wheel组的用户可以su -切换为root用户。 vim /etc/pam.d/su
auth required pam_wheel.so group=wheel
这样就只有wheel组的用户才可以切换为root。而其他组的用户即使知道root的密码,也无法切换为root。 接下来可以将普通用户加入wheel组:
useradd cerana
# 为用户添加指定组wheel(附加组)
usermod -a -G wheel cerana
# 查看用户组
id cerana
# 或者
groups cerana
剥夺用户的wheel组:
# 为用户指定组(是且仅是用户组)
usermod -G cerana cerana
2. 配置sudo
visudo
# 对于navy组
%navy ALL=(ALL) /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
# 对于cerana用户
cerana ALL=(ALL) /usr/local/bin/mod.sh
四、关键日志的加固
在/etc/skel/.bashrc和~/.bashrc中添加
readonly HISTFILE
readonly HISTFILESIZE
readonly HISTSIZE
readonly HISTCMD
readonly HISTCONTROL
readonly HISTIGNORE
在/etc/bashrc中添加
HISTTIMEFORMAT="[%Y%m%d %T] "
五、监控SUID和SGID的可执行文件
1. 查找具有SUID和SGID的可执行文件
find / -perm -u=s -type f
find / -perm -g=s -type f
2. 使用sXid监控具有SUID和SGID的可执行文件
下载:http://linukz.org/sxid.shtml 官网:https://github.com/taem/sxid
# 下载安装
# 需要epel安装/usr/bin/mail程序
yum install -y s-nail
wget http://linukz.org/download/sxid-4.20130802.tar.gz
tar xzvf sxid-4.20130802.tar.gz
cd sxid-4.20130802/
./configure
make install
将生成可执行文件/usr/local/bin/sxid
# 配置sXid
cp examples/sxid.conf /usr/local/etc/
vim /usr/local/etc/sxid.conf
================================================================
# Who to send reports to
EMAIL = "root"
# 添加cron定时任务
crontab -e -u root
crontab -l
30 4 * * * /usr/local/bin/sxid
# 先为当前目录及其所有子目录建立一个快照
sxid -k
# 做些改变
chmod u+s test
chmod g+s adir/
# 再做检查
sxid -k
# 查看邮件
mail
六、开源WAF部署——ModSecurity
官网:
- https://github.com/SpiderLabs/ModSecurity
- http://www.modsecurity.cn/
最新结论(20220114):请勿在Nginx使用ModSecurity V2版本,V2版本与Nginx存在兼容问题,且目前官方团队明确表示不会进行修复。
# 安装基础软件包
yum install -y httpd httpd-devel pcre pcre-devel libxml2-devel gcc lua-devel yajl-devel ssdeep-devel curl-devel
# 编译Modsecurity
cd /usr/local
tar -zxvf modsecurity-2.9.3.tar.gz
cd modsecurity-2.9.3
./configure --enable-standalone-module --disable-mlogc
make
# 安装Nginx
cd /usr/local
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xvzf nginx-1.16.1.tar.gz
cd /usr/local/nginx-1.16.1
./configure --add-module=/usr/local/modsecurity-2.9.3/nginx/modsecurity/ --prefix=/usr/local/nginx
make
make install
# 测试效果
/usr/local/nginx/sbin/nginx
http://服务器IP/?param=%22%3E%3Cscript%3Ealert(1);%3C/script%3E
# 创建用于存放配置文件的文件夹,并复制相关配置文件到目录中
mkdir -p /usr/local/nginx/conf/modsecurity/
cp /usr/local/modsecurity-2.9.3/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp /usr/local/modsecurity-2.9.3/unicode.mapping /usr/local/nginx/conf/modsecurity/unicode.mapping
下载规则文件压缩包,解压后复制crs-setup.conf.example到/usr/local/nginx/conf/modsecurity/下并重命名为crs-setup.conf;
复制rules文件夹到/usr/local/nginx/conf/modsecurity/下,同时修改REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example与RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example两个文件的文件名,将".example"删除,可将自己写的规则放置于此两个文件中;
编辑nginx.conf 在http或server节点中添加以下内容(在http节点添加表示全局配置,在server节点添加表示为指定网站配置):
ModSecurityEnabled on;
ModSecurityConfig modsecurity/modsecurity.conf;
编辑modsecurity.conf SecRuleEngine DetectionOnly改为SecRuleEngine On 同时在文件末尾添加以下内容:
Include crs-setup.conf
Include rules/*.conf
重新加载Nginx测试效果
/usr/local/nginx/sbin/nginx -s reload
Ubuntu的配置https://zhuanlan.zhihu.com/p/80866123
七、文件备份
- wput https://wput.sourceforge.net/
wput /path/to/yourfiles.tgz ftp://username:password@x.x.x.x/path/
- rsync
#!/bin/bash
CURDATE=$(date +%Y-%m-%d) # 或者$(date +%F)
# --delete允许同步源目两个目录树(在目标中删除源中已删除的文件)
# 默认源的更新会覆盖目标中的老内容,-b参数使原本目标中应该被更新覆盖的内容,更名存放,而不是被覆盖。
# 本来应更名存放的内容将被移入--backup-dir指定的目录,且不再更名,保持原貌。这个参数适合增量备份,因为它将保存存在差异的文件。
# --backup-dir指定目录移入原文件发生在目标文件将被新版本源文件更新的时候(When it's about to overwrite a file)。
# /target可以是一个NFS文件系统或其他外部文件系统。
# 注意:/src是包括src目录本身的,而/src/不包含src目录本身(理解为被“/”排除在外了)。
mkdir -p /target/logs
rsync -avb --delete --backup-dir=/target/origin/$CURDATE /src /target > /target/logs/$CURDATE-bak.log 2>&1
# 备份后的目录对比
src
├── a1
│ ├── a2
│ └── abc
├── b1
├── bac
├── ccc
└── ddd
target
├── origin
│ └── 2021-02-20
│ └── src <----更新前,2021-02-20版本的原文件(这些文件都会被overwrite/update)
│ ├── a1
│ │ └── abc
│ ├── bac
│ └── ddd
├── logs
│ └── 2021-02-20-bak.log <----备份当天的rsync日志
└── src <---- 最新版本
├── a1
│ ├── a2
│ └── abc
├── b1
├── bac
├── ccc
└── ddd
- 加/解密备份文件
# 加密
gpg -c anaconda-ks.cfg
# 解密
gpg anaconda-ks.cfg.gpg
# 加密
openssl enc -e -des-ede3-cbc -in backup.log -out backup.log.enc
# 解密
openssl enc -d -des-ede3-cbc -in backup.log.enc -out backup.log
八、蜜罐
可以使用Kippo搭建一个SSH蜜罐。 官网:https://github.com/desaster/kippo
部署
useradd -d /kippo kippo
yum install -y gcc python-devel python-pip
pip install twisted==15.2.0
pip install pycrypto
pip install pyasn1
su - kippo
git clone https://github.com/desaster/kippo.git
cd kippo/
cp kippo.cfg.dist kippo.cfg
./start.sh
# chmod +x stop.sh
# ./stop.sh
# 查看攻击登陆日志
tail -f /kippo/kippo/log
# 回放命令行攻击场景
/kippo/kippo/utils/playlog.py -m 1 /kippo/kippo/log/tty/20221112-223157-2762.log
参考:https://www.cnblogs.com/Eleven-Liu/p/9204244.html TCP端口重定向程序rinetd:https://github.com/samhocevar/rinetd
日志管理软件Splunk:https://www.cnblogs.com/you-men/p/14918579.html
tar xzvf splunk-6.3.2-aaff59bb082c-Linux-x86_64.tgz
mv splunk/usr/local/
cd /usr/local/splunk/bin/
/splunk enable boot-start
service splunk start
service iptables stop
访问http://lP:8000
开源替代Graylog Open Source:https://www.graylog.org/
其中ES存储日志,MongoDB存储配置。
使用默认设置:GELF(Graylog Extended Log Format)
Title给UDP。 向UDP端口12201发送日志即可。
修改密码
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d 'n' | sha256sum | cut -d" " -f1
修改docker-compose.yml(docker-compose up -d)
时区设置
可以使用的java logback插件:https://github.com/osiegmar/logback-gelf
九、检测Rootkit
1. Chkrootkit
官网:https://github.com/Magentron/chkrootkit
git clone https://github.com/Magentron/chkrootkit.git
cd chkrootkit/
yum install -y glibc-static
make sense
./chkrootkit
2. Rkhunter
wget https://sourceforge.net/projects/rkhunter/files/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz/download -O rkhunter-1.4.6.tar.gz --no-check-certificate
tar xzvf rkhunter-1.4.6.tar.gz
cd rkhunter-1.4.6/
./installer.sh --install
/usr/local/bin/rkhunter -c
注意回显
Rootkit checks...
Rootkits checked : 496
Possible rootkits: 0 <==注意看这里
查看检查日志 /var/log/rkhunter.log
3. LinuxCheck
git clone https://github.com/al0ne/LinuxCheck.git
cd LinuxCheck/
./LinuxCheck.sh
查看当前目录下的log文件查看结果
十、病毒木马扫描
1. ClamAV
yum install -y clamav
# 升级病毒库
freshclam
# 指定目录扫描
clamscan -r /var/www/html
2. LMD检查Webshell及恶意软件
wget https://www.rfxn.com/downloads/maldetect-current.tar.gz
tar xzf maldetect-current.tar.gz
cd maldetect-1.6.4/
./install.sh
# 扫描(如果可以将使用clamav scanner engine)
maldet --scan-all /var/www/html
3. 在线病毒木马检测
- https://www.virustotal.com/gui/home/upload
- https://www.virscan.org/
- https://virusscan.jotti.org/