iptables 防火墙使用记录

iptables 防火墙使用记录

安装

1
2
3
4
5
6
7
8
# 先检查是否安装了 iptables
service iptables status
# 安装 iptables
yum install -y iptables
# 升级 iptables
yum update iptables
# 安装 iptables-services
yum install iptables-services

禁用/停止自带的 firewalld 服务

1
2
3
4
5
6
# 停止 firewalld
$ systemctl stop firewalld
# 禁用 firewalld
$ systemctl mask firewalld
# 卸载 firewalld
$ yum remove firewalld

常用规则设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 编辑防火墙配置文件  
$ vi /etc/sysconfig/iptables
# 查看iptables现有规则
$ iptables -L -n
# 先允许所有,不然有可能会杯具
$ iptables -P INPUT ACCEPT
# 清空所有默认规则
$ iptables -F
# 清空所有自定义规则
$ iptables -X
# 所有计数器归0
$ iptables -Z
# 允许来自于lo接口的数据包(本地访问)
$ iptables -A INPUT -i lo -j ACCEPT
# 开放22端口
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 开放21端口(FTP)
$ iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# 开放80端口(HTTP)
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 开放443端口(HTTPS)
$ iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许ping
$ iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
# 允许已建立的或相关连的通行。允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
$ iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
# 其他入站一律丢弃
$ iptables -P INPUT DROP
# 所有出站一律绿灯
$ iptables -P OUTPUT ACCEPT
# 所有转发一律丢弃
$ iptables -P FORWARD DROP

删除已添加的iptables规则

1
2
3
4
# 将所有iptables以序号标记显示,执行:  
$ iptables -L -n --line-numbers
# 比如要删除INPUT里序号为8的规则,执行:
$ iptables -D INPUT 8

其它规则设定

1
2
3
4
5
6
7
8
# 如果要添加内网ip信任(接受其所有TCP请求)  
$ iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
# 过滤所有非以上规则的请求
$ iptables -P INPUT DROP
# 要封停一个IP,使用下面这条命令:
$ iptables -I INPUT -s ***.***.***.***/32 -j DROP
# 要解封一个IP,使用下面这条命令:
$ iptables -D INPUT -s ***.***.***.*** -j DROP

保存规则设定

CentOS系列

1
2
# 保存上述规则
$ service iptables save

Debian、Ubuntu系列

安装 iptables-persistent

1
2
3
4
apt-get install iptables-persistent

netfilter-persistent save
netfilter-persistent reload

开启 iptables 服务

1
2
3
4
5
6
# 注册iptables服务 #相当于以前的chkconfig  
$ systemctl enable iptables.service
# 开启服务
$ systemctl start iptables.service
# 查看状态
$ systemctl status iptables.service

一键脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
iptables -A INPUT -p tcp --dport 9998 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT -s 218.92.0.0/16 -j DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
service iptables restart