Linux——配置漏洞修复

本文涉及的产品
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
日志服务 SLS,月写入数据量 50GB 1个月
运维安全中心(堡垒机),免费版 6个月
简介: Linux——配置漏洞修复

前言

日常漏洞修复,本文不定时更新

步骤

#######################################################################
###########################LINUX 配置规范###############################
######################################################################
#!/bin/bash
##检查口令最小长度
cp /etc/login.defs /etc/login.defs.back
sed -i "/^PASS_MIN_LEN/c PASS_MIN_LEN    8" /etc/login.defs
##检查口令生存周期
sed -i "/^PASS_MAX_DAYS/c PASS_MAX_DAYS   90" /etc/login.defs
##检查设备密码复杂度策略
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
sed -i "/^password/i password requisite pam_cracklib.so ucredit=-1 lcredit=-1 dcredit=-1" /etc/pam.d/system-auth
##检查是否设置文件与目录缺省权限
cp /etc/profile /etc/profile.bak
sed -i "/umask 002/c  umask 027" /etc/profile
##检查是否设置命令行界面超时退出
sed -i "/^TMOUT=1800/c TMOUT=300" /etc/profile
##检查是否限制root用户远程登录
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sed -i "/^PermitRootLogin/c PermitRootLogin no" /etc/ssh/sshd_config
#重启sshd服务
##检查是否配置远程日志功能
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
sed -i "/*.* @@remote-host:514/c *.* @@remote-host:514" /etc/rsyslog.conf
##检查是否配置用户所需最小权限
  #检查/etc/group文件权限
    # chmod 644 /etc/group
  #检查/etc/passwd文件权限
    # chmod 644 /etc/passwd
  #检查/etc/shadow文件权限
    chmod 600 /etc/shadow
##检查是否修改系统banner
#删除"/etc"目录下的 issue.net 和 issue 文件:
mv /etc/issue /etc/issue.bak
mv /etc/issue.net /etc/issue.net.bak
##sshd弱算法
 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
 echo "Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc" >> /etc/ssh/sshd_config
 systemctl restart sshd.service
##检查是否安装OS补丁
#可以使用OnlineUpdate或Patch CD Update等方式升级系统补丁
##检查FTP Banner设置
  #1.修改vsftp回显信息
  ## vi /etc/vsftpd.conf(或/etc/vsftpd/vsftpd.conf)
  #ftpd_banner=” Authorized users only. All activity will be monitored and reported.”
  #可根据实际需要修改该文件内容。
  #重启服务:
  ## /etc/init.d/vsftpd restart
  #2.修改pure-ftp配置文件:
  ##vi /etc/pure-ftpd/pure-ftpd.conf
  #找到以下行,确保该行未被注释。
  #FortunesFile /usr/share/fortune/zippy
  #编辑/usr/share/fortune/zippy文件(如没有fortune文件夹或者zippy文件,则新建该文件夹或该文件):
  ##vi /usr/share/fortune/zippy
  #将自定义BANNER写入其中。
  #重启服务:
  ## /etc/init.d/pure-ftpd restart
##检查FTP用户上传的文件所具有的权限
  #如果系统使用vsftp:
  #修改/etc/vsftpd.conf(或者为/etc/vsftpd/vsftpd.conf)
  ## vi /etc/vsftpd.conf
  #确保以下行未被注释掉,如果没有该行,请添加:
  #write_enable=YES //允许上传。如果不需要上传权限,此项可不进行更改。
  #ls_recurse_enable=YES
  #local_umask=022 //设置用户上传文件的属性为755
  #anon_umask=022 //匿名用户上传文件(包括目录)的 umask
  #重启网络服务
  ## /etc/init.d/vsftpd restart
  #如果系统使用pure-ftp
  #修改/etc/pure-ftpd/pure-ftpd.conf
  ## vi /etc/pure-ftpd/pure-ftpd.conf
  #确保以下行未被注释掉,如果没有该行,请添加:
  #umask 177:077
  #重启ftp服务
  ##/etc/init.d/pure-ftpd restart
##检查是否关闭不必要的服务和端口
  #检查是否关闭tftp服务
  #chkconfig [--level levels] tftp off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭sendmail服务
  #chkconfig [--level levels] sendmail off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭ypbind服务
  #chkconfig [--level levels] ypbind off
  #注:levels为运行级别,需要重启机器
  #检查是够关闭kshell服务
  #hkconfig [--level levels] kshell off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭lpd服务
  #chkconfig [--level levels] lpd off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭ident服务
  #chkconfig [--level levels] ident off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭time服务
  #chkconfig [--level levels] time off
  #chkconfig [--level levels] time-udp off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭ntalk服务
  #chkconfig [--level levels] ntalk off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭bootps服务
  #chkconfig [--level levels] bootps off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭chargen服务
  #chkconfig [--level levels] chargen off
  #chkconfig [--level levels] chargen-udp off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭nfs服务
  #chkconfig [--level levels] nfs off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭daytime服务
  #chkconfig [--level levels] daytime off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭printer服务
  #chkconfig [--level levels] printer off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭nfslock服务
  #chkconfig [--level levels] nfslock off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭echo服务
  #chkconfig [--level levels] echo off
  #chkconfig [--level levels] echo-udp off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭discard服务
  #chkconfig [--level levels] discard off
  #chkconfig [--level levels] discard-udp off
  #注:levels为运行级别,需要重启机器
  #检查是否关闭klogin服务
  #chkconfig [--level levels] klogin off
  #注:levels为运行级别,需要重启机器
##检查是否限制用户FTP缺省访问权限
  #配置方法:
  #打开/etc/vsftpd/chroot_list 文件,将需要限制的用户名加入到文件中。
##检查是否删除了潜在危险文件
  #1 是否删除.netrc 文件
  #  1.执行命令find / -maxdepth 3 -name .netrc 2>/dev/null
  #  2.进入到.netrc文件存在的目录
  #  3.执行命令:mv .netrc .netrc.bak
  #2 是否删除hosts.equiv文件
  #  1.执行命令find / -maxdepth 3 -name hosts.equiv 2>/dev/null
  #  2.进入到hosts.equiv文件存在的目录
  #  3.执行命令:mv hosts.equiv hosts.equiv.bak
  #3 是否删除.rhosts 文件
  # 1.执行命令find / -maxdepth 3 -name .rhosts 2>/dev/null
  #  2.进入到.rhosts文件存在的目录
  #  3.执行命令:mv .rhosts .rhosts.bak
##检查是否禁止root用户登录FTP
  #1 禁止root登录VSFTP
  #   编辑/etc/ftpusers(或/etc/vsftpd/ftpusers)文件
  #   添加root
  #2 禁止root登录WU-FTP
  #   在/etc/ftpusers文件中加入下列行
  #   root
##检查是否启用SSH协议,禁用telnet协议
  #1 应配置ssh协议,并安全配置sshd
  #  通过#/etc/init.d/sshd start 来启动 SSH服务
  #2 应禁用telnet协议
  #  利用命令rpm -qa |grep telnet查看是否安装telnet 和telnet server
  #  如果安装的话 编辑/etc/xinetd.d/telnet, 修改 disable = yes。
  #  激活xinetd服务。命令如下:
  #  # service xinetd restart
  #  如果没安装则说明禁用telnet服务
##检查是否启用cron行为日志功能
  #1 syslog-ng是否启用记录cron行为日志功能
  #   在/etc/syslog-ng/syslog-ng.conf中添加
  #   filter f_cron { facility(cron); };
  #   destination cron { file("/var/log/cron"); };
  #   log { source(src); filter(f_cron); destination(cron); };
  #   其中/var/log/cron为日志文件。
  #   如果该文件不存在,则创建该文件,命令为:
  #   touch /var/log/cron,并修改权限为775.命令为:chmod 775 /var/log/cron.
  #2 rsyslog是否启用记录cron行为日志功能    编辑/etc/rsyslog.conf文件,
  #   配置:
  #   cron.* /var/log/cron ,
  #   其中/var/log/cron为日志文件。
  #   如果该文件不存在,则创建该文件,命令为:
  #   touch /var/log/cron,并修改权限为775.命令为:chmod 775 /var/log/cron.
  #3 syslog是否启用记录cron行为日志功能   编辑/etc/syslog.conf文件,
  #   配置:
  #   cron.* /var/log/cron ,
  #   其中/var/log/cron为日志文件。
  #   如果该文件不存在,则创建该文件,命令为:
  #   touch /var/log/cron,并修改权限为775.命令为:chmod 775 /var/log/cron.
##检查是否禁止匿名用户登录FTP
  #1 禁止匿名WU-FTP用户登录
  #   在/etc/passwd文件中,删除ftp用户
  #2 禁止匿名VSFTP用户登录
  #   编辑/etc/vsftpd.conf(或/etc/vsftpd/vsftpd.conf)文件,设置:anonymous_enable=NO
##检查是否启用syslog日志审计
  #1.
  # Redhat5.x之前(包括5.x):编辑/etc/syslog.conf,
  # Redhat 6.x:编辑/etc/rsyslog.conf,
  # 配置:
  # authpriv.* /var/log/secure
  #2.
  # 创建/var/log/secure文件
  # touch /var/log/secure
  #3.
  # 重启syslog服务
##检查日志文件是否非全局可写
  #检查/var/log/mail文件是否other用户不可写          位比较小于等于 775   执行命令:chmod 775 /var/log/mail
  #检查/var/log/boot.log是否是否other用户不可写      位比较小于等于 775   执行命令:chmod 775 /var/log/boot.log
  #检查/var/log/secure文件是否other用户不可写        位比较小于等于 775   执行命令:chmod 775 /var/log/secure
  #检查/var/log/messages文件是否不可被其他用户修改   位比较小于等于 755   执行命令:chmod 755 /var/log/messages
  #检查/var/log/cron日志文件是否other用户不可写      位比较小于等于 775   执行命令:chmod 775 /var/log/cron
  #检查/var/log/spooler文件是否other用户不可写     位比较小于等于 775   执行命令:chmod 775 /var/log/spooler
  #检查/var/log/maillog文件是否other用户不可写     位比较小于等于 775   执行命令:chmod 775 /var/log/maillog
##检查是否限制用户su到root
 #sed -i "/^auth/i auth sufficient pam_rootok.so" /etc/pam.d/su
 #sed -i "/^auth/i auth required pam_wheel.so group=wheel" /etc/pam.d/su
##检查是否按用户分配账号
  #为用户创建账号:
  #useradd username #创建账号
  #passwd username #设置密码
  #修改权限:
  #chmod 750 directory #其中750为设置的权限,可根据实际情况设置相应的权限,directory是要更改权限的目录)
  #使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。
##是否删除与设备运行、维护等工作无关的账号
  #删除用户:#userdel username;
  #锁定用户:
  #usermod -L username
  #只有具备超级用户权限的使用者方可使用.
  #usermod –U username可以解锁。
  #补充操作说明
  #需要锁定的用户:
  #listen,gdm,webservd,nobody,nobody4,noaccess。
##检查是否按组进行账号管理
  #1.执行备份:
  #cp -p /etc/group /etc/group.bak
  #2.创建新的用户组
  #groupadd 组名
  #usermod -g 组名 -d 用户目录 -m 用户名
  #把用户添加进入某个组(s)或参考usermod --help说明进行设置
#######################################################################
###########################NGINX 配置规范###############################
######################################################################
##检查是否启用日志功能---记录错误日志
  #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf),去掉error_log前面的"#"号
##检查是否启用日志功能---记录访问日志
  #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf),设置access_log,去掉前面的注释,修改配置文件如下:
  #log_format formatname '$remote_addr - $remote_user [$time_local] '
  #' "$request" $status $body_bytes_sent "$http_referer" '
  #' "$http_user_agent" "$http_x_forwarded_for"';
  #access_log logs/access.log formantname;
  #formatname是设置配置文件格式的名称
##检查是否限制IP访问
  #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
  #具体设置举例如下:
  #location / {
  #deny 192.168.1.1; #拒绝IP
  #allow 192.168.1.0/24; #允许IP
  #allow 10.1.1.0/16; #允许IP
  #deny all; #拒绝其他所有IP
  #}
  #根据应用场景,设置合适的IP地址
##检查是否隐藏nginx服务信息头
  #配置在http中
  server_tokens off;
  server_tag off;
  server_info off;
##检查是否自定义错误信息
  #修改nginx_install_dir/conf/nginx.conf文件
  #在每个站点server里添加自定义错误页面,例如:
  #error_page 404 /404.html;
  #404.html为具体的自定义错误页面,需要纺织在站点的根目录下,一版是nginx_install_dir/html/目录下
  #
  #配置完毕后采用nginx_install_dir/sbin/nginx -t测试配置文件是否正确。
  #之后平滑重启nginx
  #nginx_install_dir/sbin/nginx -s reload
##检查是否控制超时时间---客户端保持活动的超时时间
  #http
  #keepalive_timeout 120;
  #重新启动nginx服务
  #需要根据应用场景的需要选择合适的参数值
##检查是否控制超时时间---客户端请求读取超时时间
  #http
  #client_header_timeout 10; #设置客户端请求头读取超时时间
  #重新启动nginx服务
  #需要根据应用场景的需要选择合适的参数值
##检查是否限制客户端下载的并发连接数
  #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
  #具体设置如下:
  #例如网站存放路径为/usr/local/nsfocus/ ,服务器名称为:down.nsfocus.com
  #http {
  #……
  #limit_zone one $binary_remote_addr 10m;
  ##针对每个IP定义一个存储session状态的容器,10m的容器按照32bytes/session,可以处理320000个session
  #server
  #{
  #listen 80
  #server_name down.nsfocus.com;
  #index index.html index.htm index.php;
  #root /usr/local/nsfocus;
  ##Zone limit;
  #location / {
  #limit_conn one 1; #限制每个ip只能发起一个并发连接
  #limit_rate 20k; #限制每个连接的限制速度为20K,IP的下载速度为连接数*限制速度
  #}
  #………
  #}
  #重启nginx服务
  #根据应用场景的需要进行并发数、速度限制
  #注:
  #limit_zone 这个变量只能在http中使用
  #limit_coon和limit_rate变量可以在http,server,location中使用
##检查是否控制超时时间---响应客户端的超时时间
  #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
  #具体设置如下:
  #send_timeout 10; #指定响应客户端的超时时间
  #重新启动nginx服务
  #需要根据应用场景的需要选择合适的参数值
##检查是否配置防盗链接设置
  #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
  #具体设置举例如下:
  #location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
  #valid_referers none blocked www.baidu.com;
  #if ($invalid_referer) {
  #rewrite ^/ [img]http://www.nsfocus.com/images/default/logo.gif[/img];
  ## return 403;
  #}
  #}
  #根据应用场景,设置合适的域名
  #重新启动nginx服务
  #注:
  #1.gif|jpg|png|swf|flv|rar|zip
  #表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
  #2.www.baidu.com
  #表示对www.baidu.com这个来路进行判断
  #3.if{}里面内容的意思是,如果来路不是指定来路就跳转到错误页面,当然直接返回404也是可以的
##检查是否限制客户端的下载速度
  #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
  #具体设置如下:
  #例如网站存放路径为/usr/local/nsfocus/ ,服务器名称为:down.nsfocus.com
  #http {
  #……
  #limit_zone one $binary_remote_addr 10m;
  ##针对每个IP定义一个存储session状态的容器,10m的容器按照32bytes/session,可以处理320000个session
  #server
  #{
  #listen 80
  #server_name down.nsfocus.com;
  #index index.html index.htm index.php;
  #root /usr/local/nsfocus;
  ##Zone limit;
  #location / {
  #limit_conn one 1; #限制每个ip只能发起一个并发连接
  #limit_rate 20k; #限制每个连接的限制速度为20K,IP的下载速度为连接数*限制速度
  #}
  #………
  #}
  #重启nginx服务
  #根据应用场景的需要进行并发数、速度限制
  #注:
  #limit_zone 这个变量只能在http中使用
  #limit_coon和limit_rate变量可以在http,server,location中使用

学无止境,谦卑而行.

目录
相关文章
|
10天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
32 9
|
12天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
29 5
|
2月前
|
网络协议 安全 Linux
如何配置Linux端的ftp?
如何配置Linux端的ftp?
149 64
|
26天前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
42 2
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
282 3
|
1月前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
2月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
2月前
|
Linux 编译器 开发工具
快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)
这篇文章介绍了在Linux系统上配置Python 3.x环境的步骤,包括安装系统依赖、下载和解压Python源码、编译安装、修改环境变量,以及常见安装错误的解决方案。
151 1
|
2月前
|
Ubuntu Linux
Linux服务器的自动启动可以在哪里进行配置?
Linux服务器的自动启动可以在哪里进行配置?
160 3
|
1月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
72 0
下一篇
无影云桌面