linux防火墙怎么配置?下面是linux中防火墙的基本配置,希望对朋友有所帮助!
服务脚本: /etc/rc.d/init.d/iptables
脚本配置文件:/etc/sysconfig/iptables-config
service iptables {status|start|stop|restart|save}
规则的保存位置:/etc/sysconfig/iptables
首先要创建/etc/sysconfig/iptables然后再启动
若想保存规则 使用命令service iptables save
语法格式:
iptables [-t TABLE] COMMAND CHAIN [CRETIRIA] -j ACTION
-t
raw
mangle
nat
filter:
-t TABLE也可以省略,默认为filter
如果有多个表时,执行顺序依次为raw,mangle,nat,filter
COMMAND:对链,或者对链中的规则进行管理操作
链中规则:
-A 追加一条规则
-I # 插入一条规则 后加数字表示插入为第几条
-R # 替换第几条
-D # 删除第几条规则
链:
-N: 新建一个自定义链
-X: 删除一个自定义的空链
-E:重命名一条自定义链
-F: 清空指定链,如果不指定链,则清空整个表中的所有链
-P: 设定链的默认策略
-Z: 置零 (每条规则,包括默认策略都有两个计数器:一个是被本规则匹配到的所有数据包的个数;另一个是被本规则匹配到的所有数据包的大小之和);
查看:
-L: 查看
-v
-vv
-vvv
--line-numbers
-x:计数器的精确值(不做单位换算)
-n: 显示数字地址(不对地址和端口做反解)
匹配条件:
通用匹配
-s 指定源IP或者源网络
-d 指定目标IP或者目标网络
网络地址和目标地址前均可用“!”取反
-p {icmp|tcp|udp}指明协议类型
-i IN_INTERFACE 数据包的流入接口
-o OUT_INTERFACE 数据包流出的接口
扩展匹配
隐式扩展
-p tcp
--sport PORT[-PORT2] 源端口
--dport PORT[-PORT2] 目标端口
--tcp-flags SYN,ACK,RST,FIN SYN
,前表示要检查的标志位 ,其后为 必须为1的位
--syn --tcp-flags SYN,ACK,RST,FIN SYN 的简写
-p udp
--sport
--dport
-p icmp
--icmp-type
0: echo-reply 响应报文
8: echo-request 请求报文
显式扩展:
netfilter扩展模块引入的扩展,用于扩展匹配条件,通常需要额外专用选项来定义
-m state: 用于实现连接的状态检测
--state
NEW(新发起连接), ESTABLISHED(已建立连接)
RELATED, INVALID(非法的、无法识别的、无效的连接)
-m multiport 同时指定多个端口号,中间用逗号隔开
--source-ports
--destination-ports
--ports
以下用法示例,本机IP:192.168.0.6,外部IP:192.168.0.7
[root@localhost ~]# iptables -L -n 查看已制定规则
[root@localhost ~]# iptables -L -n -t nat 查看nat表
[root@localhost ~]# iptables -t filter -A INPUT -s 192.168.0.7 -p icmp --icmp-type 8 -j DROP #INPUT DROP 必须大写 拒绝192.168.0.7请求ICMP报文
[root@localhost ~]# iptables -L -n --line-numbers 显示行号
[root@localhost ~]# iptables -D INPUT 2 删除INPUT链的第二条规则
[root@localhost ~]# iptables -A INPUT -s 192.168.0.7 -d 192.168.0.6 -p icmp --icmp-type 0 -j DROP #关闭对方的ping回应报文
iptables -A INPUT -s ! 172.16.0.0 -d 172.16.100.1 -p tcp --dport 80 -j DROP 拒绝除172.16.0.0网段的所有主机访问WEB服务
[root@localhost ~]# iptables -F INPUT 清除规则
[root@localhost ~]# iptables -A INPUT -s 0.0.0.0/0 -d 192.168.0.6 -p tcp --dport 22 -j ACCEPT #写所有地址时一定要写掩码
[root@localhost ~]# iptables -A OUTPUT -s 192.168.0.6 -p tcp --sport 22 -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP 把默认策略改为拒绝
[root@localhost ~]# iptables -P OUTPUT DROP
[root@localhost ~]# iptables -A INPUT -s 192.168.0.7 -d 192.168.0.6 -p icmp --icmp-type 8 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -s 192.168.0.6 -d 192.168.0.7 -p icmp --icmp-type 0 -j ACCEPT 让别的主机能ping进来
[root@localhost ~]# iptables -A OUTPUT -s 192.168.0.6 -p icmp --icmp-type 8 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -d 192.168.0.6 -p icmp --icmp-type 0 -j ACCEPT 本机能PING通外边主机
[root@localhost ~]# iptables -A INPUT -d 192.168.0.6 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 允许新建立的和已建立的连接进来
[root@localhost ~]# iptables -A OUTPUT -s 192.168.0.6 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 允许已建立的连接出去
[root@localhost ~]# iptables -A INPUT -d 192.168.0.6 -m state --state NEW,ESTABLISHED -j ACCEPT 不区分协议和端口号
[root@localhost ~]# iptables -A OUTPUT -s 192.168.0.6 -m state --state ESTABLISHED -j ACCEPT
[root@localhost ~]# iptables -A INPUT -d 192.168.0.6 -p tcp -m multiport --destination-ports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT 多个端口合到一块