iptables主要用来配置防火墙。其是一个需要特别谨慎设置的东西,服务器不在身边,不要贸然设置,有可能导致无法SSH,那就麻烦了。

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那么你

的/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文件配置如下:   
  

*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   

  

...   

...   

删除指定行规则:

[root@czl 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进行保存后重启服务即可

linux配置iptables的更多相关文章

  1. linux配置iptables(3)

    简单通用 web 服务器iptables 配置 *filter :INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0] #超出 链规则 的数据 ...

  2. linux配置防火墙详细步骤(iptables命令使用方法)

    通过本教程操作,请确认您能使用linux本机.如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重! 通过iptables我们可以为我们的Linux服务器配置有动态的防火墙,能 ...

  3. Linux配置完iptables后,重启失效的解决方案

    Linux配置完iptables后,重启失效的解决方案 因为只有root用户才可访问1024以下的端口,非root用户登陆是不能启用80端口的.web service 往往启动1024以上的端口,并通 ...

  4. Linux的iptables常用配置范例(1)

    以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的配置说明 可以通过/sbin/iptables -F清除所有规则来暂时停止防火墙: (警告:这只适合在没 ...

  5. linux下iptables配置模板

    linux下iptables配置模板 # Flush all policy iptables -F iptables -X iptables -Z iptables -t nat -F iptable ...

  6. Linux下iptables安全配置

    Linux下配置IPTables,只开放特定端口,禁用其他网络. *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] ...

  7. linux下IPTABLES配置详解 (防火墙命令)

    linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT ...

  8. CentOS下配置iptables防火墙 linux NAT(iptables)配置

    CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/syscon ...

  9. Linux CentOS7 安装配置 IPtables

    2021-08-11 1. 前言 防火墙其实就是实现 Linux 下访问控制功能的,分为硬件和软件的防火墙两种类型.无论在何网络中,防火墙工作的地方一定是网络的边缘.防火墙的策略.规则就是去定义防火墙 ...

随机推荐

  1. eclipse 导入项目后,在工程图标上出现红叉,但是工程中的文件并没有提示错误的解决方法

    进入项目包下的.settings目录,找到org.eclipse.wst.common.project.facet.core.xml文件,用记事本打开后才发现这句话有问题:<runtime na ...

  2. POJ2536-Gopher II-(匈牙利算法)

    题意:n只老鼠,m个洞,s秒逃命,逃命速度为v,一个洞只能保住一只老鼠,最少多少只老鼠会被老鹰抓到. 题解:找出每只老鼠有哪些洞可以保命,建立二分图,算出最大匹配,不是求保住命的老鼠,而是求被抓住的老 ...

  3. 出现 sudo: unable to resolve host XXX 信息解决办法

    Ubuntu环境,  每次执行sudo 就出现这个警告讯息:sudo: unable to resolve host XXX虽然sudo 还是可以正常执行,是机器在反解上的问题, 所以就直接从/etc ...

  4. vue文件夹上传组件选哪个好?

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  5. 在VMMap中跟踪不可用的虚拟内存

    VMMap是一个很好的系统内部工具,它可以可视化特定进程的虚拟内存,并帮助理解内存的用途.它有线程堆栈.映像.Win32堆和GC堆的特定报告.有时,VMMap会报告不可用的虚拟内存,这与可用内存不同. ...

  6. pytest--常用插件

    前戏 虽然pytest给我们提供了很多的功能,但是有些功能还是没有,而pytest的插件可以满足我们的需求,比如用例失败重跑,统计代码覆盖率等等功能. pytest-sugar pytest-suga ...

  7. django -- ORM实现出版社增删改查

    前戏 我们来完成一个图书管理系统的增删改查 表结构设计 1. 出版社 id   name 2. 作者 id  name 3. 书 id  title  出版社_id 4. 作者_书_关系表 id  书 ...

  8. [FJOI2018]所罗门的宝藏

    大概是最后一篇题解,其实只是想颓废一下打个故事 据古代传说记载,所罗门王即是智慧的代表,又是财富的象征.他建立了强大而富有的国家,聚集了大批的黄金象牙和钻石,并把这些价值连城的珍宝藏在一个神秘的地方, ...

  9. 洛谷 p3870 开关 线段树模板

    这两天学了很长时间于是做了一道水题 我就用了模板,就连任何优化都没有 就AC了,复杂度也很爆炸10个点1500多毫秒 这个题就是把lazy[]改成记录下修改的次数,每次修改的时候mod 2,因为反过来 ...

  10. JAVA JDK安装及path环境变量配置

    JDK安装 JVM  :JAVA虚拟机 JRE :java运行环境=JVM+核心类库 JDK :JAVA开发工具包=JRE+java开发工具 java开发工具:编译工具(javac.exe) . 运行 ...