日常运维(二)

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

扩展(selinux了解即可)
selinux教程 http://os.51cto.com/art/201209/355490.htm
selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK
iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html

http://jamyy.us.to/blog/2006/03/206.html

 

12  firewalld与netfilter

firewalld

Firewalld提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具, 具备对 IPv4 和 IPv6 防火墙设置的支持

netfilter/iptables :

IP数据包过滤系统由 netfilter 和 iptables 两个组件构成。

netfilter是集成在内核中的一部分,其作用是定义、保存相应的规则,

iptables是一种工具,用来修改信息的过滤规则及其他配置,而这些规则会保存在内核空间之中。

netfilter是Linux核心中的一个通用架构,其提供了一系列的表(tables)每个表由若干个链(chains)组成,而每条链可以由一条或若干条规则(rules)组成。

关闭selinux

Setenforce 0

配置文件vi /etc/selinux/config

这里将enforcing配置成disabled配置成禁止开机启用

安装iptables命令yum -y install iptables-services

[root@localhost ~]# systemctl stop firewalld //关闭firewalld服务

[root@localhost ~]# systemctl disable firewalld //禁止firewalld为开机启动

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@localhost ~]# yum -y install iptables-services //安装iptables这样就可以使用之前的版本了

[root@localhost ~]# systemctl enable iptables //设置开机启动

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

 

netfilter

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

nat:表主要用于网络地址转换,同样也有3个链,PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址,OUTPUT链的作用是改变本地产生的包的目的地址,POSTROUTING链的作用是在包即将离开防火墙时改变其源地址。该表阿铭仅偶尔会用到。

mangle:表主要用于给数据包做标记,然后根据标记去操作相应的包。这个表几乎不怎么用

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

security:表在Centos6里是没有的,它用于强制访问控制(MAC)的网络规则。

 

netfilter的5个链

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

PREROUTING:数据包进入路由表之前

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

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

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

POSTROUTING:发送到网卡接口之前

 

 

14, iptables语法

传输过程

  1. 网口收到的包进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去
  2. 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。 
    如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

Linux防火墙-netfilter

 

 

 

 iptables -nvL 查看规则

iptables控制类型

常用的控制类型

  ACCEPT:允许数据包通过

  DROP:直接丢弃数据包,不给出回应

  REJECT:拒绝包通过,必要时会给数据包发送端一个响应信息

  LOG:在/var/log/messages文件中记录日志信息,然后将包传给下一条规则,防火墙规则的"匹配即停止"对于log操作来说是一个特例,因为log只是一种辅助动作,并没有真正处理包。

常用的选项

  -A  在链末尾添加一条新规则

  -I   插入一条新规则,未指定序号时默认为第一条规则

  -D  删除链中的某条规则,可指定规则序号或具体内容  

  -L  列出链中的规则

  -F  清空链中规则

  -n  使用数字形式显示结果,如显示IP地址,而不是主机名

  -P  为指定链设置默认规则

  -v  显示详细信息

  --line-numbers  查看规则表时,同时显示规则在链中的序列号

    -p :指定协议,可以是tcp,udp或者icmp;

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

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

     -s :指定源IP(可以是一个ip段);

    -d :指定目的IP(可以是一个ip段);

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

-i :指定网卡(不常用,但有时候能用到)

 

例如增加规则  

  #iptables -t filter -A INPUT -p tcp -j ACCEPT(在filter表的INPUT链中最后一个规则后面添加一个新的规则)

  #iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT (在filter表INPUT链第二行插入规则,允许tcp的80端口通过)

-A 表示增加一条规则, -I 表示插入一条规则,-D删除一条规则;后面的INPUT名称,还可以是OUTPUT或者FORWORD;-s 后跟源地址;-p 协议(tcp, udp, icmp); --sport/--dport 后跟源端口/目标端口;-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)

删除规则用

     #iptables -D INPUT 3(删除filter表中INPUT链的第三条规则)

     #iptables -t raw -F(清空raw表中所有链内的规则)

     #iptables -F OUTPUT(清空filter表output链内所有规则)

15,Iptables小案例

 

16 iptables nat表应用

配置了之后,多出了一个ens37

B设备配置成192.168.101.33

这时候看AB两个设备是互通的

说明,网络上网使用的是172的网段,B地址为192.168.100.33

接下来

A机器上设置路由转发

cat /proc/sys/net/ipv4/ip_forward

 A上执行iptables

iptables -t nat -A POSTROUTING -s 192.168.101.2/24 -o ens34 -j MASQUERADE

再从B上面ping www.baidu.com 发现已经可以ping通了,说明策略有效

案例需求2:端口转发

目的让PC能远程登录test01

添加规则1,将访问172.19.0.18:22222端口的数据包转发给192.168.101.33:22端口

iptables -t nat -A PREROUTING -d 172.19.0.18 -p tcp --dport 22222 -j DNAT --to 192.168.101.33:22

 

这样子给172.19.0.18:2222的包送到了 192.168.101.33:22上

下面这条可以不用

如需使用可以将B的包发出来的地址做一下nat映射

添加规则2,将来源于192.168.100.100的数据包的源地址转换为10.1.1.25
[root@long0000 ~]# iptables ­t nat ­A POSTROUTING ­s 192.168.100.1 ­j SNAT ­­to 10.1.1.25

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_41654660/article/details/82145948