第十四次课 课后笔记

预习内容

10.12 firewalld和netfilter
10.13 netfilter5表5链介绍
10.14 iptables语法
10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用

linux的防火墙

SElinux是linux系统特有的安全机制,因为这种机制的限制很多,配置也特别繁琐。安装完系统,我们一般都要把SElinux关闭,以免引起不必要的麻烦,临时关闭的方法是:

[root@hongwei ~]# setenforce 0

上面的例子,仅仅是临时关闭,想要永久关闭需要更改配置文件/etc/selinux/config,需要把SElinux=enforcing改为SELINUX=disabled,

更改完配置文件后,重启系统才能生效。可以使用getenforce命令获得当前SELinux的状态:

[root@hongwei ~]# getenforce
Enforcing

如果关闭了就显示Enforcing,当使用setenforce 0这个命令后,在重启getenforce命令就会输出permissive

 10.12 firewalld和netfilte

  • 在之前的centos老版本中,比如5、6版本的防火墙为netfilter,centos7的防火墙是firewalld,会有很多人把防火墙叫做iptables,其实这样老说并不是很恰当,iptables其实仅仅是一个工具。首先介绍一下firewalld的用法:
[root@hongwei ~]# systemctl stop firewalld    这是关闭firewalld服务
[root@hongwei ~]# systemctl disable firewalld  这是禁止firewalld服务开机启动
  • 没有iptables工具 安装它 yum install -y iptables-services。安装好后,我们就可以使用之前版本的iptables。
[root@hongwei ~]# systemctl enable iptables  设置开机启动
[root@hongwei ~]# systemctl start iptables   启动iptables服务

在centos上默认没有iptables规则,这个规则虽然很安全,但对于我们来说没有用,我们首先清除一下规则,然后在保存一下,如下:

  1. 删除规则
[root@hongwei ~]# iptables -F
  1. 清除只是临时的,重启系统或者重启iptables服务后还会加载已经保存的规则,使用下面命令保存一下规则
[root@hongwei ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
  1. 然后使用 -nvL查看规则
[root@hongwei ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

10.13 netfilter5表5链介绍 

  • netfilter的5个表

filter表主要用于过滤,是系统预设的表,这个表也是用得最多的表,该表内建3个链: INPUT、 OUTPUT以及FORWARD。 INPUT链作用于进人本机的包,OUTPUT链作用于本机送出的包,FORWARD链作用于那些跟本机无关的包。

nat表主要用于网络地址转换,它也有3个链。PREROUTING链的作用是在包刚刚到达防火墙时改变 它的目的地址(如果需要的话),OUTPUT链的作用是改变本地产生的包的目的地址,POSTROUTTNG链的 作用是在包即将离开防火墙时改变其源地址。

mangle表主要用于给数据包做标记,然后根据标记去操作相应的包。这个表几乎不怎么用,除非你想成为一个高级网络工程师,否则就不需要太关注。

raw表可以实现不追踪某些数据包,默认系统的数据包都会被追踪,但追踪势必消耗一定的资源, 所以可以用raw表来指定某些端口的包不被追踪。

securlty表在Cenms6中是没有的,它用于强制访问控制(MAC)的网络规则。 

  • netfilter的5个链

5个链分别为PREROUTING、 INPUT, FORWARD. OUTPUT. POSTROUTING

PREROUTING:数据包进路由表之前

INPUT:通过路由表后目的地为本机

FORWARD:通过路由表后,目的地不为本机

OUTPUT:由本机产生,目的地不为本机

POSTROUTING:发送到网卡接口之前

具体的数据包流向,下图

表和链对应的关系

 10.14 iptables语法

iptables是一个非常复杂和功能丰富的工具,介绍几种常用的语法

  • 查看规则以及清除规则
[root@hongwei ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

-t选项后面跟表名,-nvL表示查看该表的规则,其中-n表示不针对IP反解析主机名,-L表示列出 -v表示列出的信息更加详细。如果不加-t选项,则打印filter表相关的信息

[root@hongwei ~]# iptables -nvL
Chain INPUT (policy ACCEPT 218 packets, 18625 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 156 packets, 12984 bytes)
 pkts bytes target     prot opt in     out     source               destination
  1. 清除规则的命令除了上面介绍的-F 还有-Z,-Z表示流量计数器置零
  • 增加/删除一条规则
[root@hongwei ~]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

这里没有-t选项,所以针对的是表filter表,这条规则中各个选项的作用如下:

-A/-D:表示增加或者删除一条规则

-I:表示插入一条规则,效果跟-A一样

-P:表示指定协议,可以是tcp udp 或者icmp

--dport:跟-p一起使用,表示指定目标端口

--sport:跟-p一起使用,表示指定源端口

-s:表示指定源IP(可以是一个IP段)

-d:表示指定目的IP(同上)

-j:后面跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包

-i:表示指定网卡

  • 举例说明:
  [root@hongwei ~]# iptables -I INPUT -s 1.1.1.1 -j DROP

上面的例子表示插入一条规则,把来自1.1.1.1的所有的包数据丢掉。下面的例子表示删除刚刚插入的规则:

[root@hongwei ~]# iptables -D INPUT-s 1.1.1.1 -j DROP

 

注意:删除一条规则时,必须和插入的规则一致。也就是说,两条iptables命令,除了-I和-D不一样,其他都一样
  • 下例表示把发送到10.1.1.14的22端口的数据包丢掉

 

[root@hongwei ~]# iptables -I INPUT -p tcp --dport 22 -d 10.1.1.14 -j DROP

 

  • 下例把来自192.168.1.0/24这个网段且作用在eth0上的包方行:

 

[root@hongwei ~]# iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
[root@hongwei ~]# iptables -nvL |grep '192.168.1.0/24'
    0     0 ACCEPT     all  --  eth0   *       192.168.1.0/24       0.0.0.0/0        

 

  • 有的时候服务器上的iptables过多了,想删除某一条规则,但又不容易掌握创建时的规则,那要删除的时候可以查看iptables的规则,把编号打印出来

 

[root@hongwei ~]# iptables -nvL --line-number
Chain INPUT (policy ACCEPT 135 packets, 10076 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       all  --  *      *       1.1.1.1              0.0.0.0/0           
2        0     0 ACCEPT     all  --  eth0   *       192.168.1.0/24       0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 89 packets, 8124 bytes)
num   pkts bytes target     prot opt in     out     source               destination 

 

然后删除的时候,加上-D

 

[root@hongwei ~]# iptables -D INPUT 1

 

然后再次查看

 

[root@hongwei ~]# iptables -nvL --line-number
Chain INPUT (policy ACCEPT 5 packets, 388 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  eth0   *       192.168.1.0/24       0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 480 bytes)
num   pkts bytes target     prot opt in     out     source               destination 

 

  •  iptables哈有一个选项经常用到,就是-P(大写)选项,他表示预设

 

[root@hongwei ~]# iptables -P INPUT DROP

-P后面跟链名,策略内容或为DROP 或为ACCEPT 默认是ACCEPT 注意:如果在连接远程服务器,千万不要随便执行这个命令,因为一旦回车,远程连接就会断开。这个策略一旦设定后,只有使用命令iptables -P INPUT ACCEPT 才能恢复成原始状态。下面介绍如何设定iptables规则

需求:只针对filter表,预设策略INPUT链DROP ,其他二个链ACCEPT ,然后针对192.168.188.0/24通22端口,对所有网段开放80端口,对所有网段开放21端口。

cat /usr/local/sbin/iptables.sh

ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -s 192.168.188.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp -dport 80 -j ACCEPT
$ipt -A INPUT -p tcp -dport 22 -j ACCEPT

完成脚本的编写后,直接运行/bin/sh/usr/local/sbin/iptables.sh即可。如过想要开机启动时初始化防火墙规则,则需要在/etc/rc.d/rc.local中添加一行/bin/sh /usr/local/sbin/iptables.sh

10.16/10.17/10.18 iptables nat表应用

让iptables实现路由器的功能。假设机器上有二块网卡eth0和eth1,其中eth0的IP为10.0.2.68,eth1的IP为192.168.1.1。eth0页连接了因特网,但eth1没有连接。显示有另一台机器192.168.1.2和eth1是互通的,那么如何设置才能让连接eth1的这台机器连接因特网,和10.0.2.68互通?方法如下:

# echo "1" > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

这里,第一个命令设计内核参数相关的配置文件,它的目的是打开路由转发功能,否则无法实现我们的应用,第二个命令则是iptables对nat表做了一个IP转发的操作。-o选项后面跟设备名,表示出口的网卡,MASQUERADE表示伪装。

我们设定好规则后,需要保存一下

service iptables save

他会提示防火墙规则保存在/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件,所以以后如果遇到备份防火墙规则的任务,只要复制一份这个文件的副本即可。

停止防火墙服务

service iptables stop

 

 

转载于:https://my.oschina.net/u/3851487/blog/1828760

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值