一、防火墙
1.概述
动态防火墙后台程序 FireWalld 提供了一个动态管理的防火墙,用以支持网络的zones,以分配对一个网络及相关连接和界面一定程度的信任;它支持以太网桥,并有分离运行时间和永久行配置选择。
2.FileWalld域
trusted(信任):接受所有网络连接
home(家庭):用于家庭网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务连接
internal(内部):用于内部网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务连接
public(公共):用于公共区域使用,仅接受dhcpv6-client、ssh服务连接
work(工作):用于工作区,仅接受dhcpv6-client、ipp-client、ssh服务连接
external(外部):出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
dmz(非军事区):仅接受ssh服务连接
block(限制):拒绝所有网络连接
drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复
二、防火墙命令
systemctl start firewalld
systemctl mask firewalld
systemctl status firewalld
firewall-cmd --state ##查看火墙状态
firewall-cmd --get-default-zone ##查看火墙的默认域
firewall-cmd --set-default-zone=trusted ##修改火墙的默认域名
firewall-cmd --get-zones ##查看火墙的所有域
firewall-cmd --list-all-zones ##查看火墙所有的域及信息
firewall-cmd --get-active-zone ##查看火墙正在使用的域
firewall-cmd --zone=ROL --list-all ##查看ROL域的信息
firewall-cmd --get-services ##查看火墙允许的服务
三、接口控制
1.接口访问控制
eth0=172.25.254.116
eth1=192.168.0.116
firewall-cmd --list-all ##查看默认域的有eth0 eth1
firewall-cmd --remove-interface=eth1 --zone=public ##从public中移除eth1
firewall-cmd --add-interface=eth1 --zone=trusted ##添加eth1到trusted域
firewall-cmd --get-active-zones ##查看正在使用的域
测试:(ping/连接/访问)
eth0通 eth1不通
2.端口的设定
vim /etc/httpd/conf/httpd.conf ##修改端口:8080
systemctl restart httpd ##重启httpd服务
firewall-cmd --add-port=8080/tcp ##可访问172.25.254.116:8080
firewall-cmd --list-all ##查看端口
/etc/firewalld/zones/public.xml ##存放public域的信息的配置文件此文件也可添加8080端口
3.禁止116主机连接
firewall-cmd --add-source=172.25.254.116 --zone=block
firewall-cmd --list-all --zone=block
测试:116主机无法执行ping操作
4.
permanent ##永久生效
firewall-cmd -reload ##使设定生效
firewall-cmd --complete-reload ##使设定立即生效
四、防火墙访问控制
Direct Rules
设定某台主机可以使用某端口(ssh为例)
firewall-cmd --remove-service=ssh --permanent ##移除ssh服务
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT##给16主机添加ssh端口
firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 ! -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT##除了16主机都可以使用ssh
firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 ! -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT
测试:16主机
Rich Rules
1.端口转发
16主机连接116主机–>49主机(伪装)
地址转发:
116主机:
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.49
firewall-cmd --add-masquerade ##开启伪装
firewall-cmd --list-all
测试:
16主机
ssh [email protected]
恢复设置:
116主机恢复
firewall-cmd –remove-masquerade
firewall-cmd –remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.10
2. 216–116–16 (116)
firewalld方式
server: 192.168.0.216 192.168.0.116
desktop两块网卡:192.168.0.116 172.25.254.116
进入172.25.254.49 (216通过116来进入49)
五、Iptables命令管理
内核3个表,5条链
filter:经过本机内核的数据,input,forward,ouput
nat:不经过本机内核的数据,input,ouput,prerouting,postrouting
mangle:所有经过主机上的数据,prerouting,input,forward,ouput,postrouting
1.显示内核三张表的信息
iptables -nL ##默认为filter表
iptables -nL -t nat ##显示nat表
iptables -nL -t mangle ##显示mangle表,备用
2.表格命令编辑 ##默认filter表
iptables -A INPUT -s 172.25.254.111 -j REJECT ##添加
iptables -D INPUT 6 ##删除INPUT链的第6条
iptables -I INPUT -s 172.25.254.111 -j REJECT ##插入至第1条
iptables -R INPUT 1 -j ACCEPT ##将INPUT第1条规则改为ACCEPT
iptables -I INPUT 2 -s 172.25.254.10 -p tcp --dport 22 -j REJECT ##在第二个之前添加22端口拒绝访问
iptables -D INPUT 2 -s 172.25.254.10 -p tcp --dport 22 -j ACCEPT
iptables -F ##刷新(类似删除)配置,但是重启后配置依然存在
systemctl restart iptables.service
iptables -F ##刷新后保存,重启后配置为空
service iptables save ##保存设置
systemctl restart iptables.service
iptables -P FORWARD DROP ##将FORWARD链规则改为DROP
iptables -N redhat ##新建redhat自定义链
iptables -E redhat REDHAt ##修改自定义链的名称
iptables -X REDHAt ##删除自定义链
六.Iptables地址转换
注意:
1.一定要刷新filter表 iptables -F
2.打开内核路由
net.ipv4.ip_forward=1
sysctl -p == 【restart systemd-sysctl.service】
1.iptables(入)方式做源地址转换:
desktop:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.116
iptables -t nat -nL
server:
ssh [email protected]
w
216–116–16 (116)
iptable(出)方式做源地址转换
desktop:
[root@localhost ~]# iptables -t filter -F
[root@localhost ~]# iptables -t filter -nL
[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -j DNAT –to-dest 192.168.0.216
[root@localhost ~]# iptables -t nat -nL
主机:
ssh [email protected]
[root@server ~]# ifconfig
16–116—216
火墙策略优化
iptables -F ##刷新
iptables -nL ##显示
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT python和linux
iptabels -nL
iptables -A INPUT -m state –state new -i lo -j ACCEPT
iptables -A INPUT -m state –state new -p tcp –dport 22 -j ACCEPT ##ssh
iptables -A INPUT -m state –state new -p tcp –dport 80 -j ACCEPT ##http
iptables -A INPUT -m state –state new -p tcp –dport 53 -j ACCEPT ##dns
iptables -nL
iptables -A INPUT -j REJECT ##其他拒绝
iptables -nL
service iptables save ##保存写入的数据