1.修改密码长度及更换周期
查看默认的配置信息 chage -l root
参考:
root@localhost:/home# chage
用法:chage [选项] 登录

-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期” -E, --expiredate 过期日期 将帐户过期时间设为“过期日期” -h, --help 显示此帮助信息并推出 -I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态 -l, --list 显示帐户年龄信息 -m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数” -M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数” -R, --root CHROOT_DIR chroot 到的目录 -W, --warndays 警告天数 将过期警告天数设为“警告天数” vim /etc/login.defs PASS_MAX_DAYS:90 密码最长有效期 PASS_MIN_DAYS:1 密码最短存留期 PASS_WARN_AEG:30 密码有效期警告快到30天收到警告 ============ 设置账户的过期时间 root@localhost:/home# chage -E 2019-05-21 haoxiaoyu root@localhost:/home# chage -l haoxiaoyu 最近一次密码修改时间 :5月 15, 2019 密码过期时间 :5月 25, 2019 密码失效时间 :从不 帐户过期时间 :5月 21, 2019 两次改变密码之间相距的最小天数 :5 两次改变密码之间相距的最大天数 :10 在密码过期之前警告的天数 :6 ============ 密码复杂度检验处理: 安装插件:apt-get install libpam-cracklib 更改文件: /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=15 difok=1 lcredit=3 ucredit=-1 参数说明: retry=3 最多重试三次 minlen=15 最短长度 difok=1 至少有一位的不同 lcredit=3 小写字母的个数 ucredit=-1 最少一个大写字母

2.登录异常设置

命令查看root的登录失败的次数:pam_tally2 --user root
	======
	root@localhost:~# pam_tally2 --user root
	Login           Failures Latest failure     From
	root                6    05/16/19 13:27:40  192.168.15.1
	======
	1、find /lib* -iname "pam_tally2.so"或find /lib* -iname "pam_tally.so"是否有改动态库 
    2、是否有以下参数:auth required pam_tally2.so  onerr=fail deny=X  unlock_time=Xeven_deny_root root_unlock_time=X(限制从终端登录)  
    3、/etc/pam.d/sshd文件中是否有以上相同参数(限制ssh登录)
    建议整改:
    Ubuntu:/etc/pam.d/common-password文件中添加:auth required pam_tally2.so onerr=fail deny=3 unlock_time=40 even_deny_rootroot_unlock_time=30  
    注意添加的位置,要写在第一行,即#%PAM-1.0的下面。  
    以上策略表示:普通帐户和 root 的帐户登录连续 3 次失败,就统一锁定 40 秒, 40 秒后可以解锁。  
    如果不想限制 root 帐户,可以把  even_deny_root root_unlock_time这两个参数去掉, root_unlock_time 表示 root 帐户的 锁定时间,onerr=fail 表示连续失败,deny=3,表示 超过3 次登录失败即锁定。 
    2、/etc/pam.d/sshd文件中添加相同参数  
    (备注:以上参数根据实际情况进行设置,至少配置/etc/pam.d/sshd文件限制ssh登录)
	应采用两种或两种以上组合的鉴别技术对管理用户进行身份鉴别。

3.权限划分:

1.物理机房:采用双因子认证设备 
    2.上云服务器(如阿里云):云堡垒机
    访问控制:
		应启用访问控制功能,依据安全策略控制用户对资源的访问;
	验证检查:  
       1.重命名系统默认帐户(root);  
       2.修改默认帐户的口令。  
       建议整改:  
       		1.根据业务需求情况对root进行重命名,其口令必须进行修改
	   		2.应对重要信息资源设置敏感标记;
        整改方法:
        	vi /etc/passwd
            修改第1行第1个root为新的用户名
            vi /etc/shadow
            修改第1行第1个root为新的用户名
        验证检查:  
       		1.询问主机管理员是否定义了主机中的重要信息资源;  
       		2.询问主机管理员,是否为主机内的重要信息设置敏感标记。  
    验证检查:  
       1、询问主机管理员是否定义了敏感标记资源的访问策略;  
       2、查看有敏感标记的重要信息资源是否依据访问策略设置了严格的访问权限。
		个人整改:用户家目录下设置的权限为700(用户进入一个文件夹必须有X的权限,否则无法进入)

4.安全审计
1.审计范围应覆盖到服务器上的每个操作系统用户和数据库用户;

2.审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件;

3.审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等;

4.应能够根据记录数据进行分析,并生成审计报表;

5.应保护审计进程,避免受到未预期的中断;

6.应保护审计记录,避免受到未预期的删除、修改或覆盖等。

验证检查:  
       1、输入service syslog/rsyslog status 、service auditd status查看进程是否存在。 
       		备注:	服务器: sudo service syslog status 在运行
       				服务器: sudo service rsyslog status 在运行
       				service auditd status 进程不存在
       2、(centos:cat /etc/syslog.conf或cat /etc/rsyslog.conf文件中应包含类似于以下值:*.info;mail.none;news.none;authpriv.none;cron.none/var/log/messages;)(Ubuntu:cat/etc/rsyslog.d/50-default.conf 文件中应包含类似于以下值:*.info;mail.none;news.none;authpriv.none;cron.none/var/log/messages;) 
       3、是否对审计日志定期查看、分析,生成审计分析报表  
       4、是否安全额外的审计进程保护  
       5、查看syslog.conf、audit.conf文件中日志信息所在文件的访问权限,如:  
        ls -l /var/log/messages;  
        (centos:ls -l/var/log/secure);(Ubuntu:ls -l/var/log/auth.log) 
        ls -l /var/log/audit/audit.log;   
       访谈并询问是否对审计日志进行保护 

5.远程登录安全
    禁止无密码登录
        配置文件:

/etc/ssh/sshd_config
			PermitEmptyPasswords  no   # 禁止无密码访问服务器
			PermitRootLogin no         # 是否禁止使用root登录(为方便管理,暂未收回权限)
			/etc/init.d/ssh restart
	限制用户认证次数
		MaxAuthTries 4  # 等保三要求该值小于等于 4
	ssh空闲超时
		/etc/ssh/sshd_config(不可用)
		ClientAliveInterval 300  # 小于等于300s
		ClientAliveCountMax 3    # 存活用户数小于等于3
		修改/etc/profile配置文件(可用)
		# vi /etc/profile
		增加:TMOUT=1800
		这样30分钟没操作就自动LOGOUT
		cat /var/log/apache2/access.log | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -n 25 | \ awk '{ printf("%5d\t%-15s\t", $1, $2); system("geoiplookup " $2 " | cut -d \\: -f2 ") }'
		在linux上统计ip次数和地域
			先安装插件,如果需要精确ip的话需要下载数据库
			apt-get install geoip-bin
			geoiplookup 8.8.8.8 测试输出
			=====
			root@iZ8vb5krm4qppt5j0efts1Z:/home/jesse# geoiplookup 8.8.8.8
			GeoIP Country Edition: US, United States
			=====
			cat /var/log/apache2/access.log | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -n 25 | awk '{ printf("%5d\t%-15s\t", $1, $2); system("geoiplookup " $2 " | cut -d \\: -f2 ") }'
			=====
			root@iZ8vb5krm4qppt5j0efts1Z:/home/jesse# cat /var/log/apache2/access.log | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -n 25 | awk '{ printf("%5d\t%-15s\t", $1, $2); system("geoiplookup " $2 " | cut -d \\: -f2 ") }'
    		3	1.94.138.22    	 CN, China     次数 ip  地域
    		=====
    	grub加密
			编辑配置文件 /etc/grub.d/40_custom 添加如下配置:
			password xxxxxxxx
		aide工具(有待研究)
			AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。AIDE生产一个文件系统状态的快照,其中包括修改时间,权限和文件哈希值,然后可以其与文件系统的当前状态进行比较,以检测对系统的修改
			apt install aide

6.内核优化

检查可疑数据包是否被记录,内核配置如下: # 在 /etc/sysctl.conf 文件中设置以下参数: net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 生效以上配置: # 开启并记录欺骗,源路由和重定向包 $ sysctl -w net.ipv4.conf.all.log_martians=1 $ sysctl -w net.ipv4.conf.default.log_martians=1 # 清空路由缓存 $ sysctl -w net.ipv4.route.flush=1 # 更新系统内核配置 $ sysctl -p

杂项,技巧

查看访问者404 错误页面的请求次数以及请求页面,并按降序排列
			[root@elk nginx]# cat /var/log/nginx/access.log | awk '($9 ~ /404/)' | awk '{ print $7 }' | sort | uniq -c | sort -rn | head -n 25
 		查看访问者使用的User-Agent,并统计排序
			[root@elk nginx]# cat /var/log/nginx/access.log | awk -F\" '{ print $6 }' | sort | uniq -c |sort -frn | head -n 25
		统计web服务器的 UV 量
			[root@elk nginx]# cat /var/log/nginx/access.log | awk '{ print $1 }' | sort | uniq -c | wc -l
		统计当天的uv访问量
			[root@elk nginx]# cat /var/log/nginx/access.log | grep `date '+%d/%b/%G'` | awk '{ print $1 }' | sort | uniq -c | wc -l
		统计当月的uv访问量
			[root@elk nginx]# cat access.log | grep `date '+%b/%G'` | awk '{ print $1 }' | sort | uniq -c | wc -l
		根据返回的响应码进行排序
			[root@elk nginx]# cat /var/log/nginx/access.log | awk '{ print $9 }' | sort | uniq -c | sort -rn
			   8973 200
			   7304 401
			    720 304
			     79 404
			     49 400
			     10 502
			     10 "-"
			      7 201
			      4 499
			      4 409
			      4 173
			      1 405
		快速列出点击量最多的请求页面
			[root@elk nginx]# cat /var/log/nginx/access.log | awk '{ print $7 }' | sort | uniq -c | sort -rn | head -n 25
			/elasticsearch/packetbeat-*/_field_stats?level=indices
			/favicon.ico
			/bundles/src/ui/public/images/elk.ico
			/elasticsearch/logstash-*/_field_stats?level=indices
			/elasticsearch/.kibana/_refresh
			/app/kibana
			/elasticsearch/_msearch?timeout=0&ignore_unavailable=true&preference=1472786252222
			/elasticsearch/_msearch?timeout=0&ignore_unavailable=true&preference=1472784429830
			/elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472746017033
			/elasticsearch/.kibana/index-pattern/_search?fields=
			/bundles/src/ui/public/images/kibana.svg
			/bundles/kibana.bundle.js?v=10000
			/bundles/node_modules/font-awesome/fonts/fontawesome-webfont.woff2
			/bundles/commons.style.css?v=10000
			/bundles/commons.bundle.js?v=10000
			/bundles/kibana.style.css?v=10000
			/elasticsearch/topbeat-*/_field_stats?level=indices
			/elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472744909049
			/elasticsearch/.kibana/visualization/_search?size=100
			/elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472749929499
			/elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472750405461
			/elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472750160122
			/elasticsearch/.kibana/dashboard/_search?size=100
			/elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472743171471
		实时的查看请求者ip、http方法、响应码、请求的页面
			[root@elk nginx]# tailf /var/log/nginx/access.log | awk '{ printf("%-15s\t%s\t%s\t%s\n", $1, $6, $9,$7) }'
			60.191.52.254      "HEAD    401    http://115.236.176.134:3434/
			141.212.122.160    "GET    401    /
			101.200.215.149    "GET    401    /manager/html
			114.44.57.4        "CONNECT    400    126mx01.mxmail.netease.com:25
			187.160.7.218      "GET    401    /cgi/common.cgi
			187.160.7.218      "GET    401    /stssys.htm
			187.160.7.218      "GET    401    /
			187.160.7.218      "POST    401    /command.php
			218.75.70.3        "GET    401    /
			163.172.173.181    "GET    401    http://www.baidu.com/cache/global/img/gs.gif
			123.125.2.108      "GET    200    /
			123.125.2.108      "GET    200    /app/kibana
			123.125.2.108      "GET    304    /bundles/commons.style.css?v=10000
		跟上面的类似,只是在第四个字段加了个GeoIP解析归属地,如下:
			[root@elk nginx]# tailf /var/log/nginx/access.log | awk '{
		    "geoiplookup " $1 " | cut -d \\: -f2 " | getline geo
		    printf("%-15s\t%s\t%s\t%-20s\t%s\n", $1, $6, $9, geo, $7);}'
			123.125.2.108      "GET    304     CN, China              /bundles/src/ui/public/images/kibana.svg
			123.125.2.108      "POST    200     CN, China              /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472922034187
			123.125.2.108      "POST    200     CN, China              /elasticsearch/.kibana/index-pattern/_search?fields=
			123.125.2.108      "GET    200     CN, China              /elasticsearch/.kibana/_mapping/*/field/_source?_=1472922034556
			123.125.2.108      "POST    200     CN, China              /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472922034187
			123.125.2.108      "GET    304     CN, China              /bundles/node_modules/font-awesome/fonts/fontawesome-webfont.woff2
		显示非法代理的访问者
			[root@elk nginx]# awk -F\" '($6 ~ /^-?$/)' /var/log/nginx/access.log | awk '{ print $1 }' | sort | uniq
			114.44.57.4
			183.129.160.229
			218.75.70.3
			61.231.3.98
		模拟CPU升高
			模拟cpu升高(可后台运行n次,每个进程的使用率*n 就是总的cpu利用率)
			dd if=/dev/zero of=/dev/null
		curl 构造参数,传参,提交请求
			curl -d 'Key=xxx&phone=xxx&sms=xxx' -X POST -v api接口地址
1.修改密码长度及更换周期 查看默认的配置信息 chage -l root 参考: root@localhost:/home# chage 用法:chage [选项] 登录选项: -d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期” -E, --expiredate 过期日期 将帐户过期时间设为“过...
deb包是Debian,Ubuntu等Linux发行版的软件安装包,扩展名为.deb,是类似于rpm的软件包,Debian,Ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装也比较麻烦。 如果Ubuntu要安装新软件,已有deb安装包(例如:linuxidc.deb),但是无法登录到桌面环境。那该怎么安装?答案是:使用dpkg命令。dpkg 是Debian linuxidc的简写,是为Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自DebianLinux发行
1.打开终端,进入PAM配置文件夹:cd /etc/pam.d 2.编辑system-auth配置文件,命令:vi system-auth 3.禁止使用旧密码——找到passwo和pam_unix.so的字段并在其后面加上remeber=5(表示禁止使用最近使用过得五个密码) 4.设置最短密码长度——找到同时有password和pam_cracklib.so,(没有自己添加)将其修改为password ### 回答2: Linux搭建NAS系统是一项很受欢迎的技术活动,这是因为大多数人都喜欢将自己的文件存储在一个集中的位置上,并从任何地方访问它们。NAS(网络附加存储)系统使这一任务成为现实,因此,许多个人和企业都在寻求将它们安装在自己的计算机系统上。 首先,我们需要选择适合我们需求的Linux发行版。通常,推荐使用Debian或CentOS等基于Linux内核的发行版,它们完全是免费并且容易安装和维护。 接下来,我们需要搭建硬件:对于NAS系统来说,我们需要一个大容量的硬盘,以及一个能够连接这个硬盘的电脑。除此之外,我们还需要一些软件使这个系统能够以NAS的方式工作。 然后,我们需要为这个系统安装并配置Samba文件共享服务。Samba可以允许不同的平台之间分享文件,它兼容Windows、Linux和Mac等操作系统。安装Samba后,我们需要将存储硬盘挂载到系统上。 最后,我们需要配置用户与权限,确保文件共享系统的安全性。你可以为不同的用户分配不同的级别,并决定他们对共享文件和文件夹的访问权限。在这里,我们建议选择开源的ACL(访问控制列表)来维护权限。到此为止,你的Linux NAS系统就已经搭建完成了。 总结来说,要搭建一台简单而稳定的、可靠的Linux NAS系统并不需要太多的花费,但需要一定的技术知识和经验。通过配置和掌握这些技巧,你可以创建自己的NAS并享受共享数据的便利性。 ### 回答3: Linux搭建NAS系统是一项很有意义的工作。NAS系统或者叫网络存储系统,是指一种可以通过网络访问的数据存储设备,主要用于企业、中小型公司以及个人家庭等地方的存储、备份和共享。通过搭建Linux系统,可以很方便地搭建出一个强大的NAS系统。 Linux系统的搭建主要有以下几个步骤: 1.选择合适的硬件设备:搭建NAS系统需要一台稳定的PC,最好是一台安静、节能的主机,可以选择一些低功耗的CPU、大容量硬盘、高速网络接口等硬件设备。 2.安装Linux系统:建议使用Ubuntu或者Debian系统,这两种系统都有很好的软件包管理工具,可以便捷地安装必备的软件和驱动程序。 3.安装NAS软件:可选择FreeNAS、Openfiler、NAS4Free等多种软件,根据实际需要安装选择,建议选择符合自身需要且易于配置管理的软件。具体安装过程可在官方网站查找相关资料。 4.配置NAS系统:根据实际需要配置各项参数,如磁盘分区、用户权限、网络共享等。可以使用Web界面管理工具或者命令行进行操作,根据操作指南进行系统配置。 5.测试NAS系统:在确保NAS系统配置成功后,进行测试。测试主要包括磁盘读写速度、共享功能、备份功能等,以保证NAS系统正常运行。 6.维护和更新:NAS系统在长期使用中需进行维护和更新,如定期检测和修复磁盘错误、备份重要数据、升级软件版本等,以保证系统的安全性和稳定性。 通过以上步骤可以顺利搭建出一个实用且稳定的Linux搭建NAS系统。在实际使用中,可以将其作为个人资料及文件的备份,也可以扩展到企业级别的数据中心。搭建NAS系统的初衷是为了方便共享和存储,因此需要根据实际需要来配置和管理系统,以便更好地满足使用者的需求。