🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 概述 iptables是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发 ## iptables的规则表和链: 表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理 链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包 ![](https://img.kancloud.cn/7f/42/7f4201bae138e0bf57d8128da69176d2_749x428.png) ## iptables命令的管理控制选项 ``` -A 在指定链的末尾添加(append)一条新的规则 -D  删除(delete)指定链中的某一条规则,可以按规则序号和内容删除 -I  在指定链中插入(insert)一条新的规则,默认在第一行添加 -R  修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换 -L  列出(list)指定链中所有的规则进行查看 -E  重命名用户定义的链,不改变链本身 -F  清空(flush) -N  新建(new-chain)一条用户自己定义的规则链 -X  删除指定表中用户自定义的规则链(delete-chain) -P  设置指定链的默认策略(policy) -Z 将所有表的所有链的字节和数据包计数器清零 -n  使用数字形式(numeric)显示输出结果 -v  查看规则表详细信息(verbose)的信息 -V  查看版本(version) -h  获取帮助(help) ``` ## 基本命令 ### 列出规则 ``` sudo iptables -L ``` ### 清空规则:清空某个链中的所有规则: ``` sudo iptables -F ``` ### 开启相应的服务端口 打开22 端口 ``` iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开启80端口,因为web对外都是这个端口 iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许被ping iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已经建立的连接得让它进来 ``` ### 阻止特定 IP ``` sudo iptables -A INPUT -s 192.168.1.100 -j DROP ``` ### 保存规则到配置文件中 ``` cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak # 任何改动之前先备份,请保持这一优秀的习惯 iptables-save > /etc/sysconfig/iptables cat /etc/sysconfig/iptables ``` ### 端口映射 本机的 2222 端口映射到内网 虚拟机的22 端口 ``` iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222 -j DNAT --to-dest 192.168.188.115:22 ``` ### 阻止Windows蠕虫的攻击 ``` iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe" ``` ### 防止SYN洪水攻击 ``` iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT ```