配置环境:(防火墙、SELinux关闭)
[root@miner_k ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
vsftpd的安装:
[root@miner_k ~]# yum -y install vsftpd
[root@miner_k var]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd #关于vsftpd的日志切割
/etc/pam.d/vsftpd #PAM模块认证
/etc/rc.d/init.d/vsftpd #vsftpd的服务启动程序
/etc/vsftpd #配置文件目录
/etc/vsftpd/ftpusers #存放PAM模块中限制禁止登录的用户
/etc/vsftpd/user_list #通过配置文件的参数userlist_enable和userlist_deny设置用户登录
/etc/vsftpd/vsftpd.conf #配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd #vsftpd的主程序
/var/ftp #vsftp服务的默认匿名用户登录的根目录,ftp这个账户登录的家目录
/var/ftp/pub
设置配置文件:
(注意:修改配置文件需要重新启动服务,同时测试的连接也需要重新连接)
配置文件的格式:
vsftpd.conf 的内容非常单纯,每一行即为一项设定。若是空白行或是开头为#的一行,将会被忽略。内容的格式只有一种,如下所示
option=value
要注意的是,等号两边不能加空白。
[root@miner_k ~]# vim /etc/vsftpd/vsftpd.conf
#1.与匿名用户有关的信息
anonymous_enable=YES <== 支持匿名用户的功能
#2.与实体用户有关的信息
local_enable=YES <== 支持本地的实体用户登录
write_enable=YES <== 允许上传文件
local_umask=022 <== 建立新的目录(755)和文件(644)
#3.与服务器相关的信息
dirmessage_enable=YES <= 如果目录下有.message会显示该文件的内容
xferlog_enable=YES <= 启动日志文件记录
connect_from_port_20=YES <= 支持主动模式
xferlog_std_format=YES <= 支持WuFTP的日志格式
listen=YES <= 使用stand alone 方式启动vsftpd,可以使用xinetd启动
pam_service_name=vsftpd <= 支持PAM模块管理
userlist_enable=YES <= 支持/etc/vsftpd/user_list文件内的账号登录控制
tcp_wrappers=YES <= 支持TCP Wrappers的防火墙机制
1.匿名用户(anonymous)设置
anonymous_enable=YES/NO(YES)
控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。write_enable=YES/NO(YES)
是否允许登陆用户有写权限。属于全局设置,默认值为YES。no_anon_password=YES/NO(NO)
若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。ftp_username=ftp
定义匿名登入的使用者名称。默认值为ftp。anon_root=/var/ftp
使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。anon_upload_enable=YES/NO(NO)
如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。anon_world_readable_only=YES/NO(YES)
如果设为YES,则允许匿名登入者下载可阅读的档案(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。默认值为YES。anon_mkdir_write_enable=YES/NO(NO)
如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。anon_other_write_enable=YES/NO(NO)
如果设为YES,则允许匿名登入者更多于上传或者建立目录之外的权限,譬如删除或者重命名。(如果anon_upload_enable=NO,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。)默认值为NO。chown_uploads=YES/NO(NO)
设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。chown_username=username
设置匿名用户上传文件(非目录)的属主名。建议不要设置为root。anon_umask=077
设置匿名登入者新增或上传档案时的umask 值。默认值为077,则新建档案的对应权限为700。deny_email_enable=YES/NO(NO)
若是启动这项功能,则必须提供一个案/etc/vsftpd/banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。默认值为NO。banned_email_file=/etc/vsftpd/banner_emails
此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。
2. 启动模式的配置
- 2.1 使用stand alone方式启动
配置文件:listen=YES
[root@miner_k ~]# /etc/init.d/vsftpd stop
Shutting down vsftpd: [ OK ]
[root@miner_k ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@miner_k ~]# chkconfig vsftpd on
[root@miner_k ~]# netstat -anlp | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 18622/vsftpd
- 2.2 使用super daemon启动
配置文件:listen=NO
[root@miner_k vsftpd]# yum -y install xinetd
[root@miner_k vsftpd]# cd /etc/xinetd.d/
[root@miner_k xinetd.d]# ls
chargen-dgram daytime-dgram discard-dgram echo-dgram rsync time-dgram
chargen-stream daytime-stream discard-stream echo-stream tcpmux-server time-stream
[root@miner_k xinetd.d]# cp rsync vsftpd
[root@miner_k xinetd.d]# cat vsftpd
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service ftp
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
server_args = --daemon
log_on_failure += USERID
}
[root@miner_k xinetd.d]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@miner_k xinetd.d]# netstat -anlp | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 18975/xinetd
[root@miner_k ~]# chkconfig --list
xinetd based services:
chargen-dgram: off
chargen-stream: off
daytime-dgram: off
daytime-stream: off
discard-dgram: off
discard-stream: off
echo-dgram: off
echo-stream: off
rsync: off
tcpmux-server: off
time-dgram: off
time-stream: off
vsftpd: on
这两种方式的使用场景:stand alone 当访问量较大时使用。super daemon一般在ftp的使用量较小时使用
3.设置ftp显示的时间与本地同步
配置文件: use_localtime=yes
使用本地时间,如果是no表示使用的是格林尼治时间(GMT),比本地时间要慢8个小时。
(修改配置文件需要重新启动服务,ftp连接服务器也需要重新启动。)
修改前:
ftp> ls
227 Entering Passive Mode (127,0,0,1,224,157).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 4 May 17 08:25 1.txt
drwxr-xr-x 2 0 0 4096 Mar 22 12:14 pub
修改后:
ftp> ls
227 Entering Passive Mode (127,0,0,1,199,49).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 4 May 17 16:25 1.txt
drwxr-xr-x 2 0 0 4096 Mar 22 20:14 pub
4.登录时显示欢迎信息
配置文件:
banner_file=/etc/vsftpd/welcome.txt
或者:
ftpd_banner=Welcome to blah FTP service.(设置登录提示的字符串)
[root@miner_k ~]# cat /etc/vsftpd//welcome.txt
欢迎使用本站提供的FTP
[root@miner_k xinetd.d]# ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220-欢迎使用本站提供的FTP
220
5.限制系统账号的登录
在设置本地用户登录时,最好设置anonymons_enable=no.
- 1 利用PAM模块进行设置
可以从下面的文件中看出/etc/vsftpd/ftpusers中是被拒绝的登录用户,将需要禁止登录的用户写到该文件中即可
[root@miner_k xinetd.d]# cat /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
[root@miner_k ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
......
tom
[root@miner_k xinetd.d]# ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220-欢迎使用本站提供的FTP
220
Name (localhost:root): tom
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
- 2 使用userlist的相关参数进行设置
配置文件: user_list文件中的用户禁止登录
userlist_enable=YES
userlist_deny=yes
userlist_file=/etc/vsftpd/user_list只有user_list文件中的用户可以登录
userlist_enable=YES
userlist_deny=no
userlist_file=/etc/vsftpd/user_list
[root@miner_k ~]# echo tom > /etc/vsftpd/user_list
[root@miner_k xinetd.d]# ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220-欢迎使用本站提供的FTP
220
Name (localhost:root): jim
530 Permission denied.
Login failed.
6.对用户(包括未来用户)进行chroot
除了chroot_list文件中的用户名不禁锢,其他的用户都禁锢。
配置文件:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
[root@miner_k ~]# ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220-欢迎使用本站提供的FTP
220
Name (localhost:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> bye
221 Goodbye.
[root@miner_k ~]# echo tom > /etc/vsftpd/chroot_list
[root@miner_k ~]# ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220-欢迎使用本站提供的FTP
220
Name (localhost:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/tom"
ftp> bye
221 Goodbye.
7.限制实体用户的下载流量(带宽)
配置文件:
local_max_rate=1000 <= 单位是byte/second
8.限制最大的同时上线人数与同一个IP连接数
配置文件:
max_clients=10
max_per_ip=1
9.让匿名用户可上传/下载自己的资料(权限开发最大)
配置文件:
anonymous_enable=yes
local_enable=nowrite_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_upload_enable=yes
设置文件的权限,在share文件中能够上传、下载删除等操作
[root@miner_k ~]# mkdir /var/ftp/share
[root@miner_k ~]# chown ftp /var/ftp/share
10.让匿名用户只能上传不能下载
配置文件:
anonymous_enable=yes
local_enable=nowrite_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
chown_uploads=yes
chown_username=daemon
将上传的文件所有权设置为daemon,删除失败之后不能重复上传,只能修改名称重复上传。
11.被动连接端口的设置
配置文件:
pasv_max_port=65400
pasv_min_port=65410
12.虚拟用户
12.1使用本地数据文件
- 1.安装db4-utils
[root@miner_k ~]# rpm -qa | grep db4
db4-4.7.25-18.el6_4.x86_64
db4-cxx-4.7.25-18.el6_4.x86_64
db4-utils-4.7.25-18.el6_4.x86_64
db4-devel-4.7.25-18.el6_4.x86_64
- 2.生成虚拟用户文件
[root@miner_k ~]# cat /etc/vsftpd/vuser.txt
user1 #用户名1
123 #密码1
user2 #用户名2
123 #密码2
- 3.生成虚拟用户数据库
[root@miner_k ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
- 4.修改配置文件
anonymous_enable=yes #匿名用户可以禁止
local_enable=yes #本地用户不能禁止
pam_service_name=vsftpd.vu #修改PAM模块
guest_enable=YES
guest_username=vuser #映射到本地用户,可以是ftp用户
- 5.增加用户
[root@miner_k ~]# useradd -d /var/vuser -s /sbin/nologin vuser
- 6.修该PAM模块
[root@miner_k ~]# cat /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
注意:此处的常见错误pam_userdb.so模块的位置,有的是在/lib/security.有的是在/lib64/security.根据本地的情况而定。否则容易出错
- 7.测试:
错误实例:
[root@miner_k ~]# ftp localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): user1
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
正确测试:
[root@miner_k ~]# ftp localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
- 8.错误排查
可以看出错误原因是由于没有vusers文件造成的,可能是PAM模块中的设置有误。
[root@miner_k ~]# tailf /var/log/secureMay 19 11:12:26 lsw vsftpd[5615]: pam_userdb(vsftpd.vu:auth): user_lookup: could not open database `/etc/vsftpd/vusers': No such file or directory
12.2 使用MySQL数据文件
- 1.映射本地用户
[root@miner_k ~]# useradd -d /var/vuser -s /sbin/nologin vuser
- 2.配置文件修改
anonymous_enable=yes #匿名用户可以禁止
local_enable=yes #本地用户不能禁止
pam_service_name=vsftpd.mysql #修改PAM模块
guest_enable=YES
guest_username=vuser #映射到本地用户,可以是ftp用户
- 3.安装数据库
[root@miner_k ~]# yum -y install mysql mysql-server mysql-devel
- 4.在数据库中创建ftp的用户名和密码
[root@miner_k ~]# service mysqld start
[root@miner_k ~]# mysql
mysql> create database ftpusers;
Query OK, 1 row affected (0.00 sec)
mysql> use ftpusers
Database changed
mysql> create table users (id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> password char(48) binary NOT NULL,
-> primary key(id)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into users (name,password) values('tom','123'),('jim','123');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
- 5.授权给vuser用户登录mysql数据库
mysql> grant select on ftpusers.* to vuser@localhost identified by 'ftppasswd';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
- 6.下载安装pam_mysql模块
[root@miner_k ~]# wget https://sourceforge.net/projects/pam-mysql/files/latest/download --no-check-certificate
[root@miner_k ~]# yum -y install pam-devel
[root@miner_k ~]# yum -y groupinstall "Development tools"
[root@miner_k ~]# tar -xvf pam_mysql-0.7RC1.tar.gz
[root@miner_k ~]# cd pam_mysql-0.7RC1
[root@miner_k pam_mysql-0.7RC1]# ./configure --with-openssl --with-mysql=/usr
[root@miner_k pam_mysql-0.7RC1]# make
[root@miner_k pam_mysql-0.7RC1]# make install
[root@miner_k pam_mysql-0.7RC1]# ls /lib/security/
pam_mysql.la pam_mysql.so
- 7.修改PAM模块配置
[root@miner_k ~]# cat /etc/pam.d/vsftpd.mysql
#%PAM-1.0
auth required /lib/security/pam_mysql.so user=vuser passwd=ftppasswd host=localhost db=ftpusers table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vuser passwd=ftppasswd host=localhost db=ftpusers table=users usercolumn=name passwdcolumn=password crypt=0
- 8.错误分析:
**错误一:**pam模块中的配置文件书写错误导致,可能是登录的用户、库以及是没有授权
[root@miner_k ~]# tailf /var/log/secure
May 19 11:58:37 lsw vsftpd[15444]: pam_mysql - MySQL error (Access denied for user 'vuser'@'localhost' to database 'ftpvusers')
错误二:在日志中没有报错
在pam的配置中crypt设置为2,导致错误。
crypt=0
参数简介:(cat pam_mysql-0.7RC1/README)
crypt (plain)
The method to encrypt the user's password:
0 (or "plain") = No encryption. Passwords stored in plaintext.
HIGHLY DISCOURAGED.
1 (or "Y") = Use crypt(3) function.
2 (or "mysql") = Use MySQL PASSWORD() function. It is possible
that the encryption function used by PAM-MySQL
is different from that of the MySQL server, as
PAM-MySQL uses the function defined in MySQL's
C-client API instead of using PASSWORD() SQL function
in the query.
3 (or "md5") = Use plain hex MD5.
4 (or "sha1") = Use plain hex SHA1
12.3 配置虚拟用户具有不同的访问权限
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
- 1、配置vsftpd为虚拟用户使用配置文件目录
添加如下选项
user_config_dir=/etc/vsftpd/vusers_dir
- 2、创建所需要目录,并为虚拟用户提供配置文件
[root@miner_k ~]# mkdir /etc/vsftpd/vusers_dir/
[root@miner_k ~]# cd /etc/vsftpd/vusers_dir/
[root@miner_k vusers_dir]# touch tom jim
- 3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。
anon_upload_enable=YES
13.vsftpd+ssl的配置
13.1 CA服务器的配置
可以查看httpd配置详解(四)
13.2 vsftpd服务端配置
[root@miner_k ~]# cd /etc/vsftpd/
[root@miner_k vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@miner_k vsftpd]# mkdir ssl
[root@miner_k vsftpd]# cd ssl
[root@miner_k ssl]#
[root@miner_k ssl]# ls
- 1.生成私钥
[root@miner_k ssl]# (umask 077;openssl genrsa -out vsftpd.key 2048)
Generating RSA private key, 2048 bit long modulus
......................+++
...........+++
e is 65537 (0x10001)
- 2.生成证书签署请求
[root@miner_k ssl]# openssl req -new -key vsftpd.key -out vsftpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BeiJing]:
Locality Name (eg, city) [BeiJing]:
Organization Name (eg, company) [CA]:
Organizational Unit Name (eg, section) [IT]:
Common Name (eg, your name or your server's hostname) []:ftp.miner_k.com #需要修改的位置,需要被签名的服务器域名
Email Address []:admin@miner_k.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
13.4 在CA服务器上签署证书,并将证书发送给vsftpd服务端
- 1.将ftp服务器上的证书签署申请发送给CA服务器
[root@miner_k ssl]# scp vsftpd.csr 101.200.87.99:/tmp
root@101.200.87.99's password:
vsftpd.csr 100% 1050 1.0KB/s 00:00
- 2.在CA的服务器上签署生成证书
[root@CA tmp]# openssl ca -in vsftpd.csr -out vsftpd.crt
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 2 (0x2)
Validity
Not Before: May 24 08:16:40 2017 GMT
Not After : May 24 08:16:40 2018 GMT
Subject:
countryName = CN
stateOrProvinceName = BeiJing
organizationName = CA
organizationalUnitName = IT
commonName = ftp.miner_k.com
emailAddress = admin@miner_k.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
43:D1:D8:A6:46:16:32:3E:64:B8:FF:5A:FF:C2:75:12:1F:3C:83:9D
X509v3 Authority Key Identifier:
keyid:12:0E:C7:0F:0B:A6:06:3D:27:A1:5B:A7:EA:3D:C3:36:07:BE:77:13
Certificate is to be certified until May 24 08:16:40 2018 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
- 3 将CA的签署的证书发送到ftp的服务器上
[root@CA tmp]# scp vsftpd.crt ftp.miner_k.com:/etc/vsftpd/ssl
13.5 在ftp服务器上配置文件的修改
[root@miner_k vsftpd]# vim /etc/vsftpd/vsftpd.conf
......
ssl_enable=yes #启动ssl加密
allow_anon_ssl=no #不允许匿名用户加密
force_local_data_ssl=yes #强制实体用户传输加密
force_local_logins_ssl=yes #连接登录的用户加密
ssl_tlsv1=yes #支持tlsv1、sslv2、sslv3
ssl_sslv2=yes
ssl_sslv3=yes
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt #证书的存放位置
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key #私钥的存放位置
13.6 测试登录
- 1 重新启动vsftpd服务
[root@miner_k vsftpd]# service vsftpd restart
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
- 2 增加实体用户
[root@miner_k vsftpd]# useradd user1
没有找到“mail”组。以 0600 权限模式创建用户的信箱文件。
[root@miner_k vsftpd]# passwd user1
更改用户 user1 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
- 3 客户端使用winscp登录即可
14. vsftpd + iptables 配置
在centos6.5中没有ip_nat_ftp模块,但是加载ip_nat_ftp.会自动加载nf_nat、nf_conntrack_ipv4模块。
[root@miner_k ~]# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_nat_ftp" #加载ip_nat_ftp模块
[root@miner_k ~]# iptables -A INPUT -i eth0 -p tcp -m tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
[root@miner_k ~]# iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@miner_k ~]# iptables-A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT