2018-07-31 linux防火墙 2

1、 保存防火墙规则

使用iptables命令定义的规则,手动删除之前,其生效期限为kernel存活期限,也就是关机重启后规则就会消失,保存方法如下

centos 7中的操作
iptables -A INPUT -s 172.18.21.106 -p tcp -m multiport --dports 80,22,21 -j REJECT   ---设置一条防火墙规则
iptables -vnL
iptables-save > /app/iptablerules   ---将规则保存到文件中
iptables -F   ---清空防火墙规则
iptables -vnL 
iptables-restore < iptablerules  ---重新载入预存规则文件中规则,-n, --noflush:不清除原有规则 -t, --test:仅分析生成规则集,但不提交
iptables -vnL
centos6中的操作
iptables -A INPUT -s 172.18.21.107 -p tcp -m multiport --dports 80,22,21 -j REJECT  ---设置规则
iptables -vnL
service iptables save
cat /etc/sysconfig/iptables   ---执行上面命令的时候实际上是将规则保存到此文件中
iptables -F 
iptables -vnL
service iptables restart   ---重启服务就可以了
iptables -vnL

开机自动重载规则文件中的规则:
(1) 用脚本保存各iptables命令,脚本中有很多iptables命令定义的规则;让此脚本开机后自动运行
/etc/rc.d/rc.local文件中添加脚本路径
/PATH/TO/SOME_SCRIPT_FILE
(2) 用规则文件保存各规则,开机时自动载入此规则文件中的规则
/etc/rc.d/rc.local文件添加
iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE
(3)自定义Unit File,进行iptables-restore
(4)cenots7中/etc/rc.d/rc.local别忘记加执行权限

2、网络防火墙

iptables/netfilter网络防火墙:保护某一个网段的局域网的所有主机,而不是只保护本机的一台主机。
(1) 充当网关
(2) 使用filter表的FORWARD链
注意的问题:
(1) 请求-响应报文均会经由FORWARD链,要注意规则的方向性
(2) 如果要启用conntrack机制,建议将双方向的状态为ESTABLISHED的报文直接放行
示例:如何实现下图的要求


image.png
在a上的操作
ip route add default via 192.168.74.21  在a上只有一个网卡,并将网关指向b的内网ip
在c上的操作
ip route add default via 172.18.21.107 在c上同一只有一个网卡,并将网关指向b的外网ip
在b上操作
echo 1 > /proc/sys/net/ipv4/ip_forward   ---启动路由功能
此时在a上测试
ping 172.18.21.7  ---发现可以ping通
在c上也可以ping通a
ping 192.168.74.100
在b上设置防火墙规则
iptables -A FORWARD -s 192.168.74.0/24 -d 172.18.0.0/16 -p icmp --icmp-type 8 -j ACCEPT ---来自内网的icmp请求包是允许的
iptables -A FORWARD -s 172.18.0.0/16 -d 192.168.74.0/24 -p icmp --icmp-type 0 -j ACCEPT  ---来自外网的icmp回应包是允许的 
iptables -A FORWARD -j REJECT  ---其他都是拒绝的
在a上和c上互相ping对方进行测试
在b上也可以用状态的方式定义防火墙规则
iptables -A  FORWARD  -s 192.168.74.0/24 -d 172.18.0.0/16 -p icmp -m state --state NEW -j ACCEPT ---表示从内网到外网新的icmp请求是允许的
iptables -A FORWARD  -m state --state ESTABLISHED -j ACCEPT ---已经建立的双方向的连接也是被允许的,这样建立icmp连接请求后,从外网回来的包也是被允许的 
iptables -A FORWARD -j REJECT

在b上如何设置能够实现内网可以访问外部网络的httpd、ssh、ftp服务,而外部网络不可以访问内部网络

iptables -A FORWARD -s 192.168.74.0/24 -p tcp -m multiport --dports 80,22,21 -j ACCEPT  
modprobe nf_conntrack_ftp   ---加载这个模块
iptables -  A FORWARD  -m state --state ESTABLISHED,RELATED -j ACCEPT  --表示已经建立连接的和相关的请求都是被允许的,ftp的数据端口和命令端口是相关联的
iptables -A FORWARD -j REJECT

总结:icmp的请求包为NEW的连接,回应包属于已经建立的连接,并不是一来一回才算NEW连接,只要请求包能发出去说明已经建立新的连接了,回来的包就属于ESTABLISHED状态。
一个路由表里只能指向一个网关的ip地址,路由器可以充当网关,提供转发功能

3、NAT

  • NAT: network address translation
    NAT表中包含的链:PREROUTING,INPUT,OUTPUT,POSTROUTING
    请求报文:修改源/目标IP,由定义如何修改
    响应报文:修改源/目标IP,根据跟踪机制自动实现
    本地网络中的主机一般使用的是私有地址,外部网络使用的是公有地址,私有地址和公有地址是不可以互相通讯的,为了实现通讯,可以将本地网络的主机ip转化为公有地址的外网ip
    SNAT:source NAT POSTROUTING, INPUT
    让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装
    请求报文:修改源IP
    DNAT:destination NAT PREROUTING, OUTPUT
    把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP
    请求报文:修改目标IP
    PNAT: port nat,端口和IP都进行修改
    SNAT是修改POSTROUTING链
    DNAT修改的是PREROUTING链


    image.png
  • 实现SNAT
在a上操作
ip  route add default via 192.168.74.21
在c上的操作
ip route del default via 172.18.21.107   
在b上的操做
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING  -s 192.168.74.0/24 -j SNAT --to-source 172.18.21.107   ---把本地主机的这个网段的私有地址转化为172.18.21.107这个公网地址,这样就可以访问c了
测试
在a上的操作
ping 172.18.21.7
在c上抓包
tcpdump -i ens38 -nn icmp  --可以看到地址是来自172.18.21.107的而不是来自己a,说明根据ip地址判断用户是不准确的,可能通过nat地址转换过了
  • MASQUERADE:动态IP,如拨号网络
    如果NAT和外网连接是拨号网络,那么和外网连接的网卡的公网ip地址是不固定的,可以修改上面的命令实现伪装,转化为任意的公网ip地址
iptables -t nat -R POSTROUTING 1 -s 192.168.74.0/24 -j MASQUERADE  ---将私网地址转化为任意的公网地址
  • 实现DNAT
修改a上的httpd端口为8080
开启httpd服务
在b上的操作,设置DNAT
iptables -t nat -A PREROUTING -d 172.18.21.107 -p tcp --dport 80 -j DNAT --to-destination 192.168.74.100:8080  ---访问目标地址为172.18.21.107的tcp的80端口就将目标地址和端口转换为192.168.74.100的8080端口
在c上测试
curl 172.18.21.107
  • 实现转发REDIRECT
    REDIRECT:
    NAT表
    可用于:PREROUTING OUTPUT 自定义链
    通过改变目标IP和端口,将接受的包转发至不同地址
    --to-ports port[-port]
    示例:
需要在本机设置iptables -t nat -A PREROUTING -d 192.168.74.100 -p tcp --dport 9527 -j REDIRECT --to-ports 80   ---表示访问本机的tcp的9527端口就把它转发到本机的tcp的80端口

总结:SNAT是源网络地址转换,DNAT是目标网络地址转化,NAT服务器上有两个IP地址,一个是连接内网的,一个是连接外网的,并不一定非得有两个网卡,可以一个网卡绑定多个ip地址,SNAT是内网访问外网时,NAT将内网的ip转化为和外网同网段的ip,这样内网就可以访问外网了,测试时是用curl 172.18.21.7,直接去和外网的某个主机连接,因为是源地址转化,所以在外网的主机上看到的ip地址是经过nat转化后的ip地址;DNAT是外网访问内网的某个服务时,nat将目标地址转化为内网主机上的ip地址和端口号,访问时外网的主机访问的是nat的外网的ip,然后经过nat转换,而不是直接去访问内网的主机,这个和SNAT不同,SNAT是内网直接去访问外网的主机,中间经过nat的转换。DNAT只能转换成为一个内网的主机的ip和端口号,而不能转换为多个,lvs可以根据内部的调度算法实现转换为多个服务器的ip地址和端口。

4、firewalld服务

  • firewalld是CentOS 7.0新推出的管理netfilter的工具
    firewalld是配置和监控防火墙规则的系统守护进程。可以实现iptables,ip6tables,ebtables的功能
    firewalld服务由firewalld包提供
    firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则
    归入zone顺序:
    先根据数据包中源地址,将其纳为某个zone
    纳为网络接口所属zone
    纳入默认zone,默认为public zone,管理员可以改为其它zone
    网卡默认属于public zone,lo网络接口属于trusted zone
  • firewalld zone分类


    image.png
  • firewalld配置
    firewall-cmd --get-services 查看预定义服务列表
    /usr/lib/firewalld/services/*.xml预定义服务的配置
    三种配置方法
    firewall-config (firewall-config包)图形工具


    image.png

    firewall-cmd (firewalld包)命令行工具
    /etc/firewalld 配置文件,一般不建议

  • firewall-cmd 命令选项
--get-zones列出所有可用区域
--get-default-zone查询默认区域
--set-default-zone=<ZONE>设置默认区域
--get-active-zones列出当前正使用的区域
--add-source=<CIDR>[--zone=<ZONE>]添加源地址的流量到指定区域,如果无--zone= 选项,使用默认区域
--remove-source=<CIDR> [--zone=<ZONE>]从指定区域中删除源地址的流量,如果无--zone= 选项,使用默认区域
--add-interface=<INTERFACE>[--zone=<ZONE>]添加来自于指定接口的流量到特定区域,如果无--zone= 选项,使用默认区域
--change-interface=<INTERFACE>[--zone=<ZONE>]改变指定接口至新的区域,如果无--zone= 选项,使用默认区域
--list-all [--zone=<ZONE>]列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如果无--zone= 选项,使用默认区域
--add-service=<SERVICE> [--zone=<ZONE>]允许服务的流量通过,如果无--zone= 选项,使用默认区域
--add-port=<PORT/PROTOCOL>[--zone=<ZONE>] 允许指定端口和协议的流量,如果无--zone= 选项,使用默认区域
--remove-service=<SERVICE> [--zone=<ZONE>]从区域中删除指定服务,禁止该服务流量,如果无--zone= 选项,使用默认区域
--remove-port=<PORT/PROTOCOL>[--zone=<ZONE>]从区域中删除指定端口和协议,禁止该端口的流量,如果无--zone= 选项,使用默认区域
--reload删除当前运行时配置,加载存盘的配置

firewall-cmd 命令示例

查看默认zone
firewall-cmd --get-default-zone
将默认zone设为dmz
firewall-cmd --set-default-zone=dmz
在internalzone中增加源地址192.168.0.0/24的永久规则
firewall-cmd--permanent --zone=internal --add-source=192.168.0.0/24
在internalzone中增加协议mysql的永久规则
firewall-cmd--permanent --zone=internal --add-service=mysql
加载新规则以生效
firewall-cmd --reload

实验:配置firewalld

systemctl mask iptables   ---屏蔽iptables,start也启动不起来了,避免管理员误操作
systemctl mask ip6tables  
systemctl status firewalld
systemctl enable firewalld
systemctl start firewalld  --启动firewalld服务
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone public
firewall-cmd --permanent --zone=public --list-all
firewall-cmd --permanent --zone=public --add-port 8080/tcp   ---添加tcp的8080端口到public的zone,把httpd的端口修改为8080,这样别人就可以访问我主机上的httpd服务了
firewall-cmd --reload    ---注意加上 --permanent 选项可以存盘。但不能生效,要输入此条命令才能生效
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 防火墙的概念iptables的简介iptables命令网络防火墙NATfirewalld服务 一、防火墙的概念 (...
    哈喽别样阅读 1,813评论 0 1
  • 1、 保存防火墙规则 使用iptables命令定义的规则,手动删除之前,其生效期限为kernel存活期限,也就是关...
    张大志的博客阅读 444评论 0 0
  • 1.安全技术 (1)入侵检测与管理系统(Intrusion Detection Systems): 特点是不阻断任...
    尛尛大尹阅读 2,459评论 0 2
  • 一.iptables 命令 (1)iptables相关规则 任何不允许的访问,应该在请求到达时给予拒绝 规则在链接...
    楠人帮阅读 478评论 0 0
  • 经过郑重的考虑,我决定申请DISC双证班 F49期助推,并期待在成长过程中,借助环境的力量和自我感悟,加速自己的成...
    星星啊点个灯呗阅读 144评论 2 0