iptables:四表五链: 四表:raw: prerouting output 关闭nat表打开的连接追踪功能
filter: input ,output ,forward : 包过滤
nat: 地址转换 prerouting,output,postrouting,
mangle: 防火墙达标功能,标记。 prerouting,input ,,forward,,output ,,,,postrouting,,,,...
五链:prerouting , input,,output,,forward,,postrouting,,,,, 自定义链。。。
iptables [-t table] command chain[-m matchname[per-match-options]] -j targetname [per-target-options]
-t 指定选择哪个表 iptables -t nat raw filter mangle
command:链管理
-N:new自定义一条新的规则链
-X:删除链 删除的链自定义,应用技术是0,空链
-P:设置默认策略. 默认策略有:ACCEPT,DROP,REJECT
-E:重命名自定义链。
-F:清空指定链规则
-Z:制零;
规则管理:
-A:添加规则;
-I:插入规则,可指明插入第几行。
-D:指明序列号删除规则;
-R:替换指定链上的指定规则。
-F:清空指定的规则链;
匹配条件:
-s:检查报文源地址是否符合此处指定范围;
-d:检查报文的目地地址。
-p:指定协议: tcp icmp udp
-i:--in-interface:数据报文流入接口,只应用于prerouting,,input,,,forward 规则链上。。
-o: 报文流出接口,应用于,forward, output, postrouting
示列:iptables -A INPUT -i ens192 -j REJECT
iptables -A OUTPUT -o ens192 -j REJECT
查看:
-L:列出指定链上的规则;
-n:以数字显示地址和端口号;
-v:显示详细信息:
-x:显示技术器结果精确值,,
--line-numbers: 显示规则的序列号。。
man iptables-extensions :查iptables 扩展帮助手册。
隐式扩展:
--sport:匹配报文的源端口
--dport:匹配报文的目地端口,可连续的端口137:138
--tcp-flags mask comp: 匹配报文的tcp协议标志位:flags,are,syn,ack,fin...
--syn: 匹配tcp第一次握手。。
icmp-type {type[lcode] | typename}
0/0 :echo reply 回答;
8/0: echo request: 请求。。。
显示扩展:
1,-m multiport 以离散或连续的方式指定多端口;
iptables -I INPUT -d 192.168.0.8 -p tcp -m multiport --dport 21,22,80,3306 -j ACCEPT iptables -I OUTPUT -s 192.168.0.8 -p tcp -m multiport --sport 21,22,80,3306 -j ACCEPT
2, iprange,, 已连续的地址方式来指明多ip地址条件;
--src-range 源地址 --dst-range 目地地址
iptables -A INPUT -d 192.168.0.8 -p tcp --dport 80 -m iprange --src-range 192.168.0.100-192.168.0.105 -j ACCEPT
3,time 定义开始与结束时间
--timestart :开始时间 --timestop 结束时间。。 --weekdays 1,2,3,5,周几。。。。 --mothdays 几号。。
--datestart YYYY [-MM]年月日;;
iptables -R INPUT 1 -d 192.168.0.8 -p tcp -m iprange --src-range 192.168.0.1-192.168.0.254 -m time --timestart 8:00:00 --timestop 22:00:00 -j ACCEPT
4, 字符串匹配 只对明文协议编码生效
--algo {bm|kmp} ; 表示使用什么匹配算法。。。
--string pattern ; 精确匹配字符串
--hex-string pattern ; 编码16进制格式
--from offset ; 从哪个位置开始
--to offset : 从哪个位置结束
iptables -I OUTPUT -s 192.168.0.67 -m string --algo kmp --string "gay" -j ACCEPT
5; connlimit 链接数限制,单客户端最多链接数.。(检查三次握手第一次)
--connlimit-upto 上限小于等于之意 大于拒绝。。
--connlimit-above : 大于拒绝。。
iptables -A INPUT -d 192.168.235.5 -p tcp --dport 3306 -m connlimit --connlimit-upto 1 -j ACCEPT
5。limit 报文发包限速
--limit rate [ /second/| /minute| /hour | /day] 秒,分钟,小时,天
--limit-burst number 一次最多发几个包。。
限制本机tcp服务接受新的请求速率:--syn, -m limit
iptables -I INPUT -d 192.168.0.5 -p icmp -icmp-type 8 -m limit --limit-burst 5 --limit 20/minute -j ACCEPT 一次最多发五个包 每分钟发20个
7.state 状态链接追踪。。 --state
NEW; 新建的连接请求;
ESTABLISHED: 已建立的连接请求
RELATE:相关联的连接。当前链接是个新请求,附属于某个以存在链接,,,。。用这个功能要开启连接追踪模块。 nf_conntrack_ftp modprobe:装载模块 ,, lsmod:查看模块 。。。 modinfo:查单模块信息。。 自动装载模块文件:/etc/sysconfig/iptables-config
追踪的连接记录的文件:/proc/net/nf_conntrack
调整可记录连接数最大值:/proc/sys/net/nf_conntrack_max
超时时长:/proc/sys/net/netfilter/*timeout*
UNTRACKED; 来追踪的连接
iptables -R INPUT 2 -d 192.168.0.8 -p tcp -m state --state ESTABLISHED,RELATE -j ACCEPT
iptables -A INPUT -d 192.168.0.8 -p tcp -m multiport --dports 21,22,80,3306 -m state --state NEW -j ACCEPT 新请求通过
iptables -I INPUT 3 -j REJECT 入站拒绝所有
iptables -R OUTPUT 1 -s 192.168.0.8 -p tcp -m state --state ESTABLISHED -j ACCEPT 出站建立以建立的连接出站。。。
处理动作: -j targetname [pri-target-option] -j LOG 定义日志
1.REJECT: --REJECT-WITH 可以加以什么拒绝主机端口。。
2.LOG: --log-level 默认日志保存在/var/log/messages
--log-prefix :定义日志加前缀
iptables -I iNPUT -d 192.168.235.5 -p tcp --dport 22 -m state --state NEW -j LOG --log-prefix "access telnet" 日志前缀。。
3,自定义链要调用。。 iptables -N in_icmp_reles......
iptables -I INPUT 2 -d 192.168.235.5 -p icmp -j in_icmp_reles...。。
RETURN :返回调用者
保存: iptables-save > 路径
载入: iptables-restore < 路径
-n, --noflush: 不清空原有规则追加iptables 里。
-t, --test: 仅分析生成规则集,但不提交 测试。。。
NAT 地址转换
nmtui:更改ip地址命令。。
/proc/sys/net/ipv4/ip_forward 为1打开核心转发。。 作用在主机内能转发不同网络地址。 命令更改: sysctl -w net,ipv4.ip_forward=1 注: 打开核心转发。。。。
ifconfig ens33 192.168.235.5 up :更改IP地址。。
route add -net 192.168.235.0/24 gw 192.168.0.5 添加默认路由
route add default gw 192.168.235.2 添加网关。。。
snat 源地址转换。在postrouting上做,,代表客户端访问互联网。。节省IP地址
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.6 -s指的是防火墙客户端访问的,源地址
--to-source: 指的是后端。。。服务端的ip地址
MASQUERADE伪装之意。。 用于动态地址转换。。
dnat:目标地址转换。PREROUTING上做。 负载均衡效果。。
iptables -t nat -A PREROUTING -d 192.168.235.5 -p tcp --dprot 80 -j DNAT --to-destination 192.168.1.6
-d: 指自己的外网地址。。
--to-destination:内网主机地址。。 后边可加端口转换 --destination 192.168.1.6:8080
端口映射:
iptables -A PREROUTING -t nat -d 192.168.10.2 -p tcp --dport 80 -j REDIRECT --to-ports 8080
REDIRECT: 改的方向。。。