未分类

安全加固

Apache安全加固

加固内容作用
修改默认banner信息防止敏感信息泄漏
禁用目录列表防止暴露文件目录
以单独的用户和组运行Apache使用非特权用户
限制对目录的访问
关闭服务器端包含和CGI执行
加固说明

修改Banner:

使用nc,nmap,F12网络等工具探查服务器80端口

编辑apache2.conf

vim /etc/apache2/apache2.conf
ServerSignature Off
ServerTokens Prod

禁用目录列表:

在浏览器中访问服务器某位置(无index文件,我为了测试在/var/www/html/下新建了testban文件夹和内部的两个文件)

修改/etc/apache2/apache2.conf
<Directory 指定的目录>
Options -Indexes
</Directory>

重启服务查看效果,已经无法查看了

以单独的用户和组运行Apache:

建立http用户和用户组

groupadd httpuser
useradd -d /var/www/ -g httpuser -s /bin/nologin httpuser

关闭服务器端包含和CGI执行:

总结
vim /etc/apache2/apache2.conf
添加 ServerTokens Prod
添加 ServerSignature off
修改
    <Directory "/var/www/html">
    Options -Indexes -FollowSymLinks     //添加 - 号表示禁用此项功能
    </Directory>

MySQL加固

加固内容作用
改变默认mysql管理员帐号名和密码防止被爆破管理员
用户目录权限限制防止被非mysql用户窃取数据
命令历史记录保护防止数据库密码和数据库结构等信息泄露
删除默认数据库test和数据库用户
限制本地文件数据访问
禁止远程连接数据库
更改默认端口3306
加固说明

改变默认mysql管理员帐号和密码

update user set password=password('upassword') where user='root';#8.0以下版本
alter user 'root'@'localhost' identified by '128ve980';#8.0后版本

命令历史记录保护:

# rm .bash_history .mysql_history  //删除历史记录

删除默认数据库test和数据库用户:

mysql> show databases;
mysql> 
drop database test

PHP安全加固

vim /etc/php/7.4/apache2/php.ini
disable_functions 添加passthru,exec,system,popen,chroot,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status                             //禁用一些系统控制函数
memory_limit = 128M                         //限制消耗内存大小
由于wordpress需要上传图片,此处不进行上传限制,同时设置上传大小为3M
file_uploads = Off                         //禁止上传文件
重启web服务使设置生效
service apache2 restart

Linux安全加固

加固项主要作用
root登录限制
SSH防止恶意远程登陆
禁用telnet不安全的传输环境
禁用代码编译
root登录提醒
history安全防止命令记录被清除
禁用特殊账户
特殊文件赋权限制权限
关闭不用的端口和服务
危险目录安全/tmp /var/tmp /dev/shm
禁用PHP的危险函数
php隐藏banner
php禁用危险函数
php访问目录限制
magic_quotes_gpc防注入
加固说明

账户安全加固

锁定系统中多余的自建帐号

检查方法:

执行命令

cat /etc/passwd

cat /etc/shadow

查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆。

加固方法:

使用命令passwd -l <用户名>锁定不必要的账号。

使用命令passwd -u <用户名>解锁需要恢复的账号。

设置系统口令策略

检查方法:

使用命令

cat /etc/login.defs|grep PASS查看密码策略设置

备份方法:

cp -p /etc/login.defs /etc/login.defs_bak

加固方法:

vi /etc/login.defs修改配置文件

PASS_MAX_DAYS 90 新建用户的密码最长使用天数

PASS_MIN_DAYS 0 新建用户的密码最短使用天数

PASS_WARN_AGE 7 新建用户的密码到期提前提醒天数

PASS_MIN_LEN 9 最小密码长度9

禁用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,则该用户拥有超级用户的权限。查看此处是否有多个ID=0。

group_ID:用户组ID

comment:用户全名或其它注释信息

home_dir:用户根目录

command:用户登录后的执行命令

备份方法:

cp -p /etc/passwd /etc/passwd_bak

加固方法:

使用命令passwd -l <用户名>锁定不必要的超级账户。

使用命令passwd -u <用户名>解锁需要恢复的超级账户

限制能够su为root的用户

检查方法:

cat /etc/pam.d/su,查看是否有auth required /lib/security/pam_wheel.so这样的配置条目

备份方法:#cp -p /etc/pam.d /etc/pam.d_bak

加固方法:

vi /etc/pam.d/su

在头部添加:

auth required /lib/security/pam_wheel.so group=wheel

这样,只有wheel组的用户可以su到root

usermod -G10 test 将test用户加入到wheel组

当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效性。如果是因为PAM验证故障,而引起root也无法登录,只能使用single user或者rescue模式进行排错

多次登录失败锁定

当用户试图登陆多次失败后,锁定此用户(su or login 5次失败锁定)

在文件/etc/pam.d/system-auth中配置:

auth requisite pam_tally.so per_user onerr=fail deny=4 unlock_time=3600

注:超过4次错误就会lock user,为了防止拒绝服务攻击,加入per_user参数

留言

您的邮箱地址不会被公开。 必填项已用 * 标注