iptables
iptables 是一款基于命令行的防火墙策略管理工具
四种防火墙策略:
-P
|
设置默认策略
|
-F
|
清空规则链
|
-L
|
查看规则链
|
-A
|
在规则链的末尾加入新规则
|
-I num
|
在规则链的头部加入新规则
|
-D num
|
删除某一条规则
|
-s
|
匹配来源地址
IP/MASK
,加叹号“
!
”表示除这个
IP
外
|
-d
|
匹配目标地址
|
-i
网卡名称
|
匹配从这块网卡流入的数据
|
-o
网卡名称
|
匹配从这块网卡流出的数据
|
-p
|
匹配协议,如
TCP
、
UDP
、
ICMP
|
--dport num
|
匹配目标端口号
|
--sport num
|
匹配来源端口号
|
实验:
把INPUT规则链的默认策略设置为拒绝
[root@linuxprobe~]# iptables -P INPUT DROP
向INPUT链中添加允许ICMP流量进入的策略
[root@linuxprobe~]# iptables -I INPUT -p icmp -j ACCEPT
将INPUT链设置为只允许指定网段的主机访问本机的22端口
[root@linuxprobe~]# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
[root@linuxprobe~]# iptables -A INPUT -p tcp --dport 22 -j REJECT
向INPUT规则链中添加拒绝所有人访问本机12345端口的策略规则
[root@linuxprobe~]# iptables -I INPUT -p tcp --dport 12345 -j REJECT
[root@linuxprobe~]# iptables-save
firewalld
trusted
|
允许所有的数据包
|
home
|
拒绝流入的流量,除非与流出的流量相关;而如果流量与
ssh
、
mdns
、
ipp-client
、 smba-client、
dhcpv6-client
服务相关,则允许流量
|
internal
|
等同于
home
区域
|
work
|
拒绝流入的流量,除非与流出的流量相关;而如果流量与
ssh
、
ipp-client
与
dhcpv6-client 服务相关,则允许流量
|
public
|
拒绝流入的流量,除非与流出的流量相关;而如果流量与
ssh
、
dhcpv6-client
服务相关, 则允许流量
|
external
|
拒绝流入的流量,除非与流出的流量相关;而如果流量与
ssh
服务相关,则允许流量
|
dmz
|
拒绝流入的流量,除非与流出的流量相关;而如果流量与
ssh
服务相关,则允许流量
|
block
|
拒绝流入的流量,除非与流出的流量相关
|
drop
|
拒绝流入的流量,除非与流出的流量相关
|
基于CLI(命令行界面)
--get-default-zone
|
查询默认的区域名称
|
--set-default-zone=< 区域名称>
|
设置默认的区域,使其永久生效
|
--get-zones
|
显示可用的区域
|
--get-services
|
显示预先定义的服务
|
--get-active-zones
|
显示当前正在使用的区域与网卡名称
|
--add-source=
|
将源自此
IP
或子网的流量导向指定的区域
|
--remove-source=
|
不再将源自此
IP
或子网的流量导向某个指定区域
|
--add-interface=<
网卡名称>
|
将源自该网卡的所有流量都导向某个指定区域
|
--change-interface=<网卡名称>
|
将某个网卡与区域进行关联
|
--list-all
|
显示当前区域的网卡配置参数、资源、端口以及服务等信息
|
--list-all-zones
|
显示当前区域的网卡配置参数、资源、端口以及服务等信息
|
--add-service=<
服务名
>
|
设置默认区域允许该服务的流量
|
--add-port=<
端口号
/
协议
>
|
设置默认区域允许该端口的流量
|
--remove-service=<
服务名>
|
设置默认区域不再允许该服务的流量
|
--remove-port=<
端口号
/
协议>
|
设置默认区域不再允许该端口的流量
|
--reload
|
让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
|
--panic-on
|
开启应急状况模式
|
--panic-off
|
关闭应急状况模式
|
实验
查看firewalld服务当前所使用的区域。
[root@linuxprobe~]# firewall-cmd --get-default-zone
public
查询指定网卡在firewalld服务中绑定的区域。
[root@linuxprobe~]# firewall-cmd --get-zone-of-interface=ens160
public
把网卡默认区域修改为external,并在系统重启后生效。
[root@linuxprobe~]# firewall-cmd --permanent --zone=external --change-interface=ens160
The interface is under control of NetworkManager, setting zone to 'external'.
success
[root@linuxprobe~]# firewall-cmd --permanent --get-zone-of-interface=ens160
external
把firewalld服务的默认区域设置为public。
[root@linuxprobe~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public
success
[root@linuxprobe~]# firewall-cmd --get-default-zone
public
[root@linuxprobe~]# firewall-cmd --get-zone-of-interface=ens160
externa
启动和关闭firewalld防火墙服务的应急状况模式。
[root@linuxprobe~]# firewall-cmd --panic-on
success
[root@linuxprobe~]# firewall-cmd --panic-off
success
查询SSH和HTTPS协议的流量是否允许放行。
[root@linuxprobe~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe~]# firewall-cmd --zone=public --query-service=https
no
把HTTPS协议的流量设置为永久允许放行,并立即生效。
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@linuxprobe~]# firewall-cmd --zone=public --query-service=https
no
把HTTP协议的流量设置为永久拒绝,并立即生效。
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --remove-service=http
Warning: NOT_ENABLED: http
success
[root@linuxprobe~]# firewall-cmd --reload
success
把访问8080和8081端口的流量策略设置为允许,但仅限当前生效。
[root@linuxprobe~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxprobe~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效。
firewall-cmd --permanent =-zone=<区域>,--add-forward-port=port=<源端口号>:proto=
<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
success
[root@linuxprobe~]# firewall-cmd --reload
success
富规则的设置
[root@linuxprobe~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
[root@linuxprobe~]# firewall-cmd --reload
success
[root@client A~]# ssh 192.168.10.10
Connecting to 192.168.10.10:22...
Could not connect to '192.168.10.10' (port 22): Connection failed.
基于 GUI(图形用户界面)
firewall-config是 firewalld 防火墙配置管理工具的 GUI(图形用户界面)版本,几 乎可以实现所有以命令行来执行的操作
#yum install firewall-config #下载工具
#firewall-config #使用
linux系统中firewalld防火墙管理工具firewall-config:
http://t.csdnimg.cn/26a6yhttp://t.csdnimg.cn/26a6y