服务器的安全,说白了就是一场持续的攻防博弈。对于Linux运维来说,基础配置和安全加固做得是否扎实,直接决定了系统在面对潜在威胁时的抵抗力。下面这几个核心环节,算是经过大量实践检验的“标准动作”,能帮你把安全水平提升一个台阶。
账户与权限管理
先说说账户管理这块。检查一下/etc/passwd文件,那些长期不用的超级账户、默认创建的adm、lp、sync账户,其实都是潜在的风险点。该删就删,能锁定就锁定,别给攻击者留后门。
用户口令策略更不能马虎。复杂口令是基本门槛——至少10位,大小写字母、数字、特殊符号都得带上。通过/etc/login.defs文件可以强制执行复杂度要求,同时设置口令有效期,比如每90天轮换一次。权限分配上,坚持最小化原则:日常操作尽量用普通用户,并通过visudo编辑/etc/sudoers文件,把sudo超时设置在15分钟左右,严格控制谁可以用、用什么、用到哪。
系统与软件更新
安全漏洞的修复速度,直接影响系统的生存周期。定期用sudo yum update -y更新操作系统内核、Apache、MySQL、PHP等核心软件包,可以堵住不少已知的安全漏洞,比如Apache的HTTP请求走私漏洞、MySQL的SQL注入漏洞。更省心的做法是启用自动安全更新,通过yum-cron工具配置好,让系统自己下载并安装高危漏洞的补丁,确保CentOS官方发布的安全公告能被及时处理。
防火墙与端口管理
防火墙是系统的第一道防线。firewalld(当然iptables也可以)用来限制访问,只开放HTTP 80、HTTPS 443、SSH 22这些必要端口。遇到恶意IP,直接用firewall-cmd --permanent --add-rich-rule把它封掉。同时,把FTP、Telnet、Samba这些不用的服务停掉——systemctl disable顺手的事,但能减少不少攻击面,毕竟像Telnet的明文传输漏洞解决起来很麻烦。
SSH安全加固
SSH是远程管理的命门,必须重点防护。禁用root远程登录是第一步:修改/etc/ssh/sshd_config,把PermitRootLogin设为no。接着,用密钥认证替代密码登录——生成4096位的RSA密钥对(ssh-keygen -t rsa -b 4096),把公钥上传到服务器(ssh-copy-id),然后关闭密码登录。如果想再安全一层,把默认端口22改成非标准端口(比如2222),能有效降低自动化扫描工具的骚扰。登录失败限制也要配置上:MaxAuthTries设为3次,LoginGraceTime设为2分钟,暴力破解基本没戏。
Apache Web服务器安全配置
Web服务器暴露在外,安全配置必须到位。编辑/etc/httpd/conf/httpd.conf,注释掉不需要的模块,比如mod_imap、mod_ldap——这些模块的漏洞可能被利用执行远程代码。文档根目录权限也要设好:将/var/www/html的所有者设为apache:apache,权限设成750,确保所有者可读写执行、组用户可读执行、其他用户无权限。并发连接数通过MaxClients限制在150左右,每个子进程处理的请求数通过MaxRequestsPerChild控制在1000以内——DDoS攻击面前,这波操作能起到缓冲作用。最后,在Apache配置里加上Options -Indexes,禁止目录列表,避免配置文件或备份文件直接被浏览。
MySQL/MariaDB数据库安全配置
数据库是数据资产的核心,安全策略不能含糊。运行mysql_secure_installation脚本是标准操作:为root设置强密码,删除匿名用户,禁止root远程登录。具体来说,就是执行DELETE FROM mysql.user WHERE User='';删除匿名用户,再用REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';并GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';限制root只能本地登录。另外,定期备份数据库是底线——用mysqldump导出数据,存在异地服务器或云存储上,数据丢了或被篡改了还有得救。
PHP配置安全
PHP的灵活性也带来了不少风险。首先,通过yum remove移除不必要的模块(如php-xmlrpc、php-gmp),减少攻击面。然后编辑php.ini,禁用eval()、exec()、system()这些危险函数——恶意代码执行的路径基本被堵死了。错误信息也不能暴露:display_errors设为Off,把错误日志写到/var/log/php_errors.log方便审计。文件上传大小也要通过upload_max_filesize和post_max_size限制,比如2M和8M,防止上传恶意脚本。
SELinux与文件系统安全
SELinux是个好东西,但很多人嫌麻烦就关掉了。其实只要正确配置,它能带来强有力的访问控制。编辑/etc/selinux/config,把SELINUX设为enforcing,强制访问控制就生效了——比如Apache只能访问/var/www/html目录。如果用了自定义目录,用semanage调整策略:semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?",然后restorecon -Rv /data/web重标记。安装软件时坚持最小化原则,只装必要的包,图形界面、游戏这些无关组件一律忽略。
日志监控与应急响应
日志是事后分析的依据,也是发现异常的第一线索。用rsyslog或systemd-journald收集系统日志(/var/log/messages)、Apache访问日志(/var/log/httpd/access_log)、错误日志(/var/log/httpd/error_log)、MySQL日志(/var/log/mariadb/mariadb.log),定期翻看,留意大量404错误或暴力破解尝试。入侵痕迹检查可以用last查看登录记录(/var/log/wtmp),用lastb查看失败登录(/var/log/btmp),发现可疑IP及时封禁。
一旦发现入侵迹象,应急响应流程要清晰:立刻隔离服务器(断开网络),备份数据库和配置文件等关键数据。然后用ps aux找异常进程、find / -mtime -1找最近修改的文件,分析入侵原因。接着更新软件包、修改密码,把漏洞补上,最后重启服务或恢复备份,让系统恢复正常运行。整套流程走下来,安全事件的处理会更有条理。
