最近入手了一台萝卜数据的 VPS,然后将 2 个网站都给搬家了。作为一个运维工程师,终于不用再处处受制于人了,虚拟主机真的只能玩个球!
拿到 VPS 并快速部署好环境后,开始着手完善一下安全设置,以下过程记录,供大家参考:
一、用户权限安全设置root 权限太高,误操作就相当危险,所以日常操作使用普通账号,只有特定时候才使用 su 切换到 root 身份。
①、新建普通用户,比如 xiaojun useradd xiaojun②、修改密码 passwd xiaojun
③、将帐号加入 wheel 组 usermod -G wheel xiaojun
④、设置只允许这个组的帐号,使用 su 命令切换到 root
vim /etc/pam.d/su
找到#auth required pam_wheel.so use_uid
去掉行首的注释符 # 然后使用 :wq 保存退出
接着 vim /etc/login.defs
在最末添加 SU_WHEEL_ONLY yes,再用:wq 保存退出即可。
Ps:执行 echo "SU_WHEEL_ONLY yes">>/etc/login.defs 亦可。
现在,再建立新的普通帐号,是无法使用 su 命令切换到 root 组了,感兴趣的可以测试下效果。
⑤、删除掉不需要的用户和用户组禁止所有默认的被操作系统本身启动的并且不必要的账号,账号越多,系统就越容易受到攻击。
userdel?admuserdel?lpuserdel?syncuserdel?shutdownuserdel?haltuserdel?newsuserdel?uucpuserdel?operatoruserdel?gamesuserdel?gopheruserdel?ftpgroupdel?lpgroupdel?newsgroupdel?uucpgroupdel?gamesgroupdel?dipgroupdel?pppusers
⑥、锁定口令文件
执行 chattr 命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。
chattr?+i?/etc/passwdchattr?+i?/etc/shadowchattr?+i?/etc/groupchattr?+i?/etc/gshadow
二、SSH 安全设置 ①、修改 SSH 端口
默认的 SSH 使用 22 端口,众所周知,所以我们有必要自定义只有自己才知道的端口号,而且增加那些恶意扫描端口的难度,建议把 SSH 端口改到 10000 以上,比如使用 23212,如下修改:
Ps:修改前,请执行 iptables -nL 确认防火墙未设置非 22/80 访问限制规则,否则可能导致修改后无法使用自定义端口连接就悲剧了!
vim /etc/ssh/sshd_config 编辑 SSH 配置文件
i. 找到#Port 22,去掉#号,并在下面添加 Port 23212(先保留 22 端口,等 23212 成功连接再去掉 22,保险做法)
ii. 继续找到#UseDNS yes,改成 UseDNS no,可以提高 ssh 的连接速度;
iii. 找到#PermitRootLogin Yes 改成 PermitRootLogin no 禁止 root 远程使用 ssh 登录
iv. 找到#PermitEmptyPasswords no,去掉#号, 禁止空密码登录
最后,使用 :wq 保存退出,再执行 service sshd restart 重启 ssh 服务即可生效。
此时,可以新开一个终端,测试能否通过 23212 端口连线,如果可以就把之前保留的 port 22 删除即可。
三、防火墙简单安全设定这个 VPS 是直接使用公网 IP 的,防火墙还是得简单设置下。
前期如下规划:
仅作为 web 服务器使用,所以只需要开放 SSH 和 HTTP 端口即可,即只要开放上面定义的 23212 和 80 端口,由于不使用 ftp,本例未提到 21 号端口,实际使用请注意辨别。
①、准备工作由于操作防火墙具有一定的误操作风险,很可能导致自己也被阻挡在外的悲剧,所以操作防火墙之前事先一定要先建立一个关闭防火墙的计划任务,比如:
执行 crontab -e 加入:
*/5?*?*?*?*?root?/etc/init.d/iptables?stop
表示每 5 分钟停止一次防火墙,以防误操作把自己挡在外面,就算出现误操作,5 分钟之内将会停止,也不会造成悲剧,这是一个技巧!
②、防火墙设置脚本以下代码我亲测无误,请放心使用,策略说明:
i. 仅开通 HTTP(80)和 SSH(自动抓取)端口,其他一律拒绝访问!可根据实际需要在第 10 行添加其他端口,比如 FTP 的 21 端口、smtp25 端口等。
ii. 单向禁 ping 设置,即外部 IP 无法 ping 通你的公网 IP.
#!/bin/bashssh_port=`netstat?-nutlp?|?grep?sshd?|?grep?0.0.0.0?|?awk?'{print?$4}'?|?cut?-d?":"?-f2`iptables?-Fiptables?-F?-t?natiptables?-Xiptables?-P?INPUT?DROPiptables?-P?OUTPUT?ACCEPTiptables?-P?FORWARD?DROPiptables?-A?INPUT?-i?lo?-j?ACCEPTiptables?-A?INPUT?-m?state?--state?ESTABLISHED,RELATED?-j?ACCEPTiptables?-A?INPUT?-p?tcp?-m?multiport?--dport?80,$ssh_port?-j?ACCEPTiptables?-A?INPUT?-p?icmp?--icmp-type?0?-j?ACCEPT/etc/init.d/iptables?saveexit?0
确认无误后,记得把第①步中的任务计划取消。
如我的 VPS 防火墙规则如下:
执行如下命令即可:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all然后用你的电脑 ping 服务器 IP 就可以看到效果了!
当然如果你用了上面的防火墙脚本,就已经自带禁 ping 功能了。两种方法的区别如下:
以上方法,ping 能够返回消息(前提是防火墙未做阻挡规则,否则直接超时):
采用防火墙的方法,则直接超时:
Ps:个人推荐使用上文的防火墙脚本设置,更彻底。
②、开启 TCP SYN Cookie 保护执行 echo 1 > /proc/sys/net/ipv4/tcp_syncookies 即可。
做到这里,你的 VPS 已经具备不错的安全性了,当互联网没有绝对的安全可言,我们必须时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。
Ps:除了安全设置外,还可以针对 VPS 做一些优化设置,比如:在张戈还没有 VPS 的时候就写过一篇Linux 优化方法收集与整理,今天刚好派上用场了,感兴趣的推荐前往参考下。
本文来源:Linux教程--linux服务器安全配置
本文地址:https://www.idcbaba.com/linux/139.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。