Linux安全加固

Linux安全加固


1. 账户口令密码

1.1 设置密码策略

修改文件 /etc/login.defs

vim /etc/login.defs

#口令生存周期,即密码最长有效期
PASS_MAX_DAYS 90 
#口令更改最小间隔天数
PASS_MIN_DAYS 7 
#口令最小长度,已经被 PAM 模块取代,所以这个选项并不生效
PASS_MIN_LEN 8 
#口令失效前多少天开始通知用户修改密码
PASS_WARN_AGE 7 

注意:此处的更改优先级低于 chage 命令的设置

注意:更改完后,对所有新创建的用户生效。对已经存在的用户无效

1.2 设置密码强度

修改文件 /etc/pam.d/password-auth

vim /etc/pam.d/password-auth

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
  • retry:尝试次数
  • difok:定义新密码中必须要有几个字符和旧密码不同
  • minlen:最小密码长度
  • ucredit:大写字母个数。注意:-1表示最少1位
  • lcredit:小写字母个数
  • dcredit:数字个数
  • ocredit:特殊字符个数

但这个密码强度的设定只对"普通用户"有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功。

1.3 限制密码重用

vim  /etc/pam.d/system-auth

检查password sufficient pam_unix.so 这项是否有remember参数(已经使用过的密码会保存在/etc/security/opasswd 下面)

修改:

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

末尾加上 remember=5,表示禁止使用最近用过的5个密码

1.4 登录失败锁定

修改文件 /etc/pam.d/sshd

vim /etc/pam.d/sshd 

#普通账户3次密码错误,300s后重试。root账户5次密码错误后,300s后重试
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root=5 root_unlock_time=300

    关于锁定

# 查看被锁定的用户 
pam_tally2 -u
# 将被锁定的用户解锁
pam_tally2 --reset -u username
或
pam_tally2 -u username -r

# help
pam_tally2: [-f rooted-filename] [--file rooted-filename]
   [-u username] [--user username]
   [-r] [--reset[=n]] [--quiet]

1.5 登录超时自动注销

vim /etc/profile
后面添加:
export TMOUT=180	#180s后无操作自动注销

2. SSH配置

2.1 打开配置文件

vim /etc/ssh/sshd_config

2.2 限制root远程登录

配置PermitRootLogin

  • 不设置:默认是yes,root可以登录
  • 设置no:root禁止远程登陆
  • 设置without-password:root可以登录,但是不允许通过密码ssh登陆
  • 设置forced-commands-only:可以登录,但是登陆后不能进入交互,而是执行指定的命令后自动退出

2.3 禁止SSH空密码用户登录

配置PermitEmptyPasswords,设置为no:禁止SSH空密码用户登录

PermitEmptyPasswords no

2.4 限制尝试次数

配置MaxAuthTries

vim /etc/ssh/sshd_config
# 取消注释,设置最大密码尝试失败次数3-6,建议为4
MaxAuthTries 4

2.5 空闲超时退出

配置ClientAliveInterval、ClientAliveCountMax

vim /etc/ssh/sshd_config
# 取消注释,将ClientAliveInterval设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3
ClientAliveInterval 600
ClientAliveCountMax 2

2.6 切换登录端口

vim /etc/ssh/sshd_config
#修改Port
Port <新端口>

SELinux放行:

semanage port -a -t ssh_port_t -p tcp <新端口>

防火墙放行:

firewalld -cmd --zone=pulic --add-port=ssh <新端口>/tcp --permanent

2.7 密钥对

具体过程:

  1. 生成密钥

    [root@host ~]$ ssh-keygen <== 建立密钥对
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
    Enter same passphrase again: <== 再输入一遍密钥锁码
    Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
    Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
    The key fingerprint is: xxxxxxx
    
  2. 服务器安装公钥

    # 安装公钥
    cd .ssh
    cat id_rsa.pub >> authorized_keys
    
    # 文件权限
    chmod 600 authorized_keys
    chmod 700 ~/.ssh
    
    # 配置文件/etc/ssh/sshd_config
    # 允许密钥登录
    RSAAuthentication yes
    PubkeyAuthentication yes
    # 允许root通过SSH登录
    PermitRootLogin yes		
    # 禁用密码登录
    PasswordAuthentication no		
    
    # 重启服务
    service sshd restart
    
  3. 客户端SSH使用私钥登录

2.8 日志记录

配置LogLevel,设置为INFO:记录登录和注销活动

vim /etc/ssh/sshd_config
#取消注释
LogLevel INFO

2.9 使用V2安全协议

设置参数: Protocol 2,SSHD强制使用V2安全协议

vim /etc/ssh/sshd_config

Protocol 2

3. 权限管理

3.1 常用命令

chmod

变更文件或目录的权限

chmod u+x,g+w filename  //设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r filename
chmod 764 filename
chmod a+x filename
  • u: User,即文件或目录的拥有者
  • g: Group,即文件或目录的所属群组
  • o: Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围
  • a: All,即全部的用户,包含拥有者,所属群组以及其他用户
  • r: 读取权限,数字代号为 4
  • w: 写入权限,数字代号为 2
  • x: 执行或切换权限,数字代号为 1
  • -:不具任何权限,数字代号为 0
  • s: 特殊功能说明:变更文件或目录的权限

umask

设置限制新建文件权限的掩码,在原有权限的基础上删除指定的权限

umask 022		#若初始权限是777,之后变为755

文件默认权限 644,目录默认权限 755

umask值可在/etc/profile文件中修改

chown

改变某个文件或目录的所有者和所属的组

chown -R <username>:<groupname> <filename>

3.2 重要目录文件

/etc/passwd
/etc/shadow
/etc/gshadow
/etc/group
/etc/hosts.deny
/etc/hosts.allow
/etc/services
/etc/ssh/sshd_config

3.3 配置文件权限

chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
chmod 0644 /etc/group
chmod 0644 /etc/passwd
chmod 0400 /etc/shadow
chmod 0400 /etc/gshadow

4. 日志管理

4.1 查看系统日志

tail /var/log/messages

4.2 rsyslog服务

rsyslog具体参考:https://www.cnblogs.com/shu-sheng/p/13275474.html

配置文件

vim /etc/rsyslog.conf

/etc/rsyslog.d 目录是单独配置的rsyslog配置文件

文件部分详解

rules格式: 认证相关服务.所有日志等级(服务名称[连接符号]日志等级) 日志记录的位置

#$ModLoad imudp
#$UDPServerRun 514  	#允许514端口接收使用UDP协议转发过来的日志

#$ModLoad imtcp
#$InputTCPServerRun 514		#允许514端口接收使用TCP协议转发过来的日志


#### RULES ####

#kern.*                                                 /dev/console	
# 关于内核的所有日志都放到/dev/console(控制台)

*.info;mail.none;authpriv.none;cron.none                /var/log/messages		
# 记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间任务相关的信息除外

authpriv.*                                              /var/log/secure		
# authpriv验证相关的所有信息存放在/var/log/secure

mail.*                                                  -/var/log/maillog		
# 邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大

cron.*                                                  /var/log/cron		
# 计划任务有关的信息存放在/var/log/cron

*.emerg                                                 :omusrmsg:*		
# 记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人

uucp,news.crit                                          /var/log/spooler
# 记录uucp,news.crit等存放在/var/log/spooler
# uucp  –unix to unix copy, unix主机之间相关的通讯,news   –新闻组

local7.*                                                /var/log/boot.log
# 启动的相关信息


#*.* @@remote-host:514  
# @@表示通过tcp协议发送,使用TCP协议转发到remote-host的514(默认)端口,@表示通过udp进行转发

查看rsyslog服务状态

systemctl stauts rsyslog.service

设置rsyslog开机自启动

systemctl enable rsyslog

启动rsyslog服务

systemctl start rsyslog

5. 其他

ASLR-地址空间随机化

开启地址空间布局随机化

sysctl -w kernel.randomize_va_space=2

配置文件

cat /proc/sys/kernel/randomize_va_space

配置kernel.randomize_va_space参数

  • 0 :关闭进程地址空间随机化。
  • 1:半随机。共享库、栈、mmap() 以及 VDSO 将被随机化。
  • 2:全随机。在1的基础上增加堆(heap)的随机化。

posted @ 2022-10-30 17:12  0dot7  阅读(258)  评论(0编辑  收藏  举报