20201024 防火墙iptables以及firewalld

防火墙iptables  firewalld  防火墙选择一个去生效就可以了,目前情况尽量使用firewalld 毕竟这个是未来

1 防火墙是公网和内网之间的屏障,依据策略对进出内网的流量进行监控

 

iptables服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理,而 firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理。

 

2 iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则
链,当数据来了之后从上向下匹配,一旦匹配中进行处理就不在向下匹配了,而规则链则依据数据包处理位置的不同进行分类,具体如下:
¾ 在进行路由选择前处理数据包( PREROUTING);
¾ 处理流入的数据包( INPUT);  
¾ 处理流出的数据包( OUTPUT);
¾ 处理转发的数据包( FORWARD);
¾ 在进行路由选择后处理数据包( POSTROUTING

3 规则匹配到数据之后处理情况分为

ACCEPT(允许流量通过)、

REJECT(拒绝流量通过)、  拒绝访问之后告诉请求不允许访问,相当于qq可以看到对方是不在线而导致没有回复

LOG(记录日志信息)、
DROP(不响应流量)     不让进门也不理请求没有任何反馈,相当于微信,发过去不知道对方是不在线还是没结果等情况

 

4 常用操作参数

[!] --destination -d address[/mask][...]  (不)匹配目标地址

[!] --source   -s address[/mask][...]   (不)匹配源端地址

[!] --in-interface -i input name[+]     (不)匹配指定网卡名称输入流量

[!] --out-interface -o output name[+]      (不)匹配指定网卡名称输出流量

--rename-chain  -E old-chain new-chain   重命名规则链

--flush   -F [chain]            Delete all rules in  chain or all chains 删除指定链的所有规则或者所有链

--list    -L [chain [rulenum]]  List the rules in a chain or all chains  查看指定链的所有规则或者所有链

--insert  -I chain [rulenum]  Insert in chain as rulenum (default 1=first)  在链中插入规则(默认在第一个位置)

--delete  -D chain rulenum  Delete rule rulenum (1 = first) from chain 从链中删除规则

--append  -A chain          Append to chain  追加一个链

  --check   -C chain        Check for the existence of a rule  检查规则是否存在

[!] --proto     -p proto protocol: by number or name, eg. `tcp' 按协议,比如tcp

--dport num  匹配目标端口号

--sport num  匹配来源端口号

 

》》》我们实际操作一下

[root@localhost ~]# iptables -L

 [root@localhost ~]# iptables -F 清空所有规则

[root@localhost ~]# iptables -P INPUT DROP  将进入规则默认由接受设置为拒绝,然后我的xshell直接就掉线了 (这里要提一下就是当我第一次想要设置为reject的时候,系统是不认识这个关键字的,所以如果想要拒绝只能选择DROP) 

root@localhost ~]# iptables -I INPUT -p icmp -j ACCEPT  添加一个ping的规则,可以ping通,这些流量位置的标记字母必须大写

[root@localhost ~]# iptables -I INPUT -s 192.168.88.0/19 -p tcp --dport 22  -j ACCEPT

添加允许从指定网段0-19来的访问端口22的请求

 

如果需要删除 iptbales -D INPUT 1 即可  删除如果使用序号,请注意,当有使用I插入新加入的规则进来,之前为1的规则就会变成2,新入的始终是1,A 追加才是会新的在后面,但是因为防火墙是从上向下执行,所以,一般我们都使用插入,因为上面的规则才会被实现,否则上面已经拒绝,后面的允许也是没有用的,

为了顺利做实验,我们添加从192.168.88.1 来的所有流量放行

[root@localhost ~]# iptables -I INPUT -s 192.168.88.1 -j ACCEPT 

[root@localhost ~]# iptables -I INPUT -s 192.168.88.1 -p tcp --dport 22 -j ACCEPT  需要注意的是,如果添加了端口则必须添加协议类型,否则会提示错误,而且协议类型一次只能指定一个,tcp和udp则需要指定两次

添加了前两个可以telnet通了,但是xshell还是连接不上,重启xshell后正常

 

# 添加一个拒绝所有人访问1000-3000端口的规则 操作端口的时候注意,这里没有短格式,所以必须使用双横线

[root@localhost ~]# iptables -A INPUT -p tcp --dport 1000:3000 -j REJECT

 

# 实际上iptables 命令的设置都是在本次有效,下次重启就消失了,当我们想要使用[root@localhost ~]# service iptables save保存的时候,提示service已经不能保存了,结果通过man查询之后发现是 [root@localhost ~]# iptables-save  

 

》》》》》 firewalld (dynamic firewall manager of linux) 是系统默认配置,拥有cli和gui两种管理界面

==========================================================================

firewall-cmd 是firewall的命令行管理工具   firewall-config  是gui管理工具

runtime 模式当前生效,重启后还原,permanent 当前不生效,重启(reload)后生效  不加permanent默认就是runtime模式

firewall 增加了区域的概念,其实大致上和windows的家庭网络,工作网络概念是一样的,分为 9种

1 trusted  被信任的 允许所有流量

2 home

3 internal

4 work

5 public   一般这个是默认

6 external

7 dmz   直译是非军事区,但是

8 block

9 drop 

等级从上到下,越来越严格

[root@localhost ~]# firewall-cmd --list-all   查看

[root@localhost ~]# firewall-cmd –reload   重新加载,如果设置permanent可以使用命令立即生效

[root@localhost ~]# firewall-cmd --get-default-zone  get/set  获取/设置默认区域

[root@localhost ~]# firewall-cmd --set-default-zone=internal

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens160    获取指定网卡的区域
internal

[root@localhost ~]# firewall-cmd --zone=public --change-interface=ens160  修改指定网卡所在区域  如果不加--permanent 那么重启或者reload之后就会恢复修改前的情况

紧急模式,firewall-cmd --panic-on     firewall-cmd --panic-off  这将会阻断所有的连接

service三种模式     query   remove   add  list

[root@localhost ~]# firewall-cmd --zone=drop --query-service=ssh    查看指定区域服务是否可用

[root@localhost ~]# firewall-cmd --zone=public --query-port=8888/tcp   查看端口是否可用
yes

[root@localhost ~]# firewall-cmd --zone=public --list-service
cockpit dhcpv6-client ssh
[root@localhost ~]# firewall-cmd --zone=public --list-port    # 可以看到port和ports都可以用,效果一样
8888/tcp
[root@localhost ~]# firewall-cmd --zone=public --list-ports
8888/tcp

[root@localhost ~]# firewall-cmd --zone=public --remove-port=8888/tcp  移除指定端口或者服务

[root@localhost ~]# firewall-cmd --get-active-zones  查看当前正在使用的区域和网卡

下面有个很牛逼的功能,端口转发,可以让我们将其他端口的流量转移到高危端口,这样来帮助我们访问一般端口完成高危端口的工作,下面我们将8888端口转移到22上,就是不知道为啥reload之后还是不能访问

[root@localhost ~]# firewall-cmd --zone=public --permanent --add-forward-    port=port=8888:proto=tcp:toport=22:toaddr=192.168.88.11    # 设置转发  可以看到他还可以转发到互通的其他机器上,功能强大
[root@localhost ~]# firewall-cmd --zone=public --list-forward-ports   # 查看转发
port=8888:proto=tcp:toport=22:toaddr=192.168.88.11

ssh root@192.168.88.11:8888  # 登录 而不是使用-p 使用-p经过测试发现,他总是会将-p的部分当成用户名 会变成-p 8888 root 

另外8888也需要在防火墙上放行。

使用富文本来表示更细致更详细的防火墙策略,优先级也是最高的,设置拒绝一个指定的地址区间来登录主机

firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.23.11/14" service name="ssh" reject"

界面firewall-config  需要安装之后才可以使用

 

-- 配置网络

IPADDR=192.168.88.11
NETMASK=255.255.255.0
GATEWAY=192.168.88.1
PREFIX=24                 他是255.255.255.0  的二进制表示法,等价于netmask
ZONE=public

-- 管理网络

第一种: 命令 

[root@localhost network-scripts]# nmcli con up ens160 

[root@localhost network-scripts]# nmcli con down ens160 

[root@localhost network-scripts]# nmcli con reload ens160   # 对于重新加载修改后的配置不是很好用,不如关闭后启动

第二:gui

图形管理工具是 [root@localhost ~]# nmtui

界面2

[root@localhost ~]# nm-connection-editor  

第三种: 考试的话,直接选择界面系统设置就行了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值