【基础部分】之Firewall和iptables
Firewall和iptables
firewall 和 iptables 默认只能开一个
火墙:
图形界面形式配置火墙 firewall-config
使用命令行接口配置防火墙
查看firewalld的状态: firewall-cmd --state
查看当前活动的区域,并附带一个目前分配给它们的接口列表:
# firewall-cmd --get-active-zones
查看默认区域: # firewall-cmd --get-default-zone
查看所有可用区域: # firewall-cmd --get-zones
列出指定域的所有设置: # firewall-cmd --zone=public --list-all
列出所有区域的设置: # firewall-cmd --list-all-zones
设置默认区域: # firewall-cmd --set-default-zone=trusted
设置网络地址到指定的区域:
# firewall-cmd --permanent --zone=tursted --add-source=172.25.15.0/24
(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)
删除指定区域中的网路地址:
# firewall-cmd --permanent --zone=trusted --remove-source=172.25.0.0/24
添加、改变、删除网络接口:
# firewall-cmd --permanent --zone=trusted --add-interface=eth0
# firewall-cmd --permanent --zone=trusted --change-interface=eth0
# firewall-cmd --permanent --zone=trusted --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-port=8080/tcp
# firewall-cmd --permanent --zone=public --remove-port=8080/tcp
重载防火墙:
# firewall-cmd --reload
(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)
比如你正在ssh连接该主机,该主机重载防火墙 ssh不会断开 仍然可以操作该主机
如果--complete-reload 则ssh会断开。
列出所有预设服务: # firewall-cmd --get-services
在/usr/lib/firewalld/services/ 中的可以查看服务名称。注意:配置文件是以服务本身命名的
service-name. Xml 如下
以http为例子
默认 端口为80 如果想改端口 可以在这里修改
Direct Rules
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 172.25.15.10 -j REJECT
添加rule 拒绝172.25.15.10 主机访问22端口(ssh)
firewall-cmd --direct --get-all-rules 查看所有rule
firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 172.25.15.10 -j REJECT (删除的是上面查看出来的)
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 ! -s 172.25.15.10 -j REJECT
添加rule 拒绝除了172.25.15.10主机以外的任何主机连接
Rich Rules
使用规则
firewall-cmd --remove-service=ssh (禁止访问ssh服务)
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.25.15.10" accept'
允许172.25.15.10主机所有连接。
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop' (禁止 ping )
丢弃所有icmp包
端口转发:(外网通过端????口转发连接内网)
325:开启地址转换功能
326:访问本机的80端口转发到15.10主机的22端口
伪装:(内网通过ip伪装访问外网)
要求:一台单网卡172.25.15.10。一台双网卡作为网关172.25.15.11 172.25.254.115
双网卡:firewall-cmd --add-masquerade
firewall-cmd --add-rich-rule=’rule family=ipv4 source address=172.25.254.115’
(地址伪装为254.115)
则单网卡机器 可以ping通 254网段
IPTABLES
Iptables -nL 查看策略
Iptables -t filter -nL 查看filter表的策略
Iptables -t nat -nL 查看nat表的策略
Iptables -F 刷新策略(清空)
Iptables-save > /etc/sysconfig/iptables (保存修改的策略)
如何写策略:
131行: 写入允许该主机连接任何端口
133行: 写入允许lo回环连接任何端口
135行:拒绝所有写入
137行:允许访问22端口
139行:删除INPUT里第4行
141行:插入允许访问22端口到第三行
143行:修改拒绝访问22端口在第三行
145行:删除第三行策略
策略有从上至下的顺序问题:拒绝所有访问在第三行,允许访问22端口在第四行,结果22端口不能被访问。因为策略的顺序问题