防火墙:对进出网络的报文进行匹配,一旦匹配到就对其进行一定的处理的一套组件
iptables是我们linux系统中自带的纯软件形式的一套工具
iptables中比较重要的两个知识点: 三个表 和 五个规则链
三个表:FILTER 和 NAT 和MANGLE(修改报文原数据,比如TTL)
五个链:PREROUTING ,INPUT,FORWORD,OUTPUT,POSTROUTING
iptables/netfilter:iptables工作在用户空间,是定义规则的地方
netfilter工作在内核空间,是规则生效的框架
三个表可以做到各自的链上:
filter可以做到INPUT ,FORWARD,OUTPUT上
nat可以做到PREROUTING,OUTPUT,POSTROUTING
mangle在五个链上都可以做
iptables命令格式:
iptables [-t table] COMMEND chain CRETIRIA(匹配标准) -j ACTION
下面我们来详细的解释下各部分的含义--》
-t table #指的是filter 和 nat 和 mangle三个表(不指明的时候默认是filter表)
COMMEND 部分主要分为:链管理命令 和 规则管理命令 和 查看命令
链管理命令:
-p eg:iptables -p INPUT {DROP|ACCEPT} #用于定义默认策略(“通”或者“堵”)
-F eg:iptables -t nat -F PREROUTING #用于清空nat表prerouting链上的规则
-N eg:iptables -N inbound_tcp_web #新增一个规则链(用户自定义规则链)
-X #用于删除用户的空链(删除前规则应该清空)
-E #用户重命名自定义的链
-Z #用于清空链中的计数器的
规则管理命令:
-A #追加一条规则(规则放在最后面)
-I num #插入规则(插入为第几条规则)
-R #用于修改规则
-D #用于删除第几条规则
查看命令:
-L -n #直接显示数字地址,不反向解析
-v ,-vv ,-vvv #显示详细信息
-x #表示精确值,不做单位换算
--line-numbers #把行号显示出来
匹配标准:通用匹配和扩展匹配 (隐含匹配和显式匹配)
通用匹配:
-s : IP , network/netmask , 0.0.0.0/0.0.0.0 #匹配源地址(一般不使用主机名)
-d : #匹配目标地址
-p : (tcp|udp|icmp) #定义协议
-i : eth0 #定义从eth0网卡流进的数据
-o : eth0 #从eth0流出的数据
扩展匹配中的隐含匹配:
-p tcp #指定tcp的扩展
--dport #目标端口(0-65535)
--sport #源端口(0-65535)
--tcp-flags #检查的标志位须为1的标志位
eg: --tcp-flags syn,ack,fin,rst syn #匹配三次握手的第一次(--syn)
-p udp #指定udp的扩展
--dport
--sport
-p icmp #指定icmp的扩展
--icmp-types
echo-request 8 #匹配ping出去的包
echo-reply 0 #匹配响应ping的数据包
显式扩展:
-p tcp -m multiport --dports 21,23,80 #匹配
-j ACTION
DROP #悄悄丢弃数据包
REJECT #明显的拒绝
ACCEPT #接受
CUSTOM_chain #转向一个自定义的链
DNAT #目标地址转化
SNAT #源地址转换
MASQUERADE #源地址伪装
REDIRECT #端口重定向
MARK #打标记
RETURN #返回
iptables -R INPUT 2 -s 172.167.0.0/16 -d 172.167.100.1 -p tcp --dport 22 -m stat --stat NEW,ESTABLELISHD -j ACCPET
四种状态:
NEW: 新建立的连接
ESTABLELIST :已建立的连接
RELATED :具有关联关系的连接
INVALID :无法识别的连接
如何实现让自己可以ping通别人,别人却不能ping通自己
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -L -n
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
这些所有我们本次定义的规则在开机之后就会丢失,我们通常使用这样的命令来给他保存下来:
service iptables save 默认保存的文件是 /etc/sysconfig/iptables
我们也可以使用iptables-save > /etc/sysconfig/iptables来保存iptables规则
当然我们如果不想让它每次开机自动启动而是手动启动的话,我们还可以用一下命令:
iptables-restore < /etc/sysconfig/iptables
iptables -A INPUT -s 172.16.0.1 -d 172.16.100.1 -j DROP #拒绝172.16.100.1所有访问
route add default gw 192.168.10.18 #添加192.168.10.19为默认路由
route -n #显示路由表信息
route add -net 192.168.0.13/24 gw 172.16.100.1 #192.168.0.13为网络上的一个主机
阅读(1857) | 评论(1) | 转发(0) |