文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux中iptables设置是怎样的

2023-06-28 17:26

关注

这篇文章给大家介绍Linux中iptables设置是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

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

启动指令:service iptables start
重启指令:service iptables restart
关闭指令:service iptables stop

然后是相关配置:/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那么你

2.下面介绍一些指令用法(主要还是man iptables看下相关资料才行)

-A:指定链名  -p:指定协议类型  -d:指定目标地址  --dport:指定目标端口(destination port 目的端口)  --sport:指定源端口(source port 源端口)

3.如果我不像修改文件直接打命令可以吗,当然没问题,步骤如下:
例如我给SSH加放行的语句:
添加input记录: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
添加output记录:iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

4.接下来说明一下步骤,如果机器不在我身边,我只能SSH进去做iptables规则,那么我必须注意每一步,千万别搞错了,否则就SSH链接不上都有可能!

如果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,以下每一步都最好执行一遍此语句,以下不再累述。

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

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

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

/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

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

…
…
删除指定行规则:

6.最后补充一下,如果想针对某IP进行单独开放端口可以如下配置:
如果我需要对内网某机器单独开放mysql端口,应该如下配置:
iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp –dport 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进行保存后重启服务即可

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

关于Linux中iptables设置是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯