加固方法大多数要用到root权限,比赛时是不会给root用户的,需要我们自己提权,给出两篇提权的文章 https://blog.csdn.net/devil8123665/article/details/108146676 https://blog.csdn.net/devil8123665/article/details/107485260
文章目录 操作系统加固Apache加固 操作系统加固1.开启防火墙
service iptables start2.锁定系统中多余用户
执行命令–>cat /etc/passwd 来查看一下有哪些用户
执行命令–>passwd -l 来锁定不需要的用户
passwd -u 可以解锁被锁定的用户
3.锁定系统中的空口令用户
执行命令–>cat /etc/shadow 来查看一下所有用户的密码
执行命令–>awk -F “:” ‘($2=="!!"){print $1}’ /etc/shadow 可以筛选出空口令用户
执行命令–>passwd -l 锁定空口令用户 账户密码配置好后,执行命令
chattr +i /etc/passwdchattr +i /etc/shadow来让用户账户和密码目录赋予不可更改属性 恢复方法
chattr -i /etc/passwdchattr -i /etc/shadow4.设置口令策略
执行命令 vi /et/login.defs 来修改口令策略
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数 PASS_MIN_DAYS 0 #新建用户的密码最短使用天数 PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数 PASS_MIN_LEN 9 #最小密码长度9
5.禁用root之外的超级用户
cat /etc/passwd 查看口令文件,口令文件格式如下 login_name:password:user_ID:group_ID:comment:home_dir:command login_name:用户名 password:加密后的用户密码 user_ID:用户ID,(1 ~ 6000) 若用户ID=0,则该用户拥有超级用户的权限。查看此处是否有多个uid=0。 group_ID:用户组ID comment:用户全名或其它注释信息 home_dir:用户根目录 command:用户登录后的执行命令
加固方法: 使用命令–>awk -F “:” ‘($3=="0"){print $1}’ /etc/passwd 来筛选出uid为0的用户 使用命令–>passwd -l 锁定除root之外的超级用户
6.禁止非root用户执行/etc/rc.d/init.d下的系统命令
执行命令–>chmod -R 700 /etc/rc.d/init.d/* 恢复方法–>chmod -R 777 /etc/rc.d/init.d/* #恢复默认设置
7.限制能够su成root的用户
执行命令–>vi /etc/pam.d/su 添加下图标记行,只有wheel组的用户可以通过su提权
做完这步操作后记得将自己使用的用户分到wheel组
8.限制超级管理员远程登录
执行命令–>vi /etc/ssh/sshd_config 来查看远程登录配置文件 PermitRootLogin yes表示允许root远程登录,注释掉这句语句或者改成no 执行命令–>service sshd restart 重启ssh服务 9.屏蔽ssh登录banner信息
使用命令–>vi /etc/ssh/sshd_config 找到配置信息banner,将前面的#删掉
执行命令–>vi /etc/motd 删除里面的内容或者将它改为自己的提示信息
10.系统用户的执行shell权限
执行命令–>
cat /etc/passwd |grep "/bin/bash"发现ftp和nobody作为系统用户不应该具有执行shell的权限 加固方法: vi /etc/passwd 将ftp和nobody后面的/bin/bash改为/sbin/nologin
11.未经授权的suid文件漏洞
编写以下脚本 使用命令–>bash 2.sh 执行脚本
看到useradd不符合规则 加固方法 chmod 755 /usr/bin/useradd
12.设置账户锁定登录失败锁定次数、锁定时间 编辑/etc/pam.d/system-auth文件
vi /etc/pam.d/system-auth填加以下代码行
auth required pam_tally.so onerr=fail deny=6 unlock_time=600 even_root_unlock_time=100表示用户登录失败6次,账户锁定600秒,root账户锁定100秒 13.修改TMOUNT的自动注销时间
vi /etc/profile在文件中添加如图语句 TMOUNT=60表示用户不操作60秒后自动注销账户
14.修改bash保留命令条数
vi /etc/profile 修改HISTSIZE=5,表示保留5条命令
15.停止或禁用与承载无关的服务
chkconfig --list 查看所有服务的状态 加固方法: 记录需要关闭服务的名称 chkconfig - -del 删除服务 chkconfig - -level on|off 服务在特定级别下打开|关闭
16.为审计产生的数据分配合理的存储空间和存储时间
#/etc/init.d/rsyslog start 启动日志 系统日志(默认)/var/log/messages cron日志(默认)/var/log/cron 安全日志(默认)/var/log/secure #cat /etc/logrotate.conf 查看系统轮询配置,有无 #rotate log files weekly weekly #keep 4 weeks worth of backlogs rotate 4 的配置 加固方法:
#vi /etc/logrotate.d/syslog编辑配置文件
增加rotate 4 日志文件保存个数为4,当第5个产生后,删除最早的日志size 100k 每个日志的大小 加固后应类似如下内容:
/var/log/syslog/*_log {missingoknotifemptysize 100k # log files will be rotated when they grow bigger that 100k.rotate 5 # will keep the logs for 5 weeks.compress # log files will be compressed.sharedscriptspostrotate/etc/init.d/syslog condrestart >/dev/null 2>1 || trueendscript} Apache加固1.以特定用户运行http服务
以特定用户运行服务,不要使系统默认账号启动APACHE,以免受到越权使用造成非法攻击 加固方法:
vi /etc/httpd/conf/httpd.conf修改为
因为用户nobody 没有sh执行权限,所以这种配置比较安全.一般情况下配置单独用户,该用户没有sh 执行权限.取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令
2.隐藏banner信息
httpd –v 查看httpd版本信息
当我们访问服务出错的时候的报错,看到banner泄露了apache的版本信息
加固方法:
vi /etc/httpd/conf/httpd.conf将ServerTokens Os 改为:ServerTokens Pord //在出现错误页的时候不显示服务器操作系统的名称
将ServerSignature On 改为:ServerSignature off //不回显apache版本信息
3.禁止目录浏览 vi /etc/httpd/conf/httpd.conf 编辑配置文件, 将Options Indexs FollowSymLinks改为Options FollowSymLinks 4.为特定目录使用密码保护
假设/icons目录需要密码保护 执行命令 /usr/bin/htpasswd -c /usr/local/etc/passwd.httpd testuser 创建包含用户名和密码的文