linux服务器安全加固
去年秋天,安全我帮一个朋友处理他公司的加固一台阿里云ECS。那台机器跑了两年多,安全上面挂着几个内部测试服务,加固SSH端口还是安全默认的22,root登录开着,加固密码是安全八位纯数字。我登上去敲了`lastb | head -30`,加固屏幕上刷出来的安全失败登录记录翻了好几页——来自巴西、俄罗斯、加固越南的安全IP轮番在猜密码。他说平时没太管这台机器,加固我告诉他:没被挖矿,安全算你运气好。加固 这件事基本能说明一个现实:一台暴露在公网上的安全Linux服务器,从上线那一刻起就在被扫描。加固不是可选项,是必须做的事。下面按我自己实际操作的顺序,聊几个关键点。 绝大多数入侵尝试都从SSH开始。默认配置里,root可以远程登录,密码认证开着,端口是22。这三样凑在一起,等于把家门钥匙插在锁上。 改法很直接。编辑 密钥登录的私钥要加passphrase。很多人嫌麻烦不加,但私钥文件一旦泄露,没有passphrase就是一马平川。 云厂商的安全组确实能挡一层,但它管的是网络边界,管不了机器内部。系统层面的iptables或nftables还是得配。原则很简单:默认拒绝所有入站,只放行明确需要的端口。 用firewalld的话, 我见过不少服务器上还留着默认的www、ftp、games这些用不上的账号。这些账号平时没人管,一旦被利用就是现成的跳板。 日常操作不要用root。创建一个普通用户,需要提权的时候走sudo。sudoers文件里把权限收紧,别动不动就给ALL。另外, 内核漏洞、OpenSSL漏洞、sudo漏洞——这些年年都有。CentOS用 日志方面,至少把 有人一上来就装一堆安全软件,SELinux开着但不会配,结果服务起不来就干脆 加固这件事没有终点,也没有一劳永逸的方案。把上面这些基础项做到位,能挡掉九成以上的自动化攻击。剩下的,靠持续关注和及时响应。那台被扫了两年的机器,改完配置之后我隔了一周再看SSH是第一道门,先把门锁换掉
/etc/ssh/sshd_config:把PermitRootLogin设成no,PasswordAuthentication关掉,改用密钥登录。端口号改成一个不常用的高位端口,比如47283。改完重启sshd之前,务必另开一个终端保持当前连接,确认新配置能正常登录再断开——我见过有人改完配置直接重启,结果把自己锁在外面,只能走VNC控制台救回来。防火墙别只靠安全组
firewall-cmd --set-default-zone=drop,然后逐个加需要的服务。用ufw更简单,ufw default deny incoming,再ufw allow 47283/tcp。别嫌麻烦,每开一个端口之前问自己一句:这个真的需要对外暴露吗?数据库端口3306、6379这种,绑到127.0.0.1就够了,除非有明确的远程访问需求。账号和权限,能少则少
cat /etc/passwd看一遍,能删的删,能锁的锁。/etc/sudoers一定要用visudo编辑,语法写错会导致sudo直接不可用。补丁和日志,两件容易被忽略的事
yum update,Ubuntu用apt upgrade,别攒着几个月不更新。生产环境可以先在测试机上验证,但别因为怕出问题就永远不更新,那样风险更大。/var/log/secure或/var/log/auth.log盯住。配一个fail2ban,SSH连续失败几次就自动封IP,能挡掉大量暴力破解。再装个logwatch或者自己写个脚本,每天把异常登录情况发到邮箱。不用搞得太复杂,关键是有人看。最后说一个容易走偏的地方
setenforce 0永久关掉。这等于装了个防盗门然后把门拆了。SELinux或AppArmor要么花时间搞懂,要么在装系统时就明确不启用,别半开半关给自己添乱。lastb,失败记录基本清零了——攻击者发现啃不动,自然就换目标了。
-
上一篇
-
下一篇
相关推荐
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-