Linux iptables配置

在服务器中开启防火墙可以有效一些避免端口扫描和黑客攻击,所以配置iptables是非常有必要的.今天记录一下配置过程

检查是否启动iptables

1
2
3
service iptables status
# 或者
/etc/init.d/iptables status

如果显示如下,则说明iptables服务是有安装的,但是没有启动服务。
如果没有安装的话可以直接yum安装

1
iptables: Firewall is not running.

1
yum install -y iptables

生成配置文件

1
vim /etc/sysconfig/iptables

启动iptables

1
2
3
4
service iptables start
#或
/etc/init.d/iptables start
iptables: Applying firewall rules: [ OK ]

查看当前iptables的配置情况

1
2
3
4
5
6
7
8
9
10
iptables -L -n
#会显示如下
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

如果显示这样就说明iptables服务已经启动了

配置规则

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
#允许对外请求的返回包
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允许icmp包通过
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
#允许来自于lo接口的数据包,如果没有此规则,将不能通过127.0.0.1访问本地服务
iptables -A INPUT -i lo -j ACCEPT

#常用端口
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

#过滤所有非以上规则的请求
iptables -P INPUT DROP

#如果要添加内网ip信任(接受其所有TCP请求)
#注:(**.**.**.**)为IP,下同
iptables -A INPUT -p tcp -s **.**.**.** -j ACCEPT

#要封停一个IP,使用下面这条命令
iptables -I INPUT -s **.**.**.** -j DROP
#要解封一个IP,使用下面这条命令
iptables -D INPUT -s **.**.**.** -j DROP

保存重启防火墙

1
2
/etc/init.d/iptables save
service iptables restart

其他方法:

1
2
3
4
5
6
7
8
# 打开配置文件
vim /etc/sysconfig/iptables
# 加入如下语句:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# 保存(按Esc退出编辑)
:wq
# 重启防火墙,修改完成
service iptables restart

其他常用命令(不是一定要做)

1
2
3
4
5
6
7
8
#允许所有入栈规则
iptables -P INPUT ACCEPT
#清空默认所有规则
iptables -F
#清空自定义的所有规则
iptables -X
#计数器置0
iptables -Z

关闭端口

常用删除端口规则

1
2
3
4
5
6
# 查看当前端口所在行数
iptables -L -n --line-number
# 删除指定序列的端口(下面是删除第五条端口)
iptables -D INPUT 5
# 确认是否已经删除,可以重新查看列表
iptables -L -n --line-number

其他方法:

1
2
3
4
5
6
7
8
9
# 打开配置文件
vim /etc/sysconfig/iptables

# 直接删除对应端口的那句 !!!!

# 保存(按Esc退出编辑)
:wq
# 重启防火墙,修改完成
service iptables restart

保存规则,重启iptables服务

1
2
3
4
5
6
7
8
9
10
11
#保存修改
/etc/init.d/iptables save

#查看规则是否添加成功
vim /etc/sysconfig/iptables

#添加到iptables服务自启动
chkconfig iptables on

#重启iptables服务
service iptables restart

0%