常用的linux安全处理


一、登录安全

1.1 修改ssh端口

修改SSH默认端口,可以降低各种暴力攻击的风险。
SSH端口默认为22,编辑/etc/ssh/sshd_config, 修改Port,然后重启sshd服务。

1
2
# Port 22
Port 12345

1.2 设置最大登录尝试次数

设置较低的最大登录场是次数,可以降低SSH服务器被暴力攻击成功的风险。
编辑/etc/ssh/sshd_config,取消MaxAuthTries注释符号#,设置最大密码尝试失败次数3-6,建议为4:

1
MaxAuthTries 4

1.3 SSHD强制使用V2安全协议

编辑/etc/ssh/sshd_config,文件以按如下方式设置参数:

1
Protocol 2

1.4 设置SSH空闲超时退出时间

设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险。
编辑/etc/ssh/sshd_config,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3。

1
2
ClientAliveInterval 600
ClientAliveCountMax 2

1.5 确保SSH LogLevel设置为INFO

确保SSH LogLevel设置为INFO,记录登录和注销活动。
编辑/etc/ssh/sshd_config,取消LogLevel注释符号#,将其设置为INFO:

1
LogLevel INFO

1.6 禁用root登录

root用户权限太高,不小心可能引起误操作。可以禁用root登录,以拥有sudo权限的用户登录。

1.6.1 创建sudo用户:

1
2
3
4
useradd username
passwd username
visudo # 去掉%wheel ALL=(ALL) ALL前的#
usermod -aG wheel username

1.6.2 禁用root登录:

编辑/etc/ssh/sshd_config,将PermitRootLogin配置为no:

1
PermitRootLogin no

1.7 采用密钥对登录,禁用密码登录

1.7.1 设置sshkey登录:

在客户端本地创建sshkey,将公钥id_rsa.pub内容拷贝到远程服务器用户目录下~/.ssh/authorized_keys文件中。

1
2
3
4
5
#客户端本地操作
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub [user]@[serverhost]:[port]/home/[user]/client_id_rsa.pub
#用[user]账号登录远程服务器,执行以下命令:
cat ~/client_id_rsa.pub >> ~/.ssh/authorized_keys

1.7.2 禁用密码登录:

编辑/etc/ssh/sshd_config,将PasswordAuthentication配置为no:

1
PasswordAuthentication no

二、密码安全

2.1 禁用空密码登录

编辑/etc/ssh/sshd_config,将PermitEmptyPasswords配置为no:

1
PermitEmptyPasswords no

2.2 密码复杂度检查

使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为9-32位,把minclass设置为3或4。如:

1
2
minlen=10
minclass=3

【minlen=密码最小长度,minclass=密码至少包含小写字母、大写字母、数字、特殊字符等4类字符中的种类数)】

2.3 设置密码失效时间

使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/login.defs,将 PASS_MAX_DAYS 参数设置为 60-180之间,如:

1
PASS_MAX_DAYS 90

同时执行命令使root用户设置生效:

1
chage --maxdays 90 root

2.4 设置密码修改最小间隔时间

使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/login.defs,将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:

1
PASS_MIN_DAYS 7

同时执行命令使root用户设置生效:

1
chage --mindays 7 root

2.5 确保密码到期警告天数为7或更多

使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/login.defs,将 PASS_WARN_AGE 参数设置为7-14之间,建议为7:

1
PASS_WARN_AGE 7

同时执行命令使root用户设置生效:

1
chage --warndays 7 root

三、系统权限管理

3.1 设置用户权限配置文件的权限

建议执行以下5条命令:

1
2
3
4
5
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

四、配置安全组策略

  1. 待整理。

五、服务和辅助工具

  1. 禁用不需要的服务:
    1
    systemctl disable service_name
  2. 安装fail2ban, 监控服务器攻击。

六、应用服务安全

6.1 mysql安全

  1. 修改mysql端口:mysql默认端口为3306,编辑/etc/my.cnf (查看自己mysql配置文件位置), 找到端口修改,然后重启mysqld服务。

6.2 redis安全

  1. 修改redis端口:redis默认端口6379,默认绑定127.0.0.1,编辑/etc/redis.conf(查看自己redis配置文件位置),修改端口后重启服务。

    七、做好服务器运维

  2. 检查服务器运行的服务和开启的端口

    1
    2
    netstat -npl
    systemctl list-unit-files --type=service | grep enabled
  3. 其他待整理。