文章目录
1、linux防火墙介绍及原理
Linux 防火墙在企业应用中非常有用,举例如下:
- 中小企业与网吧里有iptables 作为企业的NAT路由器,可以用来代替传统路由器,而节约成本。
- IDC机房一般没有硬件防火墙,IDC机房的服务器可以用Linux 防火墙代替硬件防火墙。
- iptables 可以结合squid 作为企业内部上网的透明代理。传统代理需要在浏览器里配置代理服务器信息,而iptables+squid 的透明代理则可以把客户端的请求重定向到代理服务器的端口。客户端不要作任何设置,而感觉不到代理的存在。
- 将iptables 作为企业NAT 路由器时,可以使用iptables 的扩展模块屏蔽P2P 流量,还可以禁止非法网页。
- iptables 可以用于外网IP 向内网IP 映射。
- iptables 可以轻松防止轻量级DOS 攻击,比如ping 攻击及SYN 洪水攻击。
综述,Iptables 有两种应用模式:主机防火墙,NAT路由器。
2、火墙默认策略的五条链和三张表
默认策略中的五条链
- input ##输入
- output ##输出
- forward ##转发
- postrouting ##路由之后
- prerouting ##路由之前
默认的三张表
- filter ##经过本机内核的数据(input output forward)
- nat ##不经过内核的数据(postrouting,prerouting,input,output)
- mangle ##当filter和nat表不够用时使用(input output forward postrouting,prerouting,)
3、管理火墙的俩种方式
3.1 iptables与firewalled服务的切换
- firewalld----->iptables
- dnf install iptables-services -y
- systemctl stop firewalld
- systemctl disable firewalld
- systemctl mask firewalld
- systemctl enable --now iptables
- iptales -------> fiewalld
- dnf install firewalld -y
- systemctl stop iptables
- systemctl disable iptables
- systemctl mask iptables
- systemctl enable --now firewalld
3.2 firewalld使用介绍
3.2.1 关于firewalld的配置数据路径
- /etc/firewalld ##火墙配置目录
- /lib/firewalld ##火墙模块目录
3.2.2 firewalld 的域
- trusted ##接受所有的网络连接
- home ##用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client
- work ##工作网络 ssh ipp-client dhcp-client
- public ##公共网络 ssh dhcp-client
- dmz ##军级网络 ssh
- block ##拒绝所有
- drop ##丢弃所有数据全部丢弃无任何回复
- internal ##内部网络 ssh mdns ipp-client samba-client dhcp-client
- external ##ipv4网络地址伪装转发 sshd
3.2.3 firewalld的管理命令
- firewall-cmd --state ##查看火墙状态
- firewall-cmd --get-active-zones ##查看当前火墙中生效的域
- firewall-cmd --get-default-zone ##查看默认域
- firewall-cmd --list-all ##查看默认域中的火墙策略
- firewall-cmd --list-all --zone=work ##查看指定域的火墙策略
- firewall-cmd --set-default-zone=trusted ##设定默认域
- firewall-cmd --get-services ##查看所有可以设定的服务
- firewall-cmd --permanent --remove-service=cockpit ##移除服务
-firewall-cmd --reload
-firewall-cmd --permanent --add-source=172.25.254.10/24 --zone=block ##指定数据来源访问指定域
- firewall-cmd --reload
- firewall-cmd --permanent --remove-source=172.25.254.10/24 --zone=block ##删除指定域中的数据来源
- firewall-cmd --permanent --remove-interface=enp1s0 --zone=public ##删除指定域的网络接口(网卡)
- firewall-cmd --permanent --add-interface=enp1s0 --zone=block ##添加指定域的网络接口
- firewall-cmd --permanent --change-interface=enp1s0 --zone=public ##更改网络接口到指定域
3.2.4 firewalld的高级规则
当这个服务没有被火墙允许时,高级规则不生效
- firewall-cmd --direct --get-all-rules ##查看高级规则
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.10 -p tcp --dport 22 -j REJECT
##10不能访问
- firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.10 -p tcp --dport 22 -j REJECT
##除了10都不可以访问
- firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.10 -p tcp --dport 22 -j REJECT
##删除高级规则
3.2.5 firewalld中的NAT
SNAT
- firewall-cmd --permanent --add-masquerade
- firewall-cmd --reload
-
DNAT
- firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=1.1.1.210
- firewall-cmd --reload
双网卡设置
测试
3.3 iptables 使用介绍
3.3.1 iptables参数
- iptables
- -t ##指定表名称
- -n ##不做解析
- -L ##查看
- -A ##添加策略
- -p ##协议
- --dport ##目的地端口
- -s ##来源
- -j ##动作
- ACCEPT ##允许
- DROP ##丢弃
- REJECT ##拒绝
- SNAT ##源地址转换
- DNAT ##目的地地址转换
- -N ##新建链
- -E ##更改链名称
- -X ##删除链
- -D ##删除规则
- -I ##插入规则
- -R ##更改规则
- -P ##更改默认规则
3.3.2 数据包
- 状态
- RELATED ##建立过连接的
- ESTABLISHED ##正在连接的
- NEW ##新的
实验如下图
3.3.3 NAT中的DNAT,SNAT
双网卡中配置
- 设置网卡ip分别为172.25.254.110 和 1.1.1.110,网卡配置分别如下
- nat表中的dnat snat
- snat
- iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 172.25.254.110
- dnat ##为了可以使俩个网段互通,o表示输出
- iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 1.1.1.210 ##为了使真机ssh root@172.25.254.110时,连接的是1.1.1.210 ,i表示input
- iptables -t nat -nL ##查看是否配置成功
- sysctl -a | grep ip_forward ### 必须等于1
-
-
单网卡的网卡配置
- BOOTPROTO=none
- NAME=enp1s0
- DEVICE=enp1s0
- ONBOOT=yes
- IPADDR=1.1.1.210
- PREFIX=24
- GATEWAY=1.1.1.110
-
-
测试
- 1. 1.1.1.210主机可以ping通 172.25.254.10(真机)
- 2. 1.1.1.210可以ssh root@172.25.254.10
- 3. 172.25.254.10 可以ssh root@172.25.254.110 ,实际进入的是1.1.1.210主机