对于企业来说,安全加固是一门必做的安全措施。主要分为:账号安全、认证授权、协议安全、审计安全。总的来说,就是4A(统一安全管理平台解决方案),账号管理、认证管理、授权管理、审计管理。用漏洞扫描工具扫描了一下自己的阿里云主机,发现很多系统问题不合格,所以列举总结了以下Linux系统安全加固的方法,仅供参考。
1、用户账号---唯一身份。
2、统一认证---你是谁。
3、授权管理---你有什么权限。
4、操作审计---你可以干什么。
以下文档规定了国内4A认证公司系统维护管理的Linux操作系统的主机应当遵循的操作系统安全性设置标准,旨在之道系统管理人员或者安全检查人员进行Linux操作系统的安全合规性检查和配置。
第一类:账号口令
1)、口令生存期
[root@wenzhiyi ~]# vim /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 10
PASS_WARN_AGE 7
2)、口令复杂度
[root@wenzhiyi ~]# vim /etc/pam.d/system-auth,在文件中找到如下内容:
password requisite pam_cracklib.so 将其修改为:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
备注:至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8
3)、版本信息
[root@wenzhiyi ~]# cat /etc/system-release
CentOS release 6.8 (Final)
4)、限制某用户登陆
[root@wenzhiyi ~]#vim /etc/hosts.deny 对配置文件进行修改
添加内容:
#禁止192.168.0.254用户对服务器进行ssh的登陆
sshd : 192.168.0.254
或者用防火墙策略:
5)、检查是否有除root用户以外UID为0的用户
[root@wenzhiyi ~]# awk -F “:” '($3==0) {print $1} ' /etc/passwd
操作系统Linux超级用户策略安全基线要求项目,要求除roo外不能有UID为0的用户。
6)、登录超时限制
[root@wenzhiyi ~]# cp -p /etc/profile /etc/profile_bak
[root@wenzhiyi ~]# vi /etc/profile
TMOUT=300
export TMOUT
7)、检查是否使用PAM认证模块禁止wheel组之外的用户su为root
[root@wenzhiyi ~]# #vim /etc/pam.d/su # 新添加以下两行
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
注意:auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开
然后,:usermod -G wheel username #username为需要添加至wheel组的用户名称,将用户添加到wheel组。注意,第一步加固表明只有wheel组中的用户才能使用su命令切换到root用户,因此必须将需要切换到root的用户添加到wheel组,以使它可以使用su命令成为root用户,如果系统不存在wheel组,则新增,新增方法:groupadd wheel。
第二类:协议安全
1)、限制root用户远程登录SSH
[root@wenzhiyi ~]# grep -v "[[:space:]]*#" /etc/ssh/sshd_config |grep "PermitRootLogin no"
PermitRootLogin no
并且修改为protocol 2
2)、使用SSH协议进程远程登陆
[root@wenzhiyi ~]# #cp -p /etc/xinetd.d/telnet /etc/xinetd.d/telnet_bak
[root@wenzhiyi ~]# /etc/xinetd.d/telnet(vi /etc/xinetd.d/telnet),
把disable项改为yes,即disable = yes.
[root@wenzhiyi ~]# #service xinetd restart
使用Telnet这个用来访问远程计算机的TCP/IP协议以控制你的网络设备,相当于在离开某个建筑时大喊你的用户名和口令。很快会有人进行监听,并且他们会利用你安全意识的缺乏。传统的网络服务程序如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。SSH是替代Telnet和其他远程控制台管理应用程序的行业标准。SSH命令是加密的并以几种方式进行保密。 在使用SSH的时候,一个数字证书将认证客户端(你的工作站)和服务器(你的网络设备)之间的连接,并加密受保护的口令。
3)、禁止root用户登陆FTP
[root@wenzhiyi ~]##cat /etc/pam.d/vsftpd
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#其中file=/etc/vsftpd/ftpusers即为当前系统上的ftpusers文件.
[root@wenzhiyi ~]#echo “root” >> /etc/vsftpd/ftpusers
daemon
bin
sys
lp
uucp
nuucp
listen
nobody
noaccess
nobody4
root
4)、禁止匿名FTP
[root@wenzhiyi ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #如果存在anonymous_enable则修改,如果不存在则手动增加
5)、预防Flood攻击
[root@wenzhiyi ~]# vim /etc/sysctl.conf
[root@wenzhiyi ~]# net.ipv4.tcp_syncookies = 1
[root@wenzhiyi ~]# sysctl -p 让命令生效
第三类:认证权限
1)、文件与目录缺省权限控制
[root@wenzhiyi ~]#cp /etc/profile /etc/profile.bak
[root@wenzhiyi ~]# vim /etc/profile
umask 027
[root@wenzhiyi ~]#source /etc/profile
2)、配置用户最小权限
[root@wenzhiyi ~]# chmod 644 /etc/passwd
[root@wenzhiyi ~]# chmod 400 /etc/shadow
[root@wenzhiyi ~]# chmod 644 /etc/group
3)、Wheel组的设计
在Linux中wheel组就类似于一个管理员的组。
通常在LUNIX下,即使我们有系统管理员root的权限,也不推荐用root用户登录。一般情况下用普通用户
登录就可以了,在需要root权限执行一些操作时,再su登录成为root用户。但是,任何人只要知道了root
的密码,就都可以通过su命令来登录为root用户--这无疑为系统带来了安全隐患。所以,将普通用户加入
到wheel组,被加入的这个普通用户就成了管理员组内的用户,但如果不对一些相关的配置文件进行配置,
这个管理员组内的用户与普通用户也没什么区别--就像警察下班后,没有带枪、穿这便衣和普通人(用户)
一样,虽然他的的确确是警察。
根据应用的实例不同应用wheel组的方法也不同。这里对于服务器来说,我们希望的是剥夺被加入到wheel
组用户以外的普通用户通过su命令来登录为root的机会(只有属于wheel组的用户才可以用su登录为
root)。这样就进一步增强了系统的安全性。具体步骤如下:
1)修改 /etc/pam.d/su 文件,找到“#auth required /lib/security/$ISA/pam_wheel.so use_uid ”这
一行,将行首的“#”去掉。
2)修改 /etc/login.defs 文件,在最后一行增加“SU_WHEEL_ONLY yes”语句。
然后,用“usermod -G wheel 用户名”将一个用户添加到wheel组中。
然后,用刚刚被添加到wheel组的用户登录,并执行su命令登录为root用户…这时,输入了正确的root密码
可以正常的登录为root用户。但是,如果换成一个不属于wheel组的用户时,执行了su命令后,即使输入了
正确的root密码,也无法登录为root用户--普通用户登录为root用户的权限被完全剥夺了~(会收到“密码
错误”的提示)。
第四类:日志审计
什么是日志?简单地说,日志就是计算机系统、设备、软件等在某种情况下记录的信息。具体的内容取决于日志的来源。例如,Linux操作系统会记录用户登录和注销的消息,防火墙将记录ACL通过和拒绝的消息,磁盘存储系统在故障发生或者在某些系统认为将会发生故障的情况下生成日志信息。日志中有大量信息,这些信息告诉你为什么需要生成日志,系统已经发生了什么。
例如,Web服务器一般会在有人访问Web页面请求资源(图片、文件等等)的时候记录日志。如果用户访问的页面需要通过认证,日志消息将会包含用户名。这就是日志数据的一个例子:可以使用用户名来判断谁访问过一个资源。通过日志,IT管理人员可以了解系统的运行状况,安全状况,甚至是运营的状况。
1)、启用远程日志功能