Firewall 防火墙
firewall-ifconfig 防火墙web管理工具
通过在web界面可以对防火墙进行设置
firewall-ifconfig
配置分为两种runtime和permanent
runtime表示当前运行生效,当前设置的参数,当系统重启之后就会失效
permanent表示永久生效,设置的参数永久生效,但是在完成设置之后,必须重新载入防火墙,
zone表示选择的区域
选择区域之后,选择这个区域的服务,可以添加协议和端口
给http服务添加端口
semanage port -a -t http_port_t -p tcp 6666
emanage port -l | grep http 就可以看见刚才添加的端口
firewall-cmd --state
查看防火墙状态
firewall-cmd --get-active-zones
查看active域
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=dmz
设置默认的域为dmz域
firewall-cmd --list-all 查看firewall允许的服务
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 80/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
如果不允许http服务,则另外的主机不能通过http访问本台主机
http://172.252.54.225 则会显示连接失败
firewall-cmd --get-services 查看firewall支持的服务
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
添加http服务
临时添加http服务
firewall-cmd --add-service=http
firewall-cmd --list-all
当重启firewalld,这个就会失效
systemctl restart firewalld
firewall-cmd --list-all
添加http服务,这个是永久添加,添加完之后必须重新载入firewall
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
当firewalld服务重启之后,添加的协议依然生效
firewall-cmd --permanent --add-source=172.25.254.67 --zone=trusted
将172.25.254.67加入tursted域,这个地址在访问本机是遵循的时trusted域的规则,而其他IP访问本机则遵循默认域的规则
改变http默认端口
vim /etc/httpd/conf/httpd.com
LISTEN 8080
然后再通过另外一台主机,访问这台主机的8080端口还是看不到界面,因为firewall没有允许8080端口,需要添加
添加8080端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
永久添加8080端口,并且添加完之后重新载入firewall
通过firewall-cmd --list-all查看刚才的配置
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client http ssh
ports: 8080/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
另外一台主机要用http访问此主机,必须添加8080端口
firewall 三张表
filter input output forward
nat input output snat(postrouting 路由后) dnat(prerouting 路由前)
mangle
firewall-cmd --direct --get-all-rules 查看firewall设置的规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.67 -p tcp --dport 22 -j REJECT 除了172.25.254.67可以访问,其他的地址执行的动作都是拒绝
添加规则,ipv4 在filter表里,INPUT数据流 第一条
! -s 172.25.254.67 表示除了源地址是172.25.254.67
-p tcp 协议为tcp
--dport 22 通过22端口
-j REJECT 表示执行的动作是拒绝
目的地址转换 访问本机其实最终是访问到172.25.254.67
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.67
ssh 172.25.254.225 其实是远程到了172.25.254.25这台主机
源地址转换 将所有地址转换成172.25.254.225
firewall-cmd --add-rich-rule='rule famliy=ipv4 source address=172.25.254.225 masquerade'
加完这条策略之后,不同网段的地址可以通信
server 双网卡主机有两个地址段的地址,172.25.254.225,192.168.1.100
desktop 192.168.1.200
在没添加策略和网关之前不同网段是不能通信的
网关配置为192.168.1.100
真机 172.25.254.67
策略加完之后,当192.168.1.200ping172.25.254.67时,192.168.1.200会伪装成172.25.254.225和172.25.254.67通信,以达到不同网段可以互相访问的目的
iptables
netstate 查看网络链接状态
安装服务
yum install iptables-services.x86_64 -y
systemctl stop firewalld
systemctl mask firewalld
systectl start iptables-services
systectl enable iptables-services
查看iptables策略表 iptables -nL
修改iptables策略命令
iptables -A 增加策略
iptables -A INPUT -j REJECT
增加一条策略,执行的动作是REJECT
iptables -I 插入策略
iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT
增加一条策略,插入到第三条,动作为允许tcp协议的80端口访问
iptables -R 修改策略
iptables -R INPUT 3 -p tcp --dport 8080 -j ACCEPT
修改第三条策略,动作为允许tcp协议的8080端口访问
iptables -P 修改默认区域规则
iptables -R INPUT DROP
将默认区域规则改为DROP丢弃
iptables -N 新建链接
iptables -E 修改链接名称
iptables -X 删除链接
-j 后可以跟的执行动作有 REJECT,DROP,ACCEPT,SNAT,DNAT
SNAT 源地址转换
iptables -t nat -A POSTROUTING -j SNAT --to-soure 172.25.254.225
将源地址转换为172.25.254.225,然后不同网段可以互相通信
DNAT 目的地址转换
iptables -t nat -A PREROUTING -j DNAT --to-dest 192.168.1.200
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.1.200
目的地址转换,其他主机通过http访问本台主机,其他看到的时192.168.1.100默认发布目录下的内容