Centos7防火墙iptables

4 篇文章 0 订阅
2 篇文章 0 订阅

防火墙配置iptables,filewalld

https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html#DNATTARGET

三张表介绍:

filter负责过滤数据包,包括的规则链有,input,output和forward;

nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;

mangle表则主要应用在修改数据包内容上,用来做流量整形的,给数据包打个标识,默认的规则链有:INPUT,OUTPUT、forward,POSTROUTING,PREROUTING;

五个链:

input匹配目标IP是本机的数据包,

output  出口数据包 ,  一般不在此链上做配置

forward匹配流经本机的数据包,

prerouting用来修改目的地址,用来做DNAT 。如:把内网中的80端口映射到路由器外网端口上

postrouting用来修改源地址用来做SNAT。 如:内网通过路由器NAT转换功能实现内网PC机通过一个公网IP地址上网。

总结:iptables三个表,5个链接,结构如图:

 

安装安装iptables防火墙

yum installiptables-services            #安装

iptable [-t 表名] 管理选项 [链名][条件匹配][-j目标动作或跳转]

配置文件位置:

[root@xuegod63 ~]#ls /etc/sysconfig/iptables

[root@xuegod63 ~]#systemctl start iptables.service

 

[root@xuegod63 ~]# chkconfig --listiptables

iptables            0:off       1:off       2:on 3:on 4:on 5:on    6:off

 

-A <链名>    APPEND,追加一条规则(放到最后)

-I <链名> [规则号码]     INSERT,插入一条规则

-R num:Replays替换/修改第几条规则

-D <链名> <规则号码 | 具体规则内容>    DELETE,删除一条规则

ptables -D INPUT1(按号码匹配)

iptables -D INPUT-s 192.168.0.1 -j DROP(按内容匹配)

-P <链名> <动作>    POLICY,设置某个链的默认规则

iptables -P INPUTDROP(不用加-j

-F [链名]       FLUSH,清空规则

-L [链名]       LIST,列出规则

v:显示详细信息,包括每条规则的匹配包数量和匹配字节数

    x:在 v 的基础上,禁止自动单位换算(K、M)

    n:只显示 IP 地址和端口号码,不显示域名和服务名称

    --line-number  可以查看到规则号

 

匹配条件

£ 流入、流出接口(-i、-o)

£ 来源、目的地址(-s、-d)

£ 协议类型      (-p)

£ 来源、目的端口(--sport、--dport)

£  -i <匹配数据进入的网络接口>   #此参数主要应用于nat表,例如目标地址转换

£  -o 匹配数据流出的网络接口

£  -s <匹配来源地址>

£  -d <匹配目的地址>

£  -p <匹配协议类型>

£  --sport <匹配源端口>

£  --dport <匹配目的端口>

注意:--sport --dport 必须配合 -p 参数使用

 

 

动作(处理方式)

-j ACCEPT

    通过,允许数据包通过本链而不拦截它

-j DROP

    丢弃,阻止数据包通过本链而丢弃它

-j SNAT --toIP[-IP][:端口-端口]nat 表的 POSTROUTING 链)

    源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池(一组连续的 IP 地址)

-j DNAT --to IP[-IP][:端口-端口](nat 表的 PREROUTING链)

    目的地址转换,DNAT 支持转换为单 IP,也支持转换到 IP 地址池

-j MASQUERADE    伪装

 

附加模块

£ 按包状态匹配   (state)

£ 按来源 MAC 匹配(mac)

£ 按包速率匹配   (limit)

£ 多端口匹配     (multiport)

按包状态匹配   state

-m state --state 状态

状态:NEW、RELATED、ESTABLISHED、INVALID

      NEW:有别于 tcp 的 syn   #如果我们发送一个流的初始化包,状态就会在OUTPUT链 里被设置为NEW,当我们收到回应的包时,状态就会在PREROUTING链里被设置为ESTABLISHED。如果第一个包不是本地产生的,那就会在PREROUTING链里被设置为NEW状 态。

      ESTABLISHED:连接态

      RELATED:衍生态,与 conntrack 关联(FTP)

      INVALID:不能被识别属于哪个连接或没有任何状态

按来源 MAC 匹配(mac

-m mac --mac-source MAC

匹配某个 MAC 地址

按包速率匹配   limit

-m limit --limit 匹配速率 [--burst 缓冲数量]

    用一定速率去匹配数据包

多端口匹配     multiport

-m multiport<--sports|--dports|--ports> 端口1[,端口2,..,端口n]

一次性匹配多个端口,可以区分源端口,目的端口或不指定端口

 

 

保存:service iptables save

 

 

1、开放20、21端口:
   iptables -A INPUT -p tcp --dport 21 -j ACCEPT
   iptables -A INPUT -p tcp --dport 20 -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT #默认情况一般服务与本机通讯以127.0.0.1来通讯的。

iptables -A INPUT -p tcp -m multiport --dports21,22,80 -j ACCEPT

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -jACCEPT

 

 

使用iptables搭建路由器,通过SNAT功能

启用内核路由转发功能:临时生效

[root@xuegod63 ~]#echo"1" > /proc/sys/net/ipv4/ip_forward

永久生效:

[root@xuegod63 ~]#vim /etc/sysctl.conf

改:#net.ipv4.ip_forward =0

为: net.ipv4.ip_forward =1

改完使配置生效:

[root@xuegod63 ~]# sysctl –p

配置之前,把前面的规则去除了,否认会达不到一定的效果

iptables -P INPUT ACCEPT

iptables –F

配置SNAT

[root@xuegod63 ~]#iptables-t nat -A POSTROUTING -s 192.168.2.0/24  -j  SNAT  --to 192.168.1.63

或:

[root@xuegod63 ~]#iptables -t nat -APOSTROUTING -s 192.168.2.0/24  -oeth0  -j MASQUERADE   # ADSL拨号上网.

 

 

使用DNAT 功能,把内网web服务器端口映射到路由器外网

 

做DNAT端口映射:

xuegod63

[root@xuegod63 ~]#  iptables -t nat -A PREROUTING -i eth0 -p tcp--dport 80 -j DNAT --to 192.168.2.2:80

或:

[root@localhost ~]# iptables -t nat -APREROUTING -d 192.168.1.63 -p tcp --dport 80 -j DNAT --to 192.168.2.2:80

iptables命令使用总则总结:

£  所有链名必须大写

       INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING

£  所有表名必须小写

       filter/nat/mangle

£  所有动作必须大写

       ACCEPT/DROP/SNAT/DNAT/MASQUERADE

£  所有匹配必须小写

       -s/-d/-m <module_name>/-p

 

 

修改配置的话只需要将/usr/lib/firewalld中的配置文件复制到/etc/firewalld中修改。恢复配置的话直接删除/etc/firewalld中的配置文件即可。

就需要把/usr/lib/firewalld/ssh.xml 文件拷贝到 /etc/firewalld/services/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值