Firewalld加固服务器安全
1、首先匹配直接规则,然后匹配富规则
2、有一条规则放行,就会被放行
3、匹配不到放行规则,才会被拒绝
===================================================================
一、Linux防火墙
1、内核模块:netfilter
2、rhel6:Iptables
3、rhel7:firewall-cmd工具,firewall服务
firewalld是CentOS 7.0新推出的管理netfilter的工具
firewalld是配置和监控防火墙规则的系统守护进程。可以实 现iptables,ip6tables,ebtables的功能
firewalld服务由firewalld包提供
firewalld支持划分区域zone,每个zone可以设置独立的防火墙 规则
归入zone顺序:
1.先根据数据包中源地址,将其纳为某个zone
2.纳为网络接口所属zone
3.纳入默认zone,默认为public zone,管理员可以改为其它zone
网卡默认属于public zone
lo网络接口属于trusted zone
这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找
如果前两个都找不到才会使用第三个,也就是在firewalld.conf中配置的默认zone
二、区域zone
public:默认区域,仅允许ssh,dhcpv6-client数据通过
trusted:信任区域允许经过的流量通过
home/internal:仅允许ssh数据通过
work:仅允许ssh,ipp-client,dhcpv6-client数据通过
external:仅允许ssh数据通过,通过该区域的数据将会伪装(SNAT/DNAT)
dmz:非军事化区域 仅允许ssh数据通过
block:拒绝经过流量
drop:拒绝经过流量(甚至不进行ICMP错误进行回应)
三、常用端口
http:80/tcp、https 443/tcp、ssh 22/tcp
telnet:23/tcp
dns:53/udp(解析主机名)、53/tcp(区域同步)
ftp:20/tcp、21/tcp
dhcp:67/udp、68/udp
mail:25/tcp(SMTP)、110/tcp(POP3)、143/tcp(IMAP4)
mysql:3306/tcp
ntp:123/udp
samba(文件系统):137/udp、138/udp、139/tcp、445/tcp
iscsi(网络磁盘):3260/tcp
四、Firewall实战配置
1、准备服务用于测试、观察默认区域
systemctl start firewalld
yum -y install httpd
echo “kakaops” > /var/www/html/index.html
ystemctl start httpd
firewall-cmd --get-default-zone
2、观察所有区域
查看默认zone
默认zone后面很有active
firewall-cmd --get-default-zone
firewall-cmd --list-all
查看所有zone
firewall-cmd --list-all-zone
产看活跃zone
firewall-cmd --get-active-zone
3、观察同网段用户访问服务器。防火墙是否会阻挡
会。因为没有放行http。观察默认区域规则
firewall-cmd --list-all --zone=public
4、将public默认区域,更改为trusted区域。用户立刻可以访问所有服务(切换默认zone)
firewall-cmd --set-default-zone=trusted
防火墙规则每次的修改需要重新加载才会生效
firewall-cmd --reload
再次访问网站,成功
流量已经从默认的public区域,转移到trusted区域。该区域默认放行所有流量
还原默认的public区域
firewall-cmd --set-default-zone=public
firewall-cmd --reload
5、添加http规则进入默认区域public
firewall-cmd --permanent --add-service=http --zone=public
firewall-cmd --reload
firewall-cmd --list-all --zone=public
6、观察不同用户访问服务器,防火墙会不会阻挡 不会。访问成功
7、测试后,将http规则从默认区域删除
firewall-cmd --permanent --remove-service=http --zone=public
firewall-cmd --reload
firewall-cmd --list-all --zone=public
8、如何控制单一主机或网段对服务器的访问呢?
可以利用平规则进把ip或者ip段放在drop区域
firewall-cmd --permanent --add-source=10.0.128.226 --zone=drop
也可以利用富规则在public区域里面进行放行(以ssh和http协议为例)
先通过富规则把自己的ssh放行,否则自己无法连接
firewall-cmd --permanent --add-rich-rule=“rule family=‘ipv4’ source address=‘127.0.0.1’ service name=‘ssh’ accept”
firewall-cmd --reload
public区域移除通用规则,拒绝全部
firewall-cmd --permanent --remove-service=ssh --zone=public
firewall-cmd --reload
利用规则
firewall-cmd --permanent --add-rich-rule=“rule family=‘ipv4’ source address=‘127.0.0.1’ service name=‘ssh’ reject”
五、Firewall防火墙规则补充
1、放行和移除端口 [-portid]/protocol(端口+通信协议)
firewall-cmd --permanent --add-port=80/tcp --zone=public
firewall-cmd --permanent --remove-port=80/tcp --zone=public
firewall-cmd --permanent --add-port=80-90/tcp --zone=public
firewall-cmd --permanent --add-port=123/udp --add-port=23/tcp --add-port=25/tcp
2、禁用 添加 删除 域规则(富规则):
标题
对特定ip 禁止访问服务
ip ssh可以自己改别的 reject是禁止 accept是允许 add改为remove即为删除)
firewall-cmd --permanent --zone=public --add-rich-rule=“rule family=“ipv4” source address=“192.168.10.0/24” service name=“ssh” reject”
3、下面的是对特定ip允许访问8080端口(你也可以自己改)
firewall-cmd --permanent --zone=public --add-rich-rule=“rule family=“ipv4” source address=“192.168.0.4/24” port protocol=“tcp” port=“8080” accept”
4、端口转发,将到本机的3306端口的访问转发到192.168.1.1服务器的3306端口
开启伪装IP
firewall-cmd --permanent --add-masquerade
配置端口转发
firewall-cmd --permanent --add-forward-port=port=3306:proto=tcp:toaddr=192.168.1.2:toport=13306
注意:如果不开启伪装IP,端口转发会失败;其次,要确保源服务器上的端口(3306)和目标服务器上的端口(13306)是开启的