Centos网络防火墙

来源:互联网 发布:android源码设计模式 编辑:程序博客网 时间:2024/05/22 10:54
iptables/netfilter网络防火墙:

(1) 充当网关
(2) 使用filter表的FORWARD链
注意的问题:
(1) 请求-响应报文均会经由FORWARD链,要注意规则的方向性
(2) 如果要启用conntrack机制,建议将双方向的状态为ESTABLISHED报文直接放行
NAT: network address translation
PREROUTING,INPUT,OUTPUT,POSTROUTING
请求报文:修改源/目标IP,由定义如何修改
响应报文:修改源/目标IP,根据跟踪机制自动实现
SNAT:source NAT POSTROUTING, INPUT让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装
请求报文:修改源IP
DNAT:destination NAT PREROUTING , OUTPUT
把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP
请求报文:修改目标IP
PNAT: port nat,端口和IP都进行修改

nat表的target:

SNAT:固定IP
–to-source [ipaddr[-ipaddr]][:port[-port]]
–random
iptables -t nat -A POSTROUTING -s LocalNET ! -d
LocalNet -j SNAT –to-source ExtIP
示例:
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 ! –
d 10.0.1.0/24 -j SNAT –to-source 172.18.100.6-172.18.100.9

MASQUERADE:动态IP,如拨号网络
–to-ports port[-port]
–random
iptables -t nat -A POSTROUTING -s LocalNET ! -d
LocalNet -j MASQUERADE
示例:
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 ! –
d 10.0.1.0/24 -j MASQUERADE

DNAT
–to-destination [ipaddr[-ipaddr]][:port[-port]]
iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp
–dport PORT -j DNAT –to-destination
InterSeverIP[:PORT]
示例:
iptables -t nat -A PREROUTING -s 0/0 -d
172.18.100.6 -p tcp –dport 22 -j DNAT –todestination 10.0.1.22
iptables -t nat -A PREROUTING -s 0/0 -d
172.18.100.6 -p tcp –dport 80 -j DNAT –todestination 10.0.1.22:8080

转发

REDIRECT:
NAT表
可用于:PREROUTING OUTPUT 自定义链通过改变目标IP和端口,将接受的包转发至不同地址
–to-ports port[-port]
示例:
iptables -t nat -A PREROUTING -d 172.16.100.10 -p
tcp –dport 80 -j REDIECT –to-ports 8080

firewalld服务

firewalld是CentOS 7.0新推出的管理netfilter的工具
firewalld是配置和监控防火墙规则的系统守护进程。可以实现iptables,ip6tables,ebtables的功能
firewalld服务由firewalld包提供
firewalld支持划分区域zone,每个zone可以设置独立的防火墙

规则

归入zone顺序:
先根据数据包中源地址,将其纳为某个zone纳为网络接口所属zone
纳入默认zone,默认为public zone,管理员可以改为其它zone
网卡默认属于public zone,lo网络接口属于trusted zone

firewalld配置

firewall-cmd –get-services 查看预定义服务列表
/usr/lib/firewalld/services/*.xml预定义服务的配置
三种配置方法
firewall-config (firewall-config包)图形工具
firewall-cmd (firewalld包)命令行工具
/etc/firewalld 配置文件,一般不建议

firewall-cmd 命令选项

–get-zones 列出所有可用区域
–get-default-zone 查询默认区域
–set-default-zone= 设置默认区域
–get-active-zones 列出当前正使用的区域
–add-source=[–zone=] 添加源地
址的流量到指定区域,如果无–zone= 选项,使用默认区域
–remove-source= [–zone=] 从指定区
域中删除源地址的流量,如果无–zone= 选项,使用默认区域
–add-interface=[–zone=] 添
加来自于指定接口的流量到特定区域,如果无–zone= 选项,使用默认区域

–change-interface=[–zone=]
改变指定接口至新的区域,如果无–zone= 选项,使用默认区域
–list-all [–zone=] 列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如果无–zone= 选
项,使用默认区域
–add-service= [–zone=] 允许服务的流量通过,如果无–zone= 选项,使用默认区域
–add-port=

查看默认zone

firewall-cmd –get-default-zone
默认zone设为dmz
firewall-cmd –set-default-zone=dmz
在internal zone中增加源地址192.168.0.0/24的永久规则
firewall-cmd –permanent –zone=internal –add-source=192.168.0.0/24
在internal zone中增加协议mysql的永久规则
firewall-cmd –permanent –zone=internal –addservice=mysql加载新规则以生效
firewall-cmd –reload
firewalld zone分类
实验:配置firewalld
systemctl mask iptables
systemctl mask ip6tables
systemctl status firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd –get-default-zone
firewall-cmd –set-default-zone public
firewall-cmd –permanent –zone=public –list-all
firewall-cmd –permanent –zone=public –addport 8080/tcp
firewall-cmd —reload

其它规则
当基本firewalld语法规则不能满足要求时,可以使用以下更
复杂的规则
rich-rules 富规则,功能强,表达性语言
Direct configuration rules 直接规则,灵活性差
帮助:man 5 firewalld.direct
rich规则比基本的firewalld语法实现更强的功能,不仅实现允许/拒绝,还可以实现日志syslog和auditd,也可以实现端
口转发,伪装和限制速率
预定义服务端口
rich语法:
rule
[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop]
man 5 firewalld.richlanguage

规则

规则实施顺序:
该区域的端口转发,伪造规则
该区域的日志规则
该区域的允许规则
该区域的拒绝规则
每个匹配的规则生效,所有规则都不匹配,该区域默认规则生效

拒绝从192.168.0.11的所有流量,当address 选项使用
source 或 destination时,必须用family= ipv4 |ipv6.
firewall-cmd –permanent –zone=classroom –add-richrule=’rule family=ipv4 source address=192.168.0.11/32
reject‘
限制每分钟只有两个连接到ftp服务
firewall-cmd –add-rich-rule=‘rule service name=ftp limit
value=2/m accept’
抛弃esp( IPsec 体系中的一种主要协议)协议的所有数据包
firewall-cmd –permanent –add-rich-rule=’rule protocol
value=esp drop’
接受所有192.168.1.0/24子网端口范置7900-7905的TCP流量
firewall-cmd –permanent –zone=vnc –add-rich-rule=’rule
family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept’

log [prefix=”” [level=]
[limit value=”

规则示例

firewall-cmd –permanent –add-rich-rule=’rule
family=ipv4 source address=172.25.X.10/32 service
name=”http” log level=notice prefix=”NEW HTTP ”
limit value=”3/s” accept’
firewall-cmd –reload
tail -f /var/log/messages
curl http://serverX.example.com

伪造和端口转发

NAT网络地址转换,firewalld支持伪造和端口转发两种NAT方式伪造NAT
firewall-cmd –permanent –zone= –addmasquerade
firewall-cmd –permanent –zone= –addrich-rule=’rule family=ipv4 source
address=192.168.0.0/24 masquerade’

端口转发
端口转发:将发往本机的特定端口的流量转发到本机或不同
机器的另一个端口。通常要配合地址伪造才能实现
firewall-cmd –permanent –zone= –addforwardport=port=:proto=[:topor
t=][:toaddr=]
说明:toport= 和toaddr= 至少要指定一个
示例:
转发传入的连接513/TCP,到访火墙的132/TCP到public zone
的192.168.0.254
firewall-cmd –permanent –zone=public –addforward-port=port=513:proto=tcp:toport=132:toaddr=
192.168.0.254

rich规则语法:

forward-port port= protocol=tcp|udp [toport=] [to-addr=

]
示例:
转发从192.168.0.0/26来的,发往80/TCP的流量到防火墙的
端口8080/TCP
firewall-cmd –permanent –zone=work –add-richrule=’rule family=ipv4 source address=192.168.0.0/26
forward-port port=80 protocol=tcp to-port=8080’
rich规则选项
firewall-cmd –permanent –add-rich-rule ‘rule
family=ipv4 source address=172.25.X.10/32 forwardport port=443 protocol=tcp to-port=22’
firewall-cmd –reload
ssh -p 443 serverX.example.com

原创粉丝点击