搜索
查看: 2003|回复: 2

[linux] linux服务器管理–防火墙设置命令iptables

[复制链接]

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
发表于 2017-3-24 11:45:20 | 显示全部楼层 |阅读模式
真没想到以前写的博客全部用上了,我真心真心非常感谢我自己!!!

如果我们想新开一个端口给别人访问,我们就需要设置防火墙,比如我想开3838端口给shiny程序使用,下面我重点讲解这个实例,其余开放端口,关闭端口大家继续学习就好。
如果你使用的是ssh远程,而又不能直接操作本机,那么建议你慎重,慎重,再慎重!(一旦你把22端口给搞死了,你就无法登陆你的服务器了!!!)
通过iptables我们可以为我们的Linux服务器配置有动态的防火墙,能够指定并记住为发送或接收信息包所建立的连接的状态,是一套用来设置、维护和检查Linux内核的IP包过滤规则的命令包。
首先配置好防火墙 sudo vim /etc/sysconfig/iptables 让该端口可以被访问



然后进去修改即可,上面红圈出来的那句话就是我添加的,意思是开放3838端口给用户使用。
修改之后并不是防火墙规则马上生效,还需要一个步骤,我搜索了一些资料,里面是这样讲的,我发现它的教程太旧了
这里很多人会想到/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 配置就回滚到上次启动服务的配置了,这点必须注意!!!
因为我是新的系统(RedHat 7, Ubuntu 15.04+, SLES 12+) ,结合我对该教程的理解。所以我用的是

sudo systemctl restart iptables  命令,果然,马上3838端口就可以被访问了,我的shiny程序也可以完整的使用啦。
再简单解释一下刚才修改的防火墙配置文件 /etc/sysconfig/iptables 的那句话的意义:
  • -A:指定链名
  • -p:指定协议类型
  • -d:指定目标地址
  • --dport:指定目标端口(destination port 目的端口)
  • --sport:指定源端口(source port 源端口)
  • -j:指定动作类型

我还查了好多其它资料,开始好像暂时用不着,就先不学习了,但是那些资料大多太陈旧了,请睁大你的慧眼,消化了它人的指导,再来自己运行。



也可以不去打开那个文件进行修改,而且命令行形式一条条记录的添加
  • 例如我给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 文件中了。




删除端口就非常简单了:
可能有时候需要删除规则,最简单就是修改一下/etc/sysconfig/iptables然后service iptables restart,最后/etc/rc.d/init.d/iptables save即可。

还可以彻底禁止某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关闭防火墙可以这样:
1. 重启系统生效
开启: chkconfig iptables on
关闭: chkconfig iptables off2. 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop






上一篇:R的shiny 服务器管理-入门
下一篇:linux服务器管理–系统服务设置命令systemctl
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复

使用道具 举报

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
 楼主| 发表于 2017-3-24 11:49:02 | 显示全部楼层
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

5

主题

22

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2017-3-24 14:51:06 | 显示全部楼层
如果远程SSH要动iptables之类的东西,要记得另外开一个session,不要做别的操作。如果真的连不上了还有一个在线的session可以手工回滚你之前的操作。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-8-23 07:24 , Processed in 0.034932 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.