linux 防火墙 ftp linux杀毒软件360
大家好,关于linux 防火墙 ftp很多朋友都还不太明白,今天小编就来为大家分享关于linux杀毒软件360的知识,希望对各位有所帮助!
Linux的三种防火墙对比(IPtables、Firewall、UFW)
IPtables部分
IPtables架构包含四个表(filter、nat、raw、mangle)和五个链(PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING),表定义了修改TCP/IP包头的特定位置,链表示数据包在路由转换过程中的不同阶段。在配置iptables命令时,遵循的逻辑是“表->链->规则”,但从“链->表->规则”的角度理解更直观。
在规则中,动作包括但不限于:ACCEPT(接受)、REJECT(拒绝并回复被拒原因)、DROP(直接丢弃无响应)、REDIRECT(端口重定向)、MASQUERADE(源地址动态伪装)、LOG(记录日志后继续向下匹配规则)、DNAT(目的IP转换)、SNAT(源IP转换)、MIRROR、QUEUE、RETURN、MARK。这些动作的适用范围在不同表和链中有所不同,例如REDIRECT动作只能应用于nat表的PREROUTING链、OUTPUT链。
常用模块包括tcp、udp、multiport、iprange、string、time、connlimit和limit,它们增强了iptables的功能。例如,tcp和udp模块允许使用-sd(源/目的IP)、-p(协议)、-lo(网卡输入/输出接口)作为默认链规则匹配条件,加载后支持--dport、--sport匹配条件。multiport模块支持指定多个不连续的端口号,iprange模块允许定义连续的IP地址范围,string模块允许指定字符串来匹配包含对应字符串的数据包,time模块允许根据时间段匹配报文,connlimit模块限制每个IP地址的并发连接数量,limit模块限制单位时间内流入的包数量。
规则配置技巧包括黑白名单机制、自定义链(即规则组)、将命中频率更高的规则放在前面以提升效率。黑白名单机制涉及链的默认策略和规则对应动作的严格配合,以实现“黑名单”或“白名单”效果。自定义链有助于组织针对不同服务(如HTTP、SSH、FTP)的访问规则,简化规则维护。
辅助命令有iptables-save/iptables-restore用于规则的导入导出、iptables-apply支持事务回滚与提交、iptables-xml用于规则文件的格式转换。处理动作REDIRECT不仅仅针对本地端口重定向,开启IP包转发后,根据规则重定向,系统会直接将包递送到本地重定向端口,而不论目的IP是否为本地。
Firewall部分
Firewall是基于智能的iptables规则管理服务,底层实现依赖iptables。它引入了zone的概念,允许按网卡划分不同信任级别的规则集。不同zone对应不同的策略,如丢弃区域、阻塞区域、信任区域等,每个区域允许不同类型的网络连接。Firewall提供两种配置类型:Runtime(临时存在,立即生效)和Permanent(长久存在,手动触发生效)。zone可以面向绑定类型包括Connections(当前连接状态的网络)、Interfaces(虚拟网络适配器)、Sources(基于源地址匹配的规则)。
全局组件包括Services(服务管理)、IPSets(IP集合)、ICMP Type(ICMP类型管理)和Helpers(连接追踪助手)。Firewall支持直接以iptables“表-链-规则”方式配置防火墙(Direct Configuration)和SELinux规则配置(Lockdown whitelist)。
Firewall的过滤类型包括Services、Ports、Protocols、Source Ports、ICMP Filter(“或”关系,面向所有来源和目的ip,优先级相等)和Rich Rules(灵活规则,支持IPSet、Log、Audit,面向个例,优先级高于前五种过滤类型)。功能类型包括Masquerading(源IP伪装)、Port Forwarding(端口转发)。
辅助命令包括firewall-cmd命令行防火墙管理器、firewall-config图形界面规则管理器。
杂项包括panic模式下所有进出包被丢弃、开启日志记录、转发功能。在Firewall中,规则配置示例包括列出当前配置信息、检查服务标记、重载或重置规则。
UFW部分
UFW是一款轻量级iptables配置工具,简化了防火墙配置。它支持规则过滤、日志记录、转发。命令介绍包括启用/禁用防火墙、设置默认策略、添加/删除规则、规则管理、规则重载/重置/查看。UFW与Firewall在功能上有相似之处,但UFW的配置方式更为直观。
辅助命令有UFW命令行防火墙管理器和gufw图形界面管理器。UFW中的规则使用服务名称时,参照/etc/services获取对应服务的端口信息。
杂项包括增删改规则后,通常需要重载或重启UFW以生效,除非更改默认策略,后者会立即生效。在进站默认策略设为deny后,ICMP请求仍可能通过,需额外添加规则禁止。
对比总结
netfilter、iptables、firewall、UFW之间的关系:netfilter底层负责规则执行,iptables作为规则制定工具,firewall和UFW作为用户界面和规则管理服务,提供易用性。iptables是应用层临时命令工具,规则设定后需外部管理以保持规则持久。firewall和UFW作为常驻服务,支持规则动态加载和持久存储。
应用平台:iptables是红帽系列6及以下的默认防火墙,firewall是红帽系列7及以上的默认防火墙,UFW是Debian系列的默认防火墙。虽然默认不同,但firewall和UFW均依赖iptables作为基础。
兼容性:iptables提供基本的防火墙功能,firewall和UFW扩展了易用性和功能。在不启用firewall或UFW的情况下,仍可通过iptables实现防火墙功能。同时启用firewall和UFW可能导致规则冲突。
Firewall防火墙与华为下一代USG防火墙区域对比:Firewall的区域是规则的集合,与流量通道绑定,USG的区域是接口的集合,规则的匹配基于源/目的区域、源/目的IP-Port和动作。Firewall面向单主机,USG面向多网络环境。
ftp登入linux中get文件提示ftp:bind
当使用FTP协议登录到Linux系统并执行`get`命令时出现`ftp:bind`的提示,这通常是因为文件传输过程中绑定了本地IP地址与端口的问题。
要解决这个问题,可以尝试以下方法:
1.检查防火墙设置:确保服务器上的防火墙允许FTP连接和数据传输。如果启用了防火墙,请检查是否已打开FTP或对应的数据传输端口。
2.检查FTP服务配置文件:在Linux系统中,FTP的配置文件通常位于`/etc/vsftpd.conf`,打开该文件并确保以下参数设置正确:
- `listen=YES`:确保FTP服务处于监听状态。
- `connect_from_port_20=YES`:启用主动模式,允许从端口20连接到客户端。
3.检查PASV(被动)模式配置:如果使用FTP客户端通过PASV模式连接服务器,请确保服务器已正确配置。在vsftpd.conf文件中,添加或修改以下参数:
- `pasv_enable=YES`:启用被动模式。
- `pasv_min_port=xxxx`:指定被动模式下可用的最小端口号。
- `pasv_max_port=xxxx`:指定被动模式下可用的最大端口号。
- `pasv_address=xxx.xxx.xxx.xxx`:指定服务器的外部IP地址。
4.重新启动FTP服务:在对配置文件进行更改后,要使更改生效,请重新启动FTP服务。在大多数Linux发行版上,使用以下命令重启vsftpd服务:
```
sudo service vsftpd restart
```
重新尝试连接并执行`get`命令,如果一切设置正确,您应该可以成功下载文件。如果问题仍然存在,建议查看FTP日志文件以获取更多详细的错误信息。
如何借助vsftpd在Linux上构建安全的FTP服务
FTP(文件传输协议)是互联网上广泛使用的服务之一,主要用于将文件从一个主机传输到另一个主机。FTP本身当初不是作为一种安全协议而设计的;正因为如此,典型的FTP服务很容易遭受诸如中间人攻击和蛮力攻击之类的常见攻击。
许多具有安全功能的应用程序可用来构建安全的FTP服务。比如说,FTPS(安全Secure)使用SSL/TLS证书,对端到端数据进行加密。基于客户端的需求,FTPS可加以配置,以支持经过加密及/或未经过加密的连接。SFTP(SSH文件传输协议)是另一种为传输中数据确保安全的方法。SFTP是作为SSH的一种扩展技术而开发的,同样可以结合其他安全协议使用。
本教程将着重介绍借助SSL/TLS已被启用的vsftpd,构建和保护FTP服务。
先稍微介绍一下背景:典型的FTP服务器侦听TCP端口20以监视数据、侦听TCP端口以监视命令(又叫控制端口)。连接的建立和命令参数的交互都通过端口21来完成。FTP连接支持两种方法:主动模式和被动模式。在主动模式下的连接建立过程中,服务器建立一条从其端口20(数据)到客户机的连接。在被动模式下,服务器为每一个客户机会话专门指定了随机性数据端口,并将该端口通知客户机。随后,客户机建立一条通向服务器随机性端口的连接。
据RFC 1635显示,FTP支持通过特殊用户anonymous进行的公众访问,不需要任何密码,或者通过用户ftp、使用密码ftp来进行访问。除了这类公众用户外,vsftpd还支持本地Linux用户进行的登录。Linux用户可以通过使用FTP连接到服务器,并提供登录信息,访问其主目录,即/home/user。
把vsftpd安装到Linux上
如果想把vsftpd安装到Ubuntu、Debian或Linux Mint上,可以使用apt-get命令。系统一启动,vsftpd服务就会自动启动。
$ sudo apt-get install vsftpd
如果想把vsftpd安装到CentOS、Fedora或RHEL上,我们可以使用yum来轻松完成安装。服务启动后,还被添加到系统启动项。
# yum install vsftpd
# service vsftpd start
# chkconfig vsftpd on
使用vsftpd的一种最基本的FTP服务现已准备好使用。我们只要将浏览器指向URL ftp://[ServerName/IP],或者使用FileZilla等FTP客户软件、使用用户名anonymous,无需密码来连接,或使用用户名ftp、密码ftp来连接,就可以访问FTP服务。
vsftpd安装完毕后,系统用户ftp连同主目录/var/ftp已被添加到系统中。只要建立了匿名FTP连接,会话总是默认使用/var/ftp目录。所以,我们可以将该目录用作FTP公众用户的主目录。放在/var/ftp下面的任何文件/目录都可以通过ftp://[ServerName/IP]加以访问。
vsftpd配置文件的位置出现在下面两个地方:
•Ubuntu、Debian或Linux Mint:/etc/vsftpd.conf
•CentOS、Fedora或RHEL:/etc/vsftpd/vsftpd.conf
在本教程的其余部分,使用你Linux系统上的对应位置的vsftpd.conf文件。
调整FTP用户
如果想禁用公众访问,我们就要在vsftpd.conf中明确禁止用户anonymous。注释掉这一行不管用,因为vsftpd使用默认值运行。你还需要重启vsftpd。
anonymous_enable=NO
# service vsfptd restart
因而就要启用强制性验证;只有现有的Linux用户才能够使用其登录信息来进行连接。
若想启用/禁用本地用户,我们可以修改vsftpd.conf文件。如果我们禁用本地用户,就得确保用户anonymous已被授予访问权限。
local_enable=YES/NO
# service vsfptd restart
如果想使用特定用户连接到系统,我们只要将URL改成[ServerName/IP]。相应用户的主目录可使用这种方法,通过FTP来加以访问。
将用户限制在各自的主目录
用户使用FTP访问远程服务器时,用户可以浏览整个系统,只要文件/目录是可读取的。根本不建议这么做,因为任何用户都能通过FTP会话,读取和下载/etc、/var、/usr及其他位置下面的系统文件。
想限制本地用户在FTP会话期间只能访问各自的主目录,我们可以修改下面这个参数。
chroot_local_user=YES
# service vsftpd restart
现在,本地用户只能够访问其主目录了,无法访问系统中的其他任何文件或目录。
启用SSL/TLS加密
FTP原本是一种明文协议,这意味着谁都可以轻松窥视在客户机与远程FTP服务器之间所传输的文件。想对FTP通信内容进行加密,可以启用vsftpd中的SSL/TLS。
第一步是创建SSL/TLS证书和私钥,如下所示。它会将所创建的证书/私钥存放在目标.pem文件中。
在Debian/Ubuntu上:
$ sudo openssl req-x509-days 365-newkey rsa:2048–node
s-keyout/etc/vsftpd.pem-out/etc/vsftpd.pem
在CentOS/Fedora/RHEL上:
$ sudo openssl req-x509-days 365-newkey rsa:2048–node
s-keyout/etc/vsftpd/vsftpd.pem-out/etc/vsftpd/vsftpd.pem
然后,将下面这些参数添加到vsftpd.conf配置文件中。
#启用TLS/SSL
ssl_enable=YES
#强迫客户机在登录时使用TLS
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
#指定SSL证书/私钥(Debian/Ubuntu)
#如果是CentOS/Fedora/RHEL,将其换成/etc/vsftpd/vsftpd.pem
rsa_cert_file=/etc/vsftpd.pem
rsa_private_key_file=/etc/vsftpd.pem
#为被动模式下的连接定义端口范围
pasv_max_port=65535
pasv_min_port=64000
最后重启vsftpd。
# service vsftpd restart
控制连接和带宽
vsftpd提供了几种方法来控制连接和用户带宽。我们将使用几种方法来调整我们的FTP服务器。
##为每个匿名会话分配的带宽设置为大约30 KB/s##
anon_max_rate=30000
##每个本地用户被授予大约30 KB/s的带宽##
local_max_rate=30000
##客户机会话闲置300秒后被终止##
idle_session_timeout=300
##每个源IP地址的最大连接数量,这有助于防范拒绝服务(DoS)和分布式拒绝服务攻击(DDoS)#
max_per_ip=50
调整防火墙
最后,如果你在系统(比如CentOS)上运行iptables防火墙,就要确保调整防火墙规则,允许FTP流量通过。下面这些规则应当有助于你开始上手。
# iptables-I INPUT-p tcp--dport 20-j ACCEPT
# iptables-I INPUT-p tcp--dport 21-j ACCEPT
# iptables-I INPUT-p tcp--dport 64000:65535-j ACCEPT
头两条规则允许流量通过FTP数据/控制端口。最后一条规则允许被动模式下的连接,其端口范围已经在vsftpd.conf中予以定义。
启用日志功能
万一你在本教程的FTP服务构建过程中遇到任何问题,可以启用日志功能,为此只需修改vsftpd.conf中的下面这个参数:
xferlog_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
debug_ssl=YES
# service vsftpd restart
借助FileZilla连接到FTP服务器
现在有几款FTP客户软件支持SSL/TLS,尤其是FileZilla。想通过FileZilla连接到支持SSL/TLS的网站,就要为FTP主机使用下列设置。
你头一次连接到支持SSL/TLS的FTP服务器后,会看到该网站的证书。只管信任证书、登录上去。
为sftpd排查故障
1.如果你在连接到FTP服务器的过程中遇到了下面这个错误,这可能是由于你的防火墙阻止FTP流量。为此,确保你在防火墙上打开了必要的FTP端口,如上所述。
ftp: connect: No route to host
2.如果你连接到在CentOS/RHEL上运行的使用chroot改变根目录的FTP服务器时遇到了下面这个错误,禁用SELinux是一个办法。
500 OOPS: cannot change directory:/home/dev
Login failed.
虽然关闭SELinux是一个快速的解决办法,但在生产环境下这么做可能不安全。所以,改而打开SELinux中的下列布尔表达式可以解决这个问题。
$ sudo setsebool-P ftp_home_dir on
3.如果你通过FileZilla访问支持SSL/TLS的FTP服务器时遇到了下列错误,就要确保在vsftpd.conf中添加“ssl_ciphers=HIGH”。FileZilla并不支持默认密码(DES-CBC3-SHA)。
Trace: GnuTLS alert 40: Handshake failed
Error: GnuTLS error-12: A TLS fatal alert has been received.
"SSL_accept failed: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher"
总而言之,使用vsftpd构建FTP服务器并非难事。针对用户anonymous的默认安装应该能够支持小型的常见FTP服务。Vsftpd还有许多可以调整的参数(详见),让它显得用途广泛。