欢迎来我的博客
iptables
- 在进行路由选择前处理数据包(PREOUTING)
- 处理流入的数据包(INPUT)
- 处理流出的数据包(OUTPUT)
- 处理转发的数据包(FORWARD)
- 在进行路由选择后处理数据包(POSTEROUTING)
命令行防火墙策略管理工具
防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误
参数 | 作用 |
---|---|
-P | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如TCP、UDP、ICMP |
--dport num | 匹配目标端口号 |
--sport num | 匹配来源端口号 |
把INPUT规则链的默认策略设置为拒绝
# iptables -P INPUT DROP
# iptables -L
Chain INPUT (policy DROP)
target prot opt sources destination
etc...
ICMP流量策略规则
向防火墙的INPUT规则链中添加一条允许ICMP流量进入的策略规则,允许ping命令的检测行为
# iptables -I INPUT -p icmp -j ACCEPT
# ping -c 4 xxx.xxx.xxx.xxx
etc ...
删除INPUT规则链中ICMP的策略
# iptables -D INPUT 1
# iptables -P INPUT ACCEPT
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt sources destination
etc...
端口控制
将INPUT 规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量
# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j REJECT
# iptables -L
Chain prot opt sources destination
ACCEPT tcp -- 192.168.10.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anywhere tcp dpt:ssh reject-with icmp-port-unreachable
etc...
向INPUT 规则链中添加拒绝所有人访问本机12345端口的策略规则
# iptables -I INPUT -p tcp --dport 12345 -j REJECT
# iptables -I INPUT -p udp --dport 12345 -j REJECT
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT udp -- anywhere anywhere udp dpt:italk reject-with icmp-port-unreachable
REJECT tcp -- anywhere anywhere tcp dpt:italk reject-with icmp-port-unreachable
ACCEPT tcp -- 192.168.10.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
etc...
向INPUT 规则链添加拒绝192.168.10.5主机访问80端口的策略规则
# iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT
# iptables -L
etc...
REJECT tcp -- 192.168.10.5 anywhere tcp dpt:http reject-with icmp-port-unreachable
etc...
向INPUT 规则链中添加拒绝所有主机访问本机1000~1024端口的策略规则
# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
# iptables -A INPUT -p udp --dport 1000:1024 -j REJECT
# iptables -L
etc...
REJECT tcp -- anywhere anywhere tcp dpts:cadlock2:1024 reject-with icmp-port-unreachable
REJECT udp -- anywhere anywhere udp dpts:cadlock2:1024 reject-with icmp-port-unreachable
etc...
保存
iptables命令配置的防火墙默认会在系统下一次重启时失效,如果要永久生效,还需要执行保存命令
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
firewalld
与常规防火墙的区别是,firewalld可以实现防火墙策略之间的快速切换,不同的场景切换不同的策略即可
区域 | 默认策略规则 |
---|---|
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量树相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;二如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
终端管理工具
参数 | 作用 |
---|---|
-—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-zone | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
--add-service=<服务名> | 设置默认区域允许该服务的流量 |
--add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
--remove-service=<服务号> | 设置默认区域不再允许该服务的流量 |
--remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
--reload | 让永久生效的配置规则立即生效,并覆盖当前的配置规则 |
--panic-on | 开启紧急状况模式 |
--panic-off | 关闭紧急状况模式 |
查看当前所用区域
# firewall-cmd --get-default-zone
public
查询xxx网卡所在区域
# firewall-cmd --get-zone-of-interface=enoxxxx
public
指定网卡区域为external,并永久化
# firewall-cmd --permanent --zone=external --change-interface=enoxxx
sucess
# firewall-cmd --get-zone-of-interface=enoxxx
public
# firewall-cmd --permanent --get-zone-of-interface=enoxxx
external
当前默认区域设置为public
# firewall-cmd --set-default-zone=public
success
# firewall-cmd --get-default-zone
public
启动/关闭应急状况模式
# firewall-cmd --panic-on
success
# firewall-cmd --panic-off
success
查询public是否允许请求SSH和HTTPS协议流量
# firewall-cmd --zone=public --add-service=https
success
# firewall-cmd --permanent --zone=public --add-service=https
success
# firewall-cmd --reload
success
HTTP协议流量设置为永久拒绝
# firewall-cmd --permanent --zone=public --remove-service=http
success
# firewall-cmd --reload
success
8080和8081端口流量设置为允许
# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
# firewall-cmd --zone=public --list-ports 8080-8081/tcp
端口转发
# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
success
# firewall-cmd --reload
success
ssh访问192.168.10.10主机的888端口
# ssh -p 888 192.168.10.10
etc...
拒绝192.168.10.0/24网段访问本机ssh
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
# firewall-cmd --reload
success
图形界面
略