创建新的账户
创建新用户
useradd op
创建密码
passwd op
赋予sudo 权限
chmod 777 /etc/sudoers vim /etc/sudoers 找到 root ALL=(ALL) ALL的字段,在下一行追加: username ALL=(ALL) ALL #op ALL=(ALL) ALL,!/bin/su,!/bin/rm,!/sbin*,!/sbin/init,!/sbin/poweroff,!/sbin/reboot #%wheel ALL=(ALL) NOPASSWD: ALL #将此行注释,代表wheel组成员使用sudo也需要输入密码 Defaults logfile="/var/log/sudo" #启用日志 chmod 440 /etc/sudoers
关闭root登录
vim /etc/ssh/sshd_config 查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“Yes”改为“No”,并保存文件 systemctl restart sshd
修改登录端口号
vim /etc/ssh/sshd_config 找到 #Port 22 一段,在下一行添加 Port 2023,保存并退出 systemctl restart sshd #如果是开启了防火墙还需要在防火墙中开启相应端口,也检查下阿里云
锁定重要文件
lsattr /etc/passwd /etc/shadow #查看文件的状态 chattr +i /etc/passwd /etc/shadow #锁定文件 chattr -i /etc/passwd /etc/shadow #解锁文件
密码安全控制
#设置密码有效期 vim /etc/login.defs PASS_MAX_DAYS 30 #修改密码有效期为30天,适用于新建用户
设置登录超时时间
vim /etc/profile export TMOUT=900 #设置全局自动注销时间,声明900s没有操作就登出
限制使用su命令的用户
/etc/pam.d/su auth required pam_wheel.so use_ui #将此行的注释取消,只允许wheel组的用户使用su命令 #保存退出 gpasswd -a op wheel #将op账户添加至wheel组
配置防火墙白名单
#开启防火墙 systemctl start firewalld #开启443端口,80默认开启的 firewall-cmd --add-port=443/tcp --permanent #关闭3306端口 firewall-cmd --remove-port=3306/tcp --permanent #如果有docker服务,可以开启docker区域的java服务端口 firewall-cmd --add-port=8080/tcp --permanent --zone=docker #查看防火墙详细列表 firewall-cmd --list-all-zones #添加ip白名单 firewall-cmd --permanent --zone=trusted --add-source=106.46.112.0/16 #默认区域从 public 到 drop,以达到无视所有接入连接的目的 firewall-cmd --set-default-zone=drop #将默认网卡 eth0 分配给 drop 区域 firewall-cmd --permanent --zone=drop --change-interface=eth0 #重启防火墙,可验证白名单是否剩下 firewall-cmd --reload firewall-cmd --zone=trusted --list-all #建议使用代理机访问登录端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.0.0.1" port protocol="tcp" port="2023" accept"
firewalld 一般已经默认内置了 9 个区域(zone),大部分情况下,这些已经足够使用,按从最不信任到最受信任的顺序为:
drop:最低信任级别。所有传入的连接都将被丢弃而不会回复,并且只能进行传出连接。
block:与上述类似,但不是简单地删除连接,而是使用 icmp-host-prohibitedor 和 icmp6-adm-prohibited 消息拒绝传入的请求。
public:表示不信任的公共网络。您不信任其他计算机,但可能会视情况允许选择的传入连接。默认情况下,此区域为激活状态。
external:如果你使用防火墙作为网关,则为外部网络。将其配置为 NAT 转发,以便你的内部网络保持私有但可访问。
internal:external 区域的另一侧,用于网关的内部。这些计算机值得信赖,并且可以使用一些其他服务。
dmz:用于 DMZ (DeMilitarized Zone) 中的计算机(将无法访问网络其余部分的隔离计算机),仅允许某些传入连接。
work:用于工作机。信任网络中的大多数计算机。可能还允许其他一些服务。
home:家庭环境。通常,这意味着您信任其他大多数计算机,并且将接受其他一些服务。
trusted:信任网络中的所有计算机。可用选项中最开放的,应谨慎使用。