说到Linux安全,大家可能多少遇到过一些linux系统的安全攻击事件,有服务器攻击,服务攻击,策略攻击,数据丢失等等。那么,如何提升linux系统安全呢?下面我们将在Linux操作系统层面,做一些提升Linux系统安全的操作。
一、登录安全
如果你的Linux系统存在登录安全漏洞,比如密码简单,root用户可登录等,那么你的服务器就相当于在网络中裸奔,随时有可能被黑客登录到系统重,做一些敏感操作。常用的登录安全处理方式有如下几种:
1. 禁止ROOT用户密码登录
具体操作如下:
①创建ssh密钥对(当然如果你还允许ROOT用户登录,如果不允许ROOT用户登录,密钥对可以不用)
ssh-keygen -t rsa -b 4096
第一次回车,输入的文件名(默认不输入,文件名为id_rsa)
第二次回车,输入密钥对密码,不输入则密钥密码为空
第三次回车,重复密钥对密码
将生成的密钥对下载到本地,用于登录
sz /root/.ssh/id_rsa
将密钥对添加到authorized_keys中
方法一:
使用系统拷贝的方式复制到远程其他机器
ssh-copy-id -i /root/.ssh/id_rsa.pub root@127.0.0.1
回车输入登录服务器root用户的密码
方法二:
直接追加,先将文件拷贝到要追加的机器的/root/.ssh目录中
ls /root/.ssh/authorized_keys
# 如果文件不存在,则先创建
touch /root/.ssh/authorized_keys
# 赋予权限
chmod 600 /root/.ssh/authorized_keys
# 追加内容
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
此时可以先测试是否可以通过密码对登录服务器
添加非root登录用户
groupadd test
useradd -g test test
cd /home/test
ssh-keygen -t rsa -b 4096
# 输入密码
# 下载并保存好私钥
sz id_rsa
touch /home/test/.ssh/authorized_keys
# 这一步非常重要,不执行无法登录
chmod 600 /home/test/.ssh/authorized_keys
cat /home/test/.ssh/id_rsa >> /home/test/.ssh/authorized_keys
# 切换到root用户做好密钥对保存(需要root密码)
su root
mkdir /home/.sshBackup
chmod 600 /home/.sshBackup
mv /root/.ssh/id_rsa /home/.sshBackup/root_id_rsa
mv /root/.ssh/id_rsa.pub /home/.sshBackup/root_id_rsa.pub
mv /home/mark/.ssh/id_rsa /home/.sshBackup/mark_id_rsa
mv /home/mark/.ssh/id_rsa.bak /home/.sshBackup/mark_id_rsa.pub
测试mark用户是否可以远程登录,如果测试成功,即可禁止root远程登录
②禁止root远程登录
vim /etc/ssh/sshd_config
# 禁止root远程登录
PermitRootLogin yes
# 改为:
PermitRootLogin no
# 禁止任何用户密码登录
PasswordAuthentication yes
# 改为
PasswordAuthentication no
# 重启ssh服务
service sshd restart
2. 禁止所有用户密码登录,仅支持公钥登录
修改/etc/ssh/sshd_config文件
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys
重启ssh服务
service sshd restart #centos系统
service ssh restart #ubuntu系统
/etc/init.d/ssh restart #debian系统
二、端口安全
一些不必要对外开放的远程端口,可以屏蔽,比如,mysql 3306端口,不需要对外网暴露,则可以用防火墙的方式关闭外网端口:
# 开放端口
firewall-cmd --permanent --add-port=8080/tcp
# 移除开放端口
firewall-cmd --permanent --remove-port=8080/tcp
或者使用第三方的安全规则,比如阿里云ecs服务器都有对应的端口规则。