Linux系统中的防火墙firewall与iptables
一、基础概念
防火墙是整个数据包进入主机前的第一道关卡。是一种位于内部网络与外部网络之间的网络安全系统,是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙主要通过Netfilter与TCPwrappers两个机制来管理的
管理方式:
firewall火墙策略管理工具,较简单
iptables相对来说更专业
二、Firewall相关
systemctl start firewalld
##开启火墙systemctl status firewalld
##查看火墙状态systemctl enable firewalld
##设置火墙开机自启动systemctl disable firewalld
##设置火墙开机关闭systemctl mask firewalld
##锁定firewall管理systemctl unmask firewalld
##解锁firewall管理
1.firewalld火墙管理的3种方式
firewall-cmd命令行管理
firewall-config图形管理
/etc/firewalld/下的配置文件管理
2.firewalld命令行管理
firewall-cmd --stat
##查看当前火墙状态firewall-cmd --get-active-zones
##查看当前生效的域firewall-cmd --get-default-zone
##查看默认的域firewall-cmd --get-zones
##查看所有的域firewall-cmd --zone=public --list-all
##查看public域的信息firewall-cmd --get-services
##查看所有可以被允许的服务firewall-cmd --list-all-zones
##查看所有域的信息firewall-cmd --set-default-zone=public
##设置默认的域为publicfirewall-cmd --direct --get-all-rules
##查看规则firewall-cmd --reload
##以ssh为例,以前连过的,执行此刷新命令不会断开firewall-cmd --complete-reload
##完全刷新
环境:
【服务端】eth0:172.25.254.173 eth1:1.1.1.173
【客户端】eth0:1.1.1.93
1.查看火墙的状态
2.查看火墙正在使用的域
3.查看火墙默认的域
4.查看火墙所有的域
5.查看public域的信息
6.列出可使用的服务
7.添加http服务到火墙允许的列表
8.从永久列表移除http服务(需要reload)
9.将指定的ip主机加入trusted域
10.将指定的ip主机从trusted域删除
11.移除eth1接口从public域
12.将eth1接口添加进trusted域
13.直接将eth1从原来的区域转到public这个区域
14.将8080端口加入public域
15.只允许172.25.254.73进行ssh连接(确定ssh不在默认域里)
16.除了172.25.254.73不能进行ssh连接,其他的都可以
三、Firewall的SNAT和DNAT
环境:
单网卡主机改网关:(此处修改全局网关)
vim /etc/sysconfig/network
3 GATEWAY=1.1.1.173
systemctl restart network
route -n
1.SNAT(内核路由之后做的原地址转换)
【双网卡】
firewall-cmd --permanent --add-masquerade
##开启内核路由功能firewall-cmd --reload
注意:sysctl -a | grep forward
底下的内容要是1,内核的路由功能才能打开
net.ipv4.ip_forward = 1
测试:
在单网卡的主机连接172.25.254.73
w -i查看,链接的是172.25.254.173
2.DNAT(内核路由之前做的目的地地址转换)
【双网卡】
firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.93
##在public这个域,使连接172.25.254.173这个端口的主机实际链接的是1.1.1.93这个22端口firewall-cmd --reload
firewall-cmd --list-all
测试:
在刚才已经连接的73身份上连接172.25.254.173
ifconfig查看,链接的是1.1.1.93
四、iptables
iptables(网络过滤器)是一个工作于用户空间的防火墙应用软件。
防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在linux内核中。
iptables有三张表五条链:
三表:
Filter表:过滤数据包
NAT表:用于网络地址转换(IP、端口)
Mangle表:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
五链:
INPUT链——进来的数据包应用此规则链中的规则
OUTPUT链——外出的数据包应用此规则链中的规则
FORWARD链——转发数据包时应用此规则链中的规则
PREROUTING链——对数据包作路由选择前应用此链中的规则
POSTROUTING链——对数据包作路由选择后应用此链中的规则
五、iptables相关
systemctl stop firewalld
##关闭firewallsystemctl disable firewalld
##设置开机不自启systemctl mask firewalld
##锁定firewallsystemctl start iptables
##开启iptablessystemctl enable iptables
##设置iptables开机自启动
1.iptables命令
-t ##指定表名称
-n ##不作解析
-L ##列出指定表中的策略
-A ##增加策略
-p ##网络协议
--dport ##端口
-s ##数据来源
-j ##动作
ACCEPT ##允许
REJECT ##拒绝
DROP ##丢弃
-N ##增加链
-E ##修改链名称
-X ##删除链
-D ##删除指定策略
-I ##插入
-R ##修改策略
-P ##修改默认策略
1.查看火墙的策略(不加t默认是filter)
2.查看filter表中的策略
3.刷新火墙策略
4.策略存储文件
5.保存iptables策略(刷新之后不保存重启服务,会恢复默认)
6.修改默认策略为DROP(连接是无响应)
7.设置ssh连接时会被refused
8.只允许172.25.254.73进行ssh连接
9.删除INPUT链的第二条策略iptables -D INPUT 2
10.在第一条插入,插入默认是第一条,可以不加1
11.修改第一条策略
12.添加链
13.修改链的名字
14.删除链
六、iptables的SNAT和DNAT
1.SNAT(内核路由之后做的原地址转换)
起初,单网卡ping172.25.254.73不通
【双网卡】iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.173
##(eth1~eth0已经做了路由伪装)让从eth0出去的做地址转换(用93去连73,实际连的是173)
测试:
【单网卡】
连接172.25.254.73,w -i 看到的是173
2.DNAT(内核路由之前做的目的地地址转换)
【双网卡】
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.93
##让从eth0进来的做地址转换(在上个测验的连接基础上,连接172.25.254.173,实际链接的是1.1.1.93)
测试:
【单网卡】
连接172.25.254.173,ifconfig看到的是1.1.1.93