利用iptables,配置Linux的防火墙,管理网络端口。


1、安装iptables工具

1
yum install iptables-services -y

2、打开防火墙iptables

1
systemctl start iptables.service

3、查看iptables状态

1
systemctl status iptables.service

iptables success

4、关闭防火墙

1
systemctl stop iptables.service

5、重启防火墙

1
systemctl restart iptables.service

6、管理开机启动防火墙

开启开机自启动防火墙:

1
systemctl enable iptables.service

关闭开机自启动防火墙:

1
systemctl disable iptables.service

7、编辑iptables配置

1
vim /etc/sysconfig/iptables

如果要放行22、80、666、8000四个端口,可以编辑为如下形式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 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

8、常用iptables命令

8.1 查看现有规则

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

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
1
2
iptables -L -n --line-numbers  # 将所有iptables以序号标记显示
iptables -D INPUT 2            # 删除INPUT里序号为2的规则

8.2 清除现有规则

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

8.3 开放特定端口

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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     # 禁止其他未允许的规则访问

8.4 屏蔽特定IP访问本机

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

参考资料

  1. CentOS 7 使用iptables 开放端口:https://blog.csdn.net/kongfanyu/article/details/80579493
  2. iptables命令:https://man.linuxde.net/iptables