iptables开放ftp
A. iptables简单提问,我在linux下用做了一个nat,客户机的ftp不能用,是不是nat 没有把21端口打开,怎么打开
要加载ftp模块
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
加载这2个模块后再试试
B. linux中iptables防火墙怎么设置
首先讲介绍几个简单命令:
/etc/init.d/iptables save ##保存防火墙规则,如果不进行保存的话 重启iptables之后规则将消失
iptables -L -n ##查看当前防火墙规则
PS:在添加规则之前先用iptables -L -n查看一下当前规则,如果显示没有规则,可能是你的iptables没有开启。如果这个时候添加规则,保存之后将覆盖之前的规则。如果要继续使用之前的规则,先开启iptables服务,这时候就能看到之前的规则,然后再在之前的基础上添加。
我们先添加两条规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##添加一个开放端口22的输入流的规则
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT ##添加一个开放端口22的输出流的规则
添加以上两条规则之后,就不用担心登陆不了SSH了,想了解命令详情使用iptables --help
这里重点讲一下iptables 里面的 dport 和 sport的区别:
dport:目的端口
sport:来源端口
通过两个INPUT的例子,大家区分下INPUT里面的dport 和sport
例子1:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
这条INPUT规则可以这么描述:
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的目的(dport)地址是22,就是要访问我本地的22端口。
3.允许以上的数据行为通过。
例子2:
1
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
这条INPUT规则可以这么描述:
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的来源端口是(sport)22,就是对方的数据包是22端口发送过来的。
3.允许以上数据行为。
通过两个OUTPUT的例子,大家区分下OUTPUT里面的dport 和sport
例子1:
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
这条OUTPUT规则可以这么描述:
1.这是一条从内部出去的数据。
2.出去的目的(dport)端口是22。
3.允许以上数据行为。
例子2:
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
这条OUTPUT规则可以这么描述:
1.这是一条从内部出去的数据。
2.数据包的来源端口是(sport)22,从本服务器的22端口发出数据。
3.允许以上数据行为。
默认INPUT、OUTPUT、FORWARD都是ACCEPT的
不添加规则,则对所有端口的数据来者不拒~
iptables -P INPUT DROP #如果没有添加端口22的accept规则,切勿运行此命令
如果运行上述命令的话,则是除了添加的规则之外的INPUT数据包都DROP掉。。。
同理还有这些命令:
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
一般把INPUT设置为DROP。那么我们需要添加一些规则针对INPUT的ACCEPT的规则:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #开放ssh端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放web服务端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #开放ftp服务端口
iptables -A INPUT -p icmp -j ACCEPT #允许icmp包通过,也就是允许ping
iptables -A INPUT -i lo -p all -j ACCEPT #允许loopback
#####如果你还做了其他的服务器,需要开启哪个端口,照写就行了.
一般把OUTPUT设置为ACCEPT。那么我们需要添加一些规则针对OUTPUT的DROP规则:
关闭一些端口
iptables -A OUTPUT -p tcp --sport 27444 -j DROP
iptables -A OUTPUT -p tcp --sport 27665 -j DROP
iptables -A OUTPUT -p tcp --sport 31337 -j DROP
C. Linux下防火墙规则开放ftp端口的问题
setup,进入设置,然后选择firewall,开放21端口就可以了,有的时候selinux也组织防火墙。
D. linux问题,关闭iptables服务安全吗,如果不关闭怎么开放FTP等端口
不建议关闭iptables,可以设置规则让FTP端口通过过滤。
ftp端口比较特殊,分为连接用的端口,当上传下载文件的传输数据用的端口。并不像80,22这些端口。
netstat -tnl 命令可以看到,现在运行了ftp服务。
这里现在只允许 22 端口的访问。
现在开始对ftp端口的设置,ftp连接端口有2个 21 和 20 端口,现在添加对应的规则。
[root@localhost root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
添加完浏览器访问一下ftp,会出现超时。
例如目录列表, 上传 ,下载 文件都要用到这些端口。
而这些端口是任意端口。 这个任意真的比较特殊。如果不指定什么一个端口范围, iptables 很难对任意端口开放的,如果iptables允许任意端口访问, 那和不设置防火墙没什么区别,所以不现实的。
那么解决办法就是指定这个数据传输端口的一个范围。
下面修改一下ftp配置文件。
这里使用vsftpd来修改演示。
[root@localhost root]# vi /etc/vsftpd.conf
在配置文件的最下面 加入
pasv_min_port=30001
pasv_max_port=31000
然后保存退出。
这两句话的意思告诉vsftpd, 要传输数据的端口范围就在30001到31000 这个范围内传送。
这样使用 iptables 就好办多了,只需打开 30001到31000 这些端口。
[root@localhost root]# iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT
[root@localhost root]# service iptables save
最后进行保存, 然后再用浏览器范围下ftp。即可正常访问。
E. linux iptables ftp设置
这些规则很罗嗦,最重要的是概念不清,加了基本等于没加,该防护的都没防护到,反而加重系统负担。
OUTPUT链默认就是允许的,如果这个主机是你管理并可控的,你为何不让本机可以访问外部所有的地址?非得加那么多啰嗦的脚本?
一、本机做NAT,让内部主机访问外部FTP服务器的做法
1、清除所有旧有的规则
service iptables stop //RHEL才有的命令
2、加载让NAT内部主机访问外部FTP的模块:
modeprobe ip_nat_ftp
//从RHEL4开始,该模块会自动在系统加载ip_nat/ip_conntrack/ip_tables/ip_conntrack_ftp/ip_conntrack_irc等多个模块
3、打开linux的转发开关
echo "1" /proc/sys/net/ipv4/ip_forward
4、开启NAT
iptables -t nat -A POSTROUTING -s $INT_NET -j SNAT --to $FW_IP
这样,内部主机就可以访问外部的FTP服务了,你不需要知道对方是主动还是被动模式
二、如果本机做FTP被访问
service iptables stop
modprobe ip_conntrack_irc //如果端口不是21,后面还需要加上端口号。如果是21,这步也可以用modprobe ip_nat_ftp,把其他模块也加载上。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
当INPUT的默认策略是DROP时,RELATED模块用途就是为本机的FTP服务打开衍生端口,ESTABLISHED是允许回包。
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT //开放21端口
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT //开放管理端口
iptables -P INPUT DROP //默认策略拒绝
F. 请教高手,用iptables如何实现FTP端口映射
ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT
modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块
# 用DNAT作端口映射
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.0.5
iptables -A FORWARD -o eth0 -d 192.168.0.5 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.5-p tcp --sport 21 -m --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.5 -p tcp --sport 20 -m --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.0.5 -p tcp --dport 20 -m --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.0.5 -p tcp --dport 1024: -m --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.5 -p tcp --sport 1024: -m --state ESTABLISHED -j ACCEPT
# 用SNAT作源地址转换(关键),以使回应包能正确返回
iptables -t nat -A POSTROUTING -d 192.168.0.5 -p tcp --dport 21 -i eth0 -j SNAT --to 192.168.0.1
最后配置自动启动文件,这样开机就自动启动服务了
G. linux开放FTP服务iptable怎么设置
做如下设置应该可以的
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
H. 如何修改 ftp 端口
怎样修改SSH和FTP的登录端口
LINUX 的默认SSH 端口是 22。为了防止别人暴力破解(这年头无聊的菜鸟黑客太多),建议修改SSH 访问端口:
第一步:
[[email protected] ~]#vim /etc/ssh/sshd_config
找到#Port 22一段,这里是标识默认使用22端口,修改为如下:
Port 22
Port 3456
注意:先不要删除Port 22,以免发生意外无法登录。
保存退出,然后执行/etc/init.d/sshd restart(或/etc/init.d/ssh restart,或service sshd restart),重启SSH服务,这样SSH端口将同时工作与22和3456上。测试成功后再关闭22端口。
如果没有启用防火墙或者防火墙没有屏蔽端口,就可以直接测试新端口是否可用了。
如果打开了iptables,则执行第二步:
编辑防火墙配置:vi /etc/sysconfig/iptables 开放 3456端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3456 -j ACCEPT
然后执行/etc/init.d/iptables restart
第三步:
使用ssh工具连接3456端口,来测试是否成功。
如果连接成功了,则再次编辑sshd_config的设置,将里边的Port 22 删除即可。
最后,别忘了重启SSH服务哦。
修改FTP端口相对要复杂一些,主要是因为FTP软件太多,启动方式也不一样。
第一种情况:vsftpd
步骤:1.修改/etc/services文件
# vi /etc/services
将21/tcp修改为20129/tcp (20129是你自己想要的端口号,可以随便修改,不过必须注意:端口号最大为65535。)
2.修改(新增)FTP配置文件vsftpd.conf
# vi /etc/vsftpd/vsftpd.conf
如果文件中有Listen_port=21,则将21修改为2021,
否则添加一行Listen_port=2021
3.启动TFP服务
# service vsftpd restart
4.检查TFP服务
# service vsftpd status
第二种情况:FTP集成在Kloxo之中。Kloxo是一整套的服务器模块,其中一个是FTP。您不能改变对Kloxo管理控制面板的服务器配置。默认情况下Kloxo使用pureftp作为FTP服务器,xinetd的作为协助进程启动FTP服务。
步骤:1,登录使用root的SSH访问。
您的pureftp配置是在/etc/xinetd.d/pureftp,这个文件的第一行就是ftp的服务,一般不需修改。
2,打开/etc/services 编辑,找到这些行:
ftp 21/tcp
ftp 21/udp fsp fspd
将其修改成这样:
ftp 20129/tcp
ftp 20129/udp fsp fspd
保存文件并退出。
3,重新启动xinetd:
service xinetd restart
检查所有的监听端口:
netstat -an | grep LISTEN
如果已没有侦听端口21,而是发现端口20129
tcp 0 0 0.0.0.0:20129 0.0.0.0:* LISTEN
则应该就算成功了。当然,你应该马上通过您的FTP客户端来测试一下,不要忘记使用新端口哦!
第三种情况:LNMP集成pureftp
这种情况应该修改 /usr/local/pureftpd/pure-ftpd.conf
找到其中的
#Bind 127.0.0.1,21
修改为:
Bind 127.0.0.1,20129
有的时候这样也不行,那就将127.0.0.1删掉,改为
Bind ,20129
然后重启ftp服务 /etc/init.d/pureftpd restart
I. linux中怎么解决开启iptables和setlinux实现ftp登陆
如果要开启防火墙:/etc/init.d/iptables
stop或者services
iptables
stop
如果要开启selinux:setenforce
0
建议关闭防火墙以及selinux