Linux下firewalld和iptables的管理

firewalld图形化管理

firewall-config ##输入这个命令 会显示防火墙的图形化管理界面 可在图形化界面添加各种服务

在这里插入图片描述
使用命令管理firewalld

防火墙的域
默认只有ssh与dhcpv6-client两个服务可以被火墙允许。

在这里插入图片描述
常见参数

source
指定源地址 , 可以是一个 ipv4/ipv6 的地址或网段 , 不支持使用主机名。
destination
指定目的地址 用法和 source 相同。 service 服务名称是 f irewalld 提供的其中一种服务。
port
端口既可以是一个独立端口数字, 又或者端口范围 , 例如 ,5060-5062 。协议可以指定为 tcp 或udp

protocol
协议值可以是一个协议 ID 数字, 或者一个协议名。预知可用协议 , 请查阅 /etc/protocols 。

masquerade
打开规则里的 IP 伪装。用源地址而不是目的地址来把伪装限制在这个区域内。不允许指定动作。

firewall常用命令

firewall-cmd --state 获取firewalld状态
 firewall-cmd --reload重新加载服务,不会断开客户机的连接
firewall-cmd --complete reload 重新加载服务,断开所有客户机的连接
firewall-cmd --get-zones获取支持的区域列表
firewall-cmd --get-services获取支持的服务
firewall-cmd --get-icmptypes 获取所有支持的ICMP类型
firewall-cmd --list-all-zones 列出全部启用的区域特性
firewall-cmd  --list-all   [--zone=] 可以指定列出某个域的服务(默认域是public)
firewall-cmd --list-all	显示默认区域的信息
firewall-cmd -zone=trusted --list-all列出trusted域启动的特性
firewall-cmd --set-default-zone=drop设置默认区域
firewall-cmd --get-active-zones 获取活动的区域

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用命令行接口配置防火墙

firewall-cmd --permanent --zone=internal --add-source=ip	##往internal域添加一个源地址(给这个机子这个域对应的权限)
firewall-cmd --permanent --zone=internal --remove-source=172.25.0.0/24	##删除
firewall-cmd --permanent --zone=internal --add-interface=eth0			##添加网卡设备
firewall-cmd --permanent --zone=internal --change-interface=eth0		##更换网卡设备
firewall-cmd --permanent --zone=internal --remove-interface=eth0		##删除
firewall-cmd --permanent --zone=public --add-service=smtp				##添加服务
firewall-cmd --permanent --zone=public --remove-service=smtp		##删除
firewall-cmd --zone=public --list-ports			##列出打开的端口
firewall-cmd --permanent --zone=public --add- port=8080/tcp		##添加端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp	##删除

注意:如果改域里面的服务不加permanent的话,直接改,直接查就会生效
reload后,就会返回原来的状态

配置文件

/usr/lib/firewalld/service	##所有服务的存储文件,可以自己定义添加(service)
/etc/firewalld/zones		##火墙设置的数据存储文件(permanent)

如何添加一个文件中没有的服务
cp -p /usr/lib/firewalld/service/xxx.xml  /usr/lib/firewalld/service/xxx.xml
vim /usr/lib/firewalld/service/xxx.xml
更改名字、描述、协议、端口

systemctl resatrt firewalld 重启服务
firewall-cmd --get-services=
该服务就有了

永久修改火墙中某些设置时,/etc/firewalld/zones/下对应的域就会生成新的配置文件,同时原来的会自动变成xxx.xml.old

iptables(另一种火墙)

三张表五大链关系

filter表里的内容是与访问内核相关的
input:到不了内核 forward: 内核 output:经过内核
input—>forward—>output
nat表不访问内核
intput prerouting:路由之前 postrouting:路由之后,做源地址转换此处的路由之前与路由之后相对方向不一样 output:
maggle表是备用表格
intput: prerouting: forward: postrouting: output:

systemctl mask firewalld 锁住火墙
systemctl start iptables 开启iptables

常用命令

   iptables
    	-t	##指定表名称 
    	-n	##不作解析
    	-L	##列出指定表中的策略
    	-A	##增加策略
    	-p	##网络协议
    	--dport ##端口
    	-s	##数据来源
    	-j	##动作
    	ACCEPT	##允许
    	REJECT  ##拒绝
    	DROP	##丢弃
    	-N	##增加链
    	-E	##修改链名称
    	-X	##删除链
    	-D	##删除指定策略
    	-I	##插入
    	-R	##修改策略
    	-P	##修改默认策略

iptables中表的管理

iptables  -t filter -nL         #查看filter表中的策略   -t 后面不跟表名的话,默认为filter表

iptable  -F                     #刷掉filter表中的所有策略,当没有用-t指定表名称时默认时filter
service iptables save           #保存当前策略   保存在了/etc/sysconfig/iptables里
iptables -A INPUT -i lo -j ACCEPT       #允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   ##允许访问22端口
iptables -A INPUT -s 172.25.254.250 -j ACCEPT   ##允许250主机访问本机所有端口
iptables -A INPUT -j REJECT                     ##拒绝所有主机的数据来源
iptables -N redhat      ##增加链redhat
iptables -E redhat westos       ##改变链名称
iptables -X westos      ##删除westos链
iptable -D INPUT 2      ##删除INPUT链中的第二条策略
iptables -I INPUT  -p tcp --dport 80  -j REJECT ##插入策略到INPUT中的第一条
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ##修改第一条策略
iptable -P INPUT DROP           ##把INPUT表中的默认策略改为drop

实验
1.只有ssh(22) dns(53) squid(3128)三个服务可以通过

每次服务访问时都需要依次读取策略文件这样会降低效率,现在我们设置如果该服务在第二次进行访问时,直接读取该服务的状态(当第一次访问成功后 状态会发生改变)

iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT ##允许当前正在运行的程序
iptables -A INPUT  -m state --state NEW -i lo -j ACCEPT ## 接受从内部lo口发出的信息
iptables -A INPUT  -m state --state NEW -p tcp --dport 22 -j ACCEPT ## 接受从内部lo口发出的信息
iptables -A INPUT  -m state --state NEW -p tcp --dport 53 -j ACCEPT ##接受所有访问53端口(httpd)
iptables -A INPUT  -m state --state NEW -p tcp --dport 3128 -j ACCEPT ##接受所有访问3128端口(squid)
iptables -A INPUT -j REJECT ##拒绝其他所有访问

2.地址伪装

因为关掉了防火墙的伪装功能192.168.202虚拟机无法ping通双网卡虚拟机ip为172.25.254.102(已经设定网关172.25.254.102),现在我们设定iptables火墙,使两者之间可以通信

iptables -t nat -A POSTROUTING  -o eth0 -j SNAT --to-source 172.25.254.102 ##202进入双网卡虚拟机之后 经过内核的路由功能 路由之后输出都走eth0网卡(172.25.254.102)

3.端口转发

我们设定iptables火墙,使ip为202的虚拟机访问102虚拟机时。访问的是2号主机

iptables -t nat -A PREROUTING -p tcp --dport 22 -i eth0 -j DNAT --to-dest 172.25.254.2:22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值