linux之firewalld服务管理

一、防火墙

1.概述

动态防火墙后台程序 FireWalld 提供了一个动态管理的防火墙,用以支持网络的zones,以分配对一个网络及相关连接和界面一定程度的信任;它支持以太网桥,并有分离运行时间和永久行配置选择。

2.FileWalld域

trusted(信任):接受所有网络连接

home(家庭):用于家庭网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务连接

internal(内部):用于内部网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务连接

public(公共):用于公共区域使用,仅接受dhcpv6-client、ssh服务连接

work(工作):用于工作区,仅接受dhcpv6-client、ipp-client、ssh服务连接

external(外部):出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接

dmz(非军事区):仅接受ssh服务连接

block(限制):拒绝所有网络连接

drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复

二、防火墙命令

systemctl start firewalld
systemctl mask firewalld
systemctl status firewalld

firewall-cmd --state  ##查看火墙状态
firewall-cmd --get-default-zone ##查看火墙的默认域
firewall-cmd --set-default-zone=trusted  ##修改火墙的默认域名
firewall-cmd --get-zones  ##查看火墙的所有域
firewall-cmd --list-all-zones  ##查看火墙所有的域及信息
firewall-cmd --get-active-zone  ##查看火墙正在使用的域

这里写图片描述

firewall-cmd --zone=ROL --list-all ##查看ROL域的信息
firewall-cmd --get-services ##查看火墙允许的服务

这里写图片描述

三、接口控制

1.接口访问控制
eth0=172.25.254.116
eth1=192.168.0.116

firewall-cmd --list-all  ##查看默认域的有eth0 eth1
firewall-cmd --remove-interface=eth1 --zone=public ##从public中移除eth1
firewall-cmd --add-interface=eth1 --zone=trusted ##添加eth1到trusted域
firewall-cmd --get-active-zones  ##查看正在使用的域

这里写图片描述
测试:(ping/连接/访问)
eth0通 eth1不通
这里写图片描述

2.端口的设定

vim /etc/httpd/conf/httpd.conf   ##修改端口:8080
systemctl restart httpd    ##重启httpd服务
firewall-cmd --add-port=8080/tcp   ##可访问172.25.254.116:8080
firewall-cmd --list-all   ##查看端口
/etc/firewalld/zones/public.xml   ##存放public域的信息的配置文件此文件也可添加8080端口

这里写图片描述
这里写图片描述
这里写图片描述
3.禁止116主机连接

firewall-cmd --add-source=172.25.254.116 --zone=block
firewall-cmd --list-all --zone=block

这里写图片描述
测试:116主机无法执行ping操作
这里写图片描述
4.

permanent   ##永久生效
firewall-cmd -reload   ##使设定生效
firewall-cmd --complete-reload   ##使设定立即生效
四、防火墙访问控制

Direct Rules
设定某台主机可以使用某端口(ssh为例)

firewall-cmd --remove-service=ssh --permanent ##移除ssh服务
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT##给16主机添加ssh端口
firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 ! -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT##除了16主机都可以使用ssh
firewall-cmd --direct --remove-rule ipv4 filter INPUT 2  -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT

这里写图片描述
测试:16主机
这里写图片描述

Rich Rules

1.端口转发
16主机连接116主机–>49主机(伪装)

地址转发:
116主机:
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.49
firewall-cmd --add-masquerade  ##开启伪装
firewall-cmd --list-all

这里写图片描述
测试:
16主机
ssh [email protected]
这里写图片描述

恢复设置:
116主机恢复
firewall-cmd –remove-masquerade
firewall-cmd –remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.10

2. 216–116–16 (116)
firewalld方式
server: 192.168.0.216 192.168.0.116
desktop两块网卡:192.168.0.116 172.25.254.116
这里写图片描述
这里写图片描述
这里写图片描述
进入172.25.254.49 (216通过116来进入49)
这里写图片描述
这里写图片描述

五、Iptables命令管理

内核3个表,5条链

 filter:经过本机内核的数据,input,forward,ouput
 nat:不经过本机内核的数据,input,ouput,prerouting,postrouting
 mangle:所有经过主机上的数据,prerouting,input,forward,ouput,postrouting

1.显示内核三张表的信息

  iptables  -nL            ##默认为filter表
  iptables  -nL -t nat     ##显示nat表
  iptables -nL -t  mangle  ##显示mangle表,备用

2.表格命令编辑 ##默认filter表

  iptables -A INPUT -s 172.25.254.111 -j REJECT   ##添加
  iptables -D INPUT 6  ##删除INPUT链的第6条
  iptables -I INPUT -s 172.25.254.111 -j REJECT  ##插入至第1条
  iptables -R INPUT 1 -j ACCEPT   ##将INPUT第1条规则改为ACCEPT
  iptables -I INPUT 2 -s 172.25.254.10 -p tcp --dport 22 -j REJECT ##在第二个之前添加22端口拒绝访问
  iptables -D INPUT 2 -s 172.25.254.10 -p tcp --dport 22 -j ACCEPT
  iptables -F   ##刷新(类似删除)配置,但是重启后配置依然存在
  systemctl  restart  iptables.service
  iptables -F   ##刷新后保存,重启后配置为空
  service iptables save  ##保存设置
  systemctl restart iptables.service

这里写图片描述
这里写图片描述

  iptables -P FORWARD DROP  ##将FORWARD链规则改为DROP
  iptables -N redhat  ##新建redhat自定义链
  iptables -E redhat REDHAt  ##修改自定义链的名称
  iptables -X REDHAt  ##删除自定义链

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

六.Iptables地址转换

注意:

1.一定要刷新filter表 iptables -F
2.打开内核路由
net.ipv4.ip_forward=1
sysctl -p == 【restart systemd-sysctl.service】
这里写图片描述

1.iptables(入)方式做源地址转换:
desktop:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.116
iptables -t nat -nL

这里写图片描述
server:
ssh [email protected]
w
216–116–16 (116)

这里写图片描述
iptable(出)方式做源地址转换
desktop:
[root@localhost ~]# iptables -t filter -F
[root@localhost ~]# iptables -t filter -nL
[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -j DNAT –to-dest 192.168.0.216
[root@localhost ~]# iptables -t nat -nL
这里写图片描述
主机:
ssh [email protected]
[root@server ~]# ifconfig

16–116—216

火墙策略优化

iptables -F ##刷新
iptables -nL ##显示
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT python和linux
iptabels -nL
iptables -A INPUT -m state –state new -i lo -j ACCEPT
iptables -A INPUT -m state –state new -p tcp –dport 22 -j ACCEPT ##ssh
iptables -A INPUT -m state –state new -p tcp –dport 80 -j ACCEPT ##http
iptables -A INPUT -m state –state new -p tcp –dport 53 -j ACCEPT ##dns
iptables -nL
iptables -A INPUT -j REJECT ##其他拒绝
iptables -nL
service iptables save ##保存写入的数据
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_37048504/article/details/81808801
今日推荐