前言
日常漏洞修复,本文不定时更新
步骤
####################################################################### ###########################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中使用
学无止境,谦卑而行.