linux防火墙

原创
2017/01/16 16:42
阅读数 232
AI总结

一、 iptables命令

  1. 启用停止防火墙:service iptables start/stop/restart
  2. 列出防火墙相关规则:iptables [-t tables] [-L] [-nv] [--line-numbers]
    -t :后面接 table ,例如 nat 或 filter ,若省略此项目,则使用默认的 filter
    -L :列出目前的 table 的规则
    -n :不进行 IP 与 HOSTNAME 的反查,显示讯息的速度会快很多!
    -v :列出更多的信息,包括通过该规则的封包总位数、相关的网络接口等
    --line-numbers:是否显示行数
    实例解释:
    输入图片说明
  • Chain INPUT (policy ACCEPT):policy ACCEPT代表这条chain链默认是放行
  • target:代表进行的动作, ACCEPT 是放行,而 REJECT 则是拒绝,此外,尚有 DROP (丢弃) 的项目!
  • prot:代表使用的封包协议,主要有 tcp, udp 及 icmp 三种封包格式;
  • opt:额外的选项说明
  • source :代表此规则是针对哪个『来源 IP』进行限制?
  • destination :代表此规则是针对哪个『目标 IP』进行限制?
    想要查看详细的规则定义,参考命令:iptables-save
  1. 查看规则的详细定义:iptables-save [-t table],此命令内容跟防火墙配置文件/etc/sysconfig/iptables类似
    -t :可以仅针对某些表格来输出,例如仅针对 nat 或 filter 等等,默认为filter表
    实例解释,查看filter表即可:
    输入图片说明
  • *filter:星号开头的指的是表格,这里为 filter
  • :INPUT ACCEPT [0:0]:冒号开头的指的是链,三条内建的链,三条内建链的政策都是 ACCEPT 啰!
  • -A INPUT -p icmp -j ACCEPT:开启ping功能
  • -A INPUT -i lo -j ACCEPT:本机任何端口都开放,-i lo指的就是由lo适配卡进来的封包!
  • -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT:开启ssh功能
  1. 删除防火墙所有规则:iptables [-t tables] [-FXZ]
    -F :清除所有的已订定的规则
    -X :杀掉所有使用者 "自定义" 的 chain (应该说的是 tables )啰
    -Z :将所有的 chain 的计数与流量统计都归零
    由于这三个指令会将本机防火墙的所有规则都清除,但却不会改变预设政策 (policy) , 所以如果你不是在本机下达这三行指令时,很可能你会被自己挡在家门外 (若 INPUT 设定为 DROP 时),所以一定要小心!
  2. 定义chain链的默认规则:iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
    -P:定义政策( Policy )。注意,这个 P 为大写啊!
    ACCEPT:该封包可接受
    DROP:该封包直接丢弃,不会让 client 端知道为何被丢弃。
  3. 配置具体的防火墙规则:iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网域] [-d 目标IP/网域] -j [ACCEPT|DROP|REJECT|LOG]
    -AI 链名:针对某的链进行规则的 "插入" 或 "累加"
    -A:新增加一条规则,该规则增加在原本规则的最后面。例如原本已经有四条规则,使用 -A 就可以加上第五条规则!
    -I:插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则。例如原本有四条规则,使用 -I 则该规则变成第一条,而原本四条变成 2~5 号
    链:有 INPUT, OUTPUT, FORWARD 等,此链名称又与 -io 有关,请看底下。
    -io 网络接口:设定封包进出的接口规范
    -i:封包所进入的那个网络接口,例如 eth0, lo 等接口。需与 INPUT 链配合;
    -o:封包所传出的那个网络接口,需与 OUTPUT 链配合;
    -p 协定:设定此规则适用于哪种封包格式主要的封包格式有: tcp, udp, icmp 及 all 。
    -s 来源 IP/网域:设定此规则之封包的来源项目,可指定单纯的 IP 或包括网域,例如:IP:192.168.0.100,网域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。若规范为"不许"时,则加上 ! 即可,例如:-s ! 192.168.100.0/24 表示不许 192.168.100.0/24 之封包来源;
    -d 目标 IP/网域:同 -s ,只不过这里指的是目标的 IP 或网域。
    -j :后面接动作,主要的动作有接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)及记录(LOG)

参考鸟哥的linux:规则 防火墙 iptables input accept

二、配置防护墙步骤
防火墙配置,除了使用命令配置外,还可以直接去配置/etc/sysconfig/iptables文件,但是修改文件时,要严格按照格式来,不能有多于的空格。使用命令配置防火墙如下:

#设置防火墙的默认规则为accept,防止第一步就把自己挡在外面
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
#删除所有防护墙规则
iptables -t filter -F
iptables -t filter -X
iptables -t filter -Z
#已经建立连接的连接,不在验证
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#开放ping功能
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
#开放本机对本机的访问
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#开放22端口,用于ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
#开放80端口,用于web访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
#开放某个ip的所有访问权限,只能配ip不能陪hostname
iptables -A INPUT -s 192.168.1.10 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.10 -j ACCEPT
#允许DNS服务端口
iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
#设置防火墙的默认规则为DROP
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
#执行完成后,最后保存配置
service iptables save
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部