Ubuntu 16.04 设置防火墙白名单

为了确保服务器安全性,正确配置防火墙十分关键。Ubuntu服务器设置防火墙白名单可以使用iptablesufwiptables没有直接的操作命令,需要配置多个文件,ufw可以用于管理iptables规则,相对于iptables简单易执行。

1 iptables设置防火墙白名单

1.1 检查是否安装iptables

(base) [email protected]:~# whereis iptables  #查看系统是否安装防火墙
iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz

(base) [email protected]:~# apt-get install iptables #若未安装 执行安装命令

(base) [email protected]:~# iptables -L  #查看防火墙信息
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

1.2 添加iptables规则

(base) [email protected]:~# vi /etc/iptables.rules
# 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]

#这里开始增加白名单服务器ip(请删除当前服务器的ip地址)
-N whitelist
-A whitelist -s xx.xx.xx.xx -j ACCEPT
-A whitelist -s xx.xx.xx.xx -j ACCEPT

#这里结束白名单服务器ip

-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 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2181 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9092 -j ACCEPT

//下面这些 whitelist 端口号,仅限服务器之间通过内网访问
#这里添加为白名单ip开放的端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2181 -j whitelist
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9092 -j whitelist

#作用是每秒钟只允许 100 个数据包,用来防止 DDoS 攻击
-A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
-A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT

#这结束为白名单ip开放的端口
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

1.3 使防火墙规则生效

(base) [email protected]:~# iptables-restore < /etc/iptables.rules

1.4 添加iptables

创建 /etc/network/if-post-down.d/iptables 文件,并添加如下内容:

(base) [email protected]:~# vi /etc/network/if-post-down.d/iptables

iptables文件内容如下:

#!/bin/bash
iptables-save > /etc/iptables.rules

添加可执行权限

(base) [email protected]:/etc/network/if-post-down.d# chmod +x /etc/network/if-post-down.d/iptables

创建 /etc/network/if-pre-up.d/iptables 文件,添加如下内容

(base) [email protected]:~# vi /etc/network/if-pre-up.d/iptables

iptables文件内容如下:

#!/bin/bash
iptables-restore < /etc/iptables.rules

添加执行权限

(base) [email protected]:/etc/network/if-pre-up.d# chmod +x /etc/network/if-pre-up.d/iptables

1.5 查看iptables规则是否生效

(base) [email protected]:~# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:443
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:3306
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:2181
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:9092
whitelist  tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
whitelist  tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80
whitelist  tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:443
whitelist  tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:3306
whitelist  tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:2181
whitelist  tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:9092
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 1/sec burst 10
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 100/sec burst 100
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain whitelist (6 references)
target     prot opt source               destination
ACCEPT     all  --  xx.xx.xx.xx       0.0.0.0/0
ACCEPT     all  --  xx.xx.xx.xx        0.0.0.0/0   

如果再次修改,则执行以下命令

vi /etc/iptables.rules  #修改规则
iptables-restore < /etc/iptables.rules #使修改后的规则生效
iptables -L -n  #查看规则是否生效

2 ufw设置防火墙白名单

Ubuntu 16.04自带UFW(Uncomplicated Firewall)简单防火墙工具,默认状态是inactive。

2.1 列出所有应用程序配置策略

(base) [email protected]:~# sudo ufw app list
Available applications:
    OpenSSH

2.2 允许SSH连接

这一步设置非常重要,如果你是远程登录服务器,##开启ufw防火墙前,必须先添加允许SSH连接##,否则,ufw开启后SSH无法连接。

(base) [email protected]:~# sudo ufw allow ssh
Rules updated
Rules updated (v6)

如果SSH是自定义端口,则执行下列命令

sudo ufw allow 端口号/tcp

2.3 开启ufw

(base) [email protected]:~# sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

2.4 允许常见端口连接

(base) [email protected]:~# sudo ufw allow http  #允许 HTTP 连接
Rule added
Rule added (v6)

2.5 允许端口范围

sudo ufw allow xxxx:yyyy/tcp #开启服务器上xxxx——yyyy的TCP端口

2.6 允许特定IP

(base) [email protected]:~# sudo ufw allow from XX.XX.XX.XX #允许XX.XX.XX.XX访问所有端口
Rule added

2.7允许子网

sudo ufw allow from xx.xx.xx.xx/16 to any port 3306 #允许特定子网范围的计算机对服务器mysql3306端口的访问

2.8 拒绝访问

sudo ufw deny from xx.xx.xx.xx to any port 80  #拒绝xx.xx.xx.xx访问80端口

2.9 删除ufw防火墙设置

(base) [email protected]:~# sudo ufw status numbered #列出规则编号
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 3306/tcp                   ALLOW IN    Anywhere
[ 4] 2181/tcp                   ALLOW IN    Anywhere
[ 5] 9002/tcp                   ALLOW IN    Anywhere
[ 6] 9092/tcp                   ALLOW IN    Anywhere

如果删除80端口

sudo ufw delete 2 #方法1使用规则编号删除

sudo ufw delete allow 80 #方法2指定端口号直接删除

2.10 禁用ufw

sudo ufw disable

2.11 重置ufw

sudo ufw reset

原文地址:https://www.cnblogs.com/eugene0/p/12056901.html

时间: 2024-10-13 02:07:46

Ubuntu 16.04 设置防火墙白名单的相关文章

Ubuntu 16.04 设置MySQL远程访问权限

本文记录一下在Ubuntu 16.04版本下设置MySQL数据库的远程访问. 第一步:修改配置文件的端口绑定 打开的目录可能会根据MySQL的版本稍有不同,可以先尝试打开/etc/mysql/my.cnf这个配置文件,若该文件不存在或文件内容为空,则尝试下面的文件路径. sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 在下面行的开头加上#,注释掉该行,然后保存退出vim: bind-address = 127.0.0.1 第二步:修改访问权限 进入mysq

为VMware虚拟机内安装的Ubuntu 16.04设置静态IP地址【转】

1.安装环境VMware 10.0.4 build-2249910Ubuntu 16.04 x86_64 2.在VMware中,配置网络环境VMware在默认安装完成之后,会创建三个虚拟的网络环境:VMnet0.VMnet1和VMnet8.其类型分别为:桥接网络,Host-only和NAT.其中,NAT表示VMWware内安装的Ubuntu将会在一个子网中,VMware通过网络地址转换,通过物理机的IP上网.这里,我们选择NAT方式,来实现Ubuntu的静态IP地址配置.打开VMware,在顶部

Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)

注意:rc.local脚本里面启动的用户默认为root权限. 一.rc.local脚本 rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/etc/路径下,需要root权限才能修改. 该脚本具体格式如下: #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the scrip

Ubuntu 16.04设置开机启动脚本的方法

需求:公司卡片机容量太小,只有100G,由于使用的人比较的多,开机使用后有时候就会出现磁盘空间占满数据写不进去的情况,影响工作进度,而且每次使用完都得关掉卡片机,所以就有必要写个清理磁盘的脚本,当卡片机开机启动后执行脚本,如果磁盘达到设置的阈值,就进行空间的清理. rc.local脚本 rc.local脚本是一个ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/etc/路径下,需要root权限才能修改. 该脚本具体格式如下: #!/bin/sh -e # # rc

Ubuntu 16.04设置开机启动应用程序

在终端通过以下命令进行设置,Dash已经搜索不到Startup了: gnome-session-properties

Ubuntu 16.04 设置开机命令行模式

执行下面命令即可在开机时直接进入命令行模式: $ sudo systemctl set-default multi-user.target 执行如下命令启动到桌面: $ sudo systemctl start lightdm 要恢复默认启动到桌面, $ systemctl set-default graphical.target 来源:Ubuntu开机时直接进入命令行模式 原文地址:https://www.cnblogs.com/notfound/p/12359424.html

如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序

介绍 Redis是一个开源的键值缓存和存储系统,也称为数据结构服务器,因为它对几种数据类型(如散列,列表,集合和位图等)提供高级支持.它还支持集群,使其在高可用性和可扩展的环境中非常有用. 在本教程中,我们将看到如何安装和配置一个外部Redis服务器,用作在Ubuntu 16.04上运行的PHP应用程序的会话处理程序. 会话处理程序负责存储和检索保存到会话中的数据.默认情况下,PHP使用文件这一点.这对于单个服务器工作得很好,但是由于会话信息被绑定到单个服务器,所以具有一些显着的性能和可扩展性限

通过UBUNTU 16.04去设置SS SERVER

有个BWG的VPS,一时手痒升级到UBUNTU 16.04,结果发现SS不能用了,于是重新配置了一下,配置方法如下: 1,首先安装必须的组件: sudo apt-get install python-gevent python pip 如果你发现apt-get报错的话,说明你还没更新,运行一下更新 sudo apt-get update 2,更新一下PIP(非必要),然后通过pip安装shadowsocks包 pip install --upgrade pip pip install shado

Ubuntu 16.04安装Gufw防火墙(转)

继上一篇文章http://www.cnblogs.com/EasonJim/p/6851241.html讲解的UFW防火墙是没有界面的,下面将介绍在Gufw的GUI配置功能. Ubuntu简化了iptables防火墙,可以安装UFW,即Uncomplicated Firewall (简单的防火墙).UFW是iptables的前端,而Gufw则是UFW的图形界面前端.Gufw自称是世界上最简单的防火墙. Ubuntu默认不开启防火墙. 1.安装 sudo apt-get install gufw