Linux下iptables防火墙配置详解

iptables命令及参数介绍

配置Filter表防火墙

配置NAT表防火墙

1. iptables命令及参数介绍

iptables常用命令:

iptables -A 将一个规则添加到链末尾

iptables -D 将指定的链中删除规则

iptables -F 将指定的链中删除所有规则

iptables -I 将在指定链的指定编号位置插入一个规则

iptables -L 列出指定链中所有规则

iptables -t nat -L 列出所有NAT链中所有规则

iptables -N 建立用户定义链

iptables -X 删除用户定义链

iptables -P 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)

常见设置参数介绍:

--dport 指定目标TCP/IP端口 如 –dport 80

--sport 指定源TCP/IP端口 如 –sport 80

-p tcp 指定协议为tcp

-p icmp 指定协议为ICMP

-p udp 指定协议为UDP

-j DROP 拒绝

-j ACCEPT 允许

-j REJECT 拒绝并向发出消息的计算机发一个消息

-j LOG 在/var/log/messages中登记分组匹配的记录

-m mac –mac 绑定MAC地址

-m limit –limit 1/s 1/m 设置时间策列

-s 10.10.0.0或10.10.0.0/16 指定源地址或地址段

-d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段

-s ! 10.10.0.0 指定源地址以外的

iptables配置文件

配置文件位置: /etc/sysconfig/iptables

iptables服务命令

-- 启动服务 # /etc/init.d/iptables start # service iptables start -- 停止服务 # /etc/init.d/iptables stop # service iptables stop -- 重启服务 # /etc/init.d/iptables restart # service iptables restart -- 保存设置 # /etc/init.d/iptables save # service iptables save 2. 配置Filter表防火墙

查看iptables的配置信息

# iptables -L -n

清除原有防火墙规则

清除预设表filter中的所有规则链的规则

# iptables -F

清除预设表filter中使用者自定链中的规则

# iptables -X

保存防火墙设置

# /etc/init.d/iptables save 或 # service iptables save

设定预设规则

-- 请求接入包丢弃 [root@home ~]# iptables -p INPUT DROP -- 接受响应数据包 [root@home ~]# iptables -p OUTPUT ACCEPT -- 转发数据包丢弃 [root@home ~]# iptables -p FORWARD DROP

添加防火墙规则

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链。

开启SSH服务端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT [root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

注:如果在预设设置把OUTPUT设置成DROP策略的话,就需要设置OUTPUT规则,否则无法进行SSH连接。

开启Web服务端口

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT [root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

开启邮件服务的25、110端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT [root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

开启FTP服务的21端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT [root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

开启DNS服务的53端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

设置icmp服务

[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话) [root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)

允许loopback

不然会导致DNS无法正常关闭等问题

[root@tp ~]# IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP) [root@tp ~]# IPTABLES -A OUTPUT -o lo -p all -j ACCEPT (如果是OUTPUT DROP)

减少不安全的端口连接

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP [root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP

说明:有些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会。此外,其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止。

只允许某台主机或某个网段进行SSH连接

只允许192.168.0.3的机器进行SSH连接

[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果允许或限制一段IP地址可用192.168.0.0/24表示192.168.0.1-255端的所有IP, 24表示子网掩码数。

[root@tp ~]# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

注意:指定某个主机或者某个网段进行SSH连接,需要在iptables配置文件中的-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
删除,因为它表示所有地址都可以登陆.

如果只允许除了192.168.0.3的主机外都能进行SSH连接

[root@tp ~]# iptables -A INPUT -s ! 192.168.0.3 -p tcp --dport 22 -j ACCEPT

开启转发功能

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13243.html