十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux防火墙+日志服务+文件存储

Linux防火墙+日志服务+文件存储 防火墙防火墙的分类对比维度iptables主机防火墙网络防火墙部署场景1、单台Linux云服务器 2、本地Linux工作站/物理机 2、容器宿主机 4、无集中网络网关的小型单机部署环境1、企业办公网与公网的边界出入口 2、数据中心不同子网的网关节点 3、云环境vpc/子网的网段边界 4、多主机集群的统一网络出入口 5、跨地域办公的bpn接入网关核心配置需求1、限制特定IP/端口对本机的访问 2、禁止本机向外连接恶意IP/端口 3、单机端口映射 4、本机进出流量的简单nat转换 5、拦截本机的异常协议包1、网段间访问策略管控 2、公网出入口的应用层过滤 3、全网ddos流量清洗与防护 4、企业vpn的接入与权限管控 5、跨区域网络的流量路由与整形 6、入侵检测/防御规则配置规则管控范围进作用与单台主机的网络接口需逐台主机独立配置规则无统一管控入口作用于整个网段 / 网络集群支持集中化控制台统一配置 规则全网生效使用规模小规模 单机或少数几台Linux主机中大规模企业级网段、多集群、跨地域网络2一般会建议在有网络防火墙的体系中在部署主机防火墙网络防火墙只能管控外网跨边界的流量管控不了内网之间的横向流量主机防火墙是工作在主机内核针对所有本机出入站流量、转发流量做控制两种结合能更有效地防护主机整体安全。3当主机开启防火墙导致K8s集群内的pod无法通信时我们第一时间应该排查iptables的filter表和forward链和input链4iptables 与 nftablesiptables存在规则结构体重复拷贝会导致内存冗余高nftables通过表达式复用降低内存开销可以使用xtables-nft-multi 在不改变现有脚本和配置的情况下平滑的过渡逐步迁移至nftables5iptables的DROP 在使用后会直接断开原有链接发送方会收不到任何的回应会造成本地服务内部调用异常在生产环境中不建议直接通过怕iptables命令直接将默认策略修改成DROP为了防止配置错误导致“自杀”可以在原有默认ACCEPT策略上iptables命令后加-j DROP 保底若有了兜底规则不小心执行了‘iptanles -F ’ 则表示会清空所有的规则。6 SNAT 和 MASQUERADE :对于SNAT来说一旦主机中对外的IP发生变化那么原来设置的规则就都没有用了而MASQUERADE 可以从主机上自动获取IP地址当作出口IP可以解决snat固定IP变动后规则失效的情况若企业拥有固定IP地址优先选择SNAT7DNAT例192.168.8.14为内网web服务器在主机上配置内网80端口和外网8080端口转发规则#80端口iptables-tnat-APREROUTING-d10.0.0.13-ptcp--dport80-jDNAT --to-destination192.168.8.14:80#8080端口iptables-tnat-APREROUTING-d10.0.0.13-ptcp--dport8080-jDNAT --to-destination192.168.8.14:80#查看规则iptables-tnat-vnL#客户端主机上通过curl命令执行curl10.0.0.13:8080curl10.0.0.13:80#web服务器通过tcpdump工具抓包tcpdump-nntcp port 80因为PREROUTING链执行是在路由之前所以规则放入该链先进行IP转换在执行路由查找对应8自定义链清除当直接执行清除如果该自定义链中存在规则则会报错iptables-Xssh_chain当链被附加到默认链时直接删除链也会报错iptables-vnLiptables-Xweb_chain要彻底清除一个已被引用的自定义链时需要# 先删除该自定义链中的规则iptables-F链名# 删除默认链中该自定义链名关联iptables-DINPUT-j自定义链名# 删除该自定义链iptables-X链名# 查看是否全部清空iptables-vnL日志服务1、rsyslog1优先级rsyslog内置优先级分类从高到低排序LOG_EMERG #emerg/panic 紧急致命错误LOG_ALERT #alert 告警出现当前状态必须立即纠正LOG_CRIT #crit 关键状态的警告LOG_ERR #err/error其他错误LOG_WARNING #warning/warn 警告级别的信息LOG_NOTICE #notice 通知级别的信息LOG_INFO #info 通告级别的信息LOG_DEBUG #debug 调式程序时的信息* #所有级别的日志none #不需要任何日志2rsyslog中的LOG_LOCAL0到LOG_LOCAL7是一组特殊的日志设施不代表日志级别他们是为了供本地使用或开发者自定义的软件类别所设计出来的。这些设施允许系统管理员或开发者将特定服务的日志消息定向到指定的日志文件或执行特定的动作若只想记录err级别的日志可以用‘ .err ’2、在centos7/rocky10及其后续版本中systemctl-journald收集的日志默认情况下是保存在/run/log下的某个目录中且日志文件是压缩和格式化的二进制数据二进制数据文件不能直接进行打开查看。需要借助工具查看3、在配置/etc/logrotate.d/rsyslog中sharedscripts 选项是针对每个转储日志运行prerotate和postrotate脚本当该选项生效时一轮logrotate执行周期内近跑一次脚本若没有整个选项则会每轮转一个日志文件执行一次脚本copytruncate 是用于还在打开中的日志文件把当前日志备份并截断如果五配置了该选项则系统可能在运行备份截断的时候导致日志数据丢失文件共享存储1、NFSnfs是基于网络传输性能低于本地存储并不适合数据库、大文件的高频读写在高并发、高性能场景下nfs服务端cpu、磁盘i/o、网络带宽容易成为瓶颈无法支撑超大规模集群的高并发访问nfs客户端默认的缓存策略比较简单频繁读写同一文件时还容易出现重复网络请求进一步降低电脑性能。2、配置root-squash nfs服务端的安全策略远程客户端主机上的root用户映射成nfs主机上的普通用户避免客户端root拥有服务端共享目录的所有权限当root用户在挂载目录下写入文件属主会被映射成anonymous一样的权限。3、inotifywaitrsync与sersyncinotifywaitrsync会把事件合并、溢出检测、特殊文件名、进程管控等全部交给shell手工实现当在大规模文件实时同步下容易出现丢事件、进程风暴等故障而sersync是全部通过C实现同步逻辑xml配置化及时可用底层复用了inotifywaitrsync针对大规模文件实时同步做了加固所以建议用这种方案。4、logrotate当部署logrotate管理nginx日志时发现旧日志被打包但是新日志没有写入新创建的accress文件中原因可能是logrotate配置的时候缺少通知nginx重新打开日志的动作。可以在哦欸之文件中加入‘postrotate’选项加上nginx重新打开日志的动作IO1、sendfile 、sendfileDMA 、 splicesendfilesendfileDMAsplice状态切换次数2次状态切换2此状态切换4次状态切换CPU/dma拷贝次数1次CPU拷贝 、2次DMA拷贝0次CPU拷贝、2次DMA拷贝0次CPU拷贝、1次DMA拷贝原理用户态的应用程序通过sendfile调用发起数据传输请求在内核完成数据从磁盘到网卡的传输后sendfile返回在这个过程中由内核负责在内核空间完成相关数据传输工作。DMA将磁盘数据读取到内核中不在CPU拷贝到socket 网卡直接从page cache读取数据发送报文socket接收数据DMA存入内核socket缓存区splice将socket的page页直接引用移交到管道缓存区不拷贝数据只修改引用计数在吧管道中page引用移交到输出socketDMA直接使用page发送出去splice方式在于利用管道来引导数据从内核缓冲区到套接字缓冲区再到网卡高效的运用内核自身的调度和管理能力进行数据在内核空间的流转。DAM 直接存储器访问直接依靠硬件系统来控制主存和外部设备之间进行数据传输在传输期间不需要CPU执行程序干预传输结束后通常用中断方式通知CPU。减少CPU在数据传输过程中的负担提高了系统整体性能。作用是实现数据的直接传输去掉了传统数据传输需要CPU寄存器参与的环节。2、apachepreforkworkerevent预派生模式有一个主控制进程然后生成多个子进程每个子进程有一个独立的线程响应用户请求多进程和多线程混合模式有一个控制进程启动多个子进程每个子进程中包含固定的线程进行处理请求当线程不够使用时再启动一个新的子进程新的线程处理请求事件驱动模型每个进程响应多个请求有一个专门的线程来管理长期占用的线程浪费资源问题当有实际请求时将请求传递给服务线程执行完毕后在释放占用资源多并发性差不适用于高并发场景占用内存较少可同时处理更多请求但是使用keepalive长连接方式会导致某个线程会长期占用影响后期新的请求使用线程。在处理高并发请求时更加灵活高效不会造成阻塞响应的情况节省资源。但是也有不足该灵活的管理方式会让整个系统变的比较复杂对工作人员要求比较高一旦某个环节出错不好找到原因排查和处理问题。3、高并发下将工作进程与CPU绑定的核心价值在于减少进程跨CPU迁移提升CPU高速缓存命中率减少调度器开销与TLB刷新降低访问延迟实现算力隔离避免进程争抢CPU在CPU核数很少、IO密集型业务、普通云虚拟机、容器没有配置static cpuset时进行绑定是没有必要的4、在apache监听配置中声明了80和81端口但是只定义了81端口则apache会将请求路由到第一个加载到虚拟主配置default.conf 仅监听该配置端口。nginx不会无故监听指挥舰挺有listen 指定的端口号。没有的就不监听。5、如果apache设置别名该目录在documentroot之外则需要单独授权才能进行访问# 添加授权cat/etc/apache2/apache2.conf-eof Directory /data/server/apache/www Options Indexes FollowSymLinks AllowOverride None Require all granted /Directory eofsystemctl restart apache2.service
返回列表