iptables 防火墙


iptables 文件所在位置: /etc/sysconfig/iptables

 

开启/关闭iptables :  

 

1、service iptables start/stop

2、setup-firewall configure-enabled/disabled

 

开启服务器80端口:

 

# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

 

同时开启多个端口:

 

# iptables -I INPUT -p tcp -m multiport --dport 20,21,22,25,53,80,110,143,3306 -j ACCEPT

 

 

拒绝所有端口访问:

 

# iptables -A INPUT -p tcp -j REJECT

 

 iptables策略规则是由上而下

 

iptables配置文件示例:

 

# vi /etc/sysconfig/iptables

 

*filter

:INPUT ACCEPT [8:941]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -p tcp -m  multiport --dport 20,21,22,25,53,80,110,143,3306 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-port-unreachable

-A OUTPUT -j ACCEPT

COMMIT

 

:wq

 

 

iptables 开启scp服务:(默认是不开启的)
 
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 
注:iptables中允许的服务(端口)要写在拒绝的上面,可进/etc/sysconfig/iptables里自行调整。
 
 

- A:在指定链的末尾添加一条新的规则

- D:删除指定链中的某一条规则

- I:在指定链中插入一条新规则(默认在开头)

- R:修改、替换规则

- L:查看指定链中的所有规则

- F:清空指定链中的所有规则

- N:新建一条用户自定义的规则链

- X:删除指定表中用户自定义的规则链

- P:设置指定链的默认策略

- n:使用数字形式显示输出结果

- v:查看规则列表时显示详细信息

- V:查看iptables命令工具的版本信息

- h:查看命令帮助信息


--line-numbers:查看规则表时,显示规则在链中的顺序号

 


规则表: filter表(过滤)            nat表(nat)


         mangle表(标记)            raw表(跟踪)

 


规则链: INPUT链 、   OUTPUT链  、  FORWARD链

 
         PREROUTING链  、  POSTROUTING链

 


# iptables - t filter - A INPUT - p tcp - j ACCEPT

# iptables - I INPUT - p udp - j ACCEPT (默认为filter表)

# iptables - I INPUT 2 - p icmp - j ACCEPT (作为第2条规则)

 

查看filter表INPUT链中的所有规则,并显示顺序号:

# iptables - L INPUT --line-numbers

 

查看filter表各链中所有规则的详细信息(以数字形式):

# iptables -vnL

 

删除nat表INPUT链中的第2条规则:

# iptables -t nat -D INPUT 2


清空mangle表各链中的所有规则:

iptables - t mangle - F


ACCEPT (允许)         DROP(丢弃)        REJECT(拒绝)

 

将filter表中FORWARD规则链的默认策略设为DROP:

# iptables - t filter - P(大写)  FORWARD DROP

 

查看iptables命令中关于icmp协议的帮助信息:

# iptables - p icmp - h


在raw表中新增一条自定义规则链TCP_PACKETS:

# iptables  - t raw  - N  TCP_PACKETS

 


# iptables - t raw - L

# ipatbles - t raw - X

# iptables - I INPUT - p icmp - j REJECT


# iptables - A FORWARD - p ! icmp - j ACCEPT             (!意为除了)


# iptables - A FORWARD - s 192.168.1.11 - j REJECT

# iptables - A FORWARD - s 192.168.0.0/24 - j REJECT

 

- i  eth0   (进的端口)

- o  eth1   (出的端口)

 


# iptables - A INPUT - i eth1 - s 192.168.0.0/16  - j DROP


设置在2个小时后删除规则:


# at now + 2 hours

> iptables - D INPUT 1

 

--sport   源端口           --dport目标端口

 

 

 

 

允许管理员从202.13.0.0/16网段使用ssh方式远程登录:


# iptables - A INPUT - p tcp --dport 22 - S 202.13.0.0/16 - j ACCEPT

 

允许本机开放从TCP端口20~1024提供的应用服务:

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

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

 


# iptables - A FORWARD - s 192.168.0.0/24 - p udp --dport 53 - j ACCEPT  (53为DNS端口)

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

 


拒绝从外网接口(eth1)直接访问防火墙本机的数据包,但是允许响应防火墙TCP请求的数据包进入:


# iptables - p INPUT DROP

# iptables - I INPUT - i eth1 - p tcp --tcp-flags SYN,RST,ACK  SYN  - j REJECT

# iptables - I INPUT - i eth1 - p tcp --tcp-flags ! --syn - j ACCEPT

 

禁止其他主机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

 

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


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


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

 

# iptables - A FORWARD - m state --state NEW - p tcp ! --syn - j DROP


# ipatbles - A INPUT - p tcp - m state --state RELATED,ESTABLISHED - j ACCEPT

 

LOG是在/var/log/messages中记录日志信息,然后将数据包给下一个规则:

# iptables - I INPUT - p tcp --dprot 22 - j LOG


# iptables - R INPUT 1 tcp --dport 22 - m limit --limit 3/minute  --limit-burst 8 - j LOG


# iptables - t filter - N mylan1

# iptables - A FORWARD -s 192.168.1.0/24  - j mylan1

# iptables - A mylan1 - p icmp - j DROP

 


iptables-save(保存)             iptables-restore(恢复)

 


# iptables-save  > /etc/sysconfig/iptables

# service iptables restart

# iptables-restore < /etc/sysconfig/iptables

 

 

开启路由转发功能:


# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1


# sysctl - p