firewald、netfilter、iptables介绍及表案例

大憨熊 提交于 2020-12-26 16:18:24

1 firewalld和netfilter
2 netfilter5表5链介绍
3 iptables语法
4 iptables filter表案例
5 iptables nat表应用

1 firewalld和netfilter

centos6防火墙名字叫netfilter,iptables仅仅是防火墙工具

关闭firewalld步骤

firewalld 取消开机启动,停止服务

开启netfilter步骤

netfilter yum安装iptables-servers 先enable iptables 再开启iptables

临时关闭selinux

setenforce 0

查看selinux状态,Permissive表示遇到需要需要阻断时不去阻断,而是去记录信息

永久关闭selinux,编辑配置selinux文件,将标记位置改为disabled及可永久关闭

vi /etc/selinux/config

centos7之前版本叫netfilter centos7叫firewalld,都支持iptables命令

关闭firewalld开机启动

systemctl disable firewalld
关闭防火墙服务

systemctl stop firewalld

yum安装iptables服务

yum install -y iptables-services
开启iptables服务

systemctl enable iptables

systemctl start iptables

查看iptables默认规则命令

iptables -nvL


2、netfilter5表5链介绍

centos6得时候只有4个表,没有security这个表

filter是一个默认的表,包含了3个内置链,INPUT(数据包进来时经过的链,发现可疑ip需要禁用掉)、FORWARD(判断目标地址是不是本机)、OUTPUT(在本机产生的包,出去之前产生的操作)

nat表 PRE‐ROUTING(用来更改进来时的数据包) OUTPUT(在本机产生的包,出去之前产生的操作) POSTROUTING(用来更改出去时的数据包)端口映射时需要用到

mangle表、raw表、security表 这三个表几乎用不到

小结:如果经过本机,PREROUTING----->INPUT---->OUTPUT------>POSTROUTING

如果不经过本机,PREROUTING----->FORWARD------>POSTROUTING

3、iptables语法

不加-t都是操作默认filter表

查看iptables规则

iptables -nvL

重启iptables规则

service iptables restart

查看iptables配置文件

cat /etc/sysconfig/iptables

清空iptables规则

iptables -F
保存iptables规则

service iptables save

重启iptables规则,重启之后会按iptables配置文件恢复

service iptables restart
查看nat表规则,默认是空的

iptables -t nat -nvL

清空iptables计算器

iptables -Z; iptables -nvL

添加一条iptables策略 (-A 表示增加一条规则 增加到最后面,-s 表示指定一个来源ip,-p 表示指定协议,--sport表示指定来源端口,-d 表示指定目标ip --dport表示指定目标端口,-j 表示要执行什么操作,DROP表示丢弃掉数据包,REJECT表示拒绝掉数据包)-I插入到最前面

iptables -A INPUT -s 192.168.238.1 -p tcp --sport 1234 -d 192.168.138.6 --dport 80 -j DROP

iptables -I INPUT -p tcp --dport 80 -j DROP(从上往下匹配,一旦匹配直接执行)

-D表示删除一条规则

iptables -D INPUT -p tcp --dport 80 -j DROP

iptables -D INPUT -s 192.168.238.1 -p tcp --sport 1234 -d 192.168.138.6 --dport 80 -j DROP

查看iptables规则并打印出序列号

iptables -nvL --line-number

删除第7条iptables规则

iptables -D INPUT 7

指定网卡的iptables规则

iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

更改iptables默认规则,禁用掉OUTPUT默认规则

iptable -P OUTPUT DROP

4、iptables filter表案例

iptables小案例

需求:把80端口、22端口和21端口放行,22端口指定一个IP段,只有这个IP段的IP访问时才能访问,其他一律不能访问。

实现(shell脚本)

ipt定义一个变量,在脚本中要写绝对路径;

首先清除之前的规则,然后定义下默认的策略,紧接着加一些规则;

把RELATED和ESTABLISHED状态放行,是为了通信更顺畅。

执行脚本,查看规则

icmp示例

iptables -I INPUT -p icmp --icmp-type 8 -j DROP可以让你ping通外面的机器,但不能ping通本机。

iptables -D INPUT -p icmp --icmp-type 8 -j DROP删除规则,然后重启iptables服务

查看规则

此时,就又能ping通本机。iptables nat表应用

5、nat表应用

A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联

准备工作:

首先准备两台虚拟机(可以克隆一台),给第一台机器添加一个网卡,点添加,选择网络适配器,下一步

默认选择NAT模式,点完成

选择网络适配器2,选择LAN区段

可以添加自定义名字的LAN区段,点添加

点确定,就好了

接着第二台机器,也添加一块网卡,在添加之前,先取消启动时连接,点添加

默认NAT,点完成

然后和第一台机器一样选择同一个区段

然后启动两台机器,xshell远程连接第一台虚拟机,输入ifconfig,可以看到增加的网卡ens37

给网卡ens37设置IP,可以通过命令设置,也可以通过编辑网卡配置文件;这里通过命令设置,ifconfig ens37 192.168.100.1/24,重启之后,IP就会消失,想要永久更改,就要通过编辑网卡配置文件,需要拷贝ens33的配置文件,更改name、device等

第二台机器由于没法远程,只能在本机操作,先登录,输入ifconfig

先down掉ens33网卡

给ens37设置IP,ifconfig ens37 192.168.100.100/24

然后第一台机器xshell先ping 192.168.100.100,这样第二台机器就可以ping 192.168.100.1

然后Windows主机不能ping通192.168.100.100和192.168.100.1

检测第二台机器能否联网

需求1:可以让B机器连接外网

首先A机器打开端口转发

然后再A机器上增加一条规则iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eno16777736 -j MASQUERADE,查看规则

给B机器设置网关

然后ping 192.168.133.1

设置DNS

输入vim /etc/resolv.conf,添加nameserver 119.29.29.29

然后ping 119.29.29.29

这样我们就可以ping通外网

但是Windows主机依然ping不通192.168.100.100

需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口(端口映射)

首先A机器打开端口转发echo "1" > /proc/sys/net/ipv4/ip_forward(刚才做过了就不用做),删除规则

然后增加两条规则,第一条规则就是把进来的包的目标IP192.168.133.130,目标端口1122做端口转发到192.168.100.100的22端口;第二条规则是把回来的包目标IP192.168.100.100改成192.168.133.130

给B机器设置网关(刚才设置过了,现在不需要再设)

然后新建会话,点确定

直接点连接

选择接收并保存

输入用户名root,密码

远程连接成功

也可以连接外网

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!