标签 防火墙 下的文章

iptables基本命令

# 查看规则列表
iptables -L -n

# 放行指定端口:22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 放行IP:123.123.56.50
iptables -A INPUT -s 123.123.56.50 -j ACCEPT

新建脚本 ipt.sh

vi ipt.sh

Debian Ubuntu 脚本内容

# 清空所有默认规则
iptables -F
# 清空所有自定义规则
iptables -X
# 所有计数器归0
iptables -Z
# 重新设置iptables
# 设置iptables白名单开始
# 允许icmp
iptables -A INPUT -p icmp -j ACCEPT
# 放行端口:8080
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 放行IP:123.123.56.56
iptables -A INPUT -s 123.123.56.56 -j ACCEPT
# 禁止其他不匹配的规则访问本机
iptables -P INPUT DROP
#配置写入文件,重启也生效。
modprobe ip_tables
iptables-save > /etc/iptables.up.rules

CentOS 脚本内容

# 清空所有默认规则
iptables -F
# 清空所有自定义规则
iptables -X
# 所有计数器归0
iptables -Z
# 重新设置iptables
# 设置iptables白名单开始
# 允许icmp
iptables -A INPUT -p icmp -j ACCEPT
# 放行端口:8080
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 放行IP:123.123.56.56
iptables -A INPUT -s 123.123.56.56 -j ACCEPT
# 禁止其他不匹配的规则访问本机
iptables -P INPUT DROP
#配置写入文件,重启也生效。
service iptables save
#重启iptables服务
systemctl restart iptables.service

Debian Ubuntu 配置重启不失效

iptables 规则设置后都是即时生效的,在机器重启后,一般情况下 iptables 中的配置信息会被清空。
通过下面教程的方式,可以做到重启规则不失效。

先将防火墙规则保存到/etc/iptables.up.rules文件中:

iptables-save > /etc/iptables.up.rules

然后修改脚本/etc/network/interfaces,在末尾添加一行,在网络启动时应用防火墙规则。

# vi编辑命令
vi /etc/network/interfaces

# 在最后 添加下面一行
pre-up iptables-restore < /etc/iptables.up.rules


# 重启测试
reboot

CentOS 7 卸载firewalld防火墙

systemctl disable firewalld
systemctl stop firewalld
systemctl mask firewalld
systemctl disable firewalld.service

CentOS 7 安装iptables防火墙

yum install iptables -y
yum install iptables-services -y
systemctl enable iptables
systemctl enable iptables.service

firewalld常用基本命令

# 开放8080端口
firewall-cmd --permanent --add-port=8080/tcp
# 移除8080端口
firewall-cmd --permanent --remove-port=8080/tcp
#查看开放端口
firewall-cmd --zone=public --list-ports

firewalld白名单模式

本次示例,是先设置trusted域的规则,然后将默认区域从public切换到drop。

# 给trusted域,添加IP白名单,单个ip或者ip段
firewall-cmd --permanent --zone=trusted --add-source=123.123.56.0/24
firewall-cmd --permanent --zone=trusted --add-source=123.123.56.56
firewall-cmd --reload
# 确认是否设置正确
firewall-cmd --zone=trusted --list-all
# 切换默认区域从 public 到 drop
firewall-cmd --set-default-zone=drop
# 将默认网卡 eth0 分配给 drop 区域
firewall-cmd --permanent --zone=drop --change-interface=eth0
# 使白名单生效
firewall-cmd --reload

# 查看trusted域的规则
firewall-cmd --list-all --zone=trusted
# trusted域,从白名单删除ip
firewall-cmd --permanent --remove-source=123.123.56.56 --zone=trusted

firewalld设置端口只允许白名单ip访问

# 切换到trusted域
firewall-cmd --set-default-zone=trusted

新建一个zone,起名newzone,将想要访问本机22端口的ip,如:123.123.123.123等,添加的这个zone中,同时在这个zone中放行22端口:

firewall-cmd --permanent --new-zone=newzone
firewall-cmd --permanent --zone=newzone --add-source=123.123.123.123
firewall-cmd --permanent --zone=newzone --add-source=123.123.56.56
firewall-cmd --permanent --zone=newzone --add-port=22/tcp

除123.123.123.123、123.123.56.56这个俩ip,其他ip地址访问本机时会使用当前默认的trusted这个zone里的规则,即禁止访问本机的22端口:

firewall-cmd --permanent --zone=trusted --add-rich-rule="rule family="ipv4" port protocol="tcp" port="22" drop"

重启firewalld:

systemctl restart firewalld

查看firewalld配置规则是否生效:

firewall-cmd --list-all-zone
firewall-cmd --list-all