从无到有,IPtables的基础命令和一些知识点(二)

一、基础命令

1、iptables -t 表名 -L
-L 表示列出所有规则,后面可接具体的链
-nL 进制反向域名解析
iptables -t 表名 -v -Liptables -t 表名 -n -L
iptables -t 表名 -nvL
-v 具体信息 会看到每个规则默认的策略
-n 禁止反向解析域名

2、iptables --line-numbers -t 表名 -L
可以看到规则的序列号 --line-numbers可以简写为 --line

3、iptables -t 表名 -F 链名
-F 删除 若-F后面没有规则 则默认删除全部链

4、添加规则
(1)命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作
示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP
(2)命令语法:iptables -t 表名 -I 链名 匹配条件 -j 动作
示例:iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT
(3)命令语法:iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作
示例:iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT
**注意:-I优先于-A(附加)每-I一个规则都会在序列号第一位

5、命令语法:iptables -t 表名 -P 链名 动作
示例:iptables -t filter -P FORWARD ACCEPT

6、删除规则
命令语法:iptables -t 表名 -D 链名 规则序号
示例:iptables -t filter -D INPUT 3

命令语法:iptables -t 表名 -D 链名 匹配条件 -j 动作
示例:iptables -t filter -D INPUT -s 192.168.1.146 -j DROP
删除记得保存规则,service iptables save (centos6中)

7、修改规则
命令语法:iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作
示例:iptables -t filter -R INPUT 3 -s 192.168.1.146 -j ACCEPT
命令语法:iptables -t 表名 -P 链名 默认策略
示例:iptables -t filter -P FORWARD ACCEPT

8、常见的选项
-s 源地址
iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP
iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT
-d 目标地址 和-s用法一样
-p 匹配报文协议类型
iptables -t filter -I INPUT -p tcp -s 192.168.1.146 -j ACCEPT
iptables -t filter -I INPUT ! -p udp -s 192.168.1.146 -j ACCEPT
-i 报文从哪个网卡接口流入本机 -o 相反流出
iptables -t filter -I INPUT -p icmp -i eth4 -j DROP
iptables -t filter -I OUTPUT -p icmp ! -o eth4 -j DROP

9、扩展匹配条件,扩展模块这里我就不细说了,个人觉得信息量太大有兴趣的小伙伴可以百度下

**

二、iptables黑白名单制

这里先说下白名单吧,更为安全,一般被选用
白名单:如下图默认的策略是DROP 而其中的规则动作是ACCEPT,也就是说除了符合下面的规则会被“放行”,其他都会被“丢弃”。
图1但是这样是不保险的 如果我们没有事先把80端口放行的话,我所用的ssh将会连接失败,下图就是很好的例子:在这里插入图片描述所以为了保险起见我们一般都会把默认策略设置为ACCEPT列出所有白名单规则之后我们会在最后追加一行

iptables -A INPUT -j REJECT

下图才是一个完整的白名单例子哦在这里插入图片描述
那么黑名单就反之了,反正用得少我就不具体解释了,你们都是聪明滴!

三、iptables-网络防火墙

如果想要iptables作为网络防火墙,iptables所在主机开启核心转发功能,以便能够转发报文。 使用如下命令查看当前主机是否已经开启了核心转发,0表示为开启,1表示已开启

cat /proc/sys/net/ipv4/ip_forward
使用如下两种方法均可临时开启核心转发,立即生效,但是重启网络配置后会失效。
方法一:echo 1 > /proc/sys/net/ipv4/ip_forward
方法二:sysctl -w net.ipv4.ip_forward=1
使用如下方法开启核心转发功能,重启网络服务后永久生效。
配置/etc/sysctl.conf文件(centos7中配置/usr/lib/sysctl.d/00-system.conf文件),在配置文件中将 net.ipv4.ip_forward设置为1

由于iptables此时的角色为"网络防火墙",所以需要在filter表中的FORWARD链中设置规则。
可以使用"白名单机制",先添加一条默认拒绝的规则,然后再为需要放行的报文设置规则。
配置规则时需要考虑"方向问题",针对请求报文与回应报文,考虑报文的源地址与目标地址,源端口与目标端口等。

示例为允许网络内主机访问网络外主机的web服务与sshd服务。
iptables -A FORWARD -j REJECT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 80 -j ACCEPT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT
iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 22 -j ACCEPT

可以使用state扩展模块,对上述规则进行优化,使用如下配置可以省略许多"回应报文放行规则"。
iptables -A FORWARD -j REJECT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

四、防火墙在centos6与centos7的区别

1、centos6是依靠“四表五链”来实践的,而centos7是依靠九个区域。
2、centos6是在输入时拦截的,而centos7是在输出时拦截报文的
3、centos6:iptables centos7:firewalld

五、补充知识点

1、在使用–sport --dport 时前面必须添加协议 -p
2、自定义链 先取个名字
#示例:在filter表中创建IN_WEB自定义链
iptables -t filter -N IN_WEB
#示例:在INPUT链中引用刚才创建的自定义链
iptables -t filter -I INPUT -p tcp --dport 80 -j IN_WEB
#示例:将IN_WEB自定义链重命名为WEB
iptables -E IN_WEB WEB
删除自定义链
如果被引用时先删除被引用的,再-X

注意了,防火墙我一共归纳了两篇博客,其中细节的东西很多,需要引起重视,好好细读都会有收获的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_Bigboy_sz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值