一.firewalld防火墙
1.firewalld的启用
yum install firewalld firewall-config -y
systemctl start firewalld
systemctl enable firewalld
2.firewalld的图形配置
firewall-config
trusted(信任) ##可接受所有网络的连接
home(家庭) ##用于家庭网络,仅接受ssh,mdns,dhcpv6-client服务连接
internal(内部) ##用于内部网络,接受ssh,dhcpv6-client服务连接
work(工作) ##用于工作区,仅接受ssh,dhcpv6-client服务连接
public(公共) ##在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域
external(外部) ##出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
dmz(非军事区) ##仅接受ssh服务连接
block(限制) ##拒绝所有网络连接
drop(丢弃) ##任何接收的网络数据包都被丢弃,没有任何回复
注意: runtime是临时更改,即改即生效 permanent是永久更改,需要重新加载火墙并重启
3.firewalld的基本命令
firewall-cmd --state ##firewalld的状态
firewall-cmd --get-active-zones ##正在使用的区域
firewall-cmd --get-zones ##列出所有的域
firewall-cmd --list-all --zone=public ##列出某个指定的域
firewall-cmd --get-default-zone ##列出默认的域
firewall-cmd --set-default-zone=dmz ##设置默认的域为dmz
firewall-cmd --get-services ##列出所有的服务
firewall-cmd --list-all-zones ##列出所有的域
4.firewalld的配置文件
vim /usr/lib/firewalld/services/http.xml
vim /etc/firewalld/zones/public.xml
5.firewalld配置策略
firewall-cmd --permanent --add-source=172.25.0.0/24 --zone=internal ##给指定的网段一个内部网络的域
firewall-cmd --permanent --remove-source=172.25.0.0/24 ##删除指定的网段
firewall-cmd --permanent --zone=internal --remove-interface=eth1 ##删除网卡1上的内部网络域
firewall-cmd --permanent --add-interface=eth1 --zone=internal ##给网卡1添加一个内部网络域
firewall-cmd --permanent --change-interface=eth1 --zone=trusted ##改变网卡1上的域为trusted
firewall-cmd --permanent --remove-service=http ##删除aphache服务
firewall-cmd --permanent --remove-port=8080/tcp ##删除端口号为8080的服务
firewall-cmd --reload ##firewall的重新加载
firewall-cmd --permanent --add-service=ftp --zone=public ##在public域上添加ftp服务
firewall-cmd --permanent --remove-service=ftp --zone=public ##删除public域上的ftp服务
firewall-cmd --list-ports --zone=public ##列出public域上的所有端口
firewall-cmd --add-port=8080/tcp --zone=public ##在public域上添加端口号是8080的服务
lsmod | grep ftp
--permanent参数表示永久生效,需要重启服务,如果没有指定--zone的参数,那么会加入默认区域
6.通过firewall-cmd工具,可以使用--direct选项在运行时间里增加或者移除链
firewall-cmd --direct --get-all-rules ##查看firewall配置的规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.42 -p tcp --dport 22 -j REJECT
##来自于172.25.254.42这台主机上的ssh服务是被拒绝的
## filter: 本地数据的限制 -s:源地址 -p:协议 -d:目的地址 --dport:端口 -j:动作(REJECT/ACCERT/DROP)
测试:在172.25.254.42主机上
端口的转发
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=80:toaddr=172.25.254.42 --zone=*
二.iptables防火墙
如果不熟悉ipables,使用直接接口非常危险,因为可能导致无意间防火墙被入侵,直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则,直接端口模式添加的规则优先应用。
iptables防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作,如果都不满足则将数据包丢弃,从而保护网络的安全。
1.iptables基础
规则(rules):网络管理员预定义的条件(如果数据包头符合这样的条件,就这样处理这个数据包),规则存储在 内核空间的信息包过滤表中,指定了源地址,目的地址,传输协议和服务类型等
链(chains):是数据包传输的路径,每一条链其实都是众多规则中的一个检查清单,每一条链中可以有一条或数 条规则。
表(tables):filter表,实现包过滤 ,对于防火墙而言,主要利用在filter表中指定的一系列规则来实现对数据包进行 过滤的操作; nat表,实现网络地址的转换,iptables就是使用该表实现共享上网的功能; mangle表,实现包重构的功能。
2.iptables的基本策略配置
iptables -F ##刷新iptables策略
service iptables save ##保存策略
iptables -nL ##列出策略
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ##添加状态为related,established为允许
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT ##添加本机的为允许
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT ##添加端口号22的允许
iptables -A INPUT -j REJECT ##除过以上其余都拒绝
3.nat 转换
在客户机中设置自己的网关为服务路由上的与自己同一网段上的
测试;可以ping通网关,但不能ping通另外一个网卡的ip
在双网卡机中做nat转换,可以使不同网段的主机可以转到它上面
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.142 ##源地址转换为142这台主机
sysctl -a | grep ip_forward ##查看内核路由功能是否开启
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 ##使在一个主机上的两个网卡可以相互通信
sysctl -p ##让上述功能生效
iptables -t nat -A PREROUTING -i eth0 -d 172.25.254.142 -j DNAT --to-dest 172.25.42.1 ##目的地址转换为.1主机
iptables -nL -t nat
测试:在客户机中测ping 不同网段的ip