防火墙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
第三种: 考试的话,直接选择界面系统设置就行了