一、简介 FTP(文件传输协议)全称是:Very Secure FTP Server。 Vsftpd是linux类操作系统上运行的ftp服务器软件。 vsftp提供三种登陆方式:1.匿名登录 2.本地用户登录 3.虚拟用户登录 vsftpd的特点:1.较高的安全性需求 2.带宽的限制 3.创建支持虚拟用户 4.支持IPV6 5.中等偏上的性能 6.可分配虚拟IP 7.高速 Ftp会话时采用了两种通道: 控制通道:与Ftp服务器进行沟通的通道,链接Ftp发送ftp指令都是通过控制通道来完成的。 数据通道:数据通道和Ftp服务器进行文件传输或则列表的通道 二、工作原理 Ftp协议中控制连接均是由客户端发起,而数据连接有两种工作方式:Port和Pasv方式 Port模式(主动模式)--> 默认 Ftp客户端首先和Ftp server的tcp 21端口建立连接,通过这个通道发送命令,客户端要接受数据的时候在这个通道上发送Port命令,Port命令包含了客户端用什么端口(一个大于1024的端口)接受数据,在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。这个时候数据连接由server向client建立一个连接。 Port交互流程: client端:client链接server的21端口,并发送用户名密码和一个随机在1024上的端口及port命令给server,表明采用主动模式,并开放那个随机的端口。 server端:server收到client发来的Port主动模式命令与端口后,会通过自己的20端口与client那个随机的端口连接后,进行数据传输。 Pasv模式(被动方式) 建立控制通道和Port模式类似,当客户端通过这个通道发送Pasv命令的时候,Ftp server打开了一个位于1024和5000之间的随机端口并且通知客户端在这个端口上进行传输数据请求,然后Ftp server将通过这个端口进行数据传输。这个时候数据连接由client向server建立连接。 Pasv交互流程 Clietn:client连接server的21号端口,发送用户名密码及pasv命令给server,表明采用被动模式。 server:server收到client发来的pasv被动模式命令之后,把随机开放在1024上的端口告诉client,client再用自己的20 端口与server的那个随机端口进行连接后进行数据传输。 如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。 三、安装vsftpd及相关软件 yum -y install vsftpd* pam* db4* vsftpd:ftp软件 pam:认证模块 DB4:支持文件数据库 四、vsftpd的用户管理: FTP服务器对用户的管理,在默认的情况下是根据“ /etc/passwd系统用户配置文件” 及 “/etc/group系统用户组配置文件” 来进行配置。 在FTP服务器中,匿名用户的用户名和密码都是ftp ;这个用户可以在您的操作系统中的 /etc/passwd 中能找得到;如:
1 |
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin |
在ftp用户这行中,我们看到七个字段,每个字段写字段之间用:号分割; 1.ftp 是用户名 2.x 是密码字段,隐藏的 3.14 是用户的UID字段,可以自己来设定,不要和其它用户的UID相同,否则会造成系统安全问题; 4.50 用用户组的GID,可以自己设定,不要和其它用户组共用FTP的GID,否则会造成系统全全问题; 5.FTP User 是用户说明字段 6./var/ftp 是ftp用户的家目录,可以自己来定义 7./sbin/nologin 这是用户登录SHELL ,这个也是可以定义的,/sbin/nologin 表示不能登录系统;系统虚拟帐号(也被称为伪用户)一般都是这么设置。比如我们把ftp用户的/sbin/nologin 改为 /bin/bash ,这样ftp用户通过本地或者远程工具ssh或telnet以真实用户身份登录到系统。这样做对系统来说是不安全的;如果您认为一个用户没有太大的必要登录到系统,就可以只给他FTP帐号的权限,也就是说只给他FTP的权限,而不要把他的SHELL设置成 […]
View Detailsvsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。此外,本文还介绍了FTP基本原理,以及FTP用户管理方面的基础知识。 简介 vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。 在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等 特点 ①vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用; ②任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准; ③所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作; ④此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。 配置 vsftpd配置 关于主机的设定值 connect_from_port_20=YES(NO) 还记得 wuftp 那篇文章提到的,关于主动联机的 ftp-data 吗? 这个设定项目在启动主动联机的port 20 咯! listen_port=21 使用的 vsftpd命令通道的 port number 设定,如果您想要使用非 正规的 ftpport,在这个设定项目修改吧! dirmessage_enable=YES(NO) 当使用者进入某个目录时,会显示该目录需要注意的内容,显示的 档案预设是.message ,当然,可以使用底下的设定项目来修订! message_file=.message 当 dirmessage_enable=YES时,可以设定这个项目来让 vsftpd 寻找该档案来显示讯息!您也可以设定其它档名喔! listen=YES(NO) 若设定为YES […]
View Details原文出处:http://blog.csdn.net/anxpp/article/details/52453134 本人租用的云服务器,为了节约成本,各项配置都是比较低的,但是又运行了很多的服务,所以要经常查看内存占用情况以检查哪些服务存在问题并调整参数作调优。当然,实际的生成服务器,也可能会需要做些类似的操作的。 1、 top命令 top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 进入监控界面后按M后可以看到以内存占用大小排序的视图: 2、free -m 使用这个命令可以直接看内存的整个使用情况: 3、ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5 rsz为实际内存占用: 命令的完整用法大家还是度娘吧,这里只是给出方法,够用就好。 from:http://blog.csdn.net/anxpp/article/details/52453134
View Details引言 最近博客又抽风了,打开主页后提示 Error Establishing a Database Connection。仔细想想,应该就是数据库服务器 mariadb 挂了;以前也遇到过类似的问题。经过分析日志,并结合网上的资料最终解决了问题。 日志 以下是 mariadb 服务器挂掉时的比较关键的日志信息,从下面的日志信息中,我们可以很容易地看出由于内存不足,从而导致数据库服务器启动时崩溃。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... 160919 2:47:12 InnoDB: Waiting for the background threads to start 160919 2:47:13 Percona XtraDB (http://www.percona.com) 5.5.46-MariaDB-37.6 started; log sequence number 352718445 160919 2:47:13 [ERROR] mysqld: Out of memory (Needed 128917504 bytes) 160919 2:47:13 [Note] Plugin 'FEEDBACK' is disabled. 160919 2:47:13 [Note] Server socket created on IP: '0.0.0.0'. 160919 2:47:13 [Note] Event Scheduler: Loaded 0 events 160919 2:47:13 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.5.47-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server 160919 02:47:35 mysqld_safe Number of processes running now: 0 160919 02:47:35 mysqld_safe mysqld restarted 160919 2:47:35 [Note] /usr/libexec/mysqld (mysqld 5.5.47-MariaDB) starting as process 28614 ... 160919 2:47:35 InnoDB: The InnoDB memory heap is disabled 160919 2:47:35 InnoDB: Mutexes and rw_locks use GCC atomic builtins 160919 2:47:35 InnoDB: Compressed tables use zlib 1.2.7 160919 2:47:35 InnoDB: Using Linux native AIO 160919 2:47:35 InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137756672 bytes) failed; errno 12 160919 2:47:35 InnoDB: Completed initialization of buffer pool 160919 2:47:35 InnoDB: Fatal error: cannot allocate memory for the buffer pool 160919 2:47:35 [ERROR] Plugin 'InnoDB' init function returned error. 160919 2:47:35 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 160919 2:47:35 [ERROR] mysqld: Out of memory (Needed 128917504 bytes) 160919 2:47:35 [ERROR] mysqld: Out of memory (Needed 96681984 bytes) 160919 2:47:35 [ERROR] mysqld: Out of memory (Needed 72499200 bytes) 160919 2:47:35 [Note] Plugin 'FEEDBACK' is disabled. 160919 2:47:35 [ERROR] Unknown/unsupported storage engine: InnoDB 160919 2:47:35 [ERROR] Aborting |
解决 在使用 free -m 查看内存信息时,发现 swap 分区大小为 0。难怪说数据库服务器无法启动呢,在内存不够用的情况下,又无法使用 swap 分区,自然崩溃了。由于 VPS 使用了 SSD,性能自然不错。下面我们给服务器系统 CentOS 7 添加 1024M 的 swap 分区,采用的方法是创建一个 swap 文件: 使用下面的命令创建 swapfile:
1 2 |
# 1048576 = 1024 * 1024 dd if=/dev/zero of=/swapfile bs=1024 count=1048576 |
使用下面的命令配置 swap 文件:
1 |
mkswap /swapfile |
接下来,使用下面的命令立即启用 swapfile,这样就不用等到下次重启时自动启用:
1 |
swapon /swapfile |
最后,我们在 /etc/fstab 中添加下面一行,这样可以在系统下次重启时自动生效创建的 swapfile:
1 |
/swapfile swap swap defaults 0 0 |
使用 cat /proc/swaps 或 free -m 查看 swapfile 的生效情况,如下图所示: 在完成上面的步骤后,我们还可以在 /etc/my.cnf 配置文件中添加一些配置信息,降低 mariadb 资源需求,具体的配置请参考文末给出的链接。 启动 启动 apache 服务器:systemctl start httpd.service; 启动 mariadb 服务器:systemctl start mariadb.service。 启动完成后,再次打开网站主页,bingo,问题解决了! 总结 低配 VPS 最好还是要多增加 swap 分区大小,尤其对于使用 SSD 的 VPS 而言,swap […]
View Details在nginx配置文件增加以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
location / { # 如果请求的文件已存在,直接返回 if (-f $request_filename) { break; } set $supercache_file ''; set $supercache_uri $request_uri; set $supercache 1; set $ihttp_host ''; if ($request_method = POST) { set $supercache 0; } # 仅在访问文章永久链接时使用静态文件,请求中带参数则不使用静态缓存 set $qs 0; if ($query_string) { set $qs 1; } # 不过从 twitter, facebook, feedburner 链接点过来的,总是带参数,这些访问仍然可以使用静态文件 if ($query_string ~* "^utm_source=([^&]+)&utm_medium([^&]+)&utm_campaign=([^&]+)(&utm_content=([^&]+))?$") { set $qs 0; set $supercache_uri $document_uri; } #deactivate on high load if ($qs = 1) { set $supercache 0; } # 针对已登录用户(发表过评论),可以不静态化。在访问量高峰时可注释掉 if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) { set $supercache 0; } # 支持移动设备,访问移动版本的网页缓存 if ($http_user_agent ~* '(iphone|ipod|aspen|incognito|webmate|android|dream|cupcake|froyo|blackberry9500|blackberry9520|blackberry9530|blackberry9550|blackberry 9800|webos|s8000|bada)') { set $ihttp_host '-mobile'; } # 指定静态缓存文件的路径 if ($supercache = 0) { set $supercache_uri ''; } if ($supercache_uri ~ ^(.+)$) { set $supercache_file /wp-content/cache/supercache/$http_host$1/index${ihttp_host}.html; } # 只有当缓存文件存在时,才进行 rewrite if (-f $document_root$supercache_file) { #rewrite ^(.*)$ $supercache_file break; rewrite ^ $supercache_file last; } # 所有其他请求,转给 wordpress 处理 if (!-e $request_filename) { rewrite . /index.php last; } |
针对已登录用户(发表过评论),可以不静态化。在访问量高峰时可注释掉
1 2 3 4 5 |
if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) { set $supercache 0; } } |
from:http://blog.csdn.net/wangdada111/article/details/71189332
View Details常规下21端口容易遭到别人的扫描、带来了一定程度的不安全。所以,最好的就是把21端口修改掉。 默认修改为6069 一、修改vsftp的配置文件 vi /etc/vsftpd/vsftpd.conf 在原来的基础上加上: listen_port=6069 pasv_enable=YES pasv_min_port=10221 pasv_max_port=10231 pasv_promiscuous=YES ftpd_banner=Welcome to http://www.e926.com FTP service 二、修改/etc/services vi /etc/services 修改成: ftp 6069/tcp ftp 6069/udp 三、修改防火墙规则 如果防火墙开启、并且做了端口限制、请添加相应的规则 vi /etc/sysconfig/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10221:10231 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 6069 -j ACCEPT 添加这两天规则 service iptables restart 四、通过客户端ftp连接(选择被动模式连接) from:http://blog.csdn.net/weiyuefei/article/details/51698604
View Details1、firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disable firewalld 禁用: systemctl stop firewalld 2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。 启动一个服务:systemctl start firewalld.service 关闭一个服务:systemctl stop firewalld.service 重启一个服务:systemctl restart firewalld.service 显示一个服务的状态:systemctl status firewalld.service 在开机时启用一个服务:systemctl enable firewalld.service 在开机时禁用一个服务:systemctl disable firewalld.service 查看服务是否开机启动:systemctl is-enabled firewalld.service 查看已启动的服务列表:systemctl list-unit-files|grep enabled 查看启动失败的服务列表:systemctl --failed 3.配置firewalld-cmd 查看版本: firewall-cmd --version 查看帮助: firewall-cmd --help 显示状态: firewall-cmd --state 查看所有打开的端口: firewall-cmd --zone=public --list-ports 更新防火墙规则: firewall-cmd --reload 查看区域信息: firewall-cmd --get-active-zones 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 拒绝所有包:firewall-cmd --panic-on 取消拒绝状态: firewall-cmd --panic-off 查看是否拒绝: firewall-cmd --query-panic 那怎么开启一个端口呢 添加 firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效) 重新载入 firewall-cmd --reload 查看 firewall-cmd --zone= public --query-port=80/tcp 删除 firewall-cmd --zone= public --remove-port=80/tcp --permanent from:https://www.cnblogs.com/moxiaoan/p/5683743.html
View Details1、安装zip、unzip应用。
1 |
yum install zip unzip |
2、压缩和解压文件 以下命令均在/home目录下操作 cd /home #进入/home目录 a、把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩mydata目录 b、把/home目录下面的mydata.zip解压到mydatabak目录里面 unzip mydata.zip -d mydatabak c、把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip zip -r abc123.zip abc 123.txt d、把/home目录下面的wwwroot.zip直接解压到/home目录里面 unzip wwwroot.zip e、把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面 unzip abc\*.zip f、查看把/home目录下面的wwwroot.zip里面的内容 unzip -v wwwroot.zip g、验证/home目录下面的wwwroot.zip是否完整 unzip -t wwwroot.zip h、把/home目录下面wwwroot.zip里面的所有文件解压到第一级目录 unzip -j wwwroot.zip from:https://www.cnblogs.com/zhi-leaf/p/6002303.html
View Details