多平台统一管理软件接口,如何实现多平台统一管理软件接口
181
2022-10-30
iptables上课内容
iptables
全称Packets Filter Firewall; iptables/netfilter:包过滤型防火墙;带状态检测的包过滤型防火墙;连接追踪(connection tracking); Firewall:隔离工具;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(识别条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件; 硬件防火墙:在硬件级别能部分防火墙,另一部分功能基于软件实现; 软件防火墙:应用软件处理逻辑运行通用硬件实现的防火墙; 主机防火墙:服务范围为当前主机; 网络防火墙:服务范围为局域网; 获取帮助: CentOS 7:man iptables-extensions CentOS 6:man iptables iptables/netfilter:软件实现的主机或网络防火墙; netfilter:位于内核中tcp/ip协议栈上的一个framework;5个钩子函数; iptables:位于用户空间的命令行程序,用于生成规则送往内核中的netfilter之上; hook function钩子函数: prerouting input forward output postrouting chain链: PREROUTING INPUT FORWARD OUTPUT POSTROUTING 四表 filter:过滤,防火墙; nat:network address translation;用于修改报文的源地址或目标地址,甚至是端口; mangle:拆解报文,做出修改,并重新封装起来; raw:关闭nat表上启用的连接追踪机制; 优先级次序(由高而低): raw --> mangle --> nat --> filter 4个表中,每个表多对应的链分别为(功能<-->钩子): raw:PREROUTING,OUTPUT mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING nat:PREROUTING,INPUT,OUTPUT,POSTRUTING filter:INPUT,FORWARD,OUTPUT 报文流向: 到本机某进程的报文:PREROUTING --> INPUT 由本转发的报文:PREROUTING --> FORWARD --> POSTROUTING 由本某进程发出的:OUTPUT --> POSTROUTING 规则的组成的部分: 匹配条件: 网络层首部属性值; 传输层首部属性值; 附加的条件; 处理动作: TCP/IP协议栈: 数据链接层:物理到物理设备之间的通信;(MAC,Media Access Control) 网络层:源主机到目标主机之间的通信; 传输层:进程到进程之间的通信; CentOS 5/6:iptables命令编写规则; CentOS 7:firewalld; systemctl disable firewalld.service iptables命令: 规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,就由规则后面指明的处理动作进行处理; 匹配条件: 基本匹配条件:简单检查IP、TCP、UDP等报文的某属性进行匹配的 扩展匹配条件:需要借助于扩展模块进行的匹配条件指定即为扩展匹配; 处理动作: 基本动作:ACCEPT,DROP, ... 扩展动作:需要借助扩展模块进行的动作; 添加规则之时需要考量的问题: (1) 报文的流经路径,判断添加规则至哪个链上; (2) 确定要实现的功能,判断添加规则至哪个表上; (3) 要指定的匹配条件,以用于匹配目标报文; 规则的编写格式:iptables [-t table] COMMAND chain [-m matchname [per-match-options]] [-j targetname [per-target-options]] -t table: 默认为filter;其它可用的有raw, mangle, nat; COMMAND: 链: -P:policy,策略,定义默认策略; 一般有两种选择,ACCEPT和DROP; -N:new,新建一条自定义的规则链;被内建链上的规则调用才能生效;[-j chain_name]; -X:drop,删除自定义的引用计数为0的空链; -F:flush,清空指定的链; -E:重命名自定义的引用计数和为0的链; 规则: -A:append,追加,在指定链的尾部追加一条规则; -I:insert,插入,在指定的位置(省略位置时表示链首)插入一条规则 -D:delelte,删除,删除指定的规则; -R:replace,替换,将指定的规则替换为新规则;不能仅修改规则中的部分,而是整条规则完全替换; 查看: -L:list,列出表中的链上的规则; -n:numeric,以数值格式显示; -v:verbose,显示详细格式信息; -vv, -vvv -x:exactly,计数器的精确结果; --line-numbers:显示链中的规则编号; 计数器: 规则,以及默认策略有专用的计数器; 记录被当前规则所匹配到的: (1) 报文个数; (2) 字节总数; 重置规则计数器: -Z:zero,置0; chain: (1) 内建链; (2) 自定义链; 匹配条件: 多重条件:逻辑关系为“与”; 基本匹配条件: [!] -s, --source address[/mask][,...]:检查报文中的源IP地址是否符合此处指定的地址或范围; [!] -d, --destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址或范围; [!] -p, --protocol protocol: protocol:{tcp|udp|icmp} [!] -i, --in-interface name:数据报文的流入接口;INPUT, FORWARD and PREROUTING [!] -o, --out-interface name:数据报文的流出接口; FORWARD, OUTPUT and POSTROUTING 扩展匹配条件 隐式扩展:不用-m选项指出matchname即可使用此match的专用选项进行匹配; -p tcp:隐含了-m tcp; [!] --source-port,--sport port[:port]:匹配报文中传输层的源端口; [!] --destination-port,--dport port[:port]:匹配报文中传输层的目标端口; [!] --tcp-flags mask comp SYN,ACK,FIN,RST,URG,PSH; mask:要检查的标志位列表,以逗号分隔; comp:必须为1的标志位,余下的出现在mask列表中的标志位则必须为0; --tcp-flags SYN,ACK,FIN,RST SYN [!] --syn: 相当于--tcp-flags SYN,ACK,FIN,RST SYN -p udp:隐含了-m udp: [!] --source-port,--sport port[:port]:匹配报文中传输层的源端口; [!] --destination-port,--dport port[:port]:匹配报文中传输层的目标端口; -p icmp:隐含了-m icmp: [!] --icmp-type {type[/code]|typename} 8:echo-request 0:echo-reply 显式扩展:必须使用-m选项指出matchname,有的match可能存在专用的选项; 1、multiport扩展 以离散或连续的方式定义多端口匹配条件; [!] --source-ports,--sports port[,port|,port:port]...:指定多个源端口; [!] --destination-ports,--dports port[,port|,port:port]...:指定多个目标端口 [!] --ports port[,port|,port:port]...:指定多个端口; 2、iprange扩展 以连续的ip地址范围指明连续的多地址匹配条件; [!] --src-range from[-to]:源IP地址; [!] --dst-range from[-to]:目标IP地址; 3、string扩展 对报文中的应用层数据做字符串匹配检测; [!] --string pattern:要检测字符串模式; [!] --hex-string pattern:要检测的字符串模式,16进制编码; --algo {bm|kmp} 4、time扩展 根据报文到达的时间与指定的时间范围进行匹配度检测; --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:起始日期时间; --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:结束日期时间; --timestart hh:mm[:ss] --timestop hh:mm[:ss] [!] --monthdays day[,day...] [!] --weekdays day[,day...] ~]# iptables -I INPUT -d 172.16.100.67 -p tcp --dport 23 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays Tue,Thu,Sat -j ACCEPT 5、connlimit扩展 根据每客户端IP做并发连接数匹配;--connlimit-upto n:连接数数量小于等于n,此时应该允许; --connlimit-above n:连接数数量大于n,此时应该拒绝; ~]# iptables -A INPUT -d 172.16.100.67 -p tcp --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT 6、limit扩展 基于收发报文的速率进行匹配;--limit rate[/second|/minute|/hour|/day]:平均速率 --limit-burst number:峰值速率 7、state扩展 状态检测;连接追踪机制(conntrack); INVALID:无法识别的状态; ESTABLISHED:已建立的连接; NEW:新连接; RELATED:相关联的连接; UNTRACKED:未追踪的连接; nf_conntrack内核模块; 追踪到的连接:/proc/net/nf_conntrack文件中; 能追踪的最大连接数量定义在:/proc/sys/net/nf_conntrack_max 此值可自行定义,建议必要时调整到足够大; 不同的协议的连接追踪的时长: /proc/sys/net/netfilter/ [!] --state STATE 如何开放被模式的ftp服务: (1) 装载追踪ftp协议的模块; # modprobe nf_conntrack_ftp (2) 放行命令连接 ~] # iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state ESTABLISHED -j ACCEPT ~] # iptables -A INPUT -d 172.16.100.67 -p tcp --dport 21 -m state --state NEW -j ACCEPT (3) 放行数据连接 ~] iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state RELATED -j ACCEPT 处理动作(目标) -j targetname [per-target-options]targetname: ACCEPT:接受; DROP:丢弃; REJECT:拒绝; 保存和重载规则: iptables-save > /PATH/TO/SOME_RULE_FILE iptables-restore < /PATH/FROM/SOME_RULE_FILE CentOS 6: 保存规则: service iptables save 自动保存规则至/etc/sysconfig/iptables文件中; 重载规则: server iptables restore 从/etc/sysconfig/iptables文件中重载规则; 规则优化: (1) 可安全放行所有入站及出站,且状态为ESTABLISHED的连接; (2) 服务于同一类功能的规则,匹配条件严格的放前面,宽松放后面; (3) 服务于不同类功能的规则,匹配报文可能性较大扩前面,较小放后面; (4) 设置默认策略; (a) 最后一条规则设定; (b) 默认策略设定;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~