firewalld防火墙
# 允许访问9200端口并永久生效
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="172.27.100.0/24" port protocol="tcp" port="9200" accept' --permanent
# 允许访问9300端口并永久生效
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="172.27.100.0/24" port protocol="tcp" port="9300" accept' --permanent
# 拒绝访问22端口并永久生效
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" drop' --permanent
#刷新生效
firewall-cmd --reload
iptables防火墙基本操作
vim /etc/sysconfig/iptables
1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。
下面是命令实现:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
再用命令 iptables -L -n 查看 是否设置好, 好看到全部 DROP 了
这样的设置好了,我们只是临时的, 重启服务器还是会恢复原来没有设置的状态
还要使用 service iptables save 进行保存
iptables-save > /etc/sysconfig/iptables
看到信息 firewall rules 防火墙的规则 其实就是保存在 /etc/sysconfig/iptables
可以打开文件查看 vi /etc/sysconfig/iptables
2、
下面我只打开22端口,看我是如何操作的,就是下面2个语句
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
二、命令
2.1、系统命令
systemctl start iptables #启动
systemctl status iptables #查看运行状态
systemctl restart iptables.service #重启
systemctl stop iptables.service #停止
systemctl enable iptables.service #设置开机启动
systemctl disable iptables.service #禁止开机启动
2.2、常用命令
iptables -h #查询帮助
iptables -L -n #列出(filter表)所有规则
iptables -L -n --line-number #列出(filter表)所有规则,带编号
iptables -L -n -t nat #列出(nat表)所有规则
iptables -F #清除(filter表)中所有规则
iptables -F -t nat #清除(nat表)中所有规则
iptables-save > /etc/sysconfig/iptables
service iptables save #保存配置(保存配置后必须重启iptables)
systemctl restart iptables.service #重启
三、语法
3.1、filter表解析
filter表是iptables默认使用的表,负责对流入、流出本机的数据包进行过滤,该表中定义了3个链,分别是:INPUT、OUTPUT、FORWARD
INPUT:过滤进入主机的数据包
OUTPUT:处理从本机出去的数据包
FORWARD:负责转发流经本机但不进入本机的数据包,起到转发作用
3.2、iptables常用语法
-A:追加到规则的最后一条
-D:删除记录
-I:添加到规则的第一条
-p:(proto)规定通信协议,常见的协议有:tcp、udp、icmp、all
-j:(jump)指定要跳转的目标,常见的目标有:ACCEPT(接收数据包)、DROP(丢弃数据包)、REJECT(重定向)三种,但是一般不适用重定向,会带来安全隐患
四、常见案例
1、仅允许某些主机访问6359,拒绝其他所有访问6359端口
iptables -A INPUT -s 192.168.200.25/32 -p tcp --dport 6359 -j ACCEPT
iptables -A INPUT -s 192.168.200.26/32 -p tcp --dport 6359 -j ACCEPT
iptables -A INPUT -p tcp --dport 6359 -j DROP
4.1、IP过滤
4.1.1、禁止192.168.1.3 IP地址的所有类型数据接入
iptables -A INPUT ! -s 192.168.1.3 -j DROP
4.2、开放端口
4.2.1、开放端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放80端口
4.2.2、开放端口范围
iptables -I INPUT -p tcp --dport 22:80 -j ACCEPT #开放22-80范围的端口
4.2.3、不允许80端口流出
iptables -I OUTPUT -p tcp --dport 80 -j DROP
4.2.4、 不允许
————————————————————————————————————————————
#/bin/bash
#只允许某些地址访问80端口
#清空
iptables -F
iptables -t nat -F
iptables -t mangle -F
#添加规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
port=80
for ip in 16.168.139.107/32 16.168.139.215/32 16.168.139.227/32 16.168.139.125/32 16.168.139.82/32 16.168.139.205/32 16.168.139.57/32 16.168.139.250/32 16.168.139.148/32 16.168.139.168/32 16.168.139.93/32
do
iptables -A INPUT -s $ip -p tcp --dport $port -j ACCEPT
done
#拒绝
iptables -A INPUT -p tcp --dport $port -j DROP