Haituny
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

Linux加固
1. 内核和发行版本
uname -a 查看内核
cat /etc/os-release 查看发行版本
2. core dump加固
突然断电的情况下,系统会把当时内存里的信息记录下来,这个过程就是core dump。
cat /etc/security/limits.conf
看是否存在:
soft core 0
hard core 0
加固方法:
编辑/etc/security/limits.conf,注释掉的话,要打开。没有的话要添加。
3. 历史命令加固
.history命令建议只保留200。
cat /etc/profile | grep HISTSIZE
查看HISTSIZE值是否是200。
加固方法:
编辑/etc/profile,改为200。
4. umask值
umask值与chmod的值有关系,正好是正常权限值的补码。
加固:
修改umask值为022即可。
5. 账号密码以及用户登录加固
1.空密码用户
awk -F : '$2=="!!" {print $1}' /etc/shadow 查看空密码的用户
加固:
usermod -L user 锁定账号
usermod -U user 解锁用户
userdel user 删除用户
userdel -r user 删除用户以及用户目录,-r递归
2.特权用户
cat /etc/passwd | grep "0:0" 查看uid为0,gid为0的特权用户。
awk -F : '$3==0 {print $1}' /etc/passwd 查看uid为0的特权用户
加固:
先编辑/etc/passwd文件,将特权用户的uid改为1000以上的用户id,再进行删除。
3.密码安全加固
(1) 最小长度大于等于8。
cat /etc/login.defs | grep MIN_LEN
加固:
vi /etc/login.defs
改为大于等于8即可。
注意:/etc/login.defs里的设置对root不适用。
(2) 密码最长使用时间不超过90天。
cat /etc/login\.defs \| grep MAX\_DAYS
加固:
vi /etc/login.defs
改为小于90即可。
(3)密码认证失败次数小于等于5。
cat /etc/pam.d/login | grep deny
加固:
vim /etc/pam.d/login加上:
auth required pam_tally2.so deny=5 lock_time=300 even_deny_root root_unlock_time=300
#deny=5 尝试次数为5
#lock_time=300 锁定300秒
#even_deny_root root_unlock_time=300 对root有效,root锁定后,300秒自动解锁。
(4) 密码复杂程度。
cat /etc/etc/pam.d/system-auth看有没有相应的配置
加固:
替换为:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
#difok=1 新旧密码最少不同字符1个
#minlen=8 最短长度8
#ucredit=-1 最少1个大写
#lcredit=-1 最少一个小写
#dcredit=-1 最少一个数字
(5) 密码到期提醒大于等于3。
cat /etc/login.defs | grep WARN_AGE
加固:
修改为大于等于3即可。
(6) 登录超时加固。
cat /etc/profile | grep TMOUT 看是否存在设置
加固:
在/etc/profile最后加上:
export TMOUT=100
然后重启ssh:systemctl restart sshd.service
(7) 检查是否启用ssh2。
cat /etc/ssh/sshd\_config
或者
cat /etc/ssh2/ssh2d_config
看是否存在Protocol 2
加固:
在/etc/ssh/sshd_config或者/etc/ssh2/ssh2d_config中加入Protocol 2。
(8) 禁止root远程登陆。
同上,将/etc/ssh/sshd\_config或者/etc/ssh2/ssh2d\_config里的PermitRootLogin yes改为no
(9) /etc/hosts.allow和/etc/hosts.deny的配置加固
指定白名单IP和IP段可以ssh登录。默认情况下是允许所有登录。
加固:
在/etc/hosts.allow加入:
sshd:192.168.137.131
或者IP段:
sshd:192.168.137.
同时/etc/hosts.deny需要加入:
sshd:all
注意:系统会先匹配/etc/hosts.allow然后再去匹配/etc/hosts.deny。对ssh的操作都需要重启sshd。
6. 日志审计加固
1.开启日志功能。
ps aux | grep syslogd 看是否开启
加固:
systemctl start syslog
2.开启审计功能
ps aux | grep auditd 看是否开启审计功能
加固:
systemctl start auditd
3.wtmp文件是否存在。
last -f /var/log/wtmp
注意:存在既符合标准。因为wtmp是数据流文件,只能用last来查看。
7. 危险服务加固
1.talk服务
ps aux | grep talk
和
ps aux | grep ntalk
注意:用grep的时候本身就会存在一个ps服务,看准是不是。
加固:
如果存在,则需要关闭talk服务。
kill -9 taklPID
systemctl disable <talkserver>
2.sendmail服务,同上。
3.ftp服务,同上。
4.telnet服务,同上。
Windows加固
1. 查看版本
msinfo32
dxdiag
ver //命令查看版本。
2. Administrator和Guest账号加固
1.禁用Administrator用户
gpedit.msc 打开组策略管理器
禁用Administrator用户
注意:当只有一个超级管理员账号时,是禁用不掉的,可以创建一个超级管理员用户,然后去禁用Administrator。
net user /add user1 123456 #先创建一个用户
net localgroup /add Administrators user1 #将创建的用户加入Administrators组中
2.将Administrator用户重命名
改为不起眼的用户名即可。
3. 停用Guest账号
4. Guest用户重命名
3. 用户和密码设置加固
密码最小长度为8。
启用复杂性。
密码最短使用期限设为0。注意:最短使用期限是一旦设置密码之后,必须要使用多少天,因此有一定风险。
密码最长使用期限设为90。注意:最常使用期限可以限制黑客掌握账号的期限,因此不宜太久。
强制密码历史为5。即新密码不能与近5次的密码相同。
密码锁定阈值设置为5或者10。锁定时间大于等于30分钟。
密码过期之前提示。设置为5天。
不显示最后登录的用户名。
4. 关键权限加固
检查“关闭系统”权限。只保留Administrators组。
2.“取得文件或其它对象的所有权”检查,只保留Administrators组
3. “从远程网络访问此计算机”检查,只指定特定用户可以访问。可以专门建立一个用户。
4. 启用网络服务超时断开连接。
5. 本地账户的共享和安全模型。改为经典。
6. 不允许SAM账号的匿名枚举。
7. 空密码用户只允许键盘登录。
8. 启用安全桌面。当有权限提升的操纵时,请求会转至安全桌面,相对而言可以防止一些输入输出欺骗。比如弹窗欺骗。
5. 系统日志加固
计算机-->右键管理
1.日志存储大小为20Mb。
2.安全审核策略全部打开。
6. 信息保护加固
1.开启内存镜像转储。
2.关闭不需要的共享盘。注意,只有$IPC是不需要关的,因为所有共享都需要用到$IPC。
计算机-->右键管理
3. 禁止所有插入的驱动器自动播放。
4. 禁止远程注册表。
services.msc打开。
7. 打补丁
根据MS漏洞编号或者CVE漏洞编号都可以找到对应的HotfixID。
1.根据MS漏洞编号可以使用:https://learn.microsoft.com/zh-cn/security-updates/securitybulletins/securitybulletins
即可找到KB编号。
2.根据CVE漏洞编号可以使用:https://cve.mitre.org/cve/search_cve_list.html
即可找到KB编号。
3.找到对应的KB编号之后去:https://catalog.update.microsoft.com/Home.aspx根据KB编号搜索对应的系统补丁,然后安装即可。
Others
systeminfo 看计算机信息。
1. wmic os get ServicePackMajorVersion #命令查看系统的服务补丁包.(win10之前的版本)
2. wmic qfe get hotfixid,InstalledOn #命令可以查看补丁修补情况
如:
C:\Users\Haituny>wmic qfe get hotfixid,InstalledOn
HotFixID InstalledOn
KB5020872 12/16/2022
KB4562830 4/23/2021
KB4577586 4/27/2021
KB4580325 4/26/2021
KB4589212 4/27/2021
3. hostname 查看主机名
4. netstat -ano 查看端口情况
5. route print 命令查看路由表
8. gpedit.msc 命令进行ip安全策略管理,封禁要拦截的ip和端口。
9. compmgmt.msc 命令进行用户管理,在管理员CMD里net user test /del 删除test用户。(注意要管理员运行CMD),net user test /active:no 将test用户锁定。
10. secpol.msc 命令管理密码复杂度。如果更改复杂度的话,需要敲gpupdate /force 是配置强制立马生效。
Apache加固
查看配置。
1. apache账号加固
1.账号的shell不允许登录。
cat /etc/passwd | grep apache 看是否为nologin
加固:
chsh -s /sbin/nologin apache
2.确保apache用户被锁定。
passwd -S apache 看是否被锁定
加固:
usermod -L apache
2. apache模块加固
1.禁用digest和basic模块。
httpd -M | grep 'auth_' 查看是否存在digest和basic模块
加固:
vim /etc/httpd/conf.modules.d/00-base.conf
将digest和basic模块注释。
然后重启httpd服务:systemctl restart httpd
2.禁止Userdir模块
Apache 的 Userdir 模块是用于允许用户在其个人目录中托管网页内容的 Apache 模块。有一定风险,不需要的情况下需要禁用掉。
加固:
vim /etc/httpd/conf.modules.d/00-base.conf
注释掉UserDir模块
然后重启httpd服务:systemctl restart httpd
3.禁用autoindex模块,同上。
autoindex模块会将没有默认页面的目录和文件直接以列表的方式展示,存在信息泄露的风险。
4. 禁用status模块,同上。
status模块将服务器状态以html页面的形式展示给管理员。
5. 禁用info模块,同上。
info模块也可以提供很多信息,以及加载的模块。
6. 开启日志模块
httpd -M | grep log_conf 查看是否开启日志功能
加固:
vim /etc/httpd/conf.modules.d/00-base.conf
加入:
LoadModule log_config_module modules/mod_log_config.so
3. 最小化功能
1.限制请求方法。只允许GET、POST、HEAD、OPTIONS。
加固:
vim /etc/httpd/conf/httpd.conf
除/目录以外的其他目录都要注释掉Require all denied,并加上:
<LimitExcept GET POST OPTIONS>
Require all granted
</LimitExcept>
然后重启httpd。
2. 禁用TRACE请求。
攻击者可以使用TRACE请求获取前端信息,也可以使用TRACE请求进行XSS攻击。
加固:
vim /etc/httpd/conf/httpd.conf
traceEnable on 改为off
3.禁用旧的http协议版本。
很多恶意扫描器和工具会发送旧的http协议给服务器,以获取服务器信息。
加固:
vim /etc/httpd/conf/httpd.conf
加上:
RewriteEngine on
RewriteCond %{THE_REQUEST} !HTTP/1\.1$
RewriteRule .* - [F]
重启httpd。
4.限制访问不恰当的文件扩展名。
加固:
vim /etc/httpd/conf/httpd.conf
加入:
<FilesMatch "^.*$">
Require all denied
</FilesMatch>
<FilesMatch "^.*\.(css|html?|js|pdf|txt|xml|xsl|gif|ico|jpe?g|png)$">
Require all granted
</FilesMatch>
重启httpd。
注意:上面的文件类型是白名单,按需要可以进行增删。
4. 防止信息泄露
1.正确设置ServerToken。防止服务器返回apache版本和php版本。
vim /etc/httpd/conf/httpd.conf
加入:
ServerTokens Prod
重启httpd。
2.禁用服务器签名。apache会在错误页面的页脚进行签名,会暴露版本信息。
加固:
vim /etc/httpd/conf/httpd.conf
加入:
ServerSignature off
重启httpd。
5. 日志加固
1.正确配置errot日志。
LogLevel指令用于配置错误日志级别,由轻到重分为emerg,alert,crit,error,warn,notice,info,syslog。默认是warn,需要配置到notice,核心模块需要配置到info。
加固:
vim /etc/httpd/conf/httpd.conf
注释LogLevel warn,加入:
LogLevel notice core:info
2.正确配置access日志。
配置access日志,可以记录攻击者的操作,并且判断是否攻击成功。
加固:
vim /etc/httpd/conf/httpd.conf
加入:
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User- agent}i\""
%h: 客户端的 IP 地址。
%l: 标识客户端的远程登录名(如果有的话),一般情况下会被横线(-)替代。
%u: 请求的用户标识(如果有的话),同样会被横线替代。
%t: 记录时间和时区。
\"%r\": 请求的第一行,包括请求方法、URL和协议。
%>s: 服务器响应的状态码。
%b: 服务器发送的响应字节数(不包括 HTTP 头)。
\"%{Referer}i\": 发送请求的来源页面的 URL。
\"%{User-agent}i\": 发送请求的用户代理的标识,一般是浏览器或其他 HTTP 客户端的信息。
6. 安全选项加固
1.超时时间10或者更少。
vim /etc/httpd/conf/httpd.conf
加入:
Timeout 10
重启httpd。
2.启用Keepalive、MaxKeepaliveRequests、KeepaliveTimeout。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)