Linux中火墙服务及管理

1.Firewalld概述
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的边界上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
总体说来,iptables就是由“四表五链”组成。
三表:

filter:过滤,防火墙
nat :network address translation 网络地址转换
mangle:拆解报文,作出修改,封装报文

五链:

PREROUTING 数据包进入路由之前
INPUT 目的地址为本机
FORWARD 实现转发
OUTPUT 原地址为本机,向外发送

POSTROUTING 发送到网卡之前

2.火墙的两种管理方式
firewalld
systemctl status firewalld.service
systemctl start firewalld.service
systemctl stop firewalld.service
firewall-cmd --list-all
systemctl enable firewalld.service ##设置防火墙开机自启
systemctl disable firewalld ##设置防火墙开机不自启
systemctl mask firewalld ##锁定防火墙
systemctl unmask firewalld

iptables
yum install iptables-services.x86_64 -y ##安装管理工具
systemctl start iptables.service
systemctl stop iptables.service
systemctl disable iptables.service
systemctl enable iptables.service
systemctl mask iptables.service
3.使用命令行接口配置防火墙
firewall域

网络区名称 默认配置
trusted(信任) 可接受的所有网络连接
home(家庭) 用于家庭,仅接受ssh,mdns,ipp-client,samba-client,或dhcpv6-client服务连接
internal(内部) 用于内部网络,仅接受ssh,mdns,ipp-client,samba-client,dhcpv6-client服务连接
work(工作) 在公共区域使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域
public(公共) 在公共区域使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域
external(外部) 出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
dmz(非军事区) 仅接受ssh服务连接
block(限制) 拒绝所有网络
drop(丢弃) 任何接受的网络数据包都被丢弃,没有任何回复

firewall-config ##打开图形管理状态
firewall-cmd --permanent --remove-service=http ##在火墙中去除某允许服务
firewall-cmd --list-all ##查看允许服务
firewall-cmd set-default-zone=trusted ##设置默认域
firewall-cmd --state ##查询服务是否开启
firewall-cmd --get-active-zones ##查看当前所有域
firewall-cmd --get-default-zone ##查看当前默认域
firewall-cmd --get-zones ##查看所有可用域
firewall-cmd --zone=pubic --list-all ##查看pubic域信息
firewall-cmd --get-services ##查看火墙允许的所有服务
firewall-cmd --list-all-zones ##查看所有域的详细信息
firewall-cmd --set-default-zone=dmz ##设置默认域

firewall-cmd --permanent --zone=internal --add-source=172.25.0.0/24
firewall-cmd --permanent --zone=internal --remove-source172.25.0.0/24
firewall-cmd --permanent --zone=internal --add-interface=eth0
firewall-cmd --permanent --zone=internal --change-interface=eth0
firewall-cmd --permanent --zone=internal --remove-interface=eth0

firewall-cmd --permanent --zone=public --add-service=smtp
firewall-cmd --permanent --zone=public --remove-service=smtp
firewall-cmd-zone=public --list-ports
firewall-cmd --permanent --zone=public --add-prot=8080/tcp
firewall-cmd --permanent --zone=public --remove-prot=8080/tcp

firewall-cmd --reload
firewall-cmd --complete-reload
4.Direct Rules
添加规则
通过使用firewall-cmd工具,可以使用 --dorect 选项在运行时间里增加或者删除链,直接端口模式适用于服务或程序,以便在运行时间内增加特定的防火墙规则,直接端口模式添加的规则优先应用。
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.34 -j ACCEPT

filter表 INPUT 1 -P 用tcp 端口22 -s操作源 -j执行动作ACCEPT

此时只有172.25.254.34可以使用ssh通过22端口连接本机
在此之前
firewall-cmd --remove-service=ssh --permanent
firewall-cmd --complete-reload ##默认连接ssh将不能成功
删除规则
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.234 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 ! -s 172.25.254.34 -j ACCEPT
此时172.25.254.34走默认规则,其他走设定端口
在这里插入图片描述
可以看到,34主机走默认规则连接ssh不成功,而其他走设定规则成功
firewall-cmd --direct --get-all-rules
firewall-cmd --zone=public --list-all
firewall-cmd --permanent --zone=internal --remove-service=ssh
firewall-cmd --zone=public --list-all
firewall-cmd --zone=internal --list-all
设定走指定端口,其他走默认
5.端口转发
有两块网卡的主机,充当路由器,用作地址转换
测试:用1.1.1.200主机ssh远程登陆172.25.254.34主机
在172.25.254.34主机上查看登陆历史为172.25.254.134
Linux中火墙服务及管理_第1张图片
在这里插入图片描述
firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.234
在有一块网卡的主机远程连接另一台主机,w -i可以查看转换前地址
执行命令之后在查看
在ip为172.25.254.34上ssh远程登陆172.25.254.134(即刚才查到的ip)

Linux中火墙服务及管理_第2张图片
5.iptables
iptables常见的命令
iptables
-t ##指定表名称
-n ##不作解析
-L ##列出指定表中的策略
-A ##增加策略
-p ##网络协议
–dport ##端口
-s ##数据来源
-j ##动作
ACCEPT ##允许
REJECT ##拒绝
DROP ##丢弃
-N ##增加链
-E ##修改链名称
-X ##删除链
-D ##删除指定策略
-I ##插入
-R ##修改策略
-P ##修改默认策略
iptables -t filter -nL #查看filter表中的策略
Linux中火墙服务及管理_第3张图片
iptable -F #刷掉filter表中的所有策略,当没有用-t指定表名称时默认时filter
Linux中火墙服务及管理_第4张图片
service iptables save #保存当前策略
iptables -A INPUT -i lo -j ACCEPT #允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##允许访问22端口
Linux中火墙服务及管理_第5张图片
iptables -A INPUT -s 172.25.254.250 -j ACCEPT ##允许250主机访问本机所有端口
Linux中火墙服务及管理_第6张图片
iptables -A INPUT -j REJECT ##拒绝所有主机的数据来源
iptables -N redhat ##增加链redhat
Linux中火墙服务及管理_第7张图片
iptables -E redhat westos ##改变链名称
Linux中火墙服务及管理_第8张图片
iptables -X westos ##删除westos链
Linux中火墙服务及管理_第9张图片
iptable -D INPUT 2 ##删除INPUT链中的第二条策略
iptables -I INPUT -p tcp --dport 80 -j REJECT ##插入策略到INPUT中的第一条
Linux中火墙服务及管理_第10张图片
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ##修改第一条策略
iptable -P INPUT DROP ##把INPUT表中的默认策略改为drop
6.使用iptables添加策略
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -nL
iptables -A INPUT -m state --state NEW -p tcp --dport 5445 -j ACCEPT ##smb端口
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
iptables -A INPUT -m state --state NEW -j REJECT
iptables -nL
vim /etc/services ##查看tcp,udp端口
Linux中火墙服务及管理_第11张图片
测试
Linux中火墙服务及管理_第12张图片
systemctl start smb
smbclient -L //172.25.254.134 -U bobo
Linux中火墙服务及管理_第13张图片
7.原地址转换(SNAT)和目的地转换(NDAT)
vim /etc/sysctl.conf ##开启路由功能
net.ipv4.ip_forward=1
iptables -t nat -nL
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.134
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.234

你可能感兴趣的:(Linux中火墙服务及管理)