iptables理解

it2023-10-02  75

一、iptables相关概念理解

名词含义对比Netfilter/iptables是表的容器国家表(table)表是用来存放链的容器省链(chain)链 存放规则的容器市规则(policy)准许/拒绝访问区/县

二、四表五链

2.1 四表及其作用

Filter :过滤,默认的表,防火墙功能 NAT :实现NAT转化:1.共享上网(SNAT功能) 2.端口转发(DNAT功能) mangle: 根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由 raw:

2.2 五链
INPUT :当收到访问防火墙本地地址的数据包时,应用此链的规则OUTPUT :当防火墙本机向外发出数据时,应用此链的规则FORWARD :当收到要通过防火墙发送给其他网络地址的数据包时,应用此链的规则PREROUTING :在对数据包进行路由选择之前,应用此链的规则POSTROUTING :在对数据包做路由选择之后,应用此链的规则

三、iptables常用命令及参数

command后跟的值和含义-t指定表 filter(默认) nat-Aappend 把规则追加到末尾-I(大写字母i ) insert,把规则插入到规则的第1条 (添加拒绝类规则的时候)-pprotocal 指定协议,tcp /udp/icmp–dportdestination port 目标端口–sportsource port,源端口-ddest ip address,目标ip地址-ssource ip address,源ip地址-jjump 方法,DROP (拒绝)、 ACCEPT(准许) 、REJECT(拒绝) -F清除链中所有规则-X清空自定义链的规则-Z清空计数器-n不要把端口解析服务名字-L显示表中的规则–line-number给每个链中的规则加上行号-D删除规则 根据规则的号码进行删除

四、iptables 常用指令

查看当前的防火墙规则 [root@Apache ~]# iptables-save 查看防火墙的默认规则 [root@Apache ~]# cat /etc/sysconfig/iptables 设置INPUT链默认策略为drop丢弃 [root@Apache ~]# iptables -P INPUT DROP [root@Apache ~]# iptables -nL --line-number Chain INPUT (policy DROP) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 3 INPUT_direct all -- 0.0.0.0/0 0.0.0.0/0 4 INPUT_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/0 5 INPUT_ZONES all -- 0.0.0.0/0 0.0.0.0/0 6 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 8 DROP tcp -- !192.168.31.0/24 0.0.0.0/0 允许协议为tcp,目的端口为22的数据包流量进入本机 [root@Apache ~]#iptables -A INPUT -p tcp --dport 22 -j ACCEPT INPUT链丢弃协议是TCP,但端口非80、443、22的流量 "!"是非的意思 [root@Apache ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 -j DROP [root@Apache ~]# [root@Apache ~]# iptables -nL --line-number Chain INPUT (policy DROP) num target prot opt source destination 1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports !80,443,22 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 3 DROP tcp -- !192.168.31.0/24 0.0.0.0/0 将去往目的地址为:10.0.0.61,目标端口为:8080的数据包转换成目标地址为10.0.0.11,目的端口为22的数据包,需要先开启路由转发功能 [root@Apache ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@Apache ~]# sysctl -p [root@Apache ~]# iptables -t nat -A PREROUTING -d 10.0.0.61 -p tcp --dport 8080 -j DNAT --to-destination 10.0.0.11:22 [root@Apache ~]# iptables -nL --line-number -t nat Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 PREROUTING_direct all -- 0.0.0.0/0 0.0.0.0/0 2 PREROUTING_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/0 3 PREROUTING_ZONES all -- 0.0.0.0/0 0.0.0.0/0 4 DNAT tcp -- 0.0.0.0/0 10.0.0.61 tcp dpt:8080 to:10.0.0.11:22 将源地址为172.16.1.0/24,从本机eth0网卡出去的数据包进行SNAT转换成源地址为本机的网卡地址10.0.0.61 [root@Apache ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.61
最新回复(0)