<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos tls - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/tls/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/tls</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Wed, 18 Dec 2019 01:55:43 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos tls - Remontti</title>
	<link>https://blog.remontti.com.br/tag/tls</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</title>
		<link>https://blog.remontti.com.br/3865</link>
					<comments>https://blog.remontti.com.br/3865#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 18 Dec 2019 00:50:02 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[certificado]]></category>
		<category><![CDATA[criptografado]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina buster]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[seguro]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3865</guid>

					<description><![CDATA[<p>Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download. Requisito: Debian 10&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3865">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: left;">Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download.</p>
<p><span id="more-3865"></span><br />
<img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp.jpg" alt="" width="1000" height="474" class="alignnone size-full wp-image-3876" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp.jpg 1000w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-520x245.jpg 520w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-720x340.jpg 720w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<p><strong>Requisito:</strong><br />
<a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a></p>
<p>Vire root de maneira correta no Debian 10!</p>
<pre class="remontti-code"># su -</pre>
<h3>Instalação do banco de dados MariaDB</h3>
<pre class="remontti-code"># apt install mariadb-server mariadb-client </pre>
<p>Por padrão o pacote MaraiDB no Debian usa unix_socket para autenticar o login do usuário, o que basicamente significa que você pode usar o nome de usuário e a senha do sistema operacional para efetuar login no console do MariaDB.<br />
Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mas isso é estranho, pois minha senha do root do MariaDB é diferente do meu usuário unix.<br />
Bom se você é meio paranoico com segurança, para alterar a senha do usuário root do MariaDB de forma bruta faça o seguinte:</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SENHA_DB_ROOT&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
quit;</pre>
<h3>Instalação do Pure FTP</h3>
<pre class="remontti-code"># apt install pure-ftpd-mysql</pre>
<p>Agora criaremos nosso grupo FTP (<em>grupoftp</em>) e usuário (<em>pureftpd</em>) para que nosso usuários virtuais sejam mapeados.</p>
<pre class="remontti-code"># groupadd -g 2001 ftpgroup
# useradd -u 2001 -s /bin/false -d /bin/null -c &quot;pureftpd user&quot; -g ftpgroup ftpuser</pre>
<pre class="remontti-code"># vim /etc/default/pure-ftpd-common</pre>
<p>altere</p>
<pre class="remontti-code">UPLOADUID=
UPLOADGID=</pre>
<p>para </p>
<pre class="remontti-code">UPLOADUID=2001
UPLOADGID=2001</pre>
<p>Próximo passo criar a nossa base de dados, onde ficaram armazenado as informações dos nossos usuários.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Entre com a senha de root criada anteriormente.  Não esqueça de alterar senha <strong>(SENHA_FTP_USER)</strong>.</p>
<pre class="remontti-code">CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost.localdomain&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
FLUSH PRIVILEGES;
</pre>
<p>Crie a tabela</p>
<pre class="remontti-code">USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default &#039;&#039;,
status enum(&#039;0&#039;,&#039;1&#039;) NOT NULL default &#039;0&#039;,
Password varchar(64) NOT NULL default &#039;&#039;,
Uid varchar(11) NOT NULL default &#039;-1&#039;,
Gid varchar(11) NOT NULL default &#039;-1&#039;,
Dir varchar(128) NOT NULL default &#039;&#039;,
ULBandwidth smallint(5) NOT NULL default &#039;0&#039;,
DLBandwidth smallint(5) NOT NULL default &#039;0&#039;,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default &#039;*&#039;,
QuotaSize smallint(5) NOT NULL default &#039;0&#039;,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
);

quit; 
</pre>
<p>Salve o arquivo original /etc/pure-ftpd/db/mysql.conf e crie um novo com novas configurações, mais uma vez preste atenção a senha [SENHA_FTP_USER].</p>
<pre class="remontti-code"># mv /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
# vim /etc/pure-ftpd/db/mysql.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser pureftpd
MYSQLPassword SENHA_FTP_USER
MYSQLDatabase pureftpd
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)</pre>
<p>Esteja certo que você mudou o campo MYSQLPassword &#8216;SENHA_FTP_USER&#8217;</p>
<p>A configuração <strong>ChrootEveryone</strong> fará com que o PureFTPd faça chroot em todos os usuários virtuais em seu diretório pessoal, para que ele não consiga procurar diretórios e arquivos fora do diretório pessoal. A linha <strong>CreateHomeDir</strong> fará com que o PureFTPd crie o diretório inicial de um usuário quando o usuário efetuar login e o diretório inicial ainda não existir.</p>
<pre class="remontti-code"># echo yes &gt; /etc/pure-ftpd/conf/ChrootEveryone
# echo yes &gt; /etc/pure-ftpd/conf/CreateHomeDir
# echo 1 &gt; /etc/pure-ftpd/conf/TLS
# echo HIGH &gt; /etc/pure-ftpd/conf/TLSCipherSuite</pre>
<p>Gere os certificados.</p>
<pre class="remontti-code"># openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048
# openssl req -x509 -nodes -newkey rsa:2048 -sha256 -keyout \
  /etc/ssl/private/pure-ftpd.pem \
  -out /etc/ssl/private/pure-ftpd.pem
# chmod 600 /etc/ssl/private/*.pem</pre>
<p>Vamos criar agora um usuário, Qual ficará dentro do diretório <strong>/var/pure-ftpd/ </strong> onde vou deixar todos meus usuários criado, porém você pode escolher qualquer diretório, usarei a pasta /var/ pois seria o &#8220;lugar correto&#8221;.</p>
<p>Entre no mariadb com seu usuario pureftpd e senha para fazer a criação do usuário ftp, no meu ex vou criar o usuário chamado remontti.</p>
<pre class="remontti-code"># mysql -u pureftpd -p</pre>
<pre class="remontti-code">USE pureftpd;

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) 
VALUES (&#039;remontti&#039;, &#039;1&#039;, MD5(&#039;SUA_SENHA&#039;), &#039;2001&#039;, &#039;2001&#039;, &#039;/var/pure-ftpd/remontti&#039;, &#039;100&#039;, &#039;100&#039;, &#039;&#039;, &#039;*&#039;, &#039;50&#039;, &#039;0&#039;);

quit;</pre>
<p>Limpe o histórico do mariadb. Não queremos ninguém vendo o q digitamos lá <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code"># echo &gt; /root/.mysql_history</pre>
<p>Ao fazer login o diretório /var/pure-ftpd/USUARIO será criado automaticamente.</p>
<p>Restarte o serviço e verifique o status do mesmo</p>
<pre class="remontti-code"># systemctl restart pure-ftpd-mysql
# systemctl status pure-ftpd-mysql</pre>
<p>Sempre que você queira criar um novo usuário, você tem que criar uma entrada na tabela ftpd.<br />
Explicando a estrutura da tabela:</p>
<p><strong>User:</strong> Seu usuário (ex. como no nosso usuário acima: teste).<br />
<strong>Status: </strong>0 ou 1. 0 deixará sua conta inativa, e o usuário não pode logar.<br />
<strong>Password:</strong> A senha do usuário. A senha está encriptada com MD5.<br />
<strong>UID:</strong> O userid do usuário ftp que você criou (ex: 2001)<br />
<strong>GID: </strong>O groupid do grupo ftp que você criou (ex: 2001).<br />
<strong>Dir:</strong> Diretório home do usuário (ex: /home/teste). Se não existir será criado quando logar pela primeira vez via FTP. O usuário será preso neste diretório home.<br />
<strong>ULBandwidth: </strong>Controle de Upload em KB/Sec. Use 0 para que seja ilimitado.<br />
<strong>DLBandwidth: </strong>Controle de Download em KB/sec. Use 0 para que seja ilimitado.<br />
<strong>Comment: </strong>Você pode inserir qualquer comentário (ex: Usuário da administração). Você deixa este campo limpo.<br />
<strong>Ipaccess: </strong>Você pode definir o ip que serão permitidos para conectar nesta conta FTP. Ou &#8216;*&#8217; para qualquer endereço IP.<br />
<strong>QuotaSize: </strong>Espaço de armazenamento em MB (não KB, como em ULBandwidth eDLBandwidth) Defina 0 como ilimitado.<br />
<strong>QuotaFiles:</strong> Número total de arquivos que este usuário poderá salvar. Defina 0 para ilimitado.</p>
<h3>Protegendo com Fail2ban</h3>
<pre class="remontti-code"># apt install fail2ban
# echo yes &gt; /etc/pure-ftpd/conf/DontResolve
# vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<p>Adicione o filtro pure-ftpd.</p>
<pre class="remontti-code">[sshd]
enabled = true
[pure-ftpd]
enabled = true</pre>
<p>Restarte o fail2ban</p>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<p>Se você tiver interesse em ter uma interface web para gerenciamento recomendo:<br />
<a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”</a></p>
<p>Gostou?</p>
<p>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!<br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fonte:<a href="http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL" rel="noopener noreferrer" target="_blank"> http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL</a></p>
<p>O post <a href="https://blog.remontti.com.br/3865">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3865/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
	</channel>
</rss>
