关闭firewalld, 启用iptables: systemctl stop firewalld && systemctl disable firewalld # 关闭firewalld防火墙 yum install iptables-services -y # Cetnos默认已经装了iptables, 只需装services 直接修改iptables配置文件添加规则连: vi /etc/sysconfig/iptables #iptables配置文件位置 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # 开启 80 端口 初始化iptables服务: systemctl restart iptables # 重启防火墙使配置生效 systemctl enable iptables # 设置防火墙开机启动 service iptables save #保存iptables配置 iptables-save >路径/文件名 #规则永久保存成文件 iptables-restore < 路径/文件名 #导入规则, 参数: "-n:不清除原有规则" , "-t:仅分析生成规则集,但不提交" chkconfig --level 35 iptables off /etc/init.d/iptables stop iptables -P INPUT DROP #永久关闭iptables防火墙 初始化iptables规则连: iptables -F #清除预设表filter中的所有规则链的规则 iptables -P INPUT DROP #拒绝所有入站请求 iptables -P FORWARD DROP #拒绝所有转发请求 iptables -P OUTPUT ACCEPT #出站不做限制 iptables -L -nv --line-numbers #查看一下INPUT和FORWARD默认策略是否变成(policy DROP) iptables -A INPUT -i lo -j ACCEPT #允许回环Input iptables -A OUTPUT -o lo -j ACCEPT #允许回环Output, 一般不需要配置 iptables -I INPUT -p tcp --dport 22 -j ACCEPT #打开ssh端口 删除已添加的iptables规则: iptables -L -nv --line-numbers #将所有iptables以序号标记显示 iptables -L -nv -t nat --line-numbers #显示所有允许(ACCEPT)的规则链 iptables -D INPUT 8 #删除上个命令中查到的规则链名称和序列号, 比如INPUT里序号为8的规则 ================================================================ iptables的语法格式: iptables -t table command chain cretiria -j action 各参数的含义为: -t:指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。 command:子命令,定义对规则的管理。 chain:指明链表。 cretiria:匹配参数。 action:触发动作。 iptables是Linux中的IP 信息包过滤系统, 有四表五链: 四表: (优先级:raw,mangle,nat,filter) filter表, 即防火墙规则,允许、阻止或丢弃进出的数据包,使用是最多的 三个链:INPUT、FORWARD、OUTPUT nat表,网络地址转换,管理内网的数据包收发,有多种类型,常见的有SNAT,PNAT,DNAT,是第二常用的 三个链:PREROUTING、POSTROUTING、OUTPUT mangle表,修改数据包的TTL,给数据包做不同的标记,策略路由等 五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD raw表,一般用于跟踪状态,调试,用的较少 两个链:OUTPUT、PREROUTING 五链: INPUT #进来的数据包应用此规则链中的策略 OUTPUT #外出的数据包应用此规则链中的策略 FORWARD #转发数据包时应用此规则链中的策略 PREROUTING #对数据包做路由选择前应用此链中的规则, 所有的数据包进来的时候都先由这个链处理 POSTROUTING #对数据包做路由选择后应用此链中的规则, 所有的数据包出来的时候都先由这个链处理 iptables流量处理流程: iptables常用命令参数: -P #设置默认策略 -F #清空规则链 -L #查看规则链 -A #在规则链末尾加入新规则 -N #自定义规则链 -I num #在规则链头部加入新规则 -D num #删除某一条规则 -i 网卡名称 #流入接口, 匹配从这块网卡流入的数据 -o 网卡名称 #流出接口, 匹配从这块网卡流出的数据 -p 协议 #如TCP、UDP、ICMP -s 来源地址 #可表达网段"IP/MASK", 加"!"表示除这个IP外 -d 目标地址 #可表达网段"IP/MASK", 加"!"表示除这个IP外 -j 采取动作 #如ACCEPT, DROP, SNAT, DNAT, MASQUERADE, REDIRECT --sport num #匹配来源端口号,端口必须与协议一起使用 --dport num #匹配目标端口号,端口必须与协议一起使用,一组端口用"--dport 21:25"来表达 -n #直接显示IP不对地址反查域名,速度快,不加-n则显示IP解析到的域名 -v #显示详细信息,数据包数量、总字节数以及相应的网络接口等, -vv或-vvv越多越详细 -t #指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。 -t nat #显示所有nat表的信息 -m #使用扩展模块功能 -m state --state 状态1,状态2 #调用状态模块匹配数据包, iptables有四种状态: NEW,ESTABLISHED,RELATED和INVALID NEW: 主机连接目标主机,在目标主机上看到的第一个想要连接的包 ESTABLISHED: 主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态 RELATED: 主机已与目标主机进行通信,目标主机发起新的链接方式,例如ftp INVALID: 无效的封包,例如数据破损的封包状态 ========注意iptables的规则要把允许动作放到拒绝动作之前==================== FTP的iptables端口配置: 1.打开主动模式21端口 iptables -I INPUT -p tcp --dport 21 -j ACCEPT iptables -I INPUT -p tcp --dport 20 -j ACCEPT 2.打开被动模式49152~65534之间的端口 iptables -I INPUT -p tcp --dport 49152:65534 -j ACCEPT iptables -I INPUT -i lo -j ACCEPT iptables -I INPUT -m state --state ESTABLISHED -j ACCEPT 设置指定网段的主机访问本机某端口,拒绝其他所有主机的流量: iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT 上述第一条命令含义是: -I INPUT 在INPUT规则链中头部添加规则 -s 192.168.10.0/24 匹配192.168.10.0-192.168.10.24中的所有主机IP地址 -p tcp 匹配tcp协议 --dport 22 匹配访问本机端口号为22的流量 -j ACCEPT 跳转至执行ACCEPT(允许通过)操作 上述第二条命令含义是: -A INPUT 在INPUT规则链末尾添加规则 -p tcp匹配tcp协议 --dport 22 匹配访问本机端口号为22的流量 -j REJECT 跳转至执行REJECT操作 清除已有iptables规则: iptables -F 清除预设表filter中的所有规则链的规则 iptables -X 清除预设表filter中使用者自定链中的规则 iptables -Z 允许本地回环接口(即运行本机访问本机) iptables -I INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT 允许已建立的或相关连的通行 iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 允许所有本机向外的访问 iptables -I OUTPUT -j ACCEPT 端口访问控制: iptables -I INPUT -p tcp --dport 22 -j ACCEPT #允许访问本机22端口 iptables -I INPUT -p tcp --dport 80 -j ACCEPT #允许访问本机80端口 iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.63.7 -j ACCEPT #允许172.16.0.0网段访问本机 iptables -t filter -A INPUT -s 172.16.63.66 -d 172.16.63.7 -j REJECT #允许某IP访问本机 iptables -I INPUT -s 172.16.63.66 -d 172.16.63.7 -j REJECT #拒绝某IP访问本机 屏蔽单个IP或IP段的命令是: iptables -I INPUT -s 123.45.6.7 -j DROP iptables -I INPUT -s 123.0.0.0/8 -j DROP iptables -I INPUT -s 124.45.0.0/16 -j DROP iptables -I INPUT -s 123.45.6.0/24 -j DROP 查看已添加的iptables规则 iptables -L -n v:显示详细信息,包括每条规则的匹配包数量和匹配字节数 x:在 v 的基础上,禁止自动单位换算(K、M) n:只显示IP地址和端口号,不将ip解析为域名 service iptables save #每次修改, 都要记得保存规则 systemctl restart iptables #重启服务使生效 (责任编辑:IT) |