【Ubuntu安装和配置iptables防火墙】

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Ubuntu安装和配置iptables防火墙

提示Ubuntu 20.04.4 LTS

前言

例如netfilter/iptables 的最大优点是它可以配置有状态的防火墙这是 ipfwadm 和 ipchains 等以前的工具都无法提供的一种重要功能。

一、iptables是什么

示例netfilter/iptables 的最大优点是它可以配置有状态的防火墙这是 ipfwadm 和 ipchains 等以前的工具都无法提供的一种重要功能。有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时防火墙所使用的这些状态信息可以增加其效率和速度。这里有四种有效状态名称分别为 ESTABLISHED 、 INVALID 、 NEW 和 RELATED。

二、使用步骤

1.检测是否安装iptables

代码如下示例

whereis iptables

如果能看到图中信息,说明你已经安装了iptables
在这里插入图片描述

2.未安装步骤

代码如下示例

apt-get install iptables

3.编辑/新建 iptables策略vi /etc/iptables.rules 与 vim /etc/sysconfig/iptables

代码如下示例

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# 常用端口
#-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 59.109.149.221 -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 7080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 7180 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许loopback!不然会导致DNS无法正常关闭等问题
-A OUTPUT -o lo -p all -j ACCEPT
-A INPUT -i lo -p all -j ACCEPT
# 允许SSH连接
# The --dport 端口号要与 /etc/ssh/sshd_config 中的Port参数相同
-A INPUT -p tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp --sport 22 -j ACCEPT
#允许icmp包通过也就是允许ping
-I INPUT -p icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p ICMP --icmp-type timestamp-request -j DROP
-A INPUT -p ICMP --icmp-type timestamp-reply -j DROP
-A INPUT -p ICMP --icmp-type time-exceeded -j DROP
-A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
-A OUTPUT -p ICMP --icmp-type time-exceeded -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 8080 -j DROP
COMMIT

############################

注意
INPUT为入口
OUTPUT为出口
REJECT为禁止
如果想完全开放出口请将-A INPUT -j REJECT改为-A OUTPUT -j ACCEPT。

4.加载配置策略生效

代码如下示例

iptables-restore < /etc/iptables.rules

5.查看配置

代码如下示例

iptables -L -n

图片示例
在这里插入图片描述

6.常见软连接文件

代码如下示例

ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/

图片示例

7.添加【Install】段到最后

代码如下示例

vi /lib/systemd/system/rc-local.service

图片示例
在这里插入图片描述

8.创建文件添加防火墙启动命令

代码如下示例

vi /etc/rc.local

图片示例
在这里插入图片描述

9.添加执行权限

代码如下示例

chmod +x /etc/rc.local

10.启动iptables

代码如下示例

modprobe ip_tables

11.iptables命令

代码如下示例

#检查是否安装了iptables
whereis iptables
#安装iptables
apt-get install 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

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

#保存上述规则
service iptables save

总结

例如重新启动系统进行测试现在防火墙已经开机自启动了。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Ubuntu