防火墙iptables与firewalld

1.firewalld安装

# yum install firewalld firewall-config
# systemctl restart firewalld
# systemctl enable firewalld

2.[6]大模块

一、zone:就是防火墙方案

# firewall-cmd --get-zones
work drop internal external trusted home dmz public block

默认是public,修改如下
# firewall-cmd --set-default-zone=模块名
查看规则
# firewall-cmd --list-all
# firewall-cmd --zone=模块名 --list-all

二、port:端口与服务

# firewall-cmd  --add-port=起始端口-结束端口/服务名    增加
# firewall-cmd  --remove-port=3000-3005/服务名     删除

三、service

# firewall-cmd  --add-service=服务名    增加
# firewall-cmd  --remove-service=http    删除

四、rich-rule:复杂规则

# firewall-cmd  --add-rich-rule=" rule family="规则组" source address=来源IP service name="服务名" 行为"

范例:
# firewall-cmd  --add-service=http	
# firewall-cmd  --add-rich-rule="rule family="ipva4" source address=10.1.1.12 service name="http" drop"

执行顺序:
    如果有service与rich-rule交叉设置,先执行rich-rule。
    如果多条rich-rule则
    # firewall-cmd --list-all
    按序执行!

五、runtime与permanent

模式说明
runtime规则立即生效,重启服务规则就没了
permanent规则不立即生效,重启服务规则就生效了
runtime-to-permanent将runtime全部转化为permanent模式,已生效的重启还有(关键)
# firewall-cmd  --模式名 --add-service=服务名

 六、panic自闭模式

# firewall-cmd --panic-on
# firewall-cmd --panic-off
云服务器执行这条,就连不上了。慎用。

日、图形界面

# firewall-config
进入图形界面。

注:Xshell需要安装Xmanager

3.安装iptables

# yum install iptables\* -y
# systemctl start iptables.service
# systemctl enable iptables.service

4.四表五链与配置

四表:
    Filter表:过滤数据包(常用)
    NAT表:用于网络地址转换(IP、端口)
    Mangle表:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
    Raw表:决定数据包是否被状态跟踪机制处理
五链:
    INPUT链——进来的数据包应用此规则链中的规则(常用)
    OUTPUT链——外出的数据包应用此规则链中的规则(常用)
    FORWARD链——转发数据包时应用此规则链中的规则
    PREROUTING链——对数据包作路由选择前应用此链中的规则
    POSTROUTING链——对数据包作路由选择后应用此链中的规则

1.INPUT与OUTPUT

查看某一个表的规则列表。
# iptables  -L -n -t 表名 --line

清空某个表规则
# iptables  -F -t 表名

行为:
    REJECT/DROP/ACCEPT...

协议名:
    all/icmp/http/tcp...

-A[DIR] 五链:增[删插改] 五链

-s[d] IP:来源[目标] IP

--sport[dport] 端口:来源[目标] 端口

# iptables -t 四表 -A[DIR] 五链 -p 协议名 -s[d] 来源IP[段] --sport[dport] 端口 -j 行为

iptables匹配规则的顺序: 
    1.从上之下顺序匹配
    2.只匹配一次
    3.无匹配执行默认策略。

# iptables -L  -t 四表 --line
数字:指Insert这条成为List中第[数字]条。
# iptables -t 四表 -I 五链 数字 -p 协议名 -s[d] 来源IP[段/掩码] --sport[dport] 端口 -j 行为
    
修改:修改链中的第[数字]条规则。
# iptables -t 四表 -R 五链 数字 -p 协议名 -s[d] 来源IP[段/掩码] --sport[dport] 端口 -j 行为

删除第[数字]条。
# iptables -D 五链 INPUT 数字 


默认策略:
# iptables -t 表名 -P 五链 行为

保存规则
# iptables-save > /etc/sysconfig/iptables
还原规则
# iptables-restore < /etc/sysconfig/iptables
# systemctl restart iptables


多端口,多IP
# iptables -A ... -p ... -j ... -m iprange --src-range 10.1.1.10-10.1.1.20 
# iptables -A ... -p ... -j ... --dport 1:1000 
# iptables -A ... -p ... -j ... -m multiport  --dport 22,80 

这个文件可以编辑,进行配置。

2.FORWARD

        指A访问C,中途B来带路。那么B的链为FORWARD。(既不是IN也不是OUT)。

一个模型:

A:1.1.1.1

B:1.1.1.3/2.2.2.3 (双网卡)

C:2.2.2.2

1.A想访问C,不能够。

2.A能访问B的第一块网卡IP(同网段),A无法访问B的第二块网卡IP,就需要B的网卡1介绍他们认识。

所以A需要能访问B的网段,然后以B作为网关,访问B能访问的网段。(A找B认识B的朋友们)

注:此环节B需要开启ip_forward,进行(IP转发)朋友介绍

3.加入B的IP作为网关,就可以正向将信号传递给C了,然后返回。

4.C回去路上能访问B的2号卡IP,但访问不了B的1号卡IP(跟A来时一样)

5.C端加入B2号卡IP的网关。

6.顺利返回。

示例: 在中间B中禁止两边机器互ping
# iptables -A FORWARD -p icmp -j DROP

示例: 禁止A访问B的80
# iptables -A FORWARD -p tcp --dport 80 -s 访问端IP -d 目标IP -j DROP

不常用

 3.NAT表与POSTROUTING/PREROUTING链

另一个模型:

A:1.1.1.1

B:1.1.1.3/外网IP(双网卡)

C:外网IP

A扮演客户机,B扮演路由器,C扮演web服务器。

A客户机想访问C服务器:

1.A的内网IP访问B的内网IP

2.B将自己的IP替换掉A的内网IP,来访问C

3.上面的替换过程叫NAT,替换来源IP叫Source NAT,SNAT。

# iptables -t nat -A POSTROUTING -o 外网IP网卡名 -j SNAT --to-source 外网IP
可跟据需求加上诸如端口号,来源IP等等信息

例子:
# iptables -t nat -A POSTROUTING -o ens37 -j SNAT --to-source 10.1.1.11

关键词MASQUERADE可以自动识别路由器IP,自动替换,自动换回。
# iptables -t nat -A POSTROUTING -o ens37 -j MASQUERADE


或:firewalld

# systemctl start firewalld
# firewall-cmd --add-masquerade			不用指从哪个网卡出了 
# firewall-cmd --remove-masquerade		删除的写法

另一个模型:

A:外网IP

B:外网IP/1.1.1.1(双网卡)

C:1.1.1.2

A扮演客户机,B扮演LB,C扮演web服务器。

A客户机想访问C服务器:

1.A的外网访问B的外网IP。

2.B将C的IP替换掉自己的IP,并代替A来访问C

3.上面的替换过程叫NAT,替换目标IP叫 Destination NAT,DNAT。 

# iptables -t nat -A PREROUTING -i 入口IP网卡名 -p 协议名 --dport 目标端口号 -j DNAT --to-destination 真正的服务器IP

例如:
# iptables -t nat -A PREROUTING -i ens37 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100



或firewalld:

# systemctl start firewalld
# firewall-cmd --add-forward-port=port=端口号:proto=协议名:toaddr=真正的服务器IP

例如:
# firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100

4.DNAT/DNPT 

DNAT是对目标的IP地址进行替换,DNPT是对目标的端口进行替换(Port)

这段是真实服务器上用的,将访问自己的端口转移。
# iptables -t nat -A PREROUTING -i 入口网卡名 -p 协议名 --dport 端口号 -j REDIRECT --to-port 新端口

例如:
# iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j REDIRECT --to-port 8080


这段是LB上用的,将IP和端口都转移。
# iptables -t nat -A PREROUTING -i 入口网卡名 -p 协议名 --dport 端口号 -j DNAT --to 真实服务器IP:新端口



或:firewalld

# systemctl start firewalld
# firewall-cmd --add-forward-port=port=端口号:proto=协议名:toaddr=真实服务器IP:toport=新端口

# firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080

5.状态控制

状态类型:
    1.NEW    新来的连接
    2.ESTABLISHED    NEW成功后,都叫这名
    3.RELATED    被动产生的数据包。而且这个连接是不属于现在任何连接的。
    4.INVALID    恶意的数据包

# iptables -A ... -p ... -j ... -m state --state NEW,ESTABLISHED,RELATED,INVALID

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值