Linux防火墙:iptables禁IP与解封IP常用命令

By | 2020年12月5日

 2014年8月9日 上午4:34  作者:欲思  分类:Web服务器  35.2K℃ 

在Linux服务器被攻击的时候,有的时候会有几个主力IP。如果能拒绝掉这几个IP的攻击的话,会大大减轻服务器的压力,说不定服务器就能恢复正常了。

在Linux下封停IP,有封杀网段和封杀单个IP两种形式。一般来说,现在的攻击者不会使用一个网段的IP来攻击(太招摇了),IP一般都是散列的。于是下面就详细说明一下封杀单个IP的命令,和解封单个IP的命令。

Linux防火墙:iptables禁IP与解封IP常用命令

在Linux下,使用ipteables来维护IP规则表。要封停或者是解封IP,其实就是在IP规则表中对入站部分的规则进行添加操作。

要封停一个IP,使用下面这条命令:

iptables -I INPUT -s ***.***.***.*** -j DROP

要解封一个IP,使用下面这条命令:

iptables -D INPUT -s ***.***.***.*** -j DROP

参数-I是表示Insert(添加),-D表示Delete(删除)。后面跟的是规则,INPUT表示入站,***.***.***.***表示要封停的IP,DROP表示放弃连接。

此外,还可以使用下面的命令来查看当前的IP规则表:

iptables -list

比如现在要将123.44.55.66这个IP封杀,就输入:

iptables -I INPUT -s 123.44.55.66 -j DROP

要解封则将-I换成-D即可,前提是iptables已经有这条记录。如果要想清空封掉的IP地址,可以输入:

iptables -flush

要添加IP段到封停列表中,使用下面的命令:

iptables -I INPUT -s 121.0.0.0/8 -j DROP

其实也就是将单个IP封停的IP部分换成了Linux的IP段表达式。关于IP段表达式网上有很多详细解说的,这里就不提了。

相信有了iptables的帮助,解决小的DDoS之类的攻击也不在话下!

附:其他常用的命令

编辑 iptables 文件

vi /etc/sysconfig/iptables

关闭/开启/重启防火墙

/etc/init.d/iptables stop #start 开启 #restart 重启

验证一下是否规则都已经生效:

iptables -L

保存并重启iptables

/etc/rc.d/init.d/iptables saveservice iptables restart

linux下实用iptables封ip段的一些常见命令:

封单个IP的命令是:

iptables -I INPUT -s 211.1.0.0 -j DROP

封IP段的命令是:

iptables -I INPUT -s 211.1.0.0/16 -j DROPiptables -I INPUT -s 211.2.0.0/16 -j DROPiptables -I INPUT -s 211.3.0.0/16 -j DROP

封整个段的命令是:

 iptables -I INPUT -s 211.0.0.0/8 -j DROP

封几个段的命令是:

iptables -I INPUT -s 61.37.80.0/24 -j DROPiptables -I INPUT -s 61.37.81.0/24 -j DROP

想在服务器启动自运行的话有三个方法:

1、把它加到/etc/rc.local中

2、iptables-save >;/etc/sysconfig/iptables可以把你当前的iptables规则放到/etc/sysconfig/iptables中,系统启动iptables时自动执行。

3、service iptables save 也可以把你当前的iptables规则放/etc/sysconfig/iptables中,系统启动iptables时自动执行。

后两种更好此,一般iptables服务会在network服务之前启来,更安全。

解封的话:
iptables -D INPUT -s IP地址 -j REJECT
iptables -F 全清掉了

Linux防火墙Iptable如何设置只允许某个ip访问80端口,只允许特定ip访问某端口?参考下面命令,只允许46.166.150.22访问本机的80端口。如果要设置其他ip或端口,改改即可。

iptables -I INPUT -p TCP –dport 80 -j DROPiptables -I INPUT -s 46.166.150.22 -p TCP –dport 80 -j ACCEPT

在root用户下执行上面2行命令后,重启iptables, service iptables restart

查看iptables是否生效:

[root@www.xxx.com]# iptables -LChain INPUT (policy ACCEPT)target           prot opt source               destinationACCEPT     tcp  –  46.166.150.22    anywhere            tcp dpt:httpDROP         tcp  –  anywhere             anywhere            tcp dpt:http Chain FORWARD (policy ACCEPT)target     prot opt source               destination Chain OUTPUT (policy ACCEPT)target     prot opt source               destination

上面命令是针对整个服务器(全部ip)禁止80端口,如果只是需要禁止服务器上某个ip地址的80端口,怎么办?

下面的命令是只允许来自174.140.3.190的ip访问服务器上216.99.1.216的80端口

iptables -A FORWARD -s 174.140.3.190 -d 216.99.1.216 -p tcp -m tcp –dport 80 -j ACCEPTiptables -A FORWARD -d 216.99.1.216 -p tcp -m tcp –dport 80 -j DROP

更多iptables参考命令如下:

1.先备份iptables

# cp /etc/sysconfig/iptables /var/tmp

需要开80端口,指定IP和局域网

下面三行的意思:

先关闭所有的80端口

开启ip段192.168.1.0/24端的80口

开启ip段211.123.16.123/24端ip段的80口

# iptables -I INPUT -p tcp –dport 80 -j DROP
# iptables -I INPUT -s 192.168.1.0/24 -p tcp –dport 80 -j ACCEPT
# iptables -I INPUT -s 211.123.16.123/24 -p tcp –dport 80 -j ACCEPT

以上是临时设置。

2.然后保存iptables

# service iptables save

3.重启防火墙

#service iptables restart

===============以下是转载================================================

以下是端口,先全部封再开某些的IP

iptables -I INPUT -p tcp –dport 9889 -j DROP
iptables -I INPUT -s 192.168.1.0/24 -p tcp –dport 9889 -j ACCEPT

如果用了NAT转发记得配合以下才能生效

iptables -I FORWARD -p tcp –dport 80 -j DROP
iptables -I FORWARD -s 192.168.1.0/24 -p tcp –dport 80 -j ACCEPT

常用的IPTABLES规则如下:
只能收发邮件,别的都关闭

iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -j DROP
iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -p udp –dport 53 -j ACCEPT
iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -p tcp –dport 25 -j ACCEPT
iptables -I Filter -m mac –mac-source 00:0F:EA:25:51:37 -p tcp –dport 110 -j ACCEPT

IPSEC NAT 策略

iptables -I PFWanPriv -d 192.168.100.2 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp –dport 80 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.100.2:80 
iptables -t nat -A PREROUTING -p tcp –dport 1723 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.100.2:1723 
iptables -t nat -A PREROUTING -p udp –dport 1723 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.100.2:1723 
iptables -t nat -A PREROUTING -p udp –dport 500 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.100.2:500 
iptables -t nat -A PREROUTING -p udp –dport 4500 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.100.2:4500 

FTP服务器的NAT

iptables -I PFWanPriv -p tcp –dport 21 -d 192.168.1.22 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp –dport 21 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.1.22:21

只允许访问指定网址

iptables -A Filter -p udp –dport 53 -j ACCEPTiptables -A Filter -p tcp –dport 53 -j ACCEPT
iptables -A Filter -d www.ctohome.com -j ACCEPT
iptables -A Filter -d www.guowaivps.com -j ACCEPT
iptables -A Filter -j DROP

开放一个IP的一些端口,其它都封闭

iptables -A Filter -p tcp –dport 80 -s 192.168.1.22 -d www.pconline.com.cn -j ACCEPT
iptables -A Filter -p tcp –dport 25 -s 192.168.1.22 -j ACCEPTiptables -A Filter -p tcp –dport 109 -s 192.168.1.22 -j ACCEPT
iptables -A Filter -p tcp –dport 110 -s 192.168.1.22 -j ACCEPT
iptables -A Filter -p tcp –dport 53 -j ACCEPTiptables -A Filter -p udp –dport 53 -j ACCEPTiptables -A Filter -j DROP

多个端口

iptables -A Filter -p tcp -m multiport –destination-port 22,53,80,110 -s 192.168.20.3 -j REJECT

连续端口

iptables -A Filter -p tcp -m multiport –source-port 22,53,80,110 -s 192.168.20.3 -j REJECT 
iptables -A Filter -p tcp –source-port 2:80 -s 192.168.20.3 -j REJECT

指定时间上网

iptables -A Filter -s 10.10.10.253 -m time –timestart 6:00 –timestop 11:00 –days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
iptables -A Filter -m time –timestart 12:00 –timestop 13:00 –days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j ACCEPT
iptables -A Filter -m time –timestart 17:30 –timestop 8:30 –days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j ACCEPT

禁止多个端口服务

iptables -A Filter -m multiport -p tcp –dport 21,23,80 -j ACCEPT

将WAN 口NAT到PC

iptables -t nat -A PREROUTING -i $INTERNET_IF -d $INTERNET_ADDR -j DNAT –to-destination 192.168.0.1

将WAN口8000端口NAT到192。168。100。200的80端口

iptables -t nat -A PREROUTING -p tcp –dport 8000 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.1.22:80

MAIL服务器要转的端口

iptables -t nat -A PREROUTING -p tcp –dport 110 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.1.22:110
iptables -t nat -A PREROUTING -p tcp –dport 25 -d $INTERNET_ADDR -j DNAT –to-destination 192.168.1.22:25

只允许PING 202。96。134。133,别的服务都禁止

iptables -A Filter -p icmp -s 192.168.1.22 -d 202.96.134.133 -j ACCEPT
iptables -A Filter -j DROP

禁用BT配置

iptables –A Filter –p tcp –dport 6000:20000 –j DROP

禁用QQ防火墙配置

iptables -A Filter -p udp –dport ! 53 -j DROPiptables -A Filter -d 218.17.209.0/24 -j DROP
iptables -A Filter -d 218.18.95.0/24 -j DROPiptables -A Filter -d 219.133.40.177 -j DROP

基于MAC,只能收发邮件,其它都拒绝

iptables -I Filter -m mac –mac-source 00:0A:EB:97:79:A1 -j DROP
iptables -I Filter -m mac –mac-source 00:0A:EB:97:79:A1 -p tcp –dport 25 -j ACCEPT
iptables -I Filter -m mac –mac-source 00:0A:EB:97:79:A1 -p tcp –dport 110 -j ACCEPT

禁用MSN配置

iptables -A Filter -p udp –dport 9 -j DROP
iptables -A Filter -p tcp –dport 1863 -j DROPiptables -A Filter -p tcp –dport 80 -d 207.68.178.238 -j DROP
iptables -A Filter -p tcp –dport 80 -d 207.46.110.0/24 -j DROP

只允许PING 202。96。134。133 其它公网IP都不许PING

iptables -A Filter -p icmp -s 192.168.1.22 -d 202.96.134.133 -j ACCEPT
iptables -A Filter -p icmp -j DROP

禁止某个MAC地址访问internet:

iptables -I Filter -m mac –mac-source 00:20:18:8F:72:F8 -j DROP

禁止某个IP地址的PING:

iptables –A Filter –p icmp –s 192.168.0.1 –j DROP

禁止某个IP地址服务:

iptables –A Filter -p tcp -s 192.168.0.1 –dport 80 -j DROP
iptables –A Filter -p udp -s 192.168.0.1 –dport 53 -j DROP

只允许某些服务,其他都拒绝(2条规则)

iptables -A Filter -p tcp -s 192.168.0.1 –dport 1000 -j ACCEPT
iptables -A Filter -j DROP

禁止某个IP地址的某个端口服务

iptables -A Filter -p tcp -s 10.10.10.253 –dport 80 -j ACCEPT
iptables -A Filter -p tcp -s 10.10.10.253 –dport 80 -j DROP

禁止某个MAC地址的某个端口服务

iptables -I Filter -p tcp -m mac –mac-source 00:20:18:8F:72:F8 –dport 80 -j DROP

禁止某个MAC地址访问internet:

iptables -I Filter -m mac –mac-source 00:11:22:33:44:55 -j DROP

禁止某个IP地址的PING:

iptables –A Filter –p icmp –s 192.168.0.1 –j DROP

注:以上资料收集于网络,暂不知出处,仅用于学习。未经允许不得转载:欲思博客 » Linux防火墙:iptables禁IP与解封IP常用命令

8 thoughts on “Linux防火墙:iptables禁IP与解封IP常用命令

  1. junchol Post author

    linux防火墙iptables封IP,拒绝指定IP和网段的办法

    https://csdnimg.cn/release/blogv2/dist/pc/img/reprint.png long_ge_cool 2016-08-11 10:45:47  https://csdnimg.cn/release/blogv2/dist/pc/img/articleReadEyes.png  27880  https://csdnimg.cn/release/blogv2/dist/pc/img/tobarCollect.png  收藏 3
    分类专栏: linux

    service iptables status可以查看到iptables服务的当前状态
    /etc/init.d/iptables stop
    /etc/init.d/iptables start
    单个IP的命令是
    iptables -I INPUT -s 211.1.0.0 -j DROP
    
    封IP段的命令是
    iptables -I INPUT -s 211.1.0.0/16 -j DROP
    iptables -I INPUT -s 211.2.0.0/16 -j DROP
    iptables -I INPUT -s 211.3.0.0/16 -j DROP
    封整个段的命令是
    iptables -I INPUT -s 211.0.0.0/8 -j DROP
    封几个段的命令是
    iptables -I INPUT -s 61.37.80.0/24 -j DROP
    iptables -I INPUT -s 61.37.81.0/24 -j DROP
    查看iptables列表
    iptables -L
    
    Reply
  2. junchol Post author

    Debian9.5 系统配置持久化iptables规则

    https://csdnimg.cn/release/blogv2/dist/pc/img/reprint.png weixin_30762087 2018-09-27 17:39:00  https://csdnimg.cn/release/blogv2/dist/pc/img/articleReadEyes.png  356  https://csdnimg.cn/release/blogv2/dist/pc/img/tobarCollect.png  收藏 1
    文章标签: 开发工具 网络
    版权

    RedHat和SUSE系列下有比较好用的iptables管理工具,可以像控制服务进程一样来对防火墙进行管理及控制,Debian系发行版默认不开启iptables,
    当然也没有与之相关的能直接管理的工具了。
    正常情况下,我们写入的iptables规则将会在系统重启时消失。即使我们使用iptables-save命令将iptables规则存储到文件,
    在系统重启后也需要执行iptables-restore操作来恢复原有规则。Debian有两种方法可以让系统重启时规则不消失也就是实现持久化iptables规则。

    一、首先我们把我们需要设置的规则写到一个文本文件中,这样的好处是写完所有的规则便于查找排错,不要上来就通过命令添加规则。
    在/etc/目录下新建local/目录,我喜欢把自定义的配置放到/etc/local/目录中便于以后管理,在新建iptables/目录存放规则文件。

    新建ipv4规则rules.v4文件
    root@debian:~# vim.tiny rules.v4

    #清除已有iptables规则
    iptables -F
    iptables -X
    iptables -Z

    #自定义默认策略
    root@debian:~# iptables -P INPUT DROP                
    root@debian:~# iptables -P OUTPUT ACCEPT       
    root@debian:~# iptables -P FORWARD DROP

    #定制各项规则
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -p tcp –dport 22 -j ACCEPT
    iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

    可以根据实际的情况增减.主要是检查规则的先后顺序和命令的格式,没有问题就可以在命令行下逐条执行了,如果需要可以保存下来

    二、方法一实现持久化iptables规则,通过脚本文件。

    1、通过上面的方法已经配置好了iptables,下面我们用iptables-save命令将配置好的iptables的规则保存到/etc/local/iptables/rules.v4.1.save文件

    root@debian:~# iptables-save > /etc/local/iptables/rules.v4.save

    2、查看/etc/local/iptables/rules.v4.save文件的内容
    =====================================================================
    root@debian:~# cat /etc/local/iptables/rules.v4.save
    # Generated by iptables-save v1.6.0 on Thu Sep 27 09:13:42 2018
    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
    -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
    COMMIT
    # Completed on Thu Sep 27 09:13:42 2018
    root@debian:~#
    ======================================================================
    通过上面的显示可以看到filter表中三个链的默认规则设置和定制的各项规则,可以把这个文件当作模板,根据实际情况进行配置。
    这样就可以不用在通过iptables命令把需要设置的每一项都敲一遍,可以用iptables-resotre 命令直接从/etc/local/iptables/rules.v4.save文件
    恢复所有规则,命令如下:
    root@debian:~# iptables-resotre < /etc/local/iptables/rules.v4.save

    3、设置开机启动
    在/etc/network/if-pre-up.d/目录下新建个iptables文件(文件名可以自定义)并添加脚本
    命令如下:
    ===================================================================
    root@debian:~# vim.tiny /etc/network/if-pre-up.d/iptables
    #!/bin/bash
    /sbin/iptables-restore < /etc/local/iptables/rules.v4.save
    ===================================================================
    上面添加的这个脚本文件的意思是在网络接口启动之前执行iptables-restore < /etc/local/iptables/rules.v4.1.save 命令
    启动防火墙规则。

    给这个新添加的文件/etc/network/if-pre-up.d/iptables执行权限

    root@debian:~# chmod +x /etc/network/if-pre-up.d/iptables

    4、重启查看是否开机加载

    root@debian:~# shutdown -r now  

    root@debian:~# iptables -L -n

    三、方法二实现持久化iptables规则,使用iptables-persistent工具

    1、安装iptables-persistent
    root@debian:~# apt install iptables-persistent

    安装的过程中安装软件会询问您是否要保存当前IPv4规则。如下图:
    https://img2018.cnblogs.com/blog/1273933/201809/1273933-20180927172528221-997074113.png
    如果您已经定义了规则,则选择[是]保存即可。
    接下来会提示是否要保存当前IPv6规则。如下图:
    https://img2018.cnblogs.com/blog/1273933/201809/1273933-20180927172553808-956263731.png
    我这里没有用到IPv6选择[否]即可。

    通上面的操作会在/etc目录下生成/iptables目录,并生成rules.v4文件用于存放IPv4规则,如果保存IPv6规则也会生产一个rules.v6文件
    可以通过dpkg-reconfigure iptables-persistent命令从新启动刚才的选项进行配置即可。

    2、iptables-persistent程序的命令是netfilter-persistent 使用的语法如下
    netfilter-persistent 选项(start|stop|restart|reload|flush|save)

    start:启动目录/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的规则
    stop:启动目录/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的规则,暂时不可用,被flush选项取代
    restart:从新启动目录/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的规则
    reload:从新加载动目录/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的规则
    flush:清楚防火墙的规则,但是不会清空/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的规则
    save:保持防火墙的规则,会清空/etc/iptables/下rules.v4和rules.v6(如果有)文件里面的规则,并从新写入防火墙现有的规则

    3、通过netfilter-persistent save命令就可以保持防火墙当前的配置规则,系统重启后也不会丢失。

    其实这个程序的作用就是将防火墙现有的规则保存下来,开机以后在从新加载,和第一种方法类似的,只是不用自己配置脚本,
    我们可以查看/etc/iptables/下rules.v4文件的内容,如下:
    =====================================================================
    root@debian:~# cat /etc/iptables/rules.v4
    # Generated by iptables-save v1.6.0 on Thu Sep 27 16:39:54 2018
    *filter
    :INPUT ACCEPT [186:19951]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [71:11164]
    -A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp –dport 23 -j ACCEPT
    -A INPUT -p tcp -m tcp –dport 24 -j ACCEPT
    COMMIT
    # Completed on Thu Sep 27 16:39:54 2018
    ===================================================================
    可以看到和通过命令iptables-save保存的格式一样,以后我们也可以直接配置这个文件,在里面添加我们需要的规则,并通过命令从新加载即可。

    可以通过systemctl查看到netfilter-persistent 服务是开机自启动的。

    Reply
  3. junchol Post author

    systemctl status netfilter-persistent.service #debian10 iptable执行情况查询

    Reply
  4. junchol Post author

    Debian Iptables 配置教程

    https://csdnimg.cn/release/blogv2/dist/pc/img/original.png qq_21439971 2016-05-28 14:15:26  https://csdnimg.cn/release/blogv2/dist/pc/img/articleReadEyes.png  10048  https://csdnimg.cn/release/blogv2/dist/pc/img/tobarCollect.png  收藏 3
    版权

    服务器通常会安装防火墙,Iptables为比较常用的免费防火墙,Iptables能够提供数据包过滤,网络地址转换(NAT)等功能.在Debian上手工配置Iptables的资料比较少,本文做一个详细的介绍.
    
    第一步,首先确定你的系统已经安装Iptables.打开SSH终端,输入
    whereis iptables
    如果能看到如下类似信息,说明你已经安装了iptables
    iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz
    如果不是这个提示,或者没有任何提示,那你的Debian上可能没有安装iptables
    请使用如下命令安装:
    apt-get install iptables
    
    第二步:查看Iptables目前的配置信息
    可以使用如下命令查看
    iptables -L
    如果你是第一次安装配置iptables,你可能会看到如下结果:
    
    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
    配置Iptables,我们先把一个基本的Iptables的规则文章保存起来,这个规则文章做为测试用
    vim /etc/iptables.test.rules
    然后在这个文章中输入如下规则内容。
    
    *filter
    # 允许回环网卡
    -A INPUT -i lo -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    
    # 允许已建立的或相关连的通行
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # Allows all outbound traffic
    # 允许所有本机向外的访问(选这个的话就把其它OUTPUT规则删除即可)
    #-A OUTPUT -j ACCEPT
    
    # 允许ssh:22 http:80 https:443 ftp:21(20000-20500)端口进入访问
    -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
    -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
    #-A INPUT -m state --state NEW -p tcp -m multiport --dports 21,20000:20500 -j ACCEPT
    #-A INPUT -p tcp -s 0/0 --sport 20000:20500 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
    
    #允许本地DNS(udp 53端口)和ntp(udp 123端口)访问外网
    -A OUTPUT -p udp -d 8.8.8.8 --dport 53 -j ACCEPT
    -A OUTPUT -p udp -d 8.8.4.4 --dport 53 -j ACCEPT
    #-A OUTPUT -p udp --dport 123 -j ACCEPT
    
    # 允许PING(不允许的话把下面那个删了就可以)
    -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
    
    #记录接收数据包被拒绝(log-level=7)的日志,最高记录频率为5条/分钟,日志可通过dmesg或syslog查看
    #-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
    
    # 禁止其它未允许的规则访问:
    -A OUTPUT -p udp -j REJECT --reject-with icmp-port-unreachable
    -A INPUT -j REJECT --reject-with icmp-port-unreachable
    -A FORWARD -j REJECT --reject-with icmp-port-unreachable
    COMMIT
    保存本文件,使之生效,注意,iptables不需要重启,加载一次规则就成:
    iptables-restore < /etc/iptables.test.rules
    
    第四步:保存生效的配置,让系统重启的时候自动加载有效配置
    编辑创建如下文件:
    vim /etc/network/if-pre-up.d/iptables
    添加如下内容:
    #!/bin/bash
    /sbin/iptables-restore < /etc/iptables.test.rules
    最后,设置可执行仅限
    chmod +x /etc/network/if-pre-up.d/iptables
    
    详解:
    :INPUT ACCEPT [0:0]
    # 该规则表示INPUT(进)表默认策略是ACCEPT
    :FORWARD ACCEPT [0:0]
    # 该规则表示FORWARD(转)表默认策略是ACCEPT
    :OUTPUT ACCEPT [0:0]
    # 该规则表示OUTPUT(出)表默认策略是ACCEPT
    
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # 意思是允许进入的数据包只能是刚刚我发出去的数据包的回应,ESTABLISHED:已建立的链接状态。RELATED:该数据包与本机发出的数据包有关。
    
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    # 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。
    #REJECT 是用来返回一个错误的包来回应匹配包,其他的等价于DROP,所以它是一个拒绝TARGET,在规则的结束。这个TARGET仅仅用在INPUT,FORWARD和OUTPUT链和用户自定义的链,下列选项是用来定义返回错误的结果的:
    icmp-host-unreachable
    icmp-port-unreachable
    
    -m state --state <状态> 有数种状态,状态有:  INVALID:无效的封包,例如数据破损的封包状态  ESTABLISHED:已经联机成功的联机状态;  NEW:想要新建立联机的封包状态;  RELATED:这个最常用!表示这个封包是与我们主机发送出去的封包有关, 可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定,因为设定了他之后,只要未来由本机发送出去的封包,即使我们没有设定封包的 INPUT 规则,该有关的封包还是可以进入我们主机, 可以简化相当多的设定规则
    
    第五:其它
    

    如果你想设置某ip段可以访问所有服务,你需要在iptables.test.rules文件中加入-A

     INPUT 
    -m iprange --src-range 
    192.168.1.1
    -192.168.1.199 -j ACCEPT,然后从第三步再设置一次。
    
    Reply
  5. junchol Post author

    之前写过一篇文章,记录如何配置甲骨文的CentOS 7 系统防火墙(firewalld和iptables)。但是改成Ubuntu系统后,启用UFW防火墙后,发现重启系统后,ufw会变成未激活状态(inavtive),设置的iptables也恢复成了默认状态。下面介绍一下大佬们总结的几种解决办法。

    一 甲骨文控制台开放端口

    不管哪种办法,先在甲骨文网页控制台开放端口是基本操作。这里复制一下之前的内容。
    登陆Oracle Cloud网页后台,进行设置
    进入“实例”,点击“实例信息”下的“虚拟云网络”右侧类似“VirtualCloudNetwork-2019****-****”的按钮并进入;
    在“(根)区间中的子网”下,如果存在多个类似“公共子网 pbOp:***-**-1 ”的项目列表,就随便点进去一个
    在“安全列表”下,点击并进入“Default Security List for VirtualCloudNetwork-2019****-****”。
    编辑“入站规则”下“目的地端口范围”为22那条规则,或者参照这条规则新建也可以。
    将“目的地端口范围”下的“22”改为“22,80,443”,然后“保存更改”即可。 系统会自动根据添加的IP生成新的两条规则。
    注意:每个端口或范围间隔需要英文逗号;如果需要增加UDP端口,就在“IP 协议 ”下选择“UDP”。

    二 大佬们的几种方法

    2.1 彻底禁用防火墙

    简单粗暴,能用就行。不太推荐。

    2.1.1 直接删除iptables规则

    sudo rm -rf /etc/iptables && reboot
    

    2.1.2 开放所有端口

    sudo iptables -P INPUT ACCEPT
    sudo iptables -P FORWARD ACCEPT
    sudo iptables -P OUTPUT ACCEPT
    sudo iptables -F
    sudo apt-get purge netfilter-persistent
    reboot
    

    2.2 使用iptables开放端口

    这个大佬使用iptalbes开放了必要的端口,可以用。

    sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 8888 -j ACCEPT 
    sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
    sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT 
    sudo iptables-save
    sudo apt-get update
    sudo apt-get install iptables-persistent -y
    sudo netfilter-persistent save
    sudo netfilter-persistent reload
    

    三 如何正确使用UFW

    首先理解UFW只是iptables的配置工具,所以想用UFW就不要把iptables删除或禁用,放着不管就好了。但问题是,就如开头所说,重启会使配置失效。下面来说一下正确使用UFW的流程。

    3.1 安装相关软件包

    sudo apt-get install iptables-persistent netfilter-persistent ufw
    

    3.2 修改UFW启动配置文件

    sudo vi /lib/systemd/system/ufw.service
    

    增加一行“After=netfilter-persistent.service”到[Unit]段最后,改成这个样子:

    [Unit]
    Description=Uncomplicated firewall
    Documentation=man:ufw(8)
    DefaultDependencies=no
    Before=network.target
    After=netfilter-persistent.service
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/lib/ufw/ufw-init start quiet
    ExecStop=/lib/ufw/ufw-init stop
    
    [Install]
    WantedBy=multi-user.target
    

    重启系统。

    3.3 正常配置UFW防火墙

    按常规方式开放22,80,443端口即可。

    sudo ufw reset
    
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
    sudo ufw allow ssh
    sudo ufw allow http
    sudo ufw allow https
    
    sudo ufw enable
    

    这样应该就可以了。

    Reply
  6. davidoff
    iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT
    iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
    iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT
    
    netfilter-persistent save
    netfilter-persistent start
    
    
    
    # oracle 规则设定
    
    Reply
  7. junchol Post author

    ip6table

    -A INPUT -p tcp -m tcp –dport 3306 -j DROP
    -A INPUT -p tcp -m tcp –dport 33060 -j DROP
    -A INPUT -p tcp -m tcp –dport 350 -j DROP
    -A INPUT -p tcp -m tcp –dport 32490 -j DROP
    -A INPUT -p tcp -m tcp –dport 6379 -j DROP

    Reply
    1. junchol Post author
      ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
      
      ip6tables -I INPUT -p ipv6-icmp -j ACCEPT
      
      Reply

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注