抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

杜老师出差回来了,刚好得空拜访了小伙伴们的网站,发现近期有些小伙伴的网站被攻击了。其实除了常见的 DDoS,还有一些技术流的攻击形式,主要是通过系统和服务漏洞进行攻击。今天杜老师分享 Linux 服务器安全加固项,供需要的小伙伴们参考。

高危

高危加固项如下表:

项目编号风险描述配置建议
1CVE-2021-4034 polkit pkexec 本地提权漏洞检测更新polkit 组件
2CVE-2023-0386 Linux Kernel OverlayFS 权限提升漏洞漏洞检测根据提示检查内核版本是否低于指定版本【uname -r】
若是CentOS 8 Stream,则执行【yum install kernel】命令升级内核版本,并重启服务器
若是Ubuntu 22.04,则执行【apt install linux-image】查看可安装版本号,选择高于5.15.0-70的版本号,再次执行【apt install linux-image-版本号】,并重启服务器
3检测MySQL root用户是否具备数据库备份权限临时以无授权方式进入数据库,建议恢复root用户所有权限。
4Docker API 未授权访问应开启认证来鉴权或关闭Dokcer Api
5Mysql 弱口令检测如果检测出为弱口令请及时修改密码
6检测MySQL root用户是否具备数据库备份权限临时以无授权方式进入数据库,建议恢复root用户所有权限。
7PHP未禁用危险函数在【php.ini】文件中设置【disable_functions】未配置system,exec,passthru,shell_exec,popen,proc_open等危险函数
提示:【php.ini】未配置system,exec,passthru,shell_exec,popen,proc_open等危险函数
8PHP存在版本泄露在【php.ini】文件中设置【expose_php】将配置为Off
提示:【expose_php】将配置为Off
9检测当前Redis密码是否安全1.Redis 密码太过于简单
2.请及时修改密码
10检测当前Redis是否安全若非必要,请勿将Redis的bind配置为0.0.0.0
若bind为0.0.0.0的情况下,请务必为Redis设置访问密码
请勿使用过于简单的密码作为Redis访问密码
推荐使用高安全强度的密码:分别包含数字、大小写、特殊字符混合,且长度不少于7位。
Redis一但出现安全问题,这将大概率导致服务器被入侵,请务必认真处理
11禁止SSH空密码登录在【/etc/ssh/sshd_config】文件中设置【PermitEmptyPasswords】将配置为no
提示:【PermitEmptyPasswords】将配置为no
12检测进程中是否有通过strace命令获取其他用户账号信息ps aux命令查看是否存在通过strace读取sshd登录凭证
ps aux
13系统后门用户检测在命令行中删除后门用户
注意:如果存在后门用户说明你服务器已经被入侵
14tomcat后台访问弱口令检测在【/usr/local/bttomcat/tomcat/conf/tomcat-users.xml】中修改password弱口令

中危

中危加固项如下表:

项目编号风险描述配置建议
1/etc/bashrc用户缺省权限检查【/etc/bashrc】 文件中所所设置的umask为002,不符合要求,建议设置为027
操作如下:修改 umask 为027
2是否启用Docker日志审计检查在【/etc/audit/rules.d/audit.rules】文件中添加-w /usr/bin/docker -k docker
重启auditd进程systemctl restart auditd
3检查审核日志满了后是否自动删除在【/etc/audit/auditd.conf】中max_log_file_action将ROTATE改为KEEP_LOGS
重启auditd服务systemctl restart auditd
4bootloader配置权限检查对【/boot/grub2/grub.cfg】文件,配置对应权限
chmod 600 /boot/grub2/grub.cfg、chown root /boot/grub2/grub.cfg
5检查重要文件是否存在suid和sgid权限使用chmod u-s/g-s 【文件名】命令修改文件的权限
6检查临时目录是否设置粘滞位权限使用chmod +t 【文件名】命令修改文件的权限
7/etc/csh.cshrc用户缺省权限检查【/etc/csh.cshrc】 文件中所所设置的umask为002,不符合要求,建议设置为027
操作如下:修改 umask 为027
8Apache 版本泄露检查在【httpd.conf】文件中添加ServerSignature Off以及ServerTokens Prod
9开启地址空间布局随机化【/proc/sys/kernel/randomize_va_space】 值为2:
操作如下:sysctl -w kernel.randomize_va_space=2
10检测是否限制密码重复使用次数配置文件备份cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
在【/etc/pam.d/system-auth】文件【password sufficient】后面添加或修改remember=5
11检查是否存在危险远程访问文件hosts.equiv、.rhosts、.netrc删除在家目录下的.rhosts和.netrc文件以及删除根目录下的hosts.equiv文件
按照提示找到风险文件并删除
12检测所有已部署安全证书的网站是否过期请为您的站点续签或更换新的SSL证书,以免影响网站正常访问
SSL证书过期后,用户访问网站将被浏览器提示为不安全,且大部分浏览器会阻止访问,严重影响线上业务
13SSH 空闲超时时间检测在【/etc/ssh/sshd_config】文件中设置【ClientAliveInterval】设置为600到900之间
提示:SSH空闲超时时间建议为:600-900
14SSH 最大连接数检测在【/etc/ssh/sshd_config】文件中设置【MaxAuthTries】为3-5
提示:SSH最大连接数为:3-6,请设置为3-5
15SSH密码复杂度检查【/etc/security/pwquality.conf】 把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为3或4。如:
minclass=3
16检查SSH密码失效时间【/etc/login.defs】 使用非密码登陆方式密钥对。请忽略此项, 在/etc/login.defs 中将PASS_MAX_DAYS 参数设置为90-180之间
PASS_MAX_DAYS 90 需同时执行命令设置root密码到期时间 命令如下: chage --maxdays 90 root
17检查SSH密码修改最小间隔【/etc/login.defs】 PASS_MIN_DAYS 应设置为大于等于7
PASS_MIN_DAYS 7 需同时执行命令设置root 密码失效时间 命令如下: chage --mindays 7 root
18SSH过期提前警告天数在【/etc/login.defs】 PASS_WARN_AGE 大于等于7
提示:PASS_WARN_AGE 30 同时执行命令使root用户设置生效 chage --warndays 7 root
19SSH密码长度度检查【/etc/security/pwquality.conf】 文件中把minlen(密码最小长度)设置为9-32位
minlen=9
20检测是否使用安全的套接字层加密传输信息,避免被侦听敏感信息在【/etc/ssh/sshd_config】文件中添加或修改Protocol 2
随后执行命令systemctl restart sshd重启进程
21关闭非加密远程管理telnet检查尽可能使用加密远程管理sshd服务,关闭不安全的telnet服务
systemctl stop telnet.socket停止telnet服务
22检查是否设置无操作超时退出在文件【/etc/profile】中添加tmout=300,等保要求不大于600秒
执行命令source /etc/profile使配置生效

低危

低危加固项如下表:

项目编号风险描述配置建议
1检查ls和rm命令是否设置别名在文件【~/.bashrc】中添加或修改alias ls='ls -alh’以及alias rm=‘rm -i’
执行【source ~/.bashrc】使配置生效
2检测CVE-2019-5736容器逃逸漏洞docker version查看docker版本是否小于18.09.2,runc版本小于1.0-rc6
3CVE-2022-2068 OpenSSL任意命令执行漏洞检测升级OpenSSL至最新版本或是安全版本
1.0.2zf、1.1.1p、3.0.4及以上版本
4CVE-2022-25845 Fastjson 任意代码执行漏洞检测打开网站目录下的pom.xml文件,查看是否有fastjson依赖库
若fastjson版本小于1.2.83,则需升级到1.2.83或更高的安全版本
5检查关键文件的底层属性是否配置给系统日志文件【/var/log/messages】添加只可追加属性chattr +a
给关键文件【/etc/passwd /etc/shadow /etc/group /etc/gshadow】添加锁属性chattr +i
6检测是否限制账户认证失败的次数在【/etc/pam.d/sshd】文件第二行添加或修改
auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=300
7检测系统用户列表中是否存在风险用户如果这些用户不是服务器管理员添加的,则可能系统已被入侵,应尽快处理
8检测所有网站是否部署安全证书请考虑为您的网站部署SSL证书,以提升网站的安全性
9限制SSH登录后使用图形化界面检查在【/etc/ssh/sshd_config】中修改X11Forwarding为no
10设置ssh登录白名单在【/etc/hosts.deny】添加ALL:ALL
在【/etc/hosts.allow】添加sshd:【来访者IP地址】
11检查SSH root是否可以登录【/etc/ssh/sshd_config】 添加PermitRootLogin no参数
PermitRootLogin no
12检查是否使用PAM认证模块禁止wheel组之外的用户su为root在文件【/etc/pam.d/su】中添加auth sufficient pam_rootok.so以及auth required pam_wheel.so group=wheel
如需配置用户可以切换为root,则将用户加入wheel组,使用命令gpasswd -a username wheel
13检查是否开启TCP-SYNcookie保护缓解syn flood攻击在【/etc/sysctl.conf】文件中添加net.ipv4.tcp_syncookies=1
然后执行命令sysctl -p生效配置
14/etc/profile用户缺省权限检查【/etc/profile】 文件中所设置的umask为002,不符合要求,建议设置为027
操作如下:修改 umask 为027

注意

  1. 杜老师并未对以上服务进行分类,需要的小伙伴可以按需查找;

  2. 以上加固项按杜老师服务器配置分享,部分服务如未安装则不需要加固;

  3. 有参考范围的,则按需要配置,如不知该如何配置,可以取中;

  4. 如果需要更多的安全加固项,可在评论区中留言。

评论