博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
M25-14
阅读量:4977 次
发布时间:2019-06-12

本文共 16988 字,大约阅读时间需要 56 分钟。

懒人少语之十四周   1 ?iptables命令  2     ?规则格式: iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-targetoptions]  3         -t table:   4             raw, mangle, nat, [filter]`若不指定-t该项为默认`  5         SUBCOMMAND:   6             1、 链管理:   7                 -N: new    自定义/`新增一条新的规则`链  `抛弃默认的vnL表示方法`  8                     例子:  9                         iptables -N deny_invalid_packet     `新增规则(规则名自定义),用于给一个信息指定多条规则` 10                         iptables -A deny_invalid_packet -p tcp --tcp-flags ALL ALL -j REJECT 11                         iptables -A deny_invalid_packet -p tcp --tcp-flags ALL NONE -j REJECT 12                         iptables -A INPUT -j deny_invalid_packet    `将已有的链关联到现有的链` 13                             `将所有INPUT信息将关联到deny_.....的两条规则里` 14                         iptables -A INPUT -s 192.168.25.0/24 -j deny_invalid_packet `关联该地址到两条规则...`                 15                 -X: delete `删除自定义的空的规则`链 16                     例子: 17                         iptables -X deny_invalid_packet     `删除deny_.....该链定义` 18                         iptables -F INPUT                   `因为之前常规定义了两条规则,清理INPUT链的规则` 19                 -P: Policy 设置/`改默认策略`;对filter表中的链而言,其默认策略有:  20                     `改默认,第一行信息有个policy ACCEPT表示默认允许连接` 21                     ACCEPT  接受 22                     DROP    丢弃 23                         iptables -P INPUT DROP 24                 -E: 重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除 25  26             2、查看:  27                 -L: list        `列出指定链上的所有规则,本选项必须放置最后` 28                 -n: numberic    `以数字格式显示地址和端口号` 29                 -v: verbose     `详细信息` 30                 -vv              更详细 31                 -x: exactly     显示计数器结果的精确值,而非单位转换后的易读值 `默认显示k/m单位等,将转化为字节单位` 32                 --line-numbers   显示规则的序号 33                 常用组合:  34                     -vnL       `iptables -vnL` 35                     -vvnxL --line-numbers 36                     -S selected     以iptables-save命令格式显示链上规则    `显示当前防火墙有几条规则` 37                     iptables -S 38                         [root@Centos7 07:23:11 ~]#iptables -vnL --line-number 39                             Chain INPUT (policy ACCEPT 630K packets, 65M bytes) 40                             num   pkts bytes target     prot opt in     out     source               destination 41                         多一个num序号 42                             Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) 43                             num   pkts bytes target     prot opt in     out     source               destination 44             3、规则管理:  45                 -A: append      追加 46                     iptables -A INPUT -s 192.168.55.55 -j ACCEPT 47                 -I: insert      插入,要指明插入至的规则编号,默认为第一条   `插入规则到某条位置` 48                     iptables -I INPUT -s 192.168.0.1 -j ACCEPT 49                     iptables -I INPUT 2 -s 192.168.0.1 -j ACCEPT 50                 -D: delete      删除 51                     (1) 指明规则序号 52                         iptables -D INPUT 2 53                     (2) 指明规则本身 54                         iptables -D INPUT -s 192.168.55.55 -j ACCEPT 55                 -R: replace     替换指定链上的指定规则编号   `替换规则` 56                     iptables -R INPUT 3 -s 1.1.1.1 -j REJECT 57                 -F: flush       清空指定的规则链    `统计规则数清零` 58                     iptables -F 59                 -Z: zero        置零                `统计数据包清零;pkts值清零` 60                     iptables的每条规则都有两个计数器 61                         (1) 匹配到的报文的个数 62                             iptables -Z 63                         (2) 匹配到的所有报文的大小之和 64                 chain: PREROUTING, INPUT, FORWARD, OUTPUT, 65                 POSTROUTING 66      67     ?匹配条件  `在规则之后,配置条件方式`   68     谨慎使用,避免把自己给拒绝了.添加策略可以设置五分钟生效时间,五分钟后恢复等() 69         基本: 通用的, PARAMETERS  `系统自带功能,无需添加模块` 70         扩展: 需加载模块, MATCH EXTENTIONS  `需自增模块`  71          72         1、基本匹配条件: 无需加载模块,由 iptables/netfilter自行提供 73                 开头带!感叹号是代表取反,只能单元取反,不能多元取反.`匹配(单一的一个条件)单个地址/网段,取之外的所有地址` 74             [!] -s, --source address[/mask][,...]       源IP地址或范围 75                 iptables -A INPUT -s x.x.x.x -j REJECT 76                 -s 192.168.0.0/24; -s 192.168.1.1; 192.168.1.2,192.168.2.2 77             [!] -d, --destination address[/mask][,...]  目标IP地址或范围 78                 iptables -A INPUT -s 192.168.1.4 -d 192.168.1.3 -j REJECT   `-s和-d是并且关系,一条相当于两条规则,每条源和目标地址都将会结合匹配一次(交叉乘积)` 79                 iptables -A INPUT ! -s 192.168.1.6 -j REJECT 80             [!] -p, --protocol protocol                 指定协议,可使用数字如0( all)protocol: tcp, udp, icmp, icmpv6, udplite, esp, ah, sctp,mh or “all“ 参看: /etc/protocols 81                 iptables -A INPUT -p icmp -j REJECT         `icmp都被拒绝,一般不会做tcp拒绝的...呵呵` 82             [!] -i, --in-interface name                 报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、 FORWARD、 PREROUTING链 83                 iptables -A INPUAT -i eth0 -p icmp -j REJECT    `eth0网卡进入流icpm信息将被拒绝` 84             [!] -o, --out-interface name                报文流出的接口;只能应用于数据报文流出的环节,只应用于FORWARD、 OUTPUT、 POSTROUTING链 85                 iptables -A OUPUT -i ens33 -p icmp -j REJECT    `ens33网卡流出icmp信息将被拒绝` 86         2、扩展匹配条件:  87             查看帮助 man iptables-extensions 88             需要加载扩展模块(/usr/lib64/xtables/*.so),方可生效 89             (1)隐式扩展: 在使用 -p 选项指明了特定的协议时,无需再用 -m 选项指明扩展模块的扩展机制,不需要手动加载扩展模块 90                 `直接根据协议来判断,无需指定扩展模块` 91                 如tcp协议的扩展选项 92                     [!] --source-port, --sport port[:port]: 匹配报文`源端口` ,可为端口范围 93                      94                     [!] --destination-port, --dport port[:port]: 匹配报文`目标端口` ,可为范围 95                         iptables -A INPUT -p tcp --dport 80 -j REJECT 96                         iptables -A INPUT -p tcp --destination-port 80 -j REJECT    `没写ip地址,代表任何人的80都被拒绝,端口需单个写` 97                     [!] --tcp-flags mask comp   `tcp的标记位用法` 98                         `mask 指定需检查的标志位列表,用,分隔` 99                             例如 SYN,ACK,FIN,RST100                         `comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,逗号分隔`101                         示例: 102                         --tcp-flags SYN,ACK,FIN,RST SYN `表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0`103                         --tcp-flags SYN,ACK,FIN,RST SYN,ACK `在4中标识有两个必须为1的情况下`104                         --tcp-flags ALL ALL                 `检查所有,并确保所有为1的情况下(不合理,或黑客构造包)`105                         --tcp_flags ALL NONE                `检查所有,并确保所有为0的情况下(不合理,一般直接拒绝以上两种ALL和NONE状态)`106                     [!] --syn: 用于匹配第一次握手            `保留原有状态,根据设定拒绝新连接`107                         相当于: --tcp-flags SYN,ACK,FIN,RST SYN108                 udp109                     [!] --source-port, --sport port[:port]: 匹配报文的源端口;可以指定端口范围,不允许离散范围(显示扩展支持离散范围)110                         用冒号表示范围80:90表示80端口到90端口之间111                     [!] --destination-port, --dport port[:port]: 匹配报文的目标端口;可以是端口范围112                 icmp113                     [!] --icmp-type {type[/code]|typename}  `用于指定ping命令的请求还是回应状态`114                         type/code115                             0/0 echo-reply   icmp应答116                             8/0 echo-request icmp请求117                                 iptables -A INPUT -p icmp --icmp-type 8 -j REJECT118                                     Win结果显示: 来自 172.18.252.180 的回复: 无法连到端口。119             (2)显式扩展: 必须使用 -m 选项指明要调用的扩展模块的扩展机制,要手动加载扩展模块120             -m 略......121                 [-m matchname [per-match-options]]122                 处理动作: 123                 -j targetname [per-target-options]124                     简单:  ACCEPT, DROP125                     扩展:  REJECT:  --reject-with: icmp-port-unreachable默认126                         RETURN:     返回调用链   `结果跳到某个链里,类似-N和-X那边的实验;仅返回,并非拒绝或允许;类似函数的return`127                         REDIRECT:   端口重定向128                         LOG:        记录日志, dmesg129                         MARK:       做防火墙标记130                         DNAT:       目标地址转换131                         SNAT:       源地址转换132                         MASQUERADE: 地址伪装133                         ...134                         自定义链: 135                 显式扩展: 必须显式地指明使用的扩展模块进行的扩展136                 使用帮助: 137                     CentOS 6: man iptables138                     CentOS 7: man iptables-extensions139                 1、 multiport扩展  `离散支持,使同个地址多个端口用一条规则来表示`140                     支持离散方式定义多端口匹配,最多指定15个端口141                     [!] --source-ports, --sports port[,port|, port:port]...指定多个源端口142                     [!] --destination-ports, --dports port[,port|, port:port]...指定多个目标端口143                         冒号表示范围,逗号表示另一个端口144                     [!] --ports port[,port|, port:port]...多个源或目标端口145                     示例: 146                         iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dports 20:22,80 -j ACCEPT147                         iptables -A INPUT -s 192.168.66.66 -p tcp -m multiport --dports 22,80 -j ACCEPT148                 2、 iprange扩展    `从哪到哪的一个地址范围`149                     指明连续的(但一般不是整个网络) ip地址范围150                     [!] --src-range from[-to] `源IP`地址范围151                         iptables -A INPUT -m iprange --src-range 192.168.66.66-192.168.66.77 -p tcp -m multiport --dports 22,80 -j REJECT152                             `表示源进来的地址范围在66-77的tcp协议端口走22和80端口的将被拒绝`153                     [!] --dst-range from[-to] `目标IP`地址范围154                     示例: 155                         iptables -A INPUT -d 172.16.100.10 -p tcp --dport 80 -m iprange --src-range 172.16.100.5-172.16.100.10 -j DROP156                 3、 mac扩展157                     指明源MAC地址158                     适用于: PREROUTING, FORWARD, INPUT chains159                     [!] --mac-source XX:XX:XX:XX:XX:XX160                         iptables -A INPUT -m mac --mac-source 00:0c:93:c9:d9 -p tcp -m multiport --dports 22,80 -j REJECT161                             `表示该mac地址将被拒绝22和80端口进入`162                     示例: 163                         iptables -A INPUT -s 172.16.0.100 -m mac --mac-source 00:50:56:12:34:56 -j ACCEPT164                         iptables -A INPUT -s 172.16.0.100 -j REJECT165                 4、 string扩展 (扫描数据包,检测字符串)166                     对报文中的应用层数据做字符串模式匹配检测167                         `针对数据包包含的特定字符串进行监控`168                     --algo {bm|kmp}: 字符串匹配检测算法(随意)169                         bm: Boyer-Moore170                             iptables -A OUTPUT -m string --algo bm --string "Pass" -j REJECT171                                 `数据传出的情况下包含Pass字符串进行屏蔽`172                         kmp: Knuth-Pratt-Morris173                     --from offset 开始偏移  `开始检查处`174                     --to offset 结束偏移    `结束检查处`175                     [!] --string pattern: 要检测的字符串模式176                     [!] --hex-string pattern: 要检测字符串模式, 16进制格式177                     示例: 178                         iptables -A OUTPUT -s 172.16.100.10 -d 0/0 -p tcp --sport 80 -m string --algo bm --string "google" -j REJECT179                 5、 time扩展(时间扩展)180                     根据将报文到达的时间与指定的时间范围进行匹配181                     --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]   开始日期182                     --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]    结束日期183                     --timestart hh:mm[:ss]  开始时间184                     --timestop hh:mm[:ss]   结束日期185                         iptables -A INPUT -m time --timestart 10:00 --timestop 11:00 -m string --algo bm --string "google" -j REJECT    `该时段内有google的字符串将被拒绝进入`186                     [!] --monthdays day[,day...]    每个月的几号187                     [!] --weekdays day[,day...]     星期几 188                     --kerneltz: 内核时区(本地时间,代替UTC时间),不建议使用; CentOS7系统默认为UTC189                         `注意: centos6 不支持kerneltz , --localtz指定本地时区(默认选项)`190                     示例: 191                         iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP  `开始时间结束时间必须定义,星期几可忽略`192                         iptables -A INPUT -m time --timestart 01:11 --timestop 12:22 -p tcp --dport 80 -j REJECT    `该时段拒绝tcp的80端口进入`193                 6、 connlimit扩展  `并发连接,防CC,避免一个客户端进行多个请求`194                     根据每客户端IP做并发连接数数量匹配195                     可防止CC(Challenge Collapsar挑战黑洞)攻击196                     --connlimit-upto n      连接的数量小于等于n时匹配197                     --connlimit-above n     连接的数量大于n时匹配198                     通常分别与默认的拒绝或允许策略配合使用199                     示例: 200                         iptables -A INPUT -d 172.16.100.10 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT201                             `连接请求到100.10主机的tcp的22端口,超过大于两次以上的请求将被拒绝`202                 7、 limit扩展  `传输的报文数据过快,进行限流`203                     基于收发报文的速率做匹配204                     令牌桶过滤器  `有令牌允许通过,无则拒绝;从第一到第十个给你发令牌,从11个之后每隔多久再发一个令牌操作`205                     --limit rate[/second|/minute|/hour|/day]    `表示之后每隔多久发令牌`206                     --limit-burst number                        `表示前几个不限令牌/限流`207                     示例: 208                         iptables -I INPUT -d 172.16.100.10 -p icmp --icmp-type 8 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT209                             `icmp请求包当中前5个允许进入无限制,之后每分钟只有3个允许进入`210                         iptables -I INPUT 2 -p icmp -j REJECT211                             `该策略必须结合上条策略,除了上条被允许之外的其它将被拒绝icmp`212                 8、 state扩展  `状态跟踪扩展`213                     根据”连接追踪机制“去检查连接的状态,较耗资源214                     conntrack机制: 追踪本机上的请求和响应之间的关系215                     状态有如下几种: -216                         NEW: 新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求   `同一个端口,第一个进来`217                         ESTABLISHED: NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态     `同一个端口,第二个返回`218                         RELATED: 新发起的但与已有连接相关联的连接,如: ftp协议中的数据连接与命令连接之间的关系      `相对于21端口相关的协议`219                         INVALID: 无效的连接,如flag标记不正确   `无效连接,如全是1或全是0的标记码`220                         UNTRACKED: 未进行追踪的连接,如raw表中关闭追踪-221                     [!] --state state222                     示例: 223                         iptables -A INPUT -d 172.16.100.10 -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT224                             `80和22端口若是新发起的请求并是建立连接的状态连接请求将被允许`225                         iptables -A OUTPUT -s 172.16.100.10 -p tcp -m multiport --sports 22,80 -m state --state ESTABLISHED -j ACCEPT226                             `一般会针对新发起请求,而久请求是被允许的`227                         =========----========---=======--======-=====228                     已经追踪到的并记录下来的连接信息库           `记录下来的信息`229                         /proc/net/nf_conntrack230                     调整连接追踪功能所能够容纳的最大连接数量    `默认Centos7.4:65536;CentOS7.3:31248`231                         /proc/sys/net/nf_conntrack_max232                     不同的协议的连接追踪时长                    `连接的跟踪时长`233                         /proc/sys/net/netfilter/234                     `注意: CentOS7 需要加载模块: modprobe nf_conntrack`235                         可查: lsmod |grep nf_conntrack236                     iptables的链接跟踪表最大容量为/proc/sys/net/nf_conntrack_max,各种状态的超时链接会从表中删除;当模板满载时,后续连接可能会超时()237                     ⭐解决方法两个: 238                         (1) 加大nf_conntrack_max 值239                             vim /etc/sysctl.conf240                                 net.nf_conntrack_max = 393216241                                 net.netfilter.nf_conntrack_max = 393216242                         (2) 降低 nf_conntrack timeout时间243                             vim /etc/sysctl.conf244                                 net.netfilter.nf_conntrack_tcp_timeout_established = 300245                                 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120246                                 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60247                                 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120248                             iptables -t nat -L -n249                     开放被动模式的ftp服务250                         (1) 装载ftp连接追踪的专用模块: 251                             跟踪模块路径: /lib/modules/kernelversion/kernel/net/netfilter252                             vim /etc/sysconfig/iptables-config 配置文件253                                 IPTABLES_MODULES="nf_conntrack_ftp"     `iptables需要利用上该模块来监听21端口访问的是什么信息`254                             modproble nf_conntrack_ftp                  `加载该模块的命令`255                         (2) 放行请求报文: 256                             命令连接: NEW, ESTABLISHED257                             数据连接: RELATED, ESTABLISHED258                             iptables –I INPUT -d LocalIP -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT259                             iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state --state NEW -j ACCEPT260                         (3) 放行响应报文: 261                             iptables -I OUTPUT -s LocalIP -p tcp -m state --state ESTABLISHED -j ACCEPT262                                 `一般定义都是INPUT,很少定义OUTPUT.`263 264                         例子:265                             iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT266                                 `建立连接的和建立连接相关的将被接受进入`

 

转载于:https://www.cnblogs.com/mount-q/p/7752898.html

你可能感兴趣的文章
电子商务那点事
查看>>
[leedcode 43] Multiply Strings
查看>>
[leedcode 71] Simplify Path
查看>>
IntelliJ IDEA 14 注册码
查看>>
2019春第三次课程实验报告
查看>>
intent- 启动其他应用
查看>>
bzoj 1069 [SCOI2007]最大土地面积
查看>>
第一篇:weblogic之weblogic10.3.6安装
查看>>
[Tex学习笔记]开方
查看>>
一套2015年微积分期末考试试卷
查看>>
【分享】一个Asp.net mvc下的分页控件MvcPagerX
查看>>
全栈工程师眼中的HTTP
查看>>
C# - 扩展方法
查看>>
WPF HTTP请求(GET,POST)
查看>>
Vue + Webpack + Vue-loader 系列教程
查看>>
Centos系统安装JDK详细图文教程
查看>>
HDU1002 -A + B Problem II(大数a+b)
查看>>
ssh-key的复制
查看>>
RSA加解密实现
查看>>
开始我的代码笔记
查看>>