设为首页 收藏本站
查看: 695|回复: 0

[经验分享] Linux iptalbes设置

[复制链接]

尚未签到

发表于 2018-5-23 06:22:22 | 显示全部楼层 |阅读模式


1.首先介绍一下指令和相关配置文件

  •   启动指令:service iptables start
  •   重启指令:service iptables restart
  •   关闭指令:service iptables stop
  • Linux防火墙(Iptables)重启系统生效
  • 开启: chkconfig iptables on   关闭: chkconfig iptables off

  •   然后是相关配置:/etc/sysconfig/iptables
  •   如何操作该配置呢?
  •   vim /etc/sysconfig/iptables
  •   然后进去修改即可,修改完了怎么办?这里很多人会想到/etc/rc.d/init.d/iptables save指令,但是一旦你这么干了你刚才的修改内容就白做了。。。
  •   具体方法是:
  •   只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables restart,然后才调用/etc/rc.d/init.d/iptables save,
  •   因为/etc/rc.d/init.d/iptables save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables save那么你
  •   的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了,这点必须注意!!!
2.下面介绍一些指令用法(主要还是man iptables看下相关资料才行)

  •   -A:指定链名
  •   -p:指定协议类型
  •   -d:指定目标地址
  •   --dport:指定目标端口(destination port 目的端口)
  •   --sport:指定源端口(source port 源端口)
  •   -j:指定动作类型
3.如果我不像修改文件直接打命令可以吗,当然没问题,步骤如下:

  •   例如我给SSH加放行的语句:
  •   添加input记录: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  •   添加output记录: iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
  •   最后注意需要再执行一下 /etc/init.d/iptables save,这样这两条语句就保存到刚才那个/etc/sysconfig/iptables 文件中了。
4.接下来说明一下步骤,如果机器不在我身边,我只能SSH进去做iptables规则,那么我必须注意每一步,千万别搞错了,否则就SSH链接不上都有可能!

  •   首先要做的是给咱的SSH进行ACCEPT配置,以免直接无法连接的情况发生:
  •   1.如果SSH端口是22(这里不建议用默认端口最好改掉SSH端口)
  •   iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  •   iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
  •   注意要/etc/rc.d/init.d/iptables save,以下每一步都最好执行一遍此语句,以下不再累述。

  •   2.vim /etc/sysconfig/iptables确定是否已经加入配置,可以的话执行service iptables restart重启后生效

  •   3.下面是很危险的操作,如果你第一步没做就会直接可能导致你连不上SSH,此步骤前切记执行第一步!!!
  •   iptables -P INPUT DROP
  •   iptables -P OUTPUT DROP
  •   iptables -P FORWARD DROP
  •   这个步骤是把所有不符合自己配置的规则ACCEPT的连接全部DROP掉,执行完以后如果咱SSH还没掉,那么谢天谢地,安全了,重启下iptables后继续下面的配置!

  •   4.下面咱就不细说了,具体就是看自己服务器要开放哪些端口或者是要访问哪些端口来做具体的配置,下面是我自己的机器的配置:

  •   /etc/sysconfig/iptables文件配置如下:
  •   # Generated by iptables-save v1.4.7 on Fri Mar  2 19:59:43 2012
  •   *filter
  •   :INPUT DROP [0:0]
  •   :FORWARD DROP [0:0]
  •   :OUTPUT DROP [8:496]
  •   -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  •   #ping使用的端口
  •   -A INPUT -p icmp -j ACCEPT
  •   -A INPUT -i lo -j ACCEPT
  •   -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
  •   -A INPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
  •   #允许服务器自己的SSH(对外部请求来说服务器是目标所以使用--dport)
  •   -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
  •   #80端口不用说了吧,服务器网站访问端口
  •   -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  •   -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
  •   -A INPUT -p tcp -m tcp --dport 11211 -j ACCEPT
  •   -A INPUT -p tcp -m tcp --dport 11212 -j ACCEPT
  •   -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  •   #53端口是DNS相关,TCP和UDP都要配置
  •   -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
  •   -A INPUT -p udp -m udp --dport 53 -j ACCEPT
  •   #ping使用的端口
  •   -A OUTPUT -p icmp -j ACCEPT
  •   -A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
  •   -A OUTPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
  •   #允许服务器SSH到其他机器(使用外部端口就使用--dport)
  •   -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
  •   #允许服务器自己的SSH(自已为源输出就使用--sport)
  •   -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
  •   #访问外部网站80端口(使用外部端口就使用--dport)
  •   -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
  •   #如果服务器需要访问外部网站,那么OUTPUT也需要配置53端口(使用外部端口就使用--dport)
  •   -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
  •   -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
  •   #如果有访问外部邮箱,那么打开邮箱相关端口(使用外部端口就使用--dport)
  •   -A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
  •   -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
  •   -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
  •   #服务器网站访问端口(自已为源输出就使用--sport)
  •   -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
  •   -A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT
  •   -A OUTPUT -p tcp -m tcp --sport 11211 -j ACCEPT
  •   -A OUTPUT -p tcp -m tcp --sport 11212 -j ACCEPT
  •   COMMIT
  •   # Completed on Fri Mar  2 19:59:43 2012
5.可能有时候需要删除规则,最简单就是修改一下/etc/sysconfig/iptables然后service iptables restart,最后/etc/rc.d/init.d/iptables save即可。
当然也可以使用指令完成:

  •   在网上找了一下,删除规则的方法:
  •   语法是: iptables -D chain rulenum [options]
  •   其中: chain 是链的意思,就是INPUT FORWARD 之类的
  •   rulenum 是规则的编号。从1 开始。可以使用  --line-numbers 列出规则的编号

  •   所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables -D INPUT 3
  •   意思是删除第3条规则。
  •   还有第二种方法。第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。也就是说,你如何用iptables -A.... 语句定义了一个规则,则删除此规则时就用 -D 来代替- A  其余的都不变即可。
  •   ======================
  •   说一下上面的 --line-numbers 选项,如下面的命令:
  •   iptables -L INPUT --line-numbers   列出INPUT 链所有的规则
  •   num  target     prot opt source               destination
  •   1    REJECT     tcp  --  anywhere             anywhere            tcp dpt:microsoft-ds reject-with icmp-port-unreachable
  •   2    REJECT     tcp  --  anywhere             anywhere            tcp dpt:135 reject-with icmp-port-unreachable
  •   3    REJECT     tcp  --  anywhere             anywhere            tcp dpt:netbios-ssn reject-with icmp-port-unreachable

  •   ...
  •   ...
  •   删除指定行规则:
  •   [root@localhost rc.d]# iptables -D INPUT 4
  6.最后补充一下,如果想针对某IP进行单独开放端口可以如下配置:

  •   如果我需要对内网某机器单独开放mysql端口,应该如下配置:
  •   iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT
  •   iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT
7.彻底禁止某IP访问:

  •   #屏蔽单个IP的命令是
  •   iptables -I INPUT -s 123.45.6.7 -j DROP
  •   #封整个段即从123.0.0.1到123.255.255.254的命令
  •   iptables -I INPUT -s 123.0.0.0/8 -j DROP
  •   #封IP段即从123.45.0.1到123.45.255.254的命令
  •   iptables -I INPUT -s 124.45.0.0/16 -j DROP
  •   #封IP段即从123.45.6.1到123.45.6.254的命令是
  •   iptables -I INPUT -s 123.45.6.0/24 -j DROP
  •   指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-479881-1-1.html 上篇帖子: linux下iptables讲解 下篇帖子: Linux Shell Test
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表