FTP的主动模式 (用winscp和sftp来登录)
服务端从20端口主动向客户端发起连接,客户端不受控制。
控制连接:TCP21,用于发送FTP命令信息
数据连接:TCP20,用于上传、下载数据。
FTP的被动模式
服务端在指定范围内某个端口被动等待客户端连接,被动模式是受控的。
控制连接:TCP21,用于发送FTP命令信息
数据连接:随机端口,用于上传、下载数据。
常见的FTP服务器程序
Windows:IIS、Serv-U
Linux:wu-ftpd(淘汰了) Proftpd vsftpd(Very Secure FTP Domain)
安装:yum install vsftpd
主配置文件
/etc/vsftpd/ftpusers
用户控制列表文件
/etc/vsftpd/ftpusers(写入这个文件的用户不允许访问,一般不修改这个文件)
/etc/vsftpd/user_list(
默认是黑名单,通过额外设置可以变成白名单,只有写入这个文件的用户可以访问
userlist_enable=YES 这句是让用户访问控制生效,如果是NO就不控制了
userlist_deny=YES 这句默认是YES,代表/etc/vsftpd/user_list这个文件是黑名单,如果改成NO的话,/etc/vsftpd/user_list这个文件就变成白名单了。
Userlist_file=/etc/vsftpd/user_list
)
FTP相关用户
匿名用户:anonymous或ftp
本地用户:使用Linux系统用户和密码
虚拟用户:管理员自定义的模拟用户
默认配置文件
anonymous_enable=YES 允许匿名用户登录
local_enable=YES 允许本地用户登录
write_enable=YES允许本地用户上传
local_umask=022本地用户上传的默认权限
dirmessage_enable=YES 用户进入目录时,显示.message文件
message_file=.message 指定信息文件
xferlog_enable=YES激活记录日志
connect_from_prot_20=YES 主动模式数据传输接口
xferlog_std_format=YES 使用标准ftp日志格式
ftpd_banner 登录欢迎信息
listen=YES 允许被监听
pam_service_name=vsftpd 设置PAM外挂模块提供的认证服务
所使用的配置文件名,即/etc/pam.d/vsftpd文件
userlist_enable=YES 用户登录限制
tcp_wrappers=YES是否使用tcp_wrappers作为主机访问控制方式
常用全局配置
listen_address=192.168.4.1 设置监听的IP地址
listen_port=21 设置监听FTP服务的端口号
download_enable=YES 是否允许下载文件
max_clients=0 限制并发客户端连接数
max_per_ip=0 限制同一IP地址的并发连接数
被动模式
pasv_enable=YES 开启被动模式
pasv_min_port=24500 被动模式最小端口
pasv_max_port=24600 被动模式最大端口
常用安全配置
accept_timeout=60被动模式,连接超时时间
connect_timeout=60 主动模式,连接超时时间
idle_session_timeout=600 600秒没有任何操作就断开连接
data_connection_timeout=500 资料传输时,超过500秒没有完成,就断开传输
关于匿名用户
默认的上传目录是 /var/ftp/pub/
尽量不允许匿名用户上传,如果确实要允许,则需要vsftpd的服务权限和系统的目录权限同时允许才可以。
匿名用户在系统中的映射是ftp用户,改系统权限的话,不要直接修改目录权限,而应该把目录的所有者改成ftp用户。
关于本地用户
local_root=/var/ftp 设置本地用户的ftp根目录,要注意目录的权限
local_max_rate=0 限制最大传输速率,字节为单位
把用户限制在家目录
chroot_local_user=YES 开启用户目录限制,这个是非常重要的,防止用户登录服务器之后看到其他地方的文件。但是只有这一行的话,是限制所有用户在家目录中。
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
写入/etc/vsftpd/chroot_list文件中的用户可以访问任何目录,其他用户限制在家目录。
LINUX抓包命令:tcpdump -i eth0 -nnX port XX
关于虚拟用户
虚拟用户是跟linux系统完全不相关的用户,即便被截获,也不能登录系统。
先配置虚拟用户访问,然后为每个虚拟用户建立自己的配置文件,单独定义权限。
配置虚拟用户登录的步骤
1.添加虚拟用户口令文件
vi /etc/vsftpd/vuser.txt
2.生成虚拟用户口令认证文件
yum –y install db4-utils 如果没有安装口令认证命令,需要安装
db_load –T –t hash –f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db 把文本文档转变为认证的数据库
3.编辑vsftpd的PAM认证文件
vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
注释掉其他的行,加入上面两行。注释掉其他行,可以禁止本地用户登录,因为本地用户登录时候的验证依然依赖这个文件。
4.建立本地映射用户并设置宿主目录
useradd –d /home/vftproot –s /sbin/nologin vuser
此用户不需要登录,只是映射用户
用户名必须和下一步配置文件中一致
chmod 755 /home/vftproot
5.修改配置文件
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES 开启虚拟用户
guest_username=vuser FTP虚拟用户对应的系统用户
pam_service_name=vsftpd PAM认证文件,这句话默认存在
6.重启vsftpd服务并测试
service vsftpd restart
此时虚拟用户可以登录,查看,下载,但是不能上传
默认上传文件的位置是宿主用户的家目录
权限使用的是匿名用户权限进行管理
7.调整虚拟用户权限
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 关闭匿名用户登录,更加安全(不影响虚拟用户登录)
给虚拟用户设定权限,允许所有虚拟用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
为每个虚拟用户建立自己的配置文件,单独定义权限
1.vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir 指定保存虚拟用户配置文件的目录
2.手工建立目录
mkdir /etc/vsftpd/vusers_dir
3.为每个虚拟用户建立配置文件
vi /etc/vsftpd/vusers_dir/用户名字 建立用户独立的配置文件,在文件中写下配置
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
允许此用户上传
local_root=/tmp/用户名
给用户指定独立的上传目录
如果没有给用户指定单独的配置文件,则他会遵守主配置文件
(/etc/vsftpd/vsftpd.conf)的权限
最终配置完成的效果如下
禁止匿名用户登录(配置文件修改)
禁止本地系统用户登录(PAM)文件修改
允许虚拟用户登录(配置文件修改)
指定单独配置文件的用户,拥有单独的上传目录,并且允许查看,下载,上传
没有指定单独配置文件的用户,上传目录是虚拟用户的默认目录,只能查看和下载。
Linux查看软件是否已经安装以及服务是否已经启动
因为Linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类:
1、rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”。[root@hexuweb102 ~] rpm -qa | grep ruby
2、yum方法安装的,可以用yum list installed查找,如果是查找指定包,命令后加 | grep “软件名或者包名”。[root@hexuweb102 ~] yum list installed | grep ruby
3、如果是以源码包自己编译安装的,例如.tar.gz或者tar.bz2形式的,这个只能看可执行文件是否存在了,上面两种方法都看不到这种源码形式安装的包。如果是以root用户安装的,可执行程序通常都在/sbin:/usr/bin目录下。
1,mysql 的守护进程是mysqld
如果已经安装则:
[root@localhost ~]# service mysqld start
启动 MySQL: [确定]
如果没有安装则:
[root@localhost ~]# service mysqld start
mysqld:未被识别的服务
你可以看看你的服务是否已经添加到linux上
[root@localhost ~]# chkconfig --list mysqld
mysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:启用 6:关闭
没有安装则:
[root@localhost ~]# chkconfig --list mysqld
在mysqld服务中读取信息时出错,没有那个文件或目录
一旦你启动了服务,可以这样检查服务器是否在运行
[root@localhost ~]# ps -el | grep mysqld
如果你看到有,就说明服务器安装起来了~~