防火墙的配置都大同小异,主要明白过滤原理,记住写的规格, 就可以, 以下是在网上看到的文章适当的添加和修改过的。 



防火墙处理数据包的三种方式:

ACCEPT允许数据包通过

DROP直接丢弃数据包,不给任何回应信息

REJECT拒绝数据包通过,必要时会给数据发送端一个响应的信息。

Iptables防火墙规则的导入和导出:

Iptables-save   //导出(备份)

Iptables-restore //导入(还原)

Service iptables save //保存配置文件

Iptables防火墙常用的策略:

1. 拒绝进入防火墙的所有ICMP协议数据包

iptables -A INPUT -p icmp -j REJECT

2. 允许防火墙转发除ICMP协议以外的所有数据包

iptables -A FORWARD -p ! icmp -j ACCEPT

(“!”将条件取反)

3. 拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据

iptables -A FORWARD -s 192.168.1.11 -j REJECT

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

4.  丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包

iptables -A INPUT -i eth1  -j DROP

5.  只允许管理员从192.168.1.114使用SSH远程登录防火墙主机。

iptables -A INPUT -p tcp --dport 22  -s 192.168.1.114 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

6. 允许本机开放从TCP端口20-1024提供的应用服务。

iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

7. 允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。

iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT

iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

8. 禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机

iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP

iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT

iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT


注意: icmp 的类型简写:

        8 表示 回响  :指 echo-reply

        0 表示ping : 指 echo-request,1 是允许


10.  禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包

iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP

11.  允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280

iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT

(“-m multiport –dport”来指定目的端口及范围)

12.  禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包。

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

(“-m –iprange –src-range”指定IP范围)

13. 开放web服务(80)、DNS服务(53)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT

iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

14.开放FTP服务(20、21)

iptables -A INPUT -p tcp -m multiport --destination-port 20,21 -j ACCEPT

iptables -A OUTPUT -p tcp -m multiport --source-port 20,21 -j ACCEPT

( /etc/vsftpd/vsftpd.conf pasv_enable=NO)

15.开放vpn服务

iptables -A INPUT -p tcp -m multiport --destination-port 47,1723 -j ACCEPT

iptables -A INPUT -p gre -j ACCEPT

iptables -A OUTPUT -p tcp -m multiport --source-port 47,1723 -j ACCEPT

iptables -A OUTPUT -p gre -j ACCEPT

16. 开放DHCP服务

iptables -A INPUT -p udp -m multiport --destination-port 67,68 -j ACCEPT

iptables -A INPUT -p udp -m multiport --source-port 67,68 -j ACCEPT

17. 开放mail服务

iptables -A INPUT -p tcp -m multiport --destination-port 25,110,143 -j ACCEPT

iptables -A OUTPUT -p tcp -m multiport --source-port 25,110,143 -j ACCEPT

18. 开放smb服务

iptables -A INPUT -p tcp -m multiport --destination-port 139,445 -j ACCEPT

iptables -A OUTPUT -p tcp -m multiport --source-port 139,445 -j ACCEPT

19.squild 代理

iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128

( squid.conf

visible_hostname proxy

http_port 3128

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

http_access allow all )


20  允许loopback (不然会导致dns 无法正常关闭等问题)

iptables -A INPUT -i lo -p all -j ACCEPT

iptables -A output -I lo -p all -j ACCEPT


21 ,关于iptables 限制流量的用

iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

处理ip 碎片数量,防止攻击,允许每秒100个

iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT   

设置icmp 包过滤,允许每秒1个包,限制触发条件是10个包,

iptables -A FORWARD -s 192.168.10.1 -m limit --limit 60/s -j ACCEPT 

限制某个ip 的速度