Linux安全加固
0x00 简介
安全加固是企业安全中及其重要的一环,其主要内容包括账号安全、认证授权、协议安全、审计安全四项,今天首先学习Linux下的系统加固(CentOS)。
0x01 账号安全
这一部分主要是对Linux账号进行加固。
与账号相关的文件
/etc/passwd — 记录了系统中各用户的一些基本属性,root可写,所有用户可读
/etc/shadow — 记录了所有用户的密码
/etc/group — 记录了用户组属性
修改密码策略
vim /etc/login.defs
PASS_MAX_DAYS 90 密码最长有效期
PASS_MIN_DAYS 10 密码修改之间最小的天数
PASS_MIN_LEN 8 密码长度
PASS_WARN_AGE 7 口令失效前多少天开始通知用户修改密码
设置密码强度
vim /etc/pam.d/system-auth,将password requisite pam_cracklib.so
修改为至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
Ubuntu中vi /etc/pam.d/common-password。
限制用户登陆vim /etc/hosts.deny,若禁止192.168.0.1对服务器进行ssh的登陆,添加如下内容sshd : 192.168.0.1
限制登陆次数
应对暴力破解,我们可以限制登陆次数为5,超过5次登陆失败就锁定。vim /etc/pam.d/sshd,在 #%PAM-1.0 的下面,加入下面的内容,表示当密码输入错误达到3次,就锁定用户150秒,如果root用户输入密码错误达到3次,锁定300秒。
auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300
锁定用户的管理:
pam_tally2 查看被锁定的用户
pam_tally2 –reset -u username 将被锁定的用户解锁
0x02 认证授权
认证授权主要是验证你是谁,你能够做什么。
文件目录权限
在用户登陆中非常重要的三个文件
/etc/passwd 必须所有用户都可读,root用户可写 –rw-r—r— 权限值为644
/etc/shadow 只有root可读 –r——– 权限值为400
/etc/group 必须所有用户都可读,root用户可写 –rw-r—r— 权限值为644
chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group
检查是否存在除root之外UID为0的用户:
awk -F ‘:’ ‘($3==0){print $1)’ /etc/passwd
检索出来的非root用户用userdel命令全部删除。
检查是否使用PAM认证模块禁止wheel组之外的用户su为root
[root@centos ~]# #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。
PAM(Pluggable Authentication Module)是一个可插入式认证模块,在Linux系统中,各种不同的应用程序都需要完成认证功能,为了实现统一调配,把所有需要认证的功能做成一个模块(认证机制特别复杂的除外,如:https),当特定的程序需要完成认证功能的时候,就去调用PMA的认证模块。
文件与目录缺省权限控制
[root@centos ~]#cp /etc/profile /etc/profile.bak
[root@centos ~]# vim /etc/profile
umask 027
[root@centos ~]#source /etc/profile
0x03 协议安全
协议加固主要阻止入侵者远程获取服务器的权限。
SSH安全
SSH是一个协议,利用它可以登录到一个远程系统或远程执行系统命令,默认允许root登录,并且sshv1存在缺陷,我们应该在sshd_config禁止root访问和使用sshv2来让ssh更加安全。vim /etc/ssh/sshd_config 修改为:
PermitRootLogin no
telnet安全
早期的Linux默认开启telnet服务,telnet,ftp,rlogin都是明文传输的协议,如果必须使用telnet,则需要进行安全配置:
/etc/xinetd.d/telnet
disable=yes
禁止匿名ftp
[root@wenzhiyi ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #如果存在anonymous_enable则修改,如果不存在则手动增加
预防Flood攻击
[root@centos ~]# vim /etc/sysctl.conf
[root@centos ~]# net.ipv4.tcp_syncookies = 1
[root@centos ~]# sysctl -p #让命令生效
禁止ping
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 开启
# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 关闭
0x04 审计安全
日志就是计算机系统、设备、软件等在某种情况下记录的信息。具体的内容取决于日志的来源
检查是否记录安全事件日志
[root@wenzhiyi ~]# vim /etc/syslog.conf 或者 /etc/rsyslog.conf,在文件中加入如下内容:
*.err;kern.debug;daemon.notice /var/log/messages
[root@wenzhiyi ~]# chmod 640 /var/log/messages
[root@wenzhiyi ~]# service rsyslog restart
建立日志服务器
日志服务器的好处在于,每个工作服务器将自己的日志信息发送给日志服务器进行集中管理,即使有人入侵了服务器并将自己的登录信息悄悄删除,但由于日志信息实时与日志服务器同步,保证了日志的完整性。以备工作人员根据日志服务器信息对服务器安全进行评测。
在客户端修改配置文件/etc/rsyslog.conf
想把哪种类型的日志文件发送给服务端,你就把他原来的对应的目录改成: @日志服务器ip
然后重启rsyslog服务:
systemctl restart rsyslog
在服务器端打开 /etc/rsyslog.conf 配置文件,将后两行注释给去掉
然后重启rsyslog服务,开启防火墙,这样就完成了日志服务器的搭建。
systemctl restart rsyslog
firewall-cmd –add-port=514/tcp