linux防火墙-netfilter

setenforce 0           //临时关闭selinux

getenforce            //查询selinux状态

020def6e8f6151dd6a5b6654b207bcaaeb4.jpg

vim /etc/selinux/config          //修改配置文件,永久关闭selinux,重启生效

91010a16d5f8f7516d0a58a2cce89589787.jpg

 

centos7之前使用netfilter防火墙

centos7开始使用firewalld防火墙

两者使用的工具都是iptables

先关闭firewalld防火墙

systemctl disable firewalld        //开机不启动

systemctl stop firewalld            //关闭firewalld防火墙

8c7d16f926ed21ff2ff04539bf7a480cef5.jpg

 

开启netfilter防火墙,需先安装iptables安装命令: yum install -y iptables-services

6240a7f62b2519cc7ccb99306f0f446b482.jpg

开启iptables服务

systemctl enable iptables            //开机启动服务

systemctl start iptables                //开启服务

e8e3c58de7363350330e3c6a0cd9ce0fcca.jpg

 

iptables -nvL          //查看iptables规则

ae7fd2dfee5079f97cf038aa8ed338b2954.jpg

 

netfilter的5个表

filter表用于包过滤,是默认的表,有三条内置的链(INPUT、FORWARD、OUTPUT)

INPUT:通过路由表,目的为本机,数据包进入到本机时经过的链

FORWARD:数据包不是给本机出来,数据包到达本机,但不会进入内核,判断目标地址是否为本机,不是本机经过FORWARD转发

OUTPUT:由本机产生,向外发出

 

nat表用于网络地址转换,有三条链(PREROUTING、OUTPUT、POSTROUTING)

PREROUTING:,通过路由表后,目的不为本机,进入本机之前更改数据包

OUTPUT:由本机产生,向外发出

POSTROUTING:发送到网卡接口之前更改数据包

 

managle表用于给数据包做标记,几乎用不到

raw表可以实现不追踪某些数据包,几乎用不到

sercurity表在centos6中并没有,用于强制访问控制(MAC)的网络规则,几乎用不到

 

 

iptables传输数据包的过程

① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。

② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。

③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

93529ae7c92b7c2c4372f164ab75afad126.jpg

 

 

iptables语法

iptables -nvL         //查看iptables规则

72f161c716a3a9ec2aa2d3fedbaca37c814.jpg

service iptables restart          //重启防火墙服务

87b51b2fab46813639b1198eb68f0a8387f.jpg

 

/etc/sysconfig/iptables       //iptables配置文件路径

2f1f429b1a4ac23c3fff37fda6253f4c286.jpg

iptables -F        //清空iptables规则,配置文件信息还是存在的

fdedb574bcb4ba138599659206a408020f1.jpg

service iptables save        //保存当前iptables规则

重启iptables服务,重新加载配置文件规则

a9f8b2af406b18dd0ab0ebcabd41ac31224.jpg

 

iptables -t nat -nvL        //查询nat表规则,不加-t参数指定表名,默认操作filter表

fdedb574bcb4ba138599659206a408020f1.jpg

 

iptables -Z     //可以把计数器清零,数据包和大小时刻增加

30b6e573c81ad04132c3c8ce16d9db8896d.jpg

 

增加一条规则

iptables -A INPUT -s 192.168.0.100 -p tcp --sport 1234 -d 192.168.0.188 --dport 80 -j DROP       //没有指点-t参数,默认操作filter表,表示将IP192.168.0.100端口为1234通过tcp协议访问IP192.168.0.188的80端口的数据包直接丢弃

 

-A:增加一条规则,这里针对的链是INPUT链,增加的规则默认在最后一条

-s:指定源IP

-p:指定协议,这里指定的协议为tcp

--sport:指点源端口

-d:指定目的IP

--dport:指定目的端口

-j:指定后面的行为动作

DROP:丢弃

REJECT:拒绝

cfa3bfe4cbf1a7e82551c7df322e728e28c.jpg

 

iptables -I INPUT -p tcp --dport 80 -j DROP    //向INPUT链插入一条

 

-I:插入一条规则,插入的规则默认在最前面,规则过滤优先从第一条到最后一条匹配,同时满足匹配2条规则,优先匹配最前面一条规则

24ff31988d9406782ad9180d0d0d768b0c4.jpg

 

iptables -D INPUT -p tcp --dport 80 -j DROP       //-D参数,删除规则

abf4b17e39ca5dae4de860c7522d7e20189.jpg

iptables -nvL --line-number       //--line-number打印规则序列号

9d86ba60c885128ccdc519da466590aa335.jpg

iptables -D INPUT 7         //删除第七条规则

d6146aae4999e5c144cbf731d2cbbce53c3.jpg

iptables -I INPUT -s 192.168.0.0/24 -i en33 -j ACCEPT         //-i指定网卡,匹配192.168.0.0这个段的IP数据包允许通过en33这个网卡

72a68b6473978b862be5da08354759c0728.jpg

 

iptables -P INPUT DROP    //-P参数更改默认策略,表示更改INPUT链的策略为DROP丢弃,没有具体的规则匹配就走默认策略

50ea11590acb6baf80ab8f3021108461b1a.jpg

 

iptables小案例

需求:放行80,21,22端口,并指定一个IP段可以访问22端口,其他IP都不可以访问

vi /usr/local/sbin/iptables.sh           //加入如下内容

#!/bin/bash

ipt="/usr/sbin/iptables"        //定义变量

$ipt -F                                     //清空之前的规则

$ipt -P INPUT DROP               //INPUT链丢弃

$ipt -P OUTPUT ACCEPT         //OUTPU链放行

$ipt -P FORWARD ACCEPT     //FORWARD链放行

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT     //-m state指定状态,目的是为了相关数据包顺利的相互连接,RELATED表示边缘状态,客户端和服务端建立完链接后,还有额外的链接,ESTABLISHED表示保持链接

$ipt -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT         //网段192.168.0.0/24访问22端口的规则放行

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT                                    //80端口数据包放行

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT                                     //21端口数据包放行

 

cat /usr/local/sbin/iptables.sh         //查看脚本内容

aeea3b38a6e82c8718e9a096267a60216b6.jpg

 

sh /usr/local/sbin/iptables.sh          //执行脚本

ce7d42ef6ae6a8d5c67e69245da6615ffd2.jpg

 

 

icmp示例

重启iptables服务,恢复默认状态

b373d7bf4f67762a3443295425064a354a2.jpg

 

使用其他机器ping该服务器IP,正常ping通

142f93e98cd93e2b50947682e564cad8a05.jpg

 

iptables -I INPUT -p icmp --icmp-type 8 -j DROP     //禁止外部网络ping通本机IP

308b0150022ea2d6d884505712c4948ce53.jpg

 

无法ping通该服务器IP,达到禁ping的效果

e53d98e5181392b779ea1a5281336d02894.jpg

 

nat表应用

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

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

准备工作:准备2台虚拟机(study-01、study-02)

保留study-01原来的网卡不变,增加多一块网卡

ec799e2f50c07195bc8c8cd480fedfc4c02.jpg

选择网络适配器,下一步

e3acef34bb5d51bc5d24c6036012056e0c3.jpg

选择完成

90441bdc9cbb02d8f01df3d58e9bfdbeece.jpg

创建局域网

b0cb43a60aa01940923f8d0a2ea9649380b.jpg

选择创建的区段,确认

4b76cd7c2a1ac6e843b4adf1b0ccc3e254d.jpg

开启服务器

3a76e46c082586843dd54ddfef4a147f27a.jpg

 

study-02设置

断开study-02服务器原来的网卡连接,新建一个网卡步骤和study01一样

断开原来网卡的连接

75fd0db0fbffddeb5ec5a2fc8b367e26e85.jpg

和study-01连接到同一台交换机,启动服务器

29340c1307b65b6333120e561a3e29178e7.jpg

study-01新增网卡名称为:ens37

7a2bdd9e9a71b3b6751b2b0f65b9a0cdc9c.jpg

study-02新增网卡名称为:ens37,由于study-02原来的网卡已经断开连接,虽然获取到IP,但是还是无法通信,所以无法使用xshell远程连接

bf570e604dd1fc10d4971eb66f8693ff23f.jpg

ifconfig ens37 192.168.100.1/24         //临时配置ens37网卡的IP,重启不生效,永久生效需复制ens33的配置文件修改

c44873d5bc70f01f95bd86761d7b7878f09.jpg

ifdown ens33   //把ens33的网卡down掉,确保ens33无连接

ifconfig ens37 192.168.100.100/24          //临时配置ens37网卡的IP

74af50ff2efd2822e69968bf8a62b756d28.jpg

study-01pingstudy-02,网络通信正常

e1af6e84b1a72dc55c42068526b3ac033af.jpg

检查study-02是否可以ping通

6e7f2bf532b4ffc51e0924657c30ee539e7.jpg

 

准备工作已完成

开始试验

study-01操作

检查A机器系统是否开启内核转发,默认为0表示没开启

echo "1">/proc/sys/net/ipv4/ip_forward        //改为1表示打开端口转发

c4936759a6da5e6ab8646a3272a85e57b28.jpg

 

iptables -F      //添加规则前先清空iptables规则

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE   //增加一条规则,使192.168.100.0/24这个网段可以上网

iptables -t nat -nvL                     //查看增加的规则

19c3959e9d92babdb57e38b22298c0e6f05.jpg

 

study-02操作

B机器上设置网关为192.168.100.1

route -n    //查看路由

route add default gw 192.168.100.1         //增加一条默认网关

8e43da33054b5976c1f67575661b880d018.jpg

 

测试study-02可以正常ping通

a2c727ff466b7268722ab17a5f73566f448.jpg

配置dns,ping公网dns,测试正常,可以正常上外网

f75c63ef640ba37baa037684de045a82f89.jpg

 

 

 

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

study-01操作

A上打开路由转发     echo "1">/ proc/sys/net/ipv4/ip_forward

bb50e041934a164d87e20e7e402240ba3a3.jpg

 

iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE    //删除上一个试验的操作记录

0a4ce17506313c1b2ca0fce5e2f39b19ac7.jpg

 

A上执行  iptables -t nat -A PREROUTING -d 192.168.0.236 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22     //c机器进去时访问目的IP为192.168.0.236端口为1122转发到192.168.100.100:22

 

iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.0.236        //B机器回来的源IP经过A机器

0acb8e34444d9db434994d2b3982e81b3ff.jpg

 

study-02操作

 

B上设置网关为192.168.100.1

6eec4c35420e0fa02154f6c8eefdd8954fa.jpg

 

验证是否可以远程登录

7ab7ec6b1452392b3d441894f1eb29e7f55.jpg

验证成功

7ab7ec6b1452392b3d441894f1eb29e7f55.jpg

验证是否可以连接外网

cb0e13fbabb9120e23bc9156dc1b17b7dd7.jpg

 

 

 

iptables详解:http://www.cnblogs.com/metoy/p/4320813.html

转载于:https://my.oschina.net/u/3991860/blog/2878048

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值