跳转至

iptables 管理防火墙

概要: 利用iptables工具管理网络防火墙

创建时间: 2022.12.20 22:03:32

更新时间: 2023.08.08 23:25:18

安装iptables工具

Bash
yum install iptables-services -y

管理防火墙

打开防火墙iptables

Bash
systemctl start iptables.service

查看iptables状态

Bash
systemctl status iptables.service

关闭防火墙

Bash
systemctl stop iptables.service

重启防火墙

Bash
systemctl restart iptables.service

管理开机启动防火墙

开启开机自启动

Bash
systemctl enable iptables.service
关闭开机自启动
Bash
systemctl disable iptables.service

配置iptables

Bash
vim /etc/sysconfig/iptables
如果要放行22、80、666、8000四个端口,可以进行如下编辑
Bash
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 666 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

常用iptables命令

查看现有规则

语法:iptables [-t 表名] -L,默认filter表,-v表示为详细模式

Bash
1
2
3
4
5
iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security

清除某一条规则

Bash
iptables -L -n --line-numbers  # 将所有iptables以序号标记显示
iptables -D INPUT 2            # 删除INPUT里序号为2的规则
image.png

清除现有规则

Bash
1
2
3
4
# 默认是fileter表,下同
iptables -F  # 清空规则链中已有的条目
iptables -X  # 清空规则链中的数据包计算器和字节计数器
iptables -Z

开放特定端口

提示

iptables生效规则
前面的覆盖后面的,第1条覆盖第2条,依此类推

对外开放本机的15387端口,插入到第一条

Bash
iptables -I INPUT -p tcp --dport 15387 -j ACCEPT
对外开放本机的15387端口,添加到最后一条
Bash
iptables -A INPUT -p tcp --dport 15387 -j ACCEPT
常用的开放端口如下
Bash
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT               # 允许本机访问本机
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    # 允许已建立的连接通行
iptables -A OUTPUT -j ACCEPT                     # 允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    # 允许访问22端口 ssh
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    # 允许访问80端口 http
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    # 允许访问80端口 https
iptables -A INPUT -p tcp --dport 21 -j ACCEPT    # 允许访问21端口 ftp
iptables -A INPUT -p tcp --dport 20 -j ACCEPT    # 允许访问20端口 ftp
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT  # 允许访问3306端口 mysql
iptables -A INPUT -j reject       # 禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT     # 禁止其他未允许的规则访问

关闭特定端口

如果要禁止外部访问本机的15387端口,和开放类似,但需要将ACCEPT改为DROP

Bash
iptables -A INPUT -p tcp --dport 15387 -j DROP

屏蔽特定IP访问

Bash
1
2
3
4
iptables -I INPUT -s 123.45.6.7 -j DROP       # 屏蔽特定IP
iptables -I INPUT -s 123.0.0.0/8 -j DROP      # 屏蔽整个IP段:123.0.0.1到123.255.255.254
iptables -I INPUT -s 124.45.0.0/16 -j DROP    # 屏蔽部分IP段:123.45.0.1到123.45.255.254
iptables -I INPUT -s 123.45.6.0/24 -j DROP    # 屏蔽部分IP段:123.45.6.1到123.45.6.254

参考