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