<?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 MySQL - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/mysql/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/mysql</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Wed, 06 Mar 2024 17:38: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 MySQL - Remontti</title>
	<link>https://blog.remontti.com.br/tag/mysql</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Instalação FreeRadius no Debian 12 Bookworm (Extra sqlippool)</title>
		<link>https://blog.remontti.com.br/7784</link>
					<comments>https://blog.remontti.com.br/7784#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 30 Jan 2024 02:22:57 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Administração de sistema]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Autenticação PPPoE]]></category>
		<category><![CDATA[Configuração de servidor]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[FreeRadius 3.2.1]]></category>
		<category><![CDATA[LAMP (Linux]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Rede e segurança]]></category>
		<category><![CDATA[sqlippool]]></category>
		<category><![CDATA[Wireless Security]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7784</guid>

					<description><![CDATA[<p>Este tutorial é especialmente útil para provedores de serviços que desejam estabelecer seu próprio sistema de autenticação usando o FreeRADIUS. Ele abrange uma ampla gama de autenticação, incluindo PPPoE, hotspot, e autenticação sem fio&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7784">Instalação FreeRadius no Debian 12 Bookworm (Extra sqlippool)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/01/freeradius-debian-12.png" alt="" width="1792" height="909" class="alignnone size-full wp-image-7787" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/01/freeradius-debian-12.png 1792w, https://blog.remontti.com.br/wp-content/uploads/2024/01/freeradius-debian-12-300x152.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/01/freeradius-debian-12-1024x519.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/01/freeradius-debian-12-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2024/01/freeradius-debian-12-1536x779.png 1536w" sizes="(max-width: 1792px) 100vw, 1792px" /><br />
Este tutorial é especialmente útil para provedores de serviços que desejam estabelecer seu próprio sistema de autenticação usando o FreeRADIUS. Ele abrange uma ampla gama de autenticação, incluindo PPPoE, hotspot, e autenticação sem fio (PSK/EAP), entre outras opções.</p>
<p><strong>REQUISITOS</strong><br />
1 – <a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Debian 12 Bookworm &#8211; Instalação limpa</a></p>
<p>Acesse seu bash e vire root com o comando su &#8211; para evitar comandos &#8220;que não existem&#8221;, e antes de mais nada tenha seu repositório atualizado.</p>
<pre class="remontti-code"># su -
# apt update
# apt upgrade</pre>
<p>Se o seu sistema Debian acabou de ser instalado e está em sua configuração inicial, aqui está o meu comando secreto que eu uso em todos os servidores após a instalação. Esse comando tem o objetivo de aprimorar a produtividade do shell (bash) no Debian e instalar alguns pacotes essenciais. É basicamente um script que inclui a maior parte das etapas descritas no tutorial: <a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a></p>
<pre class="remontti-code"># apt install wget -y; wget remontti.com.br/debian; bash debian
# su - </pre>
<p>O serviço web não é necessário, mas normalmente juntamente do Freeradius acabo instalando um phpmyadmin por exemplo para poder fazer uma administração fácil do banco de dados entre outros. Se desejar pular esta etapa ela é opcional.</p>
<h4>Instalação do Serviço Web+PHP</h4>
<p>Vamos instalar os pacotes necessários</p>
<pre class="remontti-code"># apt install apache2 apache2-utils libapache2-mod-php\
  php php-mysql php-cli php-pear php-gmp php-gd php-bcmath\
  php-mbstring php-curl php-xml php-zip -y</pre>
<p>Ajuste fino, <a href="https://blog.remontti.com.br/7496" rel="noopener" target="_blank">quiser saber mais clique aqui</a>.</p>
<pre class="remontti-code"># a2enmod rewrite ; a2enmod headers
# sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf
# systemctl restart apache2</pre>
<h4>Instalação do MariaDB &#038; phpMyAdmin</h4>
<pre class="remontti-code"># apt install mariadb-server mariadb-client phpmyadmin</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. Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mais a frente vou ensinar como definir uma senha, não farei agora pois se você alterar nesse momento ao instalar o phpMyAdmin terá um erro.</p>
<p>Selecione <strong>Apache2</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1.png" data-rel="lightbox-gallery-zn3NzItx" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1.png" alt="" width="1256" height="408" class="alignnone size-full wp-image-7499" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1.png 1256w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1-300x97.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1-1024x333.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1-768x249.png 768w" sizes="(max-width: 1256px) 100vw, 1256px" /></a></p>
<p>Responda <strong>Sim</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2.png" data-rel="lightbox-gallery-zn3NzItx" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2.png" alt="" width="1257" height="513" class="alignnone size-full wp-image-7500" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2.png 1257w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2-300x122.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2-1024x418.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2-768x313.png 768w" sizes="(max-width: 1257px) 100vw, 1257px" /></a></p>
<p><strong>Informe a senha</strong> para o banco de dados do phpmyadmin. <a href="http://senhasegura.remontti.com.br/" rel="noopener" target="_blank">http://senhasegura.remontti.com.br/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3.png" data-rel="lightbox-gallery-zn3NzItx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3.png" alt="" width="1261" height="410" class="alignnone size-full wp-image-7501" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3.png 1261w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3-300x98.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3-1024x333.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3-768x250.png 768w" sizes="auto, (max-width: 1261px) 100vw, 1261px" /></a></p>
<p>Repita a senha<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4.png" data-rel="lightbox-gallery-zn3NzItx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4.png" alt="" width="1264" height="437" class="alignnone size-full wp-image-7502" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4.png 1264w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4-300x104.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4-1024x354.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4-768x266.png 768w" sizes="auto, (max-width: 1264px) 100vw, 1264px" /></a></p>
<p>Para acessar o phpmyadmin:<strong>http://[SERVER_IP]/phpmyadmin/</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png" data-rel="lightbox-gallery-zn3NzItx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png" alt="" width="1523" height="556" class="alignnone size-full wp-image-7471" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png 1523w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-300x110.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-1024x374.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-768x280.png 768w" sizes="auto, (max-width: 1523px) 100vw, 1523px" /></a></p>
<p>Para aumentar a seguraça vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar <strong>ALTERE_3ST4_SENHA</strong> pela sua senha.</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha que setamos!</p>
<pre class="remontti-code"># &gt; /root/.mysql_history</pre>
<h4>Instalação do FreeRadius</h4>
<p>Abra o terminal de comando do MariaDB e crie a base e o usuário chamados de radius e defina a senha para este usuário.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Altere <strong>SENHA_USER_RADIUS</strong>. Você pode gerar uma senha forte e segura em <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br</a></p>
<pre class="remontti-code">CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO &#039;radius&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA_USER_RADIUS&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Instale os pacotes do <strong>freeradius</strong></p>
<pre class="remontti-code"># apt install freeradius freeradius-mysql freeradius-utils</pre>
<p>Com o banco de dados radius criado iremos importar as tabelas padrões do freeradius:</p>
<pre class="remontti-code"># mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql</pre>
<p>Após comando será solicitado a senha do usuario radius (SENHA_USER_RADIUS).</p>
<p>Vamos fazer backups primeiramente dos arquivos que iremos alterar.</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/radiusd.conf /etc/freeradius/3.0/radiusd.conf.orig
# cp /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-available/sql.orig
# cp /etc/freeradius/3.0/mods-available/eap /etc/freeradius/3.0/mods-available/eap.orig
# cp /etc/freeradius/3.0/sites-available/default  /etc/freeradius/3.0/sites-available/default.org
# cp /etc/freeradius/3.0/mods-available/sqlippool /etc/freeradius/3.0/mods-available/sqlippool.orig
</pre>
<p>Irei abusar do comando sed de agora em diante com o intuito de entrar nos arquivos para editar, se não souber o que cada comando representa recomendo utilizar o chat GPT, cola lá e pergunta que ele explica rsrs (estou ficando velho)</p>
<pre class="remontti-code"># sed -i &#039;/^\s*stripped_names = no/s/^\(\s*stripped_names =\) no/\1 yes/g&#039; /etc/freeradius/3.0/radiusd.conf
# sed -i &#039;/^\s*auth = no/s/^\(\s*auth =\) no/\1 yes/g&#039; /etc/freeradius/3.0/radiusd.conf
# sed -i &#039;/^\s*auth_badpass = no/s/^\(\s*auth_badpass =\) no/\1 yes/g&#039; /etc/freeradius/3.0/radiusd.conf
# sed -i &#039;/^\s*auth_goodpass = no/s/^\(\s*auth_goodpass =\) no/\1 yes/g&#039; /etc/freeradius/3.0/radiusd.conf</pre>
<p>Ajustaremos o <a href="https://wiki.freeradius.org/guide/SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu" rel="noopener noreferrer" target="_blank">mod SQL</a> para trabalhar com conexão do tipo mysql, e informamos os dados para conexão com o banco de dados. Arquivo /etc/freeradius/3.0/mods-available/sql.orig</p>
<pre class="remontti-code"># sed -i &#039;s/driver = &quot;rlm_sql_null&quot;/driver = &quot;rlm_sql_mysql&quot;/&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;s/dialect = &quot;sqlite&quot;/dialect = &quot;mysql&quot;/&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/server = &quot;localhost&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/port = 3306/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/login = &quot;radius&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/password = &quot;radpass&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/read_clients = yes/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql</pre>
<p>No próximo comando altere <strong>SENHA_USER_RADIUS</strong> para a senha de conexão do usuário radius.</p>
<pre class="remontti-code"># sed -i &#039;s/radpass/SENHA_USER_RADIUS/&#039; /etc/freeradius/3.0/mods-available/sql</pre>
<p>Habilite os mods sql e sqlippool:</p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/sql
# ln -s /etc/freeradius/3.0/mods-available/sqlippool /etc/freeradius/3.0/mods-enabled/sqlippool</pre>
<p>Desativando o TLS do Mysql</p>
<pre class="remontti-code"># sed -i &#039;84,102 {s/^/##/}&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;s/disable_tlsv1_2 = yes/disable_tlsv1_2 = no/&#039; /etc/freeradius/3.0/mods-available/eap 
# sed -i &#039;s/disable_tlsv1_1 = yes/disable_tlsv1_1 = no/&#039; /etc/freeradius/3.0/mods-available/eap 
# sed -i &#039;s/disable_tlsv1 = yes/disable_tlsv1 = no/&#039; /etc/freeradius/3.0/mods-available/eap
# sed -i &#039;/disable_tlsv1/s/^#//g&#039; /etc/freeradius/3.0/mods-available/eap
# sed -i &#039;s/tls_min_version = &quot;1.2&quot;/tls_min_version = &quot;1.0&quot;/&#039; /etc/freeradius/3.0/mods-available/eap</pre>
<p>Agora no arquivo /etc/freeradius/3.0/sites-enabled/default vamos comentar alguns componentes que não nos interessa (Se você entrar no arquivo e editar manualmente ele está todo comentado, auto explicativo.) e incluir alguns componentes como o SQL.</p>
<pre class="remontti-code"># sed -i &#039;/^[[:space:]]*digest/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*suffix/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*files/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*-ldap/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*exec/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*detail/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*unix/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*attr_filter.accounting_response/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/^[[:space:]]*-ldap/s/^/## /&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;s/-sql/sql/&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;741 s/# *//&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;958,970 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;76 {s/^/#/}&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;77 s/# *//&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;66 s/# *//&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;/^[[:space:]]*#.*sqlippool/s/^#//&#039; /etc/freeradius/3.0/sites-available/default
</pre>
<p>Faremos os ajustes no arquivo <strong>inner-tunnel</strong></p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/sites-available/inner-tunnel /etc/freeradius/3.0/sites-available/inner-tunnel.org</pre>
<pre class="remontti-code"># sed -i &#039;/^[[:space:]]*suffix/s/^/## /&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;/^[[:space:]]*files/s/^/## /&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;/^[[:space:]]*-ldap/s/^/## /&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;s/-sql/sql/&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;/^[[:space:]]*radutmp/s/^/## /&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;266 s/# *//&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;336,361 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;370,381 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/inner-tunnel</pre>
<p>Verifique com o comando abaixo se a saída dos seus arquivos ficou assim:</p>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/default |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code-plain">server default {
listen {
	type = auth
	ipaddr = *
	port = 0
	limit {
	      max_connections = 16
	      lifetime = 0
	      idle_timeout = 30
	}
}
listen {
	ipaddr = *
	port = 0
	type = acct
	limit {
	}
}
listen {
	type = auth
	port = 0
	limit {
	      max_connections = 16
	      lifetime = 0
	      idle_timeout = 30
	}
}
listen {
	ipv6addr = ::
	port = 0
	type = acct
	limit {
	}
}
authorize {
	filter_username
	preprocess
	chap
	mschap
	eap {
		ok = return
	}
	sql
	expiration
	logintime
	pap
	Autz-Type New-TLS-Connection {
		  ok
	}
}
authenticate {
	Auth-Type PAP {
		pap
	}
	Auth-Type CHAP {
		chap
	}
	Auth-Type MS-CHAP {
		mschap
	}
	mschap
	eap
}
preacct {
	preprocess
	acct_unique
}
accounting {
	sqlippool
	sql
}
session {
	sql
}
post-auth {
	if (session-state:User-Name &amp;&amp; reply:User-Name &amp;&amp; request:User-Name &amp;&amp; (reply:User-Name == request:User-Name)) {
		update reply {
			&amp;User-Name !* ANY
		}
	}
	update {
		&amp;reply: += &amp;session-state:
	}
	sqlippool
	sql
	remove_reply_message_if_eap
	Post-Auth-Type Challenge {
	}
	Post-Auth-Type Client-Lost {
	}
	if (EAP-Key-Name &amp;&amp; &amp;reply:EAP-Session-Id) {
		update reply {
			&amp;EAP-Key-Name := &amp;reply:EAP-Session-Id
		}
	}
}
pre-proxy {
}
post-proxy {
	eap
}
}
</pre>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/inner-tunnel |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code-plain">server inner-tunnel {
listen {
       ipaddr = 127.0.0.1
       port = 18120
       type = auth
}
authorize {
	filter_username
	chap
	mschap
	update control {
		&amp;Proxy-To-Realm := LOCAL
	}
	eap {
		ok = return
	}
	sql
	expiration
	logintime
	pap
}
authenticate {
	Auth-Type PAP {
		pap
	}
	Auth-Type CHAP {
		chap
	}
	Auth-Type MS-CHAP {
		mschap
	}
	mschap
	eap
}
session {
	sql
}
post-auth {
	sql
}
pre-proxy {
}
post-proxy {
	eap
}
</pre>
<h3>SQLIPPOOL</h3>
<p>Para muitos o o maior pesadelo <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f47b.png" alt="👻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> DUPLICIDADE DE IPs <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f47b.png" alt="👻" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
No Debian 12 temos a versão 3.2.1 do freeradius sendo rodada, nessa versão alguma melhorias já foram aplicadas, mas eu ainda acho falha para maioria dos IPs, então vou deixar aqui algumas alterações que tenho aplicado para uma realidade provedores que acredito que irá atender sem dores de cabeça.</p>
<p>Importe o banco de dados e aplique as regras de procedure.</p>
<pre class="remontti-code"># mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/schema.sql
# mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/procedure.sql </pre>
<p>Crie uma cópia do arquivo original, nunca se saber quando iremos precisar.</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf.orig</pre>
<p>Para debugs e até mesmo algum script que visa buscar por falhas ou entendimento irei criar a coluna <strong>action</strong> na tabela radippool, nela estarei gravando qual a ação/query que ele executou do queries.conf.</p>
<pre class="remontti-code"># mysql -u radius -p -D radius -e &#039;ALTER TABLE radippool ADD COLUMN \`action\` VARCHAR(20) NULL AFTER pool_key;&#039;</pre>
<p>Vamos pagar tudo que tem em queries.conf e criar todas as entradas.</p>
<pre class="remontti-code"># &gt; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf
# vim /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<p>Deixei nos comentários o macimo de explicação</p>
<pre class="remontti-code">
#
# TODOS OS IPS NA RADIPPOOL. AS POLÍTICAS SERÃO AS SEGUINTES:
# 
#  1 - Quando um novo login tentar selecionar um endereço IP pela primeira vez na &quot;radippool&quot;, o sistema verificará 
#      se esse login já utilizou um endereço com Pool-Name que esta solicitado.
#  2 - Se o login não tiver usado nenhum endereço da Pool-Name solicitada, será atribuído aleatoriamente um novo endereço, 
#      desde que o &quot;expiry_time&quot; seja menor que a data e hora atual.
#  3 - Se todos os endereços IPs dentro da Pool-Name solicitada já sendo utilizado ou estiverem em estado aguardando (&quot;waiting&quot;), 
#      a query &quot;allocate_find&quot; irá verificando se o &quot;expiry_time&quot; é menor que a data e hora atual e assim utilizando um dos IPs 
#      em &quot;waiting&quot; com o &quot;expiry_time&quot; mais antigo. Isso é comum por exemplo quando um cliente cancela sua assinatura.
#  3 - Se todos os endereços IPs dentro da Pool-Name solicitada já estiverem sendo utilizados ou estiverem em estado de espera (&quot;waiting&quot;), 
#      nossa query &quot;allocate_find&quot; irá verificar se o &quot;expiry_time&quot; é menor que a data e hora atual e, assim, utilizará um dos IPs
#      em estado de espera com o &quot;expiry_time&quot; mais antigo. Isso é comum, por exemplo, quando um cliente cancela sua assinatura.
#  4 - Se todos os IPs da Pool-Name estiverem em uso e o &quot;expiry_time&quot; for maior que a data atual informada pelo lease_duration, 
#      significa que essa pool-name acabou, nesse a query &quot;allocate_find&quot; buscará na Pool-Name definida na variável &quot;pool_next&quot;. 
#      Por exemplo, ao esgotar os IPs da Pool-Name &quot;publicos&quot;, serão entregues IPs da Pool-Name &quot;cgant&quot;.
#  5 - Se a Pool-Name solicitada e a Pool-Name definida em &quot;pool_next&quot; não tiverem mais endereços disponíveis, 
#      ou não forem encontradas, a responsabilidade de entregar os IPs ficará a cargo do roteador.
#
#  OBS: Escolher um IP randomicamente é mais interessante para balanceamento de carga.
#
#  Autor: Rudimar Remontti 
#


#  Usar SKIP LOCKED acelera as consultas de seleção
#  No entanto, requer MySQL &gt;= 8.0.1 ou MariaDB &gt;= 10.6.
#
#skip_locked = &quot;&quot;
skip_locked = &quot;SKIP LOCKED&quot;


#
#  Por padrão, ao utilizar todos os endereços IPs de uma pool, 
#  o módulo sqlippool do FreeRADIUS permite que seu roteador (NAS) 
#  distribua a pool configurada por ele.
#  Porém estarei aqui fazendo uma alteração na função &quot;allocate_find&quot;
#
pool_next = &quot;cgnat&quot;


#
#  Alocar um endereço IP já utilizado.
#
#  Se um usuário já utilizou um determinado IP, entregue 
#  para ele o mesmo endereco com &quot;expiry_time&quot; mais recente.
#
allocate_existing = &quot;\
	SELECT framedipaddress FROM ${ippool_table} \
	WHERE pool_name = &#039;%{control:${pool_name}}&#039; \
	AND username = &#039;%{User-Name}&#039; \
	ORDER BY expiry_time DESC \
	LIMIT 1 \
	FOR UPDATE ${skip_locked}&quot;


#
# Encontre um endereço IP livre no Pool-Name solicitado 
# ou no Pool-Name especificado na variável pool_next. 
# A explicação está no início deste arquivo.
#
#  Nota: Isso pode se tonar lento se você tiver mais de 30 mil IPs livres, 
#        é rerecomendo fazer um tuning no seu MariaDB/MySQL.
#
allocate_find = &quot;\
	SELECT framedipaddress \
	FROM ${ippool_table} \
	WHERE ( \
	    CASE \
	        WHEN ( \
	            SELECT COUNT(framedipaddress) \
	            FROM radippool \
	            WHERE pool_name = &#039;%{control:Pool-Name}&#039; AND expiry_time &lt; NOW() \
	            LIMIT 1 \
	        ) &gt; 0 THEN \
	            (pool_name = &#039;%{control:Pool-Name}&#039; AND expiry_time &lt; NOW()) \
	        ELSE \
	            CASE \
	                WHEN ( \
	                    SELECT COUNT(framedipaddress) \
	                    FROM radippool \
	                    WHERE pool_name = &#039;${pool_next}&#039; AND username = &#039;%{User-Name}&#039; \
	                    LIMIT 1 \
	                ) &gt; 0 THEN \
	                    (pool_name = &#039;${pool_next}&#039; AND username = &#039;%{User-Name}&#039;) \
	                ELSE \
	                    (pool_name = &#039;${pool_next}&#039; AND expiry_time &lt; NOW()) \
	            END \
	    END \
	) \
	ORDER BY expiry_time ASC, RAND() \
	LIMIT 1 \
	FOR UPDATE ${skip_locked}&quot;

#
#  Se um IP não puder ser alocado, verifique se o pool existe ou não. 
#  Isso permite que o módulo diferencie entre um pool cheio e nenhum pool.
#  Nota: Se você não estiver executando módulos de pool redundantes, esta consulta pode 
#  ser comentada para evitar executar esta consulta toda vez que um IP não for alocado.
#
pool_check = &quot;\
	SELECT id \
	FROM ${ippool_table} \
	WHERE pool_name=&#039;%{control:${pool_name}}&#039; \
	LIMIT 1&quot;

#
#  Atualização dos IPs já alocado.
#
allocate_update = &quot;\
	UPDATE ${ippool_table} \
	SET \
		nasipaddress = &#039;%{NAS-IP-Address}&#039;, pool_key = &#039;${pool_key}&#039;, \
		callingstationid = &#039;%{Calling-Station-Id}&#039;, \
		username = &#039;%{User-Name}&#039;, expiry_time = NOW() + INTERVAL ${lease_duration} SECOND, \
		action = &#039;allocate_update&#039; \
	WHERE framedipaddress = &#039;%I&#039;&quot;

#
#  Esta série de consultas libera um número de IP quando um registro de INÍCIO de contabilidade chega.
#
start_update = &quot;\
	UPDATE ${ippool_table} \
	SET \
		expiry_time = NOW() + INTERVAL ${lease_duration} SECOND, \
		action = &#039;start_update&#039; \
	WHERE nasipaddress = &#039;%{NAS-IP-Address}&#039; \
	AND pool_key = &#039;${pool_key}&#039; \
	AND username = &#039;%{User-Name}&#039; \
	AND callingstationid = &#039;%{Calling-Station-Id}&#039; \
	AND framedipaddress = &#039;%{${attribute_name}}&#039;&quot;

#
#  Essa consulta expira um número de IP quando um registro de PARADA de contabilidade chega.
#
stop_clear = &quot;\
	UPDATE ${ippool_table} \
	SET \
	    nasipaddress = &#039;&#039;, \
	    pool_key = &#039;waiting&#039;, \
	    callingstationid = &#039;&#039;, \
		expiry_time = NOW() - INTERVAL 2 SECOND, \
		action = &#039;stop_clear&#039; \
	WHERE nasipaddress = &#039;%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}&#039; \
	AND pool_key = &#039;${pool_key}&#039; \
	AND username = &#039;%{User-Name}&#039; \
	AND callingstationid = &#039;%{Calling-Station-Id}&#039; \
	AND framedipaddress = &#039;%{${attribute_name}}&#039;&quot;

#
#  Atualização do IP quando está em utilização, a atualização é feita 
#  a cada x tempo (interim-update/Acct-Interim-Interval) aumenta o tempo definido em &quot;lease_duration&quot;
#
alive_update = &quot;\
	UPDATE ${ippool_table} \
	SET \
		expiry_time = NOW() + INTERVAL ${lease_duration} SECOND, \
		action = &#039;alive_update&#039; \
	WHERE nasipaddress = &#039;%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}&#039; \
	AND pool_key = &#039;${pool_key}&#039; \
	AND username = &#039;%{User-Name}&#039; \
	AND callingstationid = &#039;%{Calling-Station-Id}&#039; \
	AND framedipaddress = &#039;%{${attribute_name}}&#039;&quot;


#
#  Libera todos os endereços IP alocados a um NAS quando este é ligado ou reiniciado. 
#  Exemplo que uma falha de energia.
#  
on_clear = &quot;\
	UPDATE ${ippool_table} \
	SET \
		expiry_time = NOW() + INTERVAL ${lease_duration} SECOND, \
		action = &#039;on_clear&#039; \
	WHERE nasipaddress = &#039;%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}&#039;&quot;


#
#  Libera todos os endereços IP alocados a um NAS quando este é desligado ou fica offline.
#
off_clear = &quot;\
	UPDATE ${ippool_table} \
	SET \
		expiry_time = NOW(), \
		action = &#039;off_clear&#039; \
	WHERE nasipaddress = &#039;%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}&#039;&quot;
</pre>
<p>É interessante você ajustar o tempo <strong>lease_duration = 3600</strong> que por padrão é de 1h no arquivo /etc/freeradius/3.0/mods-available/sqlippool, para mim obtive resultados melhores com 30min, porém sempre respeitando o tempo de <strong>Acct-Interim-Interval</strong> que deve ser um tempo menor, entre 5 a 10 minutos, para evitar duplicidades de IPs.<br />
Falo sobre isso no tutorial <a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a> recomendo a leitura!</p>
<pre class="remontti-code"># sed -i &#039;s/lease_duration = 3600/lease_duration = 1200/&#039; /etc/freeradius/3.0/mods-available/sqlippool
# systemctl  restart freeradius</pre>
<p>Caso você tenha uma alta demanda de requisições você deve fazer algumas alterações no radiusd.conf.<br />
Altere conforme sua necessidade, e hardware de seu servidor. Vale lembrar que fazendo essas alterações pode ser necessário alterar o limite de conexões ao MariaDB. Não abuse nessas configurações recomendo ler a documentação.</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/radiusd.conf</pre>
<p>Você pode começar dobrando os valores, ex.:</p>
<pre class="remontti-code">[...]
thread pool {
        start_servers = 10
        max_servers = 64
        min_spare_servers = 6
        max_spare_servers = 20
        max_queue_size = 131072
        max_requests_per_server = 0
        auto_limit_acct = no
}
[...]</pre>
<p>Em grande escalas é importante que você também realize um tuning no MariaDB. Recomendo:<br />
- <a href="https://github.com/major/MySQLTuner-perl" rel="noopener" target="_blank">https://github.com/major/MySQLTuner-perl</a><br />
- <a href="https://github.com/BMDan/tuning-primer.sh" rel="noopener" target="_blank">https://github.com/BMDan/tuning-primer.sh</a></p>
<h3>Finalizando</h3>
<p>Habilite o freeradius para começar junto com a inicialização do sistema</p>
<pre class="remontti-code"># systemctl enable freeradius</pre>
<p>Pare o serviço e inicie em modo debug</p>
<pre class="remontti-code"># systemctl stop freeradius
# freeradius -X</pre>
<p>Se nenhum erro acontecer uma mensagem com: <strong>Ready to process requests</strong> aparecer parabéns seu freeradius está funcionando. Através do comando debug você consegue acompanhar as ações que o freeradius irá fazer, ótimo para estudos e entendimento. Para encerrar o modo debig use Crtl+c, e então inicie o serviço de forma normal.</p>
<pre class="remontti-code"># systemctl start freeradius</pre>
<p>Para <strong>integrar</strong> seu servidor freeradius para fazer autenticações PPPoE, Hotspot, Wireless PSK/EAP entre outras, você precisa aprender mais sobre as <strong>tabelas</strong> do <strong>banco de dados</strong> e quais <strong>atributos</strong> usar em cada situação sempre pensando na segurança. Você pode acessar <a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a> onde irá encontra alguns modelos de autenticação que atente praticamente todos os cenários de provedores. </p>
<p>Gostou? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><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>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p><strong>Resolução de problema:</strong></p>
<p>Se seu login conter @ no entanto não terminar como domínio padrão exemplo user@dom.xxx.yy user@dom.xxx, e sim apenas user@dom edite:</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/policy.d/filter</pre>
<p>Altere para accept o seguinte filtro:</p>
<pre class="remontti-code">
        if ((&amp;User-Name =~ /@/) &amp;&amp; (&amp;User-Name !~ /@(.+)\.(.+)$/))  {
            update request {
                &amp;Module-Failure-Message += &#039;Rejected: Realm does not have at least one dot separator&#039;
            }
            #reject
            accept
        }
</pre>
<p>Fonte:<br />
<a href="https://wiki.freeradius.org/guide/SQL-HOWTO" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/guide/SQL-HOWTO</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sql" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sql</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sqlippool" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sqlippool</a></p>
<p>O post <a href="https://blog.remontti.com.br/7784">Instalação FreeRadius no Debian 12 Bookworm (Extra sqlippool)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7784/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Guia passo a passo para instalação do phpIPAM, um Software de Gerenciamento de Endereços IP</title>
		<link>https://blog.remontti.com.br/2401</link>
					<comments>https://blog.remontti.com.br/2401#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 12 Jun 2023 15:40:55 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[administração]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[aplicação]]></category>
		<category><![CDATA[Código Aberto]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[configuração de endereços IPs]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[debain]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[documentação]]></category>
		<category><![CDATA[endereços IPs]]></category>
		<category><![CDATA[ferramenta]]></category>
		<category><![CDATA[gerenciamento]]></category>
		<category><![CDATA[gerenciamento de IP]]></category>
		<category><![CDATA[gerenciamento de rede]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[instalação do phpIPAM]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[IPAM]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[phpIPAM]]></category>
		<category><![CDATA[rede]]></category>
		<category><![CDATA[servidor de DHCP]]></category>
		<category><![CDATA[servidor dns]]></category>
		<category><![CDATA[Servidor WEB]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[tutorial banco de dados]]></category>
		<category><![CDATA[tutorial de configuração]]></category>
		<category><![CDATA[tutorial de gerenciamento]]></category>
		<category><![CDATA[tutorial de instalação]]></category>
		<category><![CDATA[tutorial Debian]]></category>
		<category><![CDATA[tutorial MariaDB.]]></category>
		<category><![CDATA[tutorial MySQL]]></category>
		<category><![CDATA[tutorial passo a passo]]></category>
		<category><![CDATA[tutorial phpIPAM]]></category>
		<category><![CDATA[tutorial servidor web]]></category>
		<category><![CDATA[tutorial software de gerenciamento]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=2401</guid>

					<description><![CDATA[<p>O phpIPAM é um aplicação de gerenciamento de endereço IPs de código aberto (IPAM). Seu objetivo é fornecer gerenciamento de endereços IP leve, moderno e útil. É uma aplicação baseada em php com backend&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2401">Guia passo a passo para instalação do phpIPAM, um Software de Gerenciamento de Endereços IP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><center><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7493" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></center></p>
<p>O phpIPAM é um aplicação de gerenciamento de endereço IPs de código aberto (IPAM). Seu objetivo é fornecer gerenciamento de endereços IP leve, moderno e útil. É uma aplicação baseada em php com backend de banco de dados MySQL/MariaDB, usando bibliotecas jQuery, ajax e recursos HTML5 / CSS3.</p>
<p><strong><font color="red">Recomendado Debian 12 Bookworm:</font></strong><br />
1 &#8211; <a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Debian 12 Bookworm / Instalação Limpa</a><br />
2.a &#8211; <a href="https://blog.remontti.com.br/7460" rel="noopener" target="_blank">Servidor WEB NGINX + PHP 8.2 + MariaDB + phpMyAdmin</a><br />
2.b &#8211; <a href="https://blog.remontti.com.br/7496" rel="noopener" target="_blank">Servidor WEB Apache2 + PHP 8.2 + MariaDB + phpMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p><strong><font color="red">Recomendado Debian 11 Bullseye:</font></strong><br />
1- <a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Bullseye / Instalação Limpa</a><br />
2- <a href="https://blog.remontti.com.br/5893" rel="noopener noreferrer" target="_blank">Servidor WEB Apache2 + PHP7.4 + MariaDB + phpMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p><strong><font color="red">Recomendado Debian 10 Stretch:</font></strong><br />
1- <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a><br />
2.a &#8211; <a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">Servidor WEB Apache2 + PHP7.3 + MariaDB + phpMyAdmin</a><br />
2.b &#8211; <a href="https://blog.remontti.com.br/5465" rel="noopener" target="_blank">Servidor WEB NGINX + PHP7.3 + MariaDB + phpMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p><strong><font color="red">Recomendado Debian 9 Buster:</font></strong><br />
<a href="https://blog.remontti.com.br/1152" rel="noopener noreferrer" target="_blank">Instalação Limpa Debian 9 Buster</a><br />
<a href="https://blog.remontti.com.br/2024" rel="noopener noreferrer" target="_blank">Servidor web Apache2, PHP 7.0, MariaDB, PHPMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p>Após instalação do servidor WEB+MariaDB, vamos criar nossa base de dados para o phpipam</p>
<pre class="remontti-code"># mariadb -p</pre>
<pre class="remontti-code">
CREATE DATABASE phpipam;
GRANT ALL PRIVILEGES ON phpipam.* TO &#039;phpipam&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Download phpIPAM<br />
Instalação estável: (Nesta data é 1.5.2) <a href="https://github.com/phpipam/phpipam/releases" rel="noopener noreferrer" target="_blank">https://github.com/phpipam/phpipam/releases</a> </p>
<pre class="remontti-code"># cd /tmp
# wget https://github.com/phpipam/phpipam/releases/download/v1.5.2/phpipam-v1.5.2.tgz
# tar vxf phpipam-v1.5.2.tgz
# mv phpipam /var/www/html/phpipam
&lt;pre&gt;# cd /var/www/html/phpipam</pre>
<p>Agora precisamos inserir os dados para o phpipam conectar ao banco de dados. Primeiro copie config.dist.php para config.php e insira os detalhes necessários.</p>
<pre class="remontti-code"># cp config.dist.php config.php
# vim config.php</pre>
<p>Encontre a linha <em>$db['pass'] = 'phpipamadmin';</em> e altere para sua senha, caso tenha utilizado outro usuário e nome de base altere também.</p>
<pre class="remontti-code">
...
$db[&#039;host&#039;] = &quot;localhost&quot;;
$db[&#039;user&#039;] = &quot;phpipam&quot;;
$db[&#039;pass&#039;] = &quot;SUA_SENHA&quot;;
$db[&#039;name&#039;] = &quot;phpipam&quot;;
...</pre>
<p>Se estas utilizando debian 12, sua versão do php é a 8.2 que na versão atual 1.5.2 ainda parece não ter sido testado, para resolver entre no diretório do phpipam e adicione <strong>$allow_untested_php_versions=true;</strong> ao final do arquivo:</p>
<pre class="remontti-code"># cd /var/www/html/phpipam
# echo &#039;$allow_untested_php_versions=true;&#039; &gt;&gt; config.php</pre>
<p>Além disso, nós extraímos o diretório do phpipam fora pasta raiz (/var/www/html), será necessário definir isso (<em>define('BASE', "/");</em>) em config.php, se você colocou no diretório raiz ou configurou um <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual (recomendo)</a> para o phpipam não é necessário :</p>
<pre class="remontti-code"># vim config.php</pre>
<p>Altere :</p>
<pre class="remontti-code-plain">define(&#039;BASE&#039;, &quot;/&quot;);</pre>
<p>para:</p>
<pre class="remontti-code-plain">define(&#039;BASE&#039;, &quot;/phpipam/&quot;);</pre>
<p>Instale a extensão gmp do php que é necessária para o funcionamento do phpipam e restarte o apache ou nginx de acordo com seu servidor.</p>
<pre class="remontti-code"># apt install php-gmp -y
# systemctl restart apache2
ou
# systemctl restart nginx</pre>
<p>Agora acesse seu servidor em seu navegado: http://ip-server.ou.dominio/phpipam/</p>
<p>Clique em <strong>[New phpipam installation]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1.png" alt="" width="1280" height="709" class="alignnone size-full wp-image-7482" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1-1024x567.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1-768x425.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Clique em <strong>[Automatic database installation]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2.png" alt="" width="1280" height="832" class="alignnone size-full wp-image-7483" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2-1024x666.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2-768x499.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Entre com seu usuario: phpipam e senha senha de conexão do banco de dados (SUA_SENHA), clique em [Show advanced options], e <strong>DESMARQUE</strong> as opções: <strong>Create new database</strong> e <strong>Set permissions to tables</strong> e após em <strong>[Install phpipam database]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3.png" alt="" width="1280" height="878" class="alignnone size-full wp-image-7484" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3-1024x702.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3-768x527.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Uma mensagem "<strong>Database installed successfully!</strong>" será exibida, informado que o banco de dados foi criado com sucesso. Clique em <strong>[Continue]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4.png" alt="" width="1280" height="940" class="alignnone size-full wp-image-7485" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4-300x220.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4-1024x752.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4-768x564.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a>  </p>
<p>Defina a senha do usuário admin, e clique em <strong>[Save settings]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5.png" alt="" width="1280" height="709" class="alignnone size-full wp-image-7486" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5-1024x567.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5-768x425.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Uma mensagem <strong>"Settings updated, installation complete!"</strong> informado que a instalação foi completada! Clique em [<strong>Procced to login</strong>]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6.png" alt="" width="1280" height="798" class="alignnone size-full wp-image-7487" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6-300x187.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6-1024x638.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6-768x479.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Entre com o usuário admin e sua senha:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7.png" alt="" width="1280" height="709" class="alignnone size-full wp-image-7488" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7-1024x567.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7-768x425.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Prontinho para seu uso!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8.png" data-rel="lightbox-gallery-d7eDijyY" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8.png" alt="" width="1280" height="1387" class="alignnone size-full wp-image-7489" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8-277x300.png 277w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8-945x1024.png 945w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8-768x832.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Gostou?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong></p>
<p><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>O post <a href="https://blog.remontti.com.br/2401">Guia passo a passo para instalação do phpIPAM, um Software de Gerenciamento de Endereços IP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/2401/feed</wfw:commentRss>
			<slash:comments>40</slash:comments>
		
		
			</item>
		<item>
		<title>Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</title>
		<link>https://blog.remontti.com.br/6975</link>
					<comments>https://blog.remontti.com.br/6975#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 07 Dec 2022 18:47:28 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[certificado]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina bullseye]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftp ftp]]></category>
		<category><![CDATA[ftpd]]></category>
		<category><![CDATA[guro seguro]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[ssl ssl]]></category>
		<category><![CDATA[tls tls]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6975</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 11&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6975">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</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-6975"></span><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd.jpg" alt="" width="1000" height="474" class="alignnone size-full wp-image-6981" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd.jpg 1000w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-520x245.jpg 520w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-720x340.jpg 720w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></p>
<p><strong>Requisito:</strong><br />
<a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Instalação Limpa</a></p>
<p>Vire root de maneira correta no Debian 11!</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.</p>
<p><strong>Definindo senha para o root do mariaDB</strong><br />
Para aumentar a seguraçã vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar <strong>ALTERE_3ST4_SENHA</strong> pela sua senha.</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha que setamos!</p>
<pre class="remontti-code"># &gt; /root/.mysql_history</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)
);

EXIT;
</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;);

SELECT * FROM ftpd;
EXIT;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png" data-rel="lightbox-gallery-JKss0ssZ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png" alt="" width="2076" height="896" class="alignnone size-full wp-image-6984" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png 2076w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-300x129.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-1024x442.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-768x331.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-1536x663.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-2048x884.png 2048w" sizes="auto, (max-width: 2076px) 100vw, 2076px" /></a><br />
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"># &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/5893" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin + Let’s Encrypt no Debian 11 bullseye “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/6975">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6975/feed</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação FreeRadius no Debian 11 Bullseye (Extra sqlippool)</title>
		<link>https://blog.remontti.com.br/6129</link>
					<comments>https://blog.remontti.com.br/6129#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 26 Nov 2021 20:11:30 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6129</guid>

					<description><![CDATA[<p>Esse tutorial é ideal para provedores que desejam criar seu próprio sistema de autenticação com freeradius, fazendo autenticação do tipo PPPoE, hotspot, Wireless (PSK/EAP) entre outras. Neste tutorial iremos instalar e configurar o FreeRadius&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6129">Instalação FreeRadius no Debian 11 Bullseye (Extra sqlippool)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/freeradius-3-debian11.png" alt="" width="900" height="428" class="alignnone size-full wp-image-6136" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/freeradius-3-debian11.png 900w, https://blog.remontti.com.br/wp-content/uploads/2021/11/freeradius-3-debian11-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/freeradius-3-debian11-768x365.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /><br />
Esse tutorial é ideal para provedores que desejam criar seu próprio sistema de autenticação com freeradius, fazendo autenticação do tipo PPPoE, hotspot, Wireless (PSK/EAP)  entre outras.</p>
<p>Neste tutorial iremos instalar e configurar o FreeRadius 3.0.x. </p>
<p><strong>REQUISITOS</strong><br />
1 – <a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Bullseye &#8211; Instalação limpa</a><br />
2 – <a href="https://blog.remontti.com.br/5893" rel="noopener noreferrer" target="_blank">WEB Apache + PHP + MariaDB + phpMyAdmin “LAMP”</a> (Opcional)</p>
<p><strong>Instalação do FreeRadius 3.0.`>21`</strong><br />
Tenha primeiramente o MariaDB instalado <a href="https://blog.remontti.com.br/5893" rel="noopener" target="_blank">(Tutorial LAMP)</a>, então crie o banco de dados e usuário quais iremos utilizar para a integração com o Freeradius.</p>
<p>Abra o terminal de comando do MariaDB e crie a base e o usuario chamados de radius e defina a senha para este usuário.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Altere <strong>SENHA_USER_RADIUS</strong>. Você pode gerar uma senha forte e segura em <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br</a></p>
<pre class="remontti-code">CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO &#039;radius&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA_USER_RADIUS&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Instale os pacotes do <strong>freeradius</strong></p>
<pre class="remontti-code"># apt install freeradius freeradius-mysql freeradius-utils</pre>
<p>Com o o banco de dados radius criado iremos importar as tabelas padrões do freeradius:</p>
<pre class="remontti-code"># mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
# mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/schema.sql</pre>
<p>Após comando será solicitado a senha do usuario radius (SENHA_USER_RADIUS).</p>
<p>Caso deseje logs mais detalhados (recomendo) edite o arquivo /etc/freeradius/3.0/radiusd.conf, mas antes faça um backup do mesmo.</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/radiusd.conf /etc/freeradius/3.0/radiusd.conf.orig
# vim /etc/freeradius/3.0/radiusd.conf</pre>
<p>Localize as variáveis e altere para yes  </p>
<pre class="remontti-code">[...]
log {
    [...]
        stripped_names = yes
        auth = yes
        auth_badpass = yes
        auth_goodpass = yes
    [...]
}
[...]</pre>
<p>Ajustaremos o <a href="https://wiki.freeradius.org/guide/SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu" rel="noopener noreferrer" target="_blank">mod SQL</a> para trabalhar com conexão do tipo mysql, e informamos os dados para conexão com o banco de dados. Arquivo /etc/freeradius/3.0/mods-available/sql.orig</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-available/sql.orig</pre>
<p>Usarei o comando <strong>sed</strong> para facilitar sua vida <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> mas preste atenção nos comandos, se desejar pode editar o arquivo manualmente e alterar as entradas.</p>
<pre class="remontti-code"># sed -i &#039;s/driver = &quot;rlm_sql_null&quot;/driver = &quot;rlm_sql_mysql&quot;/&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;s/dialect = &quot;sqlite&quot;/dialect = &quot;mysql&quot;/&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/server = &quot;localhost&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/port = 3306/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/login = &quot;radius&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/password = &quot;radpass&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/read_clients = yes/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql</pre>
<p>No próximo comando altere <strong>SENHA_USER_RADIUS</strong> para a senha de conexão do usuário radius.</p>
<pre class="remontti-code"># sed -i &#039;s/radpass/SENHA_USER_RADIUS/&#039; /etc/freeradius/3.0/mods-available/sql</pre>
<p>Habilite o mod:</p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/sql</pre>
<p>Desativando o TLS do Mysql</p>
<pre class="remontti-code"># sed -i &#039;84,102 {s/^/##/}&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;s/disable_tlsv1_1 = yes/disable_tlsv1_1 = no/&#039; /etc/freeradius/3.0/mods-available/eap 
# sed -i &#039;s/disable_tlsv1 = yes/disable_tlsv1 = no/&#039; /etc/freeradius/3.0/mods-available/eap
# sed -i &#039;s/tls_min_version = &quot;1.2&quot;/tls_min_version = &quot;1.0&quot;/&#039; /etc/freeradius/3.0/mods-available/eap</pre>
<p>Agora no arquivo /etc/freeradius/3.0/sites-enabled/default vamos comentar alguns componentes que não nos interessa (Se você entrar no arquivo e editar manualmente ele está todo comentado, auto explicativo.) e incluir alguns componentes como o SQL.</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/sites-available/default  /etc/freeradius/3.0/sites-available/default.org</pre>
<pre class="remontti-code"># sed -i &#039;/digest/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/suffix/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/files/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/ldap/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/exec/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/detail/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/unix/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/attr_filter.accounting_response/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;s/-sql/sql/&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;689 s/# *//&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;854,874 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/default</pre>
<p>Habilitando o mod <strong> <a href="http://sqlippool" rel="noopener noreferrer" target="_blank">sqlippool</a></strong><br />
Como o mod sqlippool você poderá ter sua pool de IPs direto no banco de dados.</p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sqlippool /etc/freeradius/3.0/mods-enabled/sqlippool</pre>
<p>Vou alterar (Descomentando e comentado) a chave pool_key = "<strong>%{NAS-Port}</strong>" por "<strong>%{Calling-Station-Id}</strong>", desta forma a chave será o MAC, e "allow_duplicates = no" para não termos duplicidades de IPs. Mais adiante iremos também ajustar o allocate_clear.</p>
<pre class="remontti-code"># sed -i &#039;74 {s/^/#/}&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;75 s/# *//&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;67 s/# *//&#039; /etc/freeradius/3.0/mods-available/sqlippool</pre>
<p>Precisamos adicionar o mod sqlippool no nosso arquivo default, você acrescentará sqlippool em <strong>accounting</strong> {...} e <strong>post-auth</strong> {...} logo abaixo de <strong>sql</strong>: </p>
<pre class="remontti-code"># sed -i &#039;642i\    sqlippool&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;734i\    sqlippool&#039; /etc/freeradius/3.0/sites-available/default</pre>
<p>Verifique com o comando abaixo se a saída do seu arquivo ficou assim:</p>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/default |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code-plain">server default {
listen {
        type = auth
        ipaddr = *
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipaddr = *
        port = 0
        type = acct
        limit {
        }
}
listen {
        type = auth
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipv6addr = ::
        port = 0
        type = acct
        limit {
        }
}
authorize {
        filter_username
        preprocess
        chap
        mschap
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        mschap
        eap
}
preacct {
        preprocess
        acct_unique
}
accounting {
    sqlippool
        sql
}
session {
        sql
}
post-auth {
        if (session-state:User-Name &amp;&amp; reply:User-Name &amp;&amp; request:User-Name &amp;&amp; (reply:User-Name == request:User-Name)) {
                update reply {
                        &amp;User-Name !* ANY
                }
        }
        update {
                &amp;reply: += &amp;session-state:
        }
    sqlippool
        sql
        remove_reply_message_if_eap
}
pre-proxy {
}
post-proxy {
        eap
}
}</pre>
<p>Faremos os ajustes no arquivo <strong>inner-tunnel</strong></p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/sites-available/inner-tunnel /etc/freeradius/3.0/sites-available/inner-tunnel.org</pre>
<pre class="remontti-code"># sed -i &#039;/suffix/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;/files/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;/-ldap/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;s/-sql/sql/&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;s/radutmp/#radutmp/&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;266 s/# *//&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;336,361 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;370,381 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/inner-tunnel</pre>
<p>Verifique com o comando abaixo se a saída do seu arquivo ficou assim:</p>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/inner-tunnel |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code-plain">server inner-tunnel {
listen {
       ipaddr = 127.0.0.1
       port = 18120
       type = auth
}
authorize {
        filter_username
        chap
        mschap
        update control {
                &amp;Proxy-To-Realm := LOCAL
        }
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        mschap
        eap
}
session {
        sql
}
post-auth {
        sql
}
pre-proxy {
}
post-proxy {
        eap
}</pre>
<p>Uma alteração que acho válida é para que para cada alocação de <strong>IP</strong> ela seja <strong>randômica</strong>, isso pode solucionar alguns problemas como o balanceamento dos prefixo no seu BGP, ou daqueles clientes que jogam online, fazem download e até mesmo que estão sofrendo algum ataque. Assim ao reiniciar seu equipamento o mesmo irá receber um novo endereço IP. Para que funcione desta forma iremos apenas comentar algumas linhas e descomentar outras, pois em /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf variável <strong>allocate_find</strong> já vem com o modelo pronto <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Comentar:</p>
<pre class="remontti-code"># sed -i &#039;41,53 {s/^/##/}&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">##allocate_find = &quot;\
##  SELECT framedipaddress FROM ${ippool_table} \
##  WHERE pool_name = &#039;%{control:${pool_name}}&#039; \
##  AND ( \
##      expiry_time &lt; NOW() OR expiry_time IS NULL OR expiry_time = 0 \
##      OR ( nasipaddress = &#039;%{NAS-IP-Address}&#039; AND pool_key = &#039;${pool_key}&#039; ) \
##  ) \
##  ORDER BY \
##      (username &lt;&gt; &#039;%{User-Name}&#039;), \
##      (callingstationid &lt;&gt; &#039;%{Calling-Station-Id}&#039;), \
##      expiry_time \
##  LIMIT 1 \
##  FOR UPDATE&quot;</pre>
<p>Descomentar:</p>
<pre class="remontti-code"># sed -i &#039;74,81 s/# *//&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">allocate_find = &quot;\
    SELECT framedipaddress FROM ${ippool_table} \
    WHERE pool_name = &#039;%{control:${pool_name}}&#039; \
    AND expiry_time IS NULL \
    ORDER BY \
        RAND() \
    LIMIT 1 \
    FOR UPDATE&quot;
</pre>
<p>Como alteramos a pool_key para Calling-Station-Id  em /etc/freeradius/3.0/mods-enabled/sqlippool vamos ajustar o <strong>allocate_clear</strong> para quando for liberar um IP use a chave pool_key e não a NAS, caso contrário ira liberar IPs indevidos que estão sendo utilizado por usuários ativos e assim evitamos que surjam IPs duplicados, para isso:</p>
<p>Comentar:</p>
<pre class="remontti-code"># sed -i &#039;26,35 {s/^/##/}&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">##allocate_clear = &quot;\
##      UPDATE ${ippool_table} \
##      SET \
##              nasipaddress = &#039;&#039;, \
##              pool_key = 0, \
##              callingstationid = &#039;&#039;, \
##              username = &#039;&#039;, \
##              expiry_time = NULL \
##      WHERE expiry_time &lt;= NOW() - INTERVAL 1 SECOND \
##      AND nasipaddress = &#039;%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}&#039;&quot;</pre>
<p>Descomentar</p>
<pre class="remontti-code"># sed -i &#039;10,18 s/# *//&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">allocate_clear = &quot;\
        UPDATE ${ippool_table} \
        SET \
                nasipaddress = &#039;&#039;, \
                pool_key = 0, \
                callingstationid = &#039;&#039;, \
                username = &#039;&#039;, \
                expiry_time = NULL \
        WHERE pool_key = &#039;${pool_key}&#039;&quot;</pre>
<p>É interessante você ajustar o tempo <strong>lease_duration = 1200</strong> no arquivo /etc/freeradius/3.0/mods-available/sqlippool talvez para um menor intervalo,porém sempre respeitando que o <strong>Acct-Interim-Interval</strong> seja um tempo menor, para não ter duplicidades de ips. Falo sobre isso no tutorial <a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a> recomendo a leitura!</p>
<p>Caso você tenha uma alta demanda de requisições você pode fazer algumas alterações no radiusd.conf.<br />
Altere conforme sua necessidade, e hardware de seu servidor. Vale lembrar que fazendo essas alterações pode ser necessário alterar o limite de conexões ao MariaDB. Não abuse nessas configurações recomendo ler a documentação.</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/radiusd.conf</pre>
<p>Você pode começar dobrando os valores, ex.:</p>
<pre class="remontti-code">[...]
thread pool {
        start_servers = 10
        max_servers = 64
        min_spare_servers = 6
        max_spare_servers = 20
        max_queue_size = 131072
        max_requests_per_server = 0
        auto_limit_acct = no
}
[...]</pre>
<h3>Finalizando</h3>
<p>Habilite o freeradius para começar junto com a inicialização do sistema</p>
<pre class="remontti-code"># systemctl enable freeradius</pre>
<p>Pare o serviço e inicie em modo debug</p>
<pre class="remontti-code"># systemctl stop freeradius
# freeradius -X</pre>
<p>Se nenhum erro acontecer uma mensagem com: <strong>Ready to process requests</strong> aparecer parabéns seu freeradius está funcionando. Através do comando debug você consegue acompanhar as ações que o freeradius irá fazer, ótimo para estudos e entendimento. Para encerrar o modo debig use Crtl+c, e então inicie o serviço de forma normal.</p>
<pre class="remontti-code"># systemctl start freeradius</pre>
<p>Para <strong>integrar</strong> seu servidor freeradius para fazer autenticações PPPoE, Hotspot, Wireless PSK/EAP entre outras, você precisa aprender mais sobre as <strong>tabelas</strong> do <strong>banco de dados</strong> e quais <strong>atributos</strong> usar em cada situação sempre pensando na segurança. Você pode acessar <a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a> onde irá encontra alguns modelos de autenticação que atente praticamente todos os cenários de provedores. </p>
<p>Gostou? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><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>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p><strong>Resolução de problema:</strong></p>
<p>Se seu login conter @ no entanto não terminar como domínio padrão exemplo user@dom.xxx.yy user@dom.xxx, e sim apenas user@dom edite:</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/policy.d/filter</pre>
<p>Altere para accept o seguinte filtro:</p>
<pre class="remontti-code">
        if ((&amp;User-Name =~ /@/) &amp;&amp; (&amp;User-Name !~ /@(.+)\.(.+)$/))  {
            update request {
                &amp;Module-Failure-Message += &#039;Rejected: Realm does not have at least one dot separator&#039;
            }
            #reject
            accept
        }
</pre>
<p>Fonte:<br />
<a href="https://wiki.freeradius.org/guide/SQL-HOWTO" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/guide/SQL-HOWTO</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sql" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sql</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sqlippool" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sqlippool</a></p>
<p>O post <a href="https://blog.remontti.com.br/6129">Instalação FreeRadius no Debian 11 Bullseye (Extra sqlippool)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6129/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Solução de backup completa Open Source: Bacula Community 9.6.x e Baculum 9.6.x</title>
		<link>https://blog.remontti.com.br/4460</link>
					<comments>https://blog.remontti.com.br/4460#comments</comments>
		
		<dc:creator><![CDATA[Lenon Correa]]></dc:creator>
		<pubDate>Wed, 10 Jun 2020 19:38:02 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bacula]]></category>
		<category><![CDATA[baculum]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[passo a passo]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4460</guid>

					<description><![CDATA[<p>O Bacula é um software que permite você (ou o administrador de sistema) administrar backup, restauração e verificação dos dados de computadores em uma rede de sistemas mistos. Por ser tão flexível o Bacula&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4460">Solução de backup completa Open Source: Bacula Community 9.6.x e Baculum 9.6.x</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="wp-image-4535" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-300x148.png" alt="" width="709" height="350" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-768x379.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44.png 1366w" sizes="auto, (max-width: 709px) 100vw, 709px" /></p>
<p>O <strong>Bacula</strong> é um software que permite você (ou o administrador de sistema) administrar backup, restauração e verificação dos dados de computadores em uma rede de sistemas mistos.<br />
Por ser tão flexível o Bacula é considerado um framework de backup, podendo ser implementado nas mais diferentes estruturas corporativas.</p>
<h3>Funcionalidades:</h3>
<ul>
<li>Geração de formato aberto (não proprietário) de gravação (pode ser lido pelo tar e dump do Unix) – adeus ao aprisionamento tecnológico;</li>
<li>Armazenamento do seu catálogo em banco de dados padrão SQL: SQLite,PostgreSQL ou MySQL;</li>
<li>Suporte a compressão dos backups nos algorítimos livres GZIP e LZO;</li>
<li>GPL – sem custos com licenças, conhecimento e possibilidade de customização da ferramenta na versão community.</li>
</ul>
<p>E de quebra, ainda vamos instalar o<strong> Baculum</strong>, que é  a Web Gui  (interface gráfica) Oficial do Bacula Community, permitindo que o administrador de backup altere configurações de backup sem precisar editar arquivos texto. Além disso uma API é disponibilizada, facilitando a integração com outros softwares, interfaces e consoles.</p>
<p>Primeiramente me chamo<strong> Lenon Corrêa</strong>, trabalho em uma empresa de Cloud Computing, a <a href="https://staybox.com.br">Staybox</a>, fornecemos serviços de hospedagem, máquinas virtuais, backup em nuvem, licenciamento de software e outros do nível (se precisar de algo, me chame kkkk). Já trabalhei com o Rudimar, assim veio a oportunidade deste post. Antes de mais nada, é o 1º post, então deem seus feedbacks sobre o conteúdo e tirem suas dúvidas, criticas construtivas sempre serão aceitas. Sem mais delongas, vamos ao que realmente interessa!</p>
<p>Requisitos:<br />
<a href="https://blog.remontti.com.br/2966" target="_blank" rel="noopener noreferrer">* Debian 10 (Buster) -&gt; Instalação Limpa</a></p>
<p><a href="https://blog.remontti.com.br/arquivos/Home/Scripts/tunning.bash.sh" target="_blank" rel="noopener noreferrer">* Tunning Bash -&gt; Bash colorido</a> (Este tique aprendi com o Rudimar kkk)</p>
<h2><strong>Instalação<br />
</strong></h2>
<p>Na primeira etapa, instalamos pacotes necessários para a compilação do <strong>Bacula</strong>, estas bibliotecas são indispensáveis para o bom funcionamento do software e andamento da instalação.</p>
<pre class="remontti-code"># su -
# apt install vim make gcc build-essential perl unp mc mtx libreadline7 \
  libreadline5-dbg libreadline-gplv2-dev zlib1g-dev lzop liblzo2-dev python-lzo sudo \
  gawk gdb libacl1 libacl1-dev libssl-dev lsscsi apt-transport-https qt4-dev-tools \
  qt4-qtconfig libqt4-dev libqwt5-qt4 libqwt5-qt4-dev pkg-config wget -y</pre>
<h2>:: Instalação do banco de dados ::</h2>
<p>Os banco de dados homologados pelo <strong>Bacula</strong> são: PostgreSQL, SQLite e MySQL. Então sinta-se livre para usar qualquer um deles, os passos que se alteram desta instalação são minímos.<br />
Já vi pessoas também instalando com o MariaDB, em suma ele é praticamente igual ao MySQL, então não deve acarretar inconsistências. Mas vamos seguir a risca as recomendações da comunidade e vamos instalar a versão 5.7 Community do MySQL (Também já fui orientado a usar PostgreSQL, pois o desempenho é superior, mas como meu conhecimento é relativamente baixo, prefiro ir de MySQL mesmo, que sei tratar erros, se acontecerem).</p>
<p>Primeiro, adicionamos a chave GPG do MySQL Community, em seguida adicionamos em nossa máquina para reconhecer o reposítório.</p>
<pre class="remontti-code"># wget -qO - https://repo.mysql.com/RPM-GPG-KEY-mysql --no-check-certificate | apt-key add -</pre>
<p>Agora, adicionamos os repositórios, em seguida update.</p>
<pre class="remontti-code"># cat &lt;&lt;EOF &gt;/etc/apt/sources.list.d/mysql.list 
deb http://repo.mysql.com/apt/debian/ buster mysql-apt-config
deb http://repo.mysql.com/apt/debian/ buster mysql-5.7
deb http://repo.mysql.com/apt/debian/ buster mysql-tools
deb http://repo.mysql.com/apt/debian/ buster mysql-tools-preview
deb-src http://repo.mysql.com/apt/debian/ buster mysql-5.7
EOF</pre>
<p>Atualize os repositórios.</p>
<pre class="remontti-code"># apt update</pre>
<p>Se tudo correu bem até aqui, vamos finalmente aos pacotes do MySQL:</p>
<pre class="remontti-code"># apt install mysql-community-server libmysqlclient-dev -y</pre>
<p>Durante a instalação, o MySQL oferta se você deseja adicionar uma senha ao <strong>root</strong> para acessar o banco, se sim, insira a senha, caso contrário apenas tecle enter e prossiga.</p>
<p><img loading="lazy" decoding="async" class=" wp-image-4519" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-42-38-300x152.png" alt="" width="718" height="364" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-42-38-300x152.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-42-38-1024x520.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-42-38-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-42-38.png 1366w" sizes="auto, (max-width: 718px) 100vw, 718px" /></p>
<p>Agora vamos criar um usuário para o <strong>Bacula</strong> no banco de dados, entre no banco com o comando a seguir:</p>
<pre class="remontti-code"># mysql</pre>
<p>Ou, caso você tenha inserido uma senha de <strong>root</strong> no banco:</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<p style="text-align: left">Os comandos abaixo são executados dentro do banco de dados, por tanto cuidado. Gere uma hash de senha e faça a alteração na linha 3.<br />
O que estas linhas fazem são, simplesmente adicionar um usuário ao banco e dar os devidos privilégios para que ele possa inserir, deletar e alterar registros das tabelas que criaremos no futuro deste tutorial.</p>
<pre class="remontti-code">CREATE USER bacula;
GRANT ALL ON *.* TO &#039;bacula&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA_AQUI&#039; WITH GRANT OPTION;
GRANT SELECT ON mysql.proc TO &#039;bacula&#039;;
FLUSH PRIVILEGES;
QUIT</pre>
<p><img loading="lazy" decoding="async" class=" wp-image-4520" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-45-34-300x144.png" alt="" width="704" height="338" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-45-34-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-45-34-1024x490.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-45-34.png 1363w" sizes="auto, (max-width: 704px) 100vw, 704px" /></p>
<p>Para as alterações terem eficácia, restarte o serviço SQL.</p>
<pre class="remontti-code"># /etc/init.d/mysql restart</pre>
<p>Nos comandos seguintes, vamos entrar no diretório onde serão compilados os pacotes do <strong>Bacula</strong>. Na data de hoje 05/06 se encontra na versão 9.6.4, você pode conferir atualizar <a href="https://sourceforge.net/projects/bacula/files/bacula/" target="_blank" rel="noopener noreferrer">neste link</a>. Vamos baixar o fonte, descompactá-lo e entrar na pasta seguinte.</p>
<pre class="remontti-code"># cd /usr/src
# wget --no-check-certificate https://sourceforge.net/projects/bacula/files/bacula/9.6.4/bacula-9.6.4.tar.gz
# tar xvzf bacula-9.6.4.tar.gz
# cd bacula-9.6.4</pre>
<p><img loading="lazy" decoding="async" class="wp-image-4522" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-48-15-300x31.png" alt="" width="726" height="75" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-48-15-300x31.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-48-15-1024x107.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-48-15-768x80.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-48-15.png 1356w" sizes="auto, (max-width: 726px) 100vw, 726px" /></p>
<p>Dentro da pasta &#8216;bacula-9.6.4&#8217;, execute o comando abaixo, ele vai configurar algumas diretivas que interferem diretamente na compilação do <strong>Bacula</strong>, portanto altere usuário e senha do banco de dados, conforme criou anteriormente, em:<br />
&#8211;with-db-user=&#8217;usuario_do_banco&#8217;<br />
&#8211;with-db-password=&#8217;SENHA_DO_BANCO_AQUI&#8217;<br />
&#8211;with-hostname=&#8217;ip_da_sua_maquina&#8217;<br />
<strong> Qualquer outra alteração faça com cuidado.</strong></p>
<pre class="remontti-code"># ./configure \
 --enable-smartalloc \
 --with-mysql \
 --with-db-user=bacula \
 --with-db-password=&#039;SENHA_DO_BANCO_AQUI&#039; \
 --with-db-port=3306 \
 --with-openssl \
 --with-readline=/usr/include/readline \
 --sysconfdir=/etc/bacula \
 --bindir=/usr/bin \
 --sbindir=/usr/sbin \
 --with-scriptdir=/etc/bacula/scripts \
 --with-plugindir=/etc/bacula/plugins \
 --with-pid-dir=/var/run \
 --with-subsys-dir=/etc/bacula/working \
 --with-working-dir=/etc/bacula/working \
 --with-bsrdir=/etc/bacula/bootstrap \
 --with-basename=bacula \
 --with-hostname=10.246.247.90 \
 --with-systemd \
 --disable-conio \
 --disable-nls \
 --with-logdir=/var/log/bacula</pre>
<p>O retorno será conforme na imagem:<br />
<img loading="lazy" decoding="async" class="wp-image-4524" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-51-53-300x179.png" alt="" width="657" height="392" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-51-53-300x179.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-51-53-1024x610.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-51-53-768x457.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-51-53.png 1107w" sizes="auto, (max-width: 657px) 100vw, 657px" /></p>
<p>Chegamos na compilação dos pacotes, até aqui tudo certo, né?<br />
A seguir, temos os comandos que compilam o <strong>Bacula</strong>. Rode-os e aguarde!</p>
<pre class="remontti-code"># make -j 8
# make install
# make install-autostart</pre>
<p>Os próximos comandos alteram permissão de escrita e leitura da pasta onde fica o <strong>Bacula</strong>, e após entra na pasta.</p>
<pre class="remontti-code"># chmod -R 775 /etc/bacula
# cd /etc/bacula/scripts</pre>
<p>Agora vamos criar o banco de dados, tabelas e dar privilégios ao usuário do bacula. (Dependendo como você instalou o banco você usa o &#8216;-u root -p&#8217; ou não).</p>
<pre class="remontti-code"># /etc/bacula/scripts/create_mysql_database -u root -p
# /etc/bacula/scripts/make_mysql_tables -u root -p
# /etc/bacula/scripts/grant_mysql_privileges -u root -p</pre>
<p><img loading="lazy" decoding="async" class=" wp-image-4525" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-55-55-300x139.png" alt="" width="695" height="322" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-55-55-300x139.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-55-55-1024x475.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-55-55-768x356.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-55-55.png 1366w" sizes="auto, (max-width: 695px) 100vw, 695px" /></p>
<p>Para fazer atualização do bacula você repete o mesmo procedimento da instalação, porém execute: </p>
<pre class="remontti-code"># /etc/bacula/scripts/update_bacula_tables -u root -p
# /etc/bacula/scripts/update_mysql_tables -u root -p
# /etc/bacula/scripts/grant_mysql_privileges -u root -p</pre>
<p>Feito isso com sucesso, vamos restartar o bacula e checar o status com os comandos.</p>
<pre class="remontti-code"># bacula restart
# bacula status</pre>
<p>O retorno dos comandos deverá ser o seguinte:</p>
<p><img loading="lazy" decoding="async" class=" wp-image-4526" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-57-14-300x89.png" alt="" width="826" height="245" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-57-14-300x89.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-57-14-768x228.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-57-14.png 872w" sizes="auto, (max-width: 826px) 100vw, 826px" /></p>
<p>Agora vamos entrar no console do <strong>bacula</strong> com o comando:</p>
<pre class="remontti-code"># bconsole</pre>
<p>Se tudo correu bem, receberá o retorno de acordo com a imagem abaixo:</p>
<p><img loading="lazy" decoding="async" class=" wp-image-4527" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-58-16-300x58.png" alt="" width="699" height="135" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-58-16-300x58.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-58-16-768x147.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-20-58-16.png 844w" sizes="auto, (max-width: 699px) 100vw, 699px" /></p>
<p>Para sair do console:</p>
<pre class="remontti-code">* exit</pre>
<h2>:: Instalação do Baculum 9.6.x ::</h2>
<p>Antes de instalarmos o <strong>baculum</strong>, precisamos do <strong>Apache</strong> e do <strong>PHP</strong>, usaremos a versão 7.3. A versão recomendada é a 7.2, mas em meus testes a 7.3 funcionou bem, não apresentando falhas, (aqui saí das recomendações kkk), use a versão que desejar.<br />
Entre com os comandos abaixo pra instalar os pacotes citados anteriormente.</p>
<pre class="remontti-code"># apt install php7.3-{common,bcmath,bz2,intl,gd,mbstring,mysql,zip,curl} -y
# apt install apache2 libapache2-mod-php7.3 -y</pre>
<p>Vamos a instalação do <strong>Baculum</strong>, baixamos a chave e ativamos em nossa máquina.</p>
<pre class="remontti-code"># wget -qO - http://bacula.org/downloads/baculum/baculum.pub | apt-key add -</pre>
<p>Agora, adicionamos os repositórios, em seguida update.</p>
<pre class="remontti-code"># cat &lt;&lt;EOF &gt;/etc/apt/sources.list.d/baculum.list
deb [ arch=amd64 ] http://bacula.org/downloads/baculum/stable/debian buster main
deb-src http://bacula.org/downloads/baculum/stable/debian buster main
EOF</pre>
<pre class="remontti-code"># apt update</pre>
<p>Após, vamos verificar uma coisa, se o repositório encontrado foi da versão 9.6.&#8221;4&#8243;. O retorno deve ser como na imagem na sequência.</p>
<pre class="remontti-code"># apt info baculum-web</pre>
<p><img loading="lazy" decoding="async" class=" wp-image-4530" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-10-27-300x96.png" alt="" width="744" height="238" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-10-27-300x96.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-10-27-1024x329.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-10-27-768x247.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-10-27.png 1054w" sizes="auto, (max-width: 744px) 100vw, 744px" /></p>
<p>Agora sim, finalmente vamos instalar os pacotes do <strong>Baculum.</strong></p>
<pre class="remontti-code"># apt install baculum-api baculum-api-apache2 baculum-common bacula-console baculum-web baculum-web-apache2 -y</pre>
<p>Durante a instalação, vamos receber o questionamento como na imagem abaixo. Selecione &#8220;manter a versão local atualmente instalada&#8221;.</p>
<p><img loading="lazy" decoding="async" class=" wp-image-4531" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-11-59-300x154.png" alt="" width="781" height="401" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-11-59-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-11-59-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-11-59-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-11-59.png 1366w" sizes="auto, (max-width: 781px) 100vw, 781px" /></p>
<p>Aqui damos algumas permissões necessárias para que o <strong>Baculum</strong> consiga rodar comando em nosso <strong>bconsole</strong>.</p>
<pre class="remontti-code"># cat &lt;&lt;EOF &gt;/etc/sudoers.d/baculum
www-data ALL=NOPASSWD: /usr/sbin/bconsole
www-data ALL=NOPASSWD: /etc/bacula/confapi
www-data ALL=NOPASSWD: /usr/sbin/bdirjson
www-data ALL=NOPASSWD: /usr/sbin/bbconsjson
www-data ALL=NOPASSWD: /usr/sbin/bfdjson
www-data ALL=NOPASSWD: /usr/sbin/bsdjson
www-data ALL=NOPASSWD: /usr/bin/systemctl
EOF</pre>
<p>Adicionamos o <strong>bacula</strong> ao grupo do apache e mudamos as permissões da pasta onde fica.<br />
Necessário para que o <strong>baculum</strong> consiga editar arquivos da pasta.</p>
<pre class="remontti-code"># usermod -aG bacula www-data 
# chown -R www-data:bacula /etc/bacula</pre>
<p>Aqui ativamos o modo rewrite do apache, as interfaces do <strong>baculum</strong> e da <strong>api</strong>. Em seguida restartamos o apache.</p>
<pre class="remontti-code"># a2enmod rewrite ldap
# a2ensite baculum-web baculum-api
# systemctl restart apache2</pre>
<p>Agora vamos a parte Web, acesse o ip da máquina e a porta 9096, no meu caso <strong>10.246.247.90:9096</strong>, faça login com usuário: admin. Senha: admin. E chegará na tela a seguir, selecione o idioma e avance, aqui nesta parte é tudo muito intuítivo.</p>
<p><img loading="lazy" decoding="async" width="1366" height="676" class="wp-image-4547" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-16-51.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-16-51.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-16-51-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-16-51-1024x507.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-16-51-768x380.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Selecione Sim, e insira a senha do dados do banco de dados (usuário bacula), Endereço IP informe 127.0.0.1, Teste e Prossiga.</p>
<p><img loading="lazy" decoding="async" width="1366" height="673" class=" wp-image-4548" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-17-17.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-17-17.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-17-17-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-17-17-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-17-17-768x378.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Selecione sim e marque a opção &#8220;Obter configuração do sudo&#8221; teste e avance.</p>
<p><img loading="lazy" decoding="async" width="1366" height="672" class=" wp-image-4550" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-20-45-1.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-20-45-1.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-20-45-1-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-20-45-1-1024x504.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-20-45-1-768x378.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Selecione sim. Em &#8220;Diretório de trabalho do Baculum para a configuração do Bacula&#8221; insira &#8220;<strong>/etc/bacula/working</strong>&#8220;, marque &#8220;Obter configuração do sudo&#8221; teste as configurações e avance para a etapa seguinte.</p>
<p><img loading="lazy" decoding="async" width="1366" height="673" class="wp-image-4552" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-21-08.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-21-08.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-21-08-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-21-08-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-21-08-768x378.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Selecione Sim, marque a opção &#8220;Obter configuração do sudo&#8221; e prossiga.</p>
<p><img loading="lazy" decoding="async" width="1366" height="675" class="wp-image-4553" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-25-44.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-25-44.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-25-44-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-25-44-1024x506.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-25-44-768x380.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Crie um usuário para acessar a interface da API, avance.</p>
<p><img loading="lazy" decoding="async" width="1366" height="668" class="wp-image-4554" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-01.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-01.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-01-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-01-1024x501.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-01-768x376.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Aqui você vera uma revisão das configurações criadas anteriomente, ao avançar esta etapa o login será solicitado. Realize-o com as credenciais criadas.</p>
<p><img loading="lazy" decoding="async" width="1366" height="674" class=" wp-image-4555" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-08.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-08.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-08-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-08-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-08-768x379.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Eu optei por criar um usuário específico para usar a API. Clique em &#8220;Listar usuários HTTP Básico&#8221; e em &#8220;Novo usuário HTTP Básico&#8221;, informe os dados e clique em adicionar, conforme abaixo.</p>
<p><img loading="lazy" decoding="async" width="1366" height="656" class=" wp-image-4556" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-33.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-33.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-33-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-33-1024x492.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-33-768x369.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Acesse seus IP na na porta 9095, para finalmente configurarmos o Baculum. (Entre com admin/admin).</p>
<p>Selecione o idioma e avance.<br />
<img loading="lazy" decoding="async" width="1366" height="673" class=" wp-image-4557" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-52.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-52.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-52-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-52-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-26-52-768x378.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Insira as credenciais criadas antes (no meu ex eu criei um usuário api), para que o baculum acesse a API, clique em testar e avance.</p>
<p><img loading="lazy" decoding="async" width="1366" height="671" class=" wp-image-4558" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-07.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-07.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-07-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-07-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-07-768x377.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Ajuste o usuário para acessar o Baculum nesta etapa e prossiga.</p>
<p><img loading="lazy" decoding="async" width="1366" height="673" class=" wp-image-4559" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-25.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-25.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-25-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-25-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-25-768x378.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Novamente uma revisão das informações, clique em &#8220;Salvar&#8221;.</p>
<p><img loading="lazy" decoding="async" width="1366" height="675" class=" wp-image-4560" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-33.png" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-33.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-33-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-33-1024x506.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-33-768x380.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>E pronto, chegamos ao fim. Bacula com interface gráfica prontinho para uso.</p>
<p><img loading="lazy" decoding="async" width="1366" height="674" class=" wp-image-4561" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-1.png" alt="" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-1.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-1-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-1-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-04-21-27-44-1-768x379.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Vamos conferir se o endereço IP (Address) está o IP de localhost, a alteraremos para o IP da interface do servidor.</p>
<pre class="remontti-code"># vim /etc/bacula/bacula-dir.conf</pre>
<p>Localize Storage {} e confira o parâmetro &#8216;Address&#8217;, altere o IP de localhost 127.0.0.1 para o IP da interface de rede da sua maquina. Se esses endereços ficarem incorretos, o bacula até consegue conversar com nosso cliente, porém nosso cliente não sabe para onde deve enviar os backup&#8217;s (a explicação é um pouco mais longa que isso, mas brevemente é o que acontece).</p>
<pre class="remontti-code">#...
Storage {
  Name = &quot;File1&quot;
  SdPort = 9103
  Address = &quot;SEU_IP_AQUI&quot; 
  Password = &quot;xxxxxxxxxxxxxxxxxx&quot;
  Device = &quot;FileChgr1&quot;
  MediaType = &quot;File1&quot;
  Autochanger = &quot;File1&quot;
  MaximumConcurrentJobs = 10
}
Storage {
  Name = &quot;File2&quot;
  SdPort = 9103
  Address = &quot;SEU_IP_AQUI&quot;
  Password = &quot;xxxxxxxxxxxxxxxxxxxxxxxx&quot;
  Device = &quot;FileChgr2&quot;
  MediaType = &quot;File2&quot;
  Autochanger = &quot;File2&quot;
  MaximumConcurrentJobs = 10
}
#...</pre>
<p>Feito essa alteração, vamos conferir, não é mesmo?</p>
<pre class="remontti-code"># bacula restart
# bconsole</pre>
<p>Dentro do console, você pode verificar um cliente (deixarei o exemplo já já):</p>
<pre class="remontti-code">* status network client=deb10-fd</pre>
<p>Agora você pode gerar seus backups de máquinas Linux, Windows, Banco de dados&#8230; As possibilidades são infinitas. Crie suas rotinas, escolha do que fazer backup e faça seus testes. PS: Ainda pode ser necessário atualizar algumas diretivas direto no terminal, nos arquivos de configuração, portanto recomendo que leia a documentação, <a href="https://www.bacula.org/documentation/documentation/" target="_blank" rel="noopener noreferrer">neste link</a>.</p>
<h3>:: Extras &#8211; Add um cliente::</h3>
<p>Aqui vou deixar ainda, um exemplo de configuração de um cliente Linux, para que você não fique tão perdido assim em meio a tanta informação.</p>
<h4>:: No lado do cliente ::</h4>
<p>Para isso instale bacula-fd</p>
<pre class="remontti-code"># apt install bacula-fd -y</pre>
<p>Ajuste as configurações em /etc/bacula/bacula-fd.conf</p>
<pre class="remontti-code"># vim /etc/bacula/bacula-fd.conf</pre>
<pre class="remontti-code">Director {
  Name = bacula-dir
  Password = &quot;4nyrNNFD1IyWlQNgjXorr4bdWx8_kgHCP&quot;
}
#Director {
#  Name = deb10-mon
#  Password = &quot;GjRiOZ1KxjAXw2_LVe2H4ruZShoZIdnCQ&quot;
#  Monitor = yes
#}
FileDaemon {                    
  Name = deb10-fd
  FDport = 9102                 
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /run/bacula
  Maximum Concurrent Jobs = 20
  Plugin Directory = /usr/lib/bacula
  #FDAddress = 127.0.0.1
}
Messages {
  Name = Standard
  director = deb10-dir = all, !skipped, !restored
}</pre>
<p>O campo &#8216;Name&#8217;, em Director é o nome do nosso servidor, por padrão ele vem com &#8216;<strong>bacula-dir</strong>&#8216;, e em nosso servidor criamos assim então não precisamos alterar, o campo &#8216;Password&#8217; é a senha que o Bacula usará para se conectar em nossa máquina (precisaremos dela adiante). Em &#8216;FileDaemon&#8217; vamos pegar o &#8216;Name&#8217;, que vamos usar para criar nosso cliente na interface gráfica. Basicamente isso, existem outros parâmetros que podem ser usados, para ver quais são consulte a documentação, mas com essas informações básicas já faremos um backup funcionar!</p>
<p>Restarte o bacula-fd</p>
<pre class="remontti-code"># systemctl restart bacula-fd</pre>
<h4>:: No lado do servidor ::</h4>
<p>Agora voltamos ao Baculum, IP:9095.<br />
Na sidebar da esquerda clique em &#8216;Clientes&#8221;, em seguida na tela que vai aparecer, clique em &#8216;Adicionar cliente&#8217;.<br />
<img loading="lazy" decoding="async" width="1366" height="630" class="wp-image-4611 aligncenter" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-24-25.png" alt="" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-24-25.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-24-25-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-24-25-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-24-25-768x354.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Agora vamos adicionar nosso 1º cliente de backup. Entre com as informações, &#8216;Name&#8217; insira o nome que estava na aba &#8216;FileDaemon&#8217; de nosso cliente, &#8216;Address&#8217; é o IP da máquina do cliente, &#8216;Password&#8217; é a senha, que também estava no cliente (como falei antes). Em &#8216;Catalog&#8217; selecione &#8216;MyCatalog&#8217;, clique em &#8216;Criar&#8217;, um pop-up se abrirá indicando sucesso na adição do cliente, clique em &#8216;Ok&#8217;.</p>
<p><img loading="lazy" decoding="async" width="1366" height="632" class="wp-image-4619 aligncenter" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-18-56-20.png" alt="" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-18-56-20.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-18-56-20-300x139.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-18-56-20-1024x474.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-18-56-20-768x355.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Agora, clique na flecha azul, ao lado do cliente que adicionamos e em seguida clique em &#8216;Detalhar&#8217;.</p>
<p><img loading="lazy" decoding="async" width="1366" height="628" class="wp-image-4613 aligncenter" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-28-11.png" alt="" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-28-11.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-28-11-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-28-11-1024x471.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-28-11-768x353.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-28-11-980x450.png 980w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Nesta aba, clique &#8216;Status do cliente&#8217;, e rapidamente será feita uma captura de informações sobre nosso cliente de backup. Tudo pronto para o backup.</p>
<p><img loading="lazy" decoding="async" width="1366" height="633" class="wp-image-4615 aligncenter" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-31-20.png" alt="" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-31-20.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-31-20-300x139.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-31-20-1024x475.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/Captura-de-tela-de-2020-06-05-17-31-20-768x356.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<p>Confira também o GitHub do <a href="https://github.com/wanderleihuttel" target="_blank" rel="noopener noreferrer">Wanderlei Huttel</a>, a base deste tuto veio de lá, e também tem muito material complementar lá, como scripts de envio de dados para o Telegram e muito mais. Não trataremos aqui pra não ficar muito extenso.</p>
<p>Acompanhe a comunidade do Bacula no Telegram <a href="https://t.me/baculabr" target="_blank" rel="noopener noreferrer">neste link</a>, boa parte das suas dúvidas outras pessoas já tiveram, então é só pesquisar no grupo.</p>
<p>Se tiver qualquer pergunta deixe nos comentários. Espero que tenha ajudado você, qualquer dúvida você me encontra la no grupo <a href="https://t.me/remontticombr" target="_blank" rel="noopener noreferrer">https://t.me/remontticombr</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Abraço!</p>
<p>Autor: Lenon Correa <a href="https://t.me/lenon_correa">https://t.me/lenon_correa</a></p>
<p><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>Fontes:</p>
<p>http://softwarelivre.org/heitorfaria/blog/baculum-9-configuracao-grafica-do-bacula-administracao-e-api<br />
https://github.com/wanderleihuttel/bacula-utils/blob/master/tutorial/bacula_install_debian10.txt<br />
https://github.com/wanderleihuttel/bacula-utils/blob/master/tutorial/baculum_install_debian9.sh</p>
<blockquote class="wp-embedded-content" data-secret="iSxcEGAs72"><p><a href="https://www.bacula.lat/o-que-e-o-bacula/">O que é o Bacula?</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;O que é o Bacula?&#8221; &#8212; Bacula Brasil e América Latina" src="https://www.bacula.lat/o-que-e-o-bacula/embed/#?secret=iSxcEGAs72" data-secret="iSxcEGAs72" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<blockquote class="wp-embedded-content" data-secret="WKwPMUP69q"><p><a href="https://www.bacula.lat/">Página Inicial</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Página Inicial&#8221; &#8212; Bacula Brasil e América Latina" src="https://www.bacula.lat/embed/#?secret=WKwPMUP69q" data-secret="WKwPMUP69q" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>O post <a href="https://blog.remontti.com.br/4460">Solução de backup completa Open Source: Bacula Community 9.6.x e Baculum 9.6.x</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4460/feed</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Zabbix 4.4 no Debian 10 Buster</title>
		<link>https://blog.remontti.com.br/3995</link>
					<comments>https://blog.remontti.com.br/3995#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 08 Feb 2020 18:30:27 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php7.3]]></category>
		<category><![CDATA[telegram]]></category>
		<category><![CDATA[zabbix]]></category>
		<category><![CDATA[zabbix 4.4]]></category>
		<category><![CDATA[zabbix-frontend-php]]></category>
		<category><![CDATA[zabbix4]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3995</guid>

					<description><![CDATA[<p>O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3995">Instalação do Zabbix 4.4 no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível de notificação que permite configurar alertas por e-mail entre outros como Telegram, para praticamente qualquer evento. As notificações permitem que se reaja rapidamente à problemas no ambiente. O Zabbix oferece excelentes recursos de relatórios e visualização de dados armazenados. Isso faz com que o Zabbix seja a ferramenta ideal para planejamento de capacidade.</p>
<p>Requisitos:<br />
<a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">* Debian 10 (Buster) -> Instalação Limpa</a><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 &#8220;LAMP&#8221;</a></p>
<p>Para instalação do Zabbix vamos incluir o repositório do oficial do Zabbix.</p>
<pre class="remontti-code"># su -
# cd /tmp</pre>
<p>Versão 4.4</strong></p>
<pre class="remontti-code"># wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+buster_all.deb
# dpkg -i zabbix-release_4.4-1+buster_all.deb</pre>
<p>Atualize o repositório e realize a instalação </p>
<pre class="remontti-code"># apt update ; apt upgrade
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent</pre>
<p>Vamos criar uma base de dados chamada <strong>zabbix</strong> e um usuário também chamado de zabbix no MariaDB.<br />
Não esqueça de alterar a senha: Use o gerador de senha: <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br/</a></p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<pre class="remontti-code">CREATE DATABASE zabbix CHARACTER SET utf8 collate utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY &#039;SUA_SENHA&#039;;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Importe o esquema de tabelas e dados padrões. (Demora um pouco!)</p>
<pre class="remontti-code"># zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix</pre>
<p>Digite a senha de seu usuário zabbix criada no passo anterior para importar as tabelas.</p>
<p>Edite o arquivo zabbix_server.conf para informar os dados para conexão com o MySQL.</p>
<pre class="remontti-code"># vim /etc/zabbix/zabbix_server.conf</pre>
<p>Procure por <strong># DBPassword=</strong> descomente e sete sua senha.</p>
<pre class="remontti-code">#...
DBPassword=SUA_SENHA
#...</pre>
<p>Parece que na versão 4.4 esqueceram do arquivo do apache (pelo menos até hj) então será necessário cria-lo.</p>
<pre class="remontti-code"># vim /etc/zabbix/apache.conf</pre>
<p>Ajuste o <a href="https://secure.php.net/manual/pt_BR/timezones.america.php" rel="noopener noreferrer" target="_blank">timezone</a> pela sua região</a>.</p>
<pre class="remontti-code">&lt;IfModule mod_alias.c&gt;
    Alias /zabbix /usr/share/zabbix
&lt;/IfModule&gt;

&lt;Directory &quot;/usr/share/zabbix&quot;&gt;
    Options FollowSymLinks
    AllowOverride None
   # Se quiser limitar apenas o acesso a alguns ips da rede
   # AllowOverride all
   # Require ip 127.0.0.1 ::1 200.200.200.192/29 2001:db8:bebe::/48

    &lt;IfModule mod_php7.c&gt;
        php_value max_execution_time 300
        php_value memory_limit 512M
        php_value post_max_size 100M
        php_value upload_max_filesize 80M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        php_value date.timezone America/Sao_Paulo
    &lt;/IfModule&gt;
&lt;/Directory&gt;

&lt;Directory &quot;/usr/share/zabbix/conf&quot;&gt;
    Order deny,allow
    Deny from all
    &lt;files *.php&gt;
        Order deny,allow
        Deny from all
    &lt;/files&gt;
&lt;/Directory&gt;

&lt;Directory &quot;/usr/share/zabbix/app&quot;&gt;
    Order deny,allow
    Deny from all
    &lt;files *.php&gt;
        Order deny,allow
        Deny from all
    &lt;/files&gt;
&lt;/Directory&gt;

&lt;Directory &quot;/usr/share/zabbix/include&quot;&gt;
    Order deny,allow
    Deny from all
    &lt;files *.php&gt;
        Order deny,allow
        Deny from all
    &lt;/files&gt;
&lt;/Directory&gt;

&lt;Directory &quot;/usr/share/zabbix/local&quot;&gt;
    Order deny,allow
    Deny from all
    &lt;files *.php&gt;
        Order deny,allow
        Deny from all
    &lt;/files&gt;
&lt;/Directory&gt;
</pre>
<p>Por segurança recomendo remover a assinatura do servidor, evitando os &#8220;espertinhos&#8221;</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<p>Lincamos as configurações e restartamos o apache.</p>
<pre class="remontti-code"># ln -s /etc/zabbix/apache.conf /etc/apache2/conf-available/zabbix.conf
# a2enconf zabbix 
# systemctl restart apache2</pre>
<p>Iniciando o Zabbix Server e Agente junto com a inicialização do sistema.</p>
<pre class="remontti-code"># systemctl enable zabbix-server zabbix-agent
# systemctl restart zabbix-server zabbix-agent</pre>
<p>Acesse em seu navegador http://seu_ip/zabbix</p>
<p>Next Step<br />
<div id="attachment_3999" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3999" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster.png" alt="" width="1680" height="875" class="size-full wp-image-3999" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster-1024x533.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster-768x400.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster-1536x800.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-3999" class="wp-caption-text">Next Step</p></div></p>
<p>Se tudo estiver ok: Next step<br />
<div id="attachment_4000" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4000" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check.png" alt="" width="1680" height="1316" class="size-full wp-image-4000" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check-300x235.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check-1024x802.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check-768x602.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check-1536x1203.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4000" class="wp-caption-text">Se tudo estiver ok: Next step</p></div></p>
<p>Informe a senha do banco de dados criada anteriormente para o zabbix, e clique em Next step.<br />
<div id="attachment_4001" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check1.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4001" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check1.png" alt="" width="1680" height="826" class="size-full wp-image-4001" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check1.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check1-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check1-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check1-768x378.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check1-1536x755.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4001" class="wp-caption-text">Informe a senha do banco de dados criada anteriormente para o zabbix, e clique em Next step.</p></div></p>
<p>Next step<br />
<div id="attachment_4002" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check2.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4002" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check2.png" alt="" width="1680" height="826" class="size-full wp-image-4002" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check2.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check2-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check2-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check2-768x378.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check2-1536x755.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4002" class="wp-caption-text">Next step</p></div></p>
<p>Next step<br />
<div id="attachment_4003" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check3.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4003" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check3.png" alt="" width="1680" height="826" class="size-full wp-image-4003" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check3.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check3-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check3-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check3-768x378.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check3-1536x755.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4003" class="wp-caption-text">Next step</p></div></p>
<p>Next step<br />
<div id="attachment_4004" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check4.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4004" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check4.png" alt="" width="1680" height="826" class="size-full wp-image-4004" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check4.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check4-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check4-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check4-768x378.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check4-1536x755.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4004" class="wp-caption-text">Next step</p></div></p>
<p>Entre com Usuário <strong>Admin</strong> e senha <strong>zabbix</strong><br />
<div id="attachmeEntrecomUsurioAdminesenhaZabbixnt_4005" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check5.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachmeEntrecomUsurioAdminesenhaZabbixnt-4005" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check5.png" alt="" width="1680" height="826" class="size-full wp-image-4005" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check5.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check5-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check5-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check5-768x378.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check5-1536x755.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachmeEntrecomUsurioAdminesenhaZabbixnt-4005" class="wp-caption-text">Entre com Usuário Admin e senha zabbix</p></div></p>
<p>Para trocar o idioma para português, clique no ícone no canto direito superior no &#8220;bonequinho&#8221;<br />
<div id="attachment_4007" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check6.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4007" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check6.png" alt="" width="1680" height="1199" class="size-full wp-image-4007" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check6.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check6-300x214.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check6-1024x731.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check6-768x548.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_check6-1536x1096.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4007" class="wp-caption-text">Para trocar o idioma para português, clique no ícone no canto direito superior no &#8220;bonequinho&#8221;</p></div></p>
<p>Selecione Português<br />
<div id="attachment_4008" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4008" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues.png" alt="" width="1680" height="826" class="size-full wp-image-4008" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues-768x378.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues-1536x755.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4008" class="wp-caption-text">Selecione Português</p></div></p>
<p>Seu Zabbix agora está em PT-BR<br />
<div id="attachment_4009" style="width: 1690px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues1.png" data-rel="lightbox-gallery-vpgTcGGp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4009" src="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues1.png" alt="" width="1680" height="1241" class="size-full wp-image-4009" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues1.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues1-300x222.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues1-1024x756.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues1-768x567.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/02/zabbix_4.4_debian_buster_portugues1-1536x1135.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><p id="caption-attachment-4009" class="wp-caption-text">Seu Zabbix agora está em PT-BR</p></div></p>
<p>Você pode gostar de integra-lo com o telegram:<br />
<a href="https://blog.remontti.com.br/3053" rel="noopener noreferrer" target="_blank">Zabbix 4 + Alertas no Telegram via Bot</a><br />
<a href="https://blog.remontti.com.br/4014" rel="noopener noreferrer" target="_blank">Instalação do Grafana e integrando com Zabbix 4</a></p>
<h3>Script de Backup</h1>
<p><a href="https://github.com/remontti/zabbix-backup" rel="noopener noreferrer" target="_blank">https://github.com/remontti/zabbix-backup</a></p>
<p>Este script backup script tem suporte ao (MariadB/MySQL/PostgreSQL) e não salva o históricos, tornado um backup rápido e salvando somente o necessário. </p>
<p>Baixe o script (em um diretório de sua escolha)</p>
<pre class="remontti-code"># wget https://raw.githubusercontent.com/remontti/zabbix-backup/master/zabbix-dump</pre>
<p>De permissão de execução: </p>
<pre class="remontti-code"># chmod +x zabbix-dump</pre>
<p>Execute</p>
<pre class="remontti-code"># ./zabbix-dump</pre>
<p>Ele irá gerar um arquivo <strong>zabbix_cfg_localhost_202XXXXX-XXXX_db-mysql-4.x.x.sql.gz</strong> basta você copia-lo ou criar uma rotina que rode o script e envie para seu servidor de backup&#8230; (seja criativo) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Gostou?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><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>Fontes:<br />
<a href="https://www.zabbix.com/documentation/" rel="noopener noreferrer" target="_blank">https://www.zabbix.com/documentation/</a></p>
<p>O post <a href="https://blog.remontti.com.br/3995">Instalação do Zabbix 4.4 no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3995/feed</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<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 loading="lazy" 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="auto, (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>
		<item>
		<title>Como instalar o MySQL 8 Server (Oracle) no Debian 10 Buster</title>
		<link>https://blog.remontti.com.br/3304</link>
					<comments>https://blog.remontti.com.br/3304#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 30 Jul 2019 20:28:32 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql 8]]></category>
		<category><![CDATA[mysql8]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3304</guid>

					<description><![CDATA[<p>Desde o lançamento do Debian o mysql foi substituído mariadb. Neste tutorial vamos aprender a fazer a instalação do MySQL A equipe do MySQL Release Engineering fornece repositórios para o Debian 10 Buster incluindo&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3304">Como instalar o MySQL 8 Server (Oracle) no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8.png" alt="" width="720" height="340" class="alignnone size-full wp-image-3315" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8.png 720w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian-10-buster-mysql-8-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Desde o lançamento do Debian o mysql foi substituído mariadb. Neste tutorial vamos aprender a fazer a instalação do MySQL</p>
<p>A equipe do MySQL Release Engineering fornece repositórios para o Debian 10 Buster incluindo o servidor MySQL 8.0.</p>
<p><strong>Requisitos:</strong><br />
&#8211; <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 (Instalação limpa)</a></p>
<pre class="remontti-code"># apt install wget gnupg vim apt-transport-https</pre>
<p>Adicione o Repositórios da Oracle.</p>
<pre class="remontti-code"># echo -e &quot;deb http://repo.mysql.com/apt/debian/ buster mysql-8.0\ndeb-src http://repo.mysql.com/apt/debian/ buster mysql-8.0&quot; &gt; /etc/apt/sources.list.d/mysql.list</pre>
<p>Antes de atualizar o repositório você deve adicionar a chave pública.</p>
<pre class="remontti-code"># wget -O /tmp/RPM-GPG-KEY-mysql https://repo.mysql.com/RPM-GPG-KEY-mysql
# apt-key add /tmp/RPM-GPG-KEY-mysql</pre>
<p>Atualizamos o repositório e instalamos o mysql-sever da Oracle</p>
<pre class="remontti-code"># apt update
# apt install mysql-server</pre>
<p>Defina a senha de root do MySQL<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0.png" data-rel="lightbox-gallery-OQenk0ou" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-300x158.png" alt="" width="300" height="158" class="alignnone size-medium wp-image-3306" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-768x405.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-1024x540.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>No MySQL 8 a autenticação é diferente de seus antecessores, e até o momento não é reconhecido pelo PHP 7, o que gera o erro &#8220;<em>The server requested authentication method unknown to the client</em>&#8221; ao tentar conectar-se. </p>
<p>A não ser que você realmente saiba o que esta fazendo selecione : <strong>Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy.png" data-rel="lightbox-gallery-OQenk0ou" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-300x169.png" alt="" width="300" height="169" class="alignnone size-medium wp-image-3309" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-mysql-8.0-legacy.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h4>Aumentando a segurança do Mysql</h4>
<pre class="remontti-code"># mysql_secure_installation</pre>
<p>Defina o nível de segurança de acordo com suas necessidades.</p>
<pre class="remontti-code">Securing the MySQL server deployment.

Enter password for user root: 

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length &gt;= 8
MEDIUM Length &gt;= 8, numeric, mixed case, and special characters
STRONG Length &gt;= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 50 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : 

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
&#039;localhost&#039;. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named &#039;test&#039; that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done! </pre>
<p>Dica.<br />
Se você for fazer a instalação do phpMyAdmin crie o usuario da seguinte forma:</p>
<pre class="remontti-code">CREATE DATABASE phpmyadmin CHARACTER SET utf8 collate utf8_bin;
CREATE USER &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO &#039;pma&#039;@&#039;localhost&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Parabéns! Você concluiu! Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><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></center></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>O post <a href="https://blog.remontti.com.br/3304">Como instalar o MySQL 8 Server (Oracle) no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3304/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#8220;LAMP&#8221;</title>
		<link>https://blog.remontti.com.br/3006</link>
					<comments>https://blog.remontti.com.br/3006#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 16 Jul 2019 19:05:12 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3006</guid>

					<description><![CDATA[<p>Distribuição utilizada: Debian 10 Stretch / Instalação Limpa Vale lembrar que desde o Debian 9 o PHP foi atualizado para a versão 7 e agora para 7.3, e o MySQL foi substituído pelo seu&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3006">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#8220;LAMP&#8221;</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp.jpg" alt="" width="800" height="376" class="alignnone size-full wp-image-3028" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp.jpg 800w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-300x141.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-768x361.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-520x245.jpg 520w" sizes="auto, (max-width: 800px) 100vw, 800px" /><br />
Distribuição utilizada: <strong><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a></strong><br />
Vale lembrar que desde o Debian 9 o PHP foi atualizado para a versão 7 e agora para 7.3, e o MySQL foi substituído pelo seu fork MariaBD<br />
Antes de mais nada tenha seu repositório atualizado</p>
<pre class="remontti-code"># su -
# apt update
# apt upgrade</pre>
<h3>:: Instalação do Apache 2.4 ::</h3>
<pre class="remontti-code"># apt install apache2 apache2-utils</pre>
<p>Vamos habilitar o mod_rewrite do Apache que é muito utilizado.<br />
Este é um módulo do Apache que utiliza um mecanismo baseado em regras de reescrita.<br />
Vamos ao comando para habilita-lo:</p>
<pre class="remontti-code"># a2enmod rewrite</pre>
<p>A página que vimos ao abri o ip do nosso servidor no navegador fica no diretório /var/www/html, isso está sendo informado no arquivo default do apache que fica em /etc/apache2/sites-enabled/000-default.conf, e para que nosso mod_rewrite funcione corretamente será necessário adicionar alguma linhas.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-enabled/000-default.conf</pre>
<p>Adicione abaixo de &#8220;DocumentRoot /var/www/html&#8221; o seguinte:</p>
<pre class="remontti-code">	&lt;Directory /var/www/html/&gt;
    		Options FollowSymLinks
    		AllowOverride All
	&lt;/Directory&gt;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite.png" data-rel="lightbox-gallery-0OjzTVLM" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png" alt="" width="300" height="251" class="alignnone size-medium wp-image-3012" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-768x642.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite.png 887w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Agora precisamos restartar o apache2 para que tenha efeito as alterações.</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>http://[SERVER_IP]/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png" data-rel="lightbox-gallery-0OjzTVLM" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png" alt="" width="230" height="300" class="alignnone size-medium wp-image-3010" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png 230w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-768x1003.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-784x1024.png 784w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png 941w" sizes="auto, (max-width: 230px) 100vw, 230px" /></a><br />
Por segurança remova a assinatura do apache.</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<h3>:: Instalação do MariaDB 10.3 ::</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 PHP 7.3 ::</h3>
<p>Vou incluir algumas extensões do PHP que são normalmente utilizada</p>
<pre class="remontti-code"># apt install libapache2-mod-php php php-mysql php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip</pre>
<p>É necessário reiniciar o apache para que o php tenha efeito.</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Consultado informações de versão:</p>
<pre class="remontti-code"># php --version</pre>
<pre class="remontti-code">PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies</pre>
<p>Você pode criar um arquivo php com a função <a href="https://php.net/manual/pt_BR/function.phpinfo.php" rel="noopener noreferrer" target="_blank">phpinfo()</a> para mostrar todas as informações.</p>
<pre class="remontti-code"># echo &#039;&lt;?php phpinfo(); ?&gt;&#039; &gt; /var/www/html/phpinfo.php</pre>
<p>http://[SERVER_IP]/phpinfo.php<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster.png" data-rel="lightbox-gallery-0OjzTVLM" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-300x261.png" alt="" width="300" height="261" class="alignnone size-medium wp-image-3018" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-300x261.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-768x668.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster.png 994w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h3>:: phpMyAdmin ::</h3>
<p>Cade ele do repositório?<br />
O PHPMyAdmin não está mais disponível como pacote .deb no Debian 10. Fazendo um pesquisa o motivo é que o &#8220;pessoal&#8221; que faz empacotamento não tem uma versão estável. <a href="https://security-tracker.debian.org/tracker/CVE-2018-19968" rel="noopener noreferrer" target="_blank">https://security-tracker.debian.org/tracker/CVE-2018-19968</a><br />
Desta forma debian &#8220;obriga&#8221; com que o usuário instale-o a partir da fonte. <a href="https://www.phpmyadmin.net/downloads/" rel="noopener noreferrer" target="_blank">https://www.phpmyadmin.net/downloads/</a></p>
<pre class="remontti-code"># apt install wget</pre>
<p>Escolha qual versão do irá utilizar phpMyAdmin 5.x.x ou 4.x.x</p>
<pre class="remontti-code"># cd /tmp/</pre>
<p>Para <strong>phpMyAdmin 5</strong> (06/04/2020)</p>
<pre class="remontti-code"># wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.tar.gz
# tar -vxzf phpMyAdmin-5.0.4-all-languages.tar.gz -C /usr/share/
# mv /usr/share/phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadmin</pre>
<p>Para <strong>phpMyAdmin 4</strong> (06/04/2020)</p>
<pre class="remontti-code"># wget https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-all-languages.tar.gz
# tar -vxzf phpMyAdmin-4.9.5-all-languages.tar.gz -C /usr/share/
# mv /usr/share/phpMyAdmin-4.9.5-all-languages /usr/share/phpmyadmin</pre>
<p>Seguimos para <strong>phpMyAdmin 5 ou 4</strong> </p>
<pre class="remontti-code"># mkdir /etc/phpmyadmin
# touch /etc/phpmyadmin/htpasswd.setup
# mkdir -p /var/lib/phpmyadmin/tmp
# chown www-data. /var/lib/phpmyadmin/ -R</pre>
<p>Criaremos o arquivo de configuração do Apache.</p>
<pre class="remontti-code"># vim /etc/apache2/conf-available/phpmyadmin.conf</pre>
<pre class="remontti-code"># phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

&lt;Directory /usr/share/phpmyadmin&gt;
 Options FollowSymLinks
 DirectoryIndex index.php

 &lt;IfModule mod_php7.c&gt;
 AddType application/x-httpd-php .php

 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 &lt;/IfModule&gt;

&lt;/Directory&gt;

# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
 &lt;IfModule mod_authn_file.c&gt;
 AuthType Basic
 AuthName &quot;phpMyAdmin Setup&quot;
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 &lt;/IfModule&gt;
 Require valid-user
&lt;/Directory&gt;

# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;</pre>
<p>Se deseja deixar o atalho para o phpmyadmin restrito apenas aos seus IP de gerencia faça da seguinte forma. Lembre-se de alterar os IPs 200.200.200.0/26 2001:db8:cafe:d0ce::/64 para os seus.</p>
<pre class="remontti-code"># phpMyAdmin default Apache configuration
 
Alias /phpmyadmin /usr/share/phpmyadmin
 
&lt;Directory /usr/share/phpmyadmin&gt;
 Options FollowSymLinks
 DirectoryIndex index.php

 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64

 &lt;IfModule mod_php7.c&gt;
 AddType application/x-httpd-php .php
 
 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 &lt;/IfModule&gt;
 
&lt;/Directory&gt;
 
# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 &lt;IfModule mod_authn_file.c&gt;
 AuthType Basic
 AuthName &quot;phpMyAdmin Setup&quot;
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 &lt;/IfModule&gt;
 Require valid-user
&lt;/Directory&gt;
 
# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
</pre>
<p>Ative a configuração e reinicie o Apache.</p>
<pre class="remontti-code"># a2enconf phpmyadmin
# systemctl restart apache2
# systemctl status apache2</pre>
<p>Na próxima etapa, vamos configurar o armazenamento de configuração do phpMyadmin (banco de dados).<br />
Faça o login no MariaDB como usuário root:</p>
<pre class="remontti-code"># mariadb -p</pre>
<p>Criamos um novo banco de dados para o chamado phpmyadmin e um usuario pma (altere para sua senha). Em seguida, concedemos as permissões do banco de dados.<br />
Você pode gerar uma senha acessando <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br/</a></p>
<pre class="remontti-code">CREATE DATABASE phpmyadmin;
CREATE USER &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Carregue as tabelas do banco de dados: (Informe a senha do root do MariaDB)</p>
<pre class="remontti-code"># mariadb -u root -p phpmyadmin &lt; /usr/share/phpmyadmin/sql/create_tables.sql</pre>
<p>Agora é necessário ajustar o arquivo de configuração do phpmyadmin.<br />
Definir:<br />
* senha segura (blowfish secret) que deve ter 32 caracteres. Não use o meu exemplo blowfish secreto, defina o seu próprio! Use o gerador <a href="https://senhasegura.remontti.com.br" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br</a><br />
* diretório que o PHPMyAdmin deve usar para armazenar arquivos temporários.<br />
* Descomentar as linhas $cfg['Servers']<br />
- controlhost : localhost<br />
- controlpass : SUA_SENHA</p>
<pre class="remontti-code"># cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
# vim /usr/share/phpmyadmin/config.inc.php</pre>
<pre class="remontti-code">$cfg[&#039;blowfish_secret&#039;] = &#039;dkJhGx83XR3JjuFrDn8kPp9NtXnkLptl&#039;;
/* Adicione esta linha */
$cfg[&#039;TempDir&#039;] = &#039;/var/lib/phpmyadmin/tmp&#039;;

/* User used to manipulate with storage */
$cfg[&#039;Servers&#039;][$i][&#039;controlhost&#039;] = &#039;localhost&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlport&#039;] = &#039;&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controluser&#039;] = &#039;pma&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlpass&#039;] = &#039;SUA_SENHA&#039;;

/* Storage database and tables */
$cfg[&#039;Servers&#039;][$i][&#039;pmadb&#039;] = &#039;phpmyadmin&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;bookmarktable&#039;] = &#039;pma__bookmark&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;relation&#039;] = &#039;pma__relation&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_info&#039;] = &#039;pma__table_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_coords&#039;] = &#039;pma__table_coords&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;pdf_pages&#039;] = &#039;pma__pdf_pages&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;column_info&#039;] = &#039;pma__column_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;history&#039;] = &#039;pma__history&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_uiprefs&#039;] = &#039;pma__table_uiprefs&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;tracking&#039;] = &#039;pma__tracking&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;userconfig&#039;] = &#039;pma__userconfig&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;recent&#039;] = &#039;pma__recent&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;favorite&#039;] = &#039;pma__favorite&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;users&#039;] = &#039;pma__users&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;usergroups&#039;] = &#039;pma__usergroups&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;navigationhiding&#039;] = &#039;pma__navigationhiding&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;savedsearches&#039;] = &#039;pma__savedsearches&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;central_columns&#039;] = &#039;pma__central_columns&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;designer_settings&#039;] = &#039;pma__designer_settings&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;export_templates&#039;] = &#039;pma__export_templates&#039;;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png" data-rel="lightbox-gallery-0OjzTVLM" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png" alt="" width="300" height="296" class="alignnone size-medium wp-image-3021" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-768x757.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png 901w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
http://[SERVER_IP]/phpmyadmin/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1.png" data-rel="lightbox-gallery-0OjzTVLM" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-300x155.png" alt="" width="300" height="155" class="alignnone size-medium wp-image-3022" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-768x397.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-1024x530.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2.png" data-rel="lightbox-gallery-0OjzTVLM" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-300x156.png" alt="" width="300" height="156" class="alignnone size-medium wp-image-3023" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-768x399.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-1024x532.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><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></center></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>O post <a href="https://blog.remontti.com.br/3006">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#8220;LAMP&#8221;</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3006/feed</wfw:commentRss>
			<slash:comments>70</slash:comments>
		
		
			</item>
		<item>
		<title>Acessando logs do rsyslog via web com Log Analyzer</title>
		<link>https://blog.remontti.com.br/2687</link>
					<comments>https://blog.remontti.com.br/2687#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 12 Sep 2018 09:05:47 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[analyzer]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Log Analyzer]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rsyslog]]></category>
		<category><![CDATA[syslog]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=2687</guid>

					<description><![CDATA[<p>O projeto LogAnalyzer já é antigo, não tem um interface muito bonita mas fornece um frontend fácil de usar e poderoso, permite pesquisar, revisar e analisar dados de eventos de rede, incluindo syslog. É&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2687">Acessando logs do rsyslog via web com Log Analyzer</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>O projeto LogAnalyzer já é antigo, não tem um interface muito bonita mas fornece um frontend fácil de usar e poderoso, permite pesquisar, revisar e analisar dados de eventos de rede, incluindo syslog. É um aplicativo gratuito de código aberto GPL escrito principalmente em php. Os dados podem ser obtidos de bancos de dados, mas também de arquivos de texto simples, por exemplo, aqueles que são escritos pelo rsyslog.</p>
<p>Para dar inicio vamos precisar ter um serviço Web rodado em nosso servidor<br />
<strong>Requisitos</strong>: <a href="https://blog.remontti.com.br/2024" rel="noopener" target="_blank">Passo-a-passo como criar um servidor web Apache2, PHP 7.0, MariaDB, PHPMyAdmin “LAMP” no Debian 9 Stretch</a></p>
<p><strong>Sugerido</strong>: <a href="https://blog.remontti.com.br/2674" rel="noopener" target="_blank">Servidor de log para registros remoto do RouterOS/Mikrotik</a></p>
<p>Agora já com nosso servidor LAMP pronto vamos criar nossa base de dados chamada Syslog (sim com S maiúsculo) e criar o usuario rsyslog para acessar esse banco.</p>
<pre class="remontti-code"># mysql -p</pre>
<pre class="remontti-code">
CREATE DATABASE Syslog;
GRANT ALL PRIVILEGES ON Syslog.* TO &#039;rsyslog&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA-SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Instalaremos o modulo rsyslog-mysql para fazer a integração </p>
<pre class="remontti-code"># apt install rsyslog-mysql</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/1.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/1-300x169.png" alt="" width="300" height="169" class="alignnone size-medium wp-image-2690" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/1-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/1-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/1-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/1.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Responda Sim</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/2.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/2-300x169.png" alt="" width="300" height="169" class="alignnone size-medium wp-image-2691" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/2-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/2-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/2-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/2.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Informe a senha criada para o usuário rsyslog <em>(&#8216;rsyslog&#8217;@&#8217;localhost&#8217; IDENTIFIED BY &#8216;SUA-SENHA&#8217;)</em></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/3.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/3-300x169.png" alt="" width="300" height="169" class="alignnone size-medium wp-image-2692" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/3-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/3-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/3-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/3.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Repita a senha</p>
<p>Verifique se o arquivo /etc/rsyslog.d/mysql.conf foi criado</p>
<pre class="remontti-code">cat /etc/rsyslog.d/mysql.conf</pre>
<p>Vai retornar:</p>
<pre class="remontti-code">	$ModLoad ommysql
	*.* :ommysql:localhost,Syslog,rsyslog,SUA-SENHA</pre>
<p>Agora reinicie o serviço do rsyslog para atualizar as configurações</p>
<pre class="remontti-code"># /etc/init.d/rsyslog restart</pre>
<p>Pronto seu rsyslog já esta guardado todos os logs no seu banco de dados, agora vamos a instalação e configuração do <a href="https://loganalyzer.adiscon.com/" rel="noopener" target="_blank">LogAnalyzer</a></p>
<p>Na data de hoje o projeto encontra-se na versão 4.1.6<br />
Acesse <a href="https://loganalyzer.adiscon.com/download/" rel="noopener" target="_blank">https://loganalyzer.adiscon.com/download/</a> e verifique se já  não existe uma nova versão.</p>
<p>Nos comandos a seguir vamos fazer o download do projeto, em seguida extrair o mesmo, e mover o projeto para dentro da pasta padrão do servidor web (/var/www/html/) faça de acordo com sua realidade, e ultimo estaremos dando permissões ao usuário apache (www-data) a escrever nos arquviso  .   </p>
<pre class="remontti-code"># cd /tmp/
# wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.6.tar.gz
# tar -vxzf loganalyzer-4.1.6.tar.gz
# cd loganalyzer-4.1.6/
# mv src/ /var/www/html/logs
# chown www-data. /var/www/html/logs -R</pre>
<p>Existe um pacote de tradução, porém o mesmo não foi traduzido, caso tenha interesse em baixar, e fazer a tradução:</p>
<pre class="remontti-code"># cd /tmp/
# wget https://loganalyzer.adiscon.com/plugins/files/translations/loganalyzer_lang_pt_BR_3.2.3.zip
# apt install  unzip
# unzip loganalyzer_lang_pt_BR_3
# unzip loganalyzer_lang_pt_BR_3.2.3.zip
# mv pt_BR /var/www/html/logs/lang/
# chown www-data. /var/www/html/logs -R</pre>
<p>Agora acesse: http://SEU-IP_OU-DOMINIO/logs/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/4.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/4-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2693" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/4-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/4-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/4-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/4.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Vamos ser avisados que o sistema precisa ser instalado/configurado. Clique em &#8220;here&#8221;.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/5.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/5-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2694" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/5-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/5-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/5-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/5.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Next<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/6.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/6-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2695" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/6-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/6-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/6-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/6.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Next<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/7.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/7-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2696" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/7-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/7-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/7-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/7.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Selecione YES em Enabled User Database, e configure em Database User o usuário rsyslog e sua senha.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/8.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/8-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2697" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/8-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/8-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/8-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/8.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Next<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/9.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/9-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2698" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/9-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/9-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/9-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/9.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Se não tiver nenhum erro, clique em next.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/10.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/10-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2699" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/10-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/10-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/10-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/10.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Crie um usuário e senha para o administrador<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/11.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/11-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2700" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/11-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/11-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/11-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/11.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Crie uma fonte de coleta, no nosso caso vamos usar os logs do mysql, siga de acordo com a imagem. Posteriormente você pode criar outras fontes.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/12.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/12-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-2701" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/12-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/12-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/12-1024x704.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/12.png 1235w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Next<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/09/Screenshot_20180912_110022.png" data-rel="lightbox-gallery-JyWs95i3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/09/Screenshot_20180912_110022-300x188.png" alt="" width="300" height="188" class="alignnone size-medium wp-image-2703" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/09/Screenshot_20180912_110022-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/09/Screenshot_20180912_110022-768x480.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/09/Screenshot_20180912_110022-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/09/Screenshot_20180912_110022.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>  </p>
<p>Parabéns você concluiu! </p>
<p>Gostou? Deixe seu comentário ficarei feliz em saber que lhe ajudei, e se tiver qualquer pergunta deixe-a também, se preferir acesse o menu Consultoria lá você encontra meios de falar comigo!</p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/2687">Acessando logs do rsyslog via web com Log Analyzer</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/2687/feed</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title>Instalando FreeRadius 3.0.X com integração MySQL ou MariaDB no Debian 9 Stretch</title>
		<link>https://blog.remontti.com.br/2066</link>
					<comments>https://blog.remontti.com.br/2066#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 03 Jul 2017 14:32:32 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pppoe]]></category>
		<category><![CDATA[provedor]]></category>
		<category><![CDATA[Stretch]]></category>
		<category><![CDATA[ubiquiti]]></category>
		<category><![CDATA[ubnt]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=2066</guid>

					<description><![CDATA[<p>Neste tutorial vamos configurar o FreeRadius 3 em nosso servidor Debina 9, com integração dos usuários/atributos de configurações em uma base de dados MySQL/MariaDB com o módulo SQL, e ainda o módulos SQLIPPOOL para&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2066">Instalando FreeRadius 3.0.X com integração MySQL ou MariaDB no Debian 9 Stretch</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/07/freeradius-3.0-debian9.jpg" alt="" width="900" height="428" class="alignnone size-full wp-image-2091" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/07/freeradius-3.0-debian9.jpg 900w, https://blog.remontti.com.br/wp-content/uploads/2017/07/freeradius-3.0-debian9-300x143.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2017/07/freeradius-3.0-debian9-768x365.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p>
<p>Neste tutorial vamos configurar o FreeRadius 3 em nosso servidor Debina 9, com integração dos usuários/atributos de configurações em uma base de dados MySQL/MariaDB com o módulo SQL, e ainda o módulos SQLIPPOOL para armazenar nossa pool de IPs na base de dados.<br />
Esse tutorial é ideal para provedores fazerem autenticação PPPoE, autenticação Wireless PSK e EAP. </p>
<p>Se você gostou do tutorial ou tem dúvidas deixe seu comentário. Se precisar de alguma ajuda ou trocar uma ideia pode me chamar lá no Telegram @remontti</p>
<p>REQUISITOS<br />
1 – Debian 9 Stretch recomendo uma <a href="https://blog.remontti.com.br/1152" target="_blank" rel="noopener noreferrer">instalação limpa do Debian</a><br />
2 – Servidor Atualizado:</p>
<pre class="remontti-code"># apt update</pre>
<p>Mãos à obra!<br />
Primeiramente escolha qual banco de dados você irá instalar:<br />
<strong>MySQL ou MariaDB? </strong><br />
Com o lançamento do Debian 9 ao solicitar a instalação do mysql-server, você irá se deparar com a instalação do MariaDB automaticamente.<br />
MariaDB é um banco de dados que surgiu como fork do MySQL, criado pelo próprio fundador do projeto após sua aquisição pela Oracle. Para saber mais acesse <a href="https://pt.wikipedia.org/wiki/MariaDB" target="_blank" rel="noopener noreferrer">https://pt.wikipedia.org/wiki/MariaDB</a></p>
<p><strong>Para MySQL</strong><br />
A equipe do MySQL Release Engineering fornece repositórios apt para usar com a maioria do software, incluindo o servidor e muitos de seus utilitários. Para instalação com o Mysql então será necessário adicionar em seus repositórios.</p>
<pre class="remontti-code">
# echo -e &quot;deb http://repo.mysql.com/apt/debian/ stretch mysql-5.7\ndeb-src http://repo.mysql.com/apt/debian/ stretch mysql-5.7&quot; &gt; /etc/apt/sources.list.d/mysql.list
# wget -O /tmp/RPM-GPG-KEY-mysql https://repo.mysql.com/RPM-GPG-KEY-mysql --no-check-certificate
# apt-key add /tmp/RPM-GPG-KEY-mysql
# apt update</pre>
<pre class="remontti-code"># apt install mysql-server</pre>
<p><strong>Para MariaDB</strong><br />
Não será necessário alterar nada em seus repositórios.<br />
<em><font color="blue">Note que na instalação do MariaDB ele não irá pedir senha do usuário root como acontece no mysql, por padrão o mesmo vem sem senha com permissão de logar apenas via shell.</font></em></p>
<pre class="remontti-code"># apt install mariadb-client mariadb-server</pre>
<p>Agora que já temos nosso bando de dados instalado MySQL ou MariaDB, vamos instalar uma servidor web junto com o PHPMyAdmin para facilitar nossa vida. </p>
<pre class="remontti-code"># apt install apache2 libapache2-mod-php7.0 php7.0 phpmyadmin</pre>
<p>Após instalar acesse <strong>http://SEU-IP/phpmyadmin</strong> para ver  se tudo esta ok!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017.png" data-rel="lightbox-gallery-KPK6DrG9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-300x157.png" alt="" width="300" height="157" class="alignnone size-medium wp-image-2036" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-768x402.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-1024x536.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Instalação do FreeRadius</strong></p>
<pre class="remontti-code"># apt install freeradius freeradius-mysql freeradius-utils</pre>
<p>Crie um banco de dados e usuário e conceda permissões para acessar sua base.</p>
<p>No MariaDB use o comando:</p>
<pre class="remontti-code"># mariadb -u root</pre>
<p>* Vale lembrar que MariaDB seu usuário root vem sem senha, para setar uma senha faça:</p>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SUA-SENHA-USER-ROOT&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
</pre>
<p>Acesse via linha de comando seu banco de dados, e crie uma base chamada de radius e usuário também chamado de radius, para configurarmos nossa aplicação freeradius.</p>
<pre class="remontti-code">
CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO &#039;radius&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA-DO-USER-RADIUS&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Agora vamos criar nossas tableas</p>
<p>No MariaDB use o comando:</p>
<pre class="remontti-code"># mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
# mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/schema.sql</pre>
<p>No MySQL use o comando:</p>
<pre class="remontti-code"># mysql -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
# mysql -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/schema.sql</pre>
<p>Após cada comando será solicitado a senha (SENHA-DO-USER-RADIUS)</p>
<p>Caso deseje logs mais detalhados edite radiusd.conf</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/radiusd.conf /etc/freeradius/3.0/radiusd.conf.orig
# vim /etc/freeradius/3.0/radiusd.conf</pre>
<p>Localize as variáveis e altere para yes  </p>
<pre class="remontti-code">[...]
log {
    [...]
        stripped_names = yes
        auth = yes
        auth_badpass = yes
        auth_goodpass = yes
    [...]
}
[...]</pre>
<p>Vamos habilitar nosso mod SQL, mas antes precisamos fazer algumas alterações no arquivo</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-available/sql.orig
# vim /etc/freeradius/3.0/mods-available/sql</pre>
<p>Altere:</p>
<pre class="remontti-code">
driver = &quot;rlm_sql_null&quot; por driver = &quot;rlm_sql_mysql&quot;
dialect = &quot;sqlite&quot; por dialect = &quot;mysql&quot;
</pre>
<p>Descemente as linhas e altere a senha:</p>
<pre class="remontti-code">server = &quot;localhost&quot;
port = 3306
login = &quot;radius&quot;
password = &quot;SENHA-DO-USER-RADIUS&quot;</pre>
<p>Descomente:<br />
<strong>read_clients = yes</strong></p>
<p>Habilite o mod:</p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/sql</pre>
<p>Agora no arquivo /etc/freeradius/3.0/sites-enabled/default vamos comentar alguns valores e descomentar outros:</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/sites-available/default  /etc/freeradius/3.0/sites-available/default.org
# vim /etc/freeradius/3.0/sites-enabled/default</pre>
<pre class="remontti-code">
  authorize {
      #digest
      #suffix
      #files
      sql
      #-ldap
  }

  authenticate {
      #digest
  }

  preacct {
      #suffix
      #files
  }

  accounting {
      sql
      #exec
      #attr_filter.accounting_response
  }
  session {
    # Se você deseja usar o atributo Simultaneous-Use, descomente sql e comente radutmp&lt;/em&gt; 
    #radutmp
    sql
  }

  post-auth {
          sql
          #exec

#        Post-Auth-Type REJECT {
#                # log failed authentications in SQL, too.
#                -sql
#                attr_filter.access_reject
#                # Insert EAP-Failure message if the request was
#                # rejected by policy instead of because of an
#                # authentication failure
#                eap
#
#                #  Remove reply message if the response contains an EAP-Message
#                remove_reply_message_if_eap
#        }
</pre>
<p>Faça o mesmo com inner-tunnel</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/sites-available/inner-tunnel /etc/freeradius/3.0/sites-available/inner-tunnel.org
# vim /etc/freeradius/3.0/sites-enabled/inner-tunnel</pre>
<pre class="remontti-code">
authorize {
    #suffix
    #files
    sql
    #-ldap
}

authenticate {

}

session { 
    # Se você deseja usar o atributo Simultaneous-Use, descomente sql e comente radutmp
    #radutmp
    sql
}
post-auth {
    sql

#  Post-Auth-Type REJECT {
#      # log failed authentications in SQL, too.
#      -sql
#      attr_filter.access_reject
#
#      #
#      #  Let the outer session know which module failed, and why.
#      #
#      update outer.session-state {
#              &amp;Module-Failure-Message := &amp;request:Module-Failure-Message
#      }
#  }

}</pre>
<p><strong>Habilita mod sqlippool</strong></p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sqlippool /etc/freeradius/3.0/mods-enabled/sqlippool
# vim /etc/freeradius/3.0/mods-enabled/sqlippool</pre>
<pre class="remontti-code"># Comente:
# pool_key = &quot;%{NAS-Port}&quot;
# Descomente
pool_key = &quot;%{Calling-Station-Id}&quot;</pre>
<p>Precisamos adicionar o mod sqlippool no nosso arquivo default, você acrescentará sqlippool em accounting e post-auth logo abaixo de sql: </p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/sites-enabled/default</pre>
<pre class="remontti-code">
accounting {
        sql
        sqlippool
}
session {
        sql
}
post-auth {
        sql
        sqlippool
}
</pre>
<p>Uma alteraçõe que acho interessante é para que a cada nova alocação de IP ela seja randômica, isso pode solucionar alguns problemas como o daqueles clientes que jogam online, que fazem download, que estão sendo atacados, que ao reiniciar seu equipamento o mesmo irá receber um novo IP. Para isso vamos editar /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf </p>
<p># vim /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</p>
<pre class="remontti-code">
#
#  The ORDER BY clause of this query tries to allocate the same IP-address
#  which user had last session...
#COMENTE:
#allocate_find = &quot;\
#        SELECT framedipaddress FROM ${ippool_table} \
#        WHERE pool_name = &#039;%{control:Pool-Name}&#039; \
#        AND (expiry_time &lt; NOW() OR expiry_time IS NULL) \
#        ORDER BY \
#                (username &lt;&gt; &#039;%{User-Name}&#039;), \
#                (callingstationid &lt;&gt; &#039;%{Calling-Station-Id}&#039;), \
#                expiry_time \
#        LIMIT 1 \
#        FOR UPDATE&quot;

#
#  If you prefer to allocate a random IP address every time, use this query instead.
#DESCOMENTE
allocate_find = &quot;\
       SELECT framedipaddress FROM ${ippool_table} \
       WHERE pool_name = &#039;%{control:Pool-Name}&#039; \
       AND expiry_time IS NULL \
       ORDER BY \
               RAND() \
       LIMIT 1 \
       FOR UPDATE&quot;</pre>
<p><strong>Opcional</strong></p>
<p>Inicialmente eu particularmente não gosto da ideia da tabela radusergroup não ter um ID então para alterar isso faça. (Se desejar)</p>
<pre class="remontti-code"># mysql/mariadb -u radius -p</pre>
<p>Entre com SUA-SENHA do radius no MySQL.</p>
<pre class="remontti-code">
USE radius;
ALTER TABLE `radusergroup` ADD `id` INT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;
ALTER TABLE `radusergroup` ADD UNIQUE(`id`);</pre>
<p>Caso você tenha uma alta demanda de requisições você pode fazer algumas alterações no radiusd.conf.<br />
Altere conforme sua necessidade, e hardware de seu servidor. Vale lembrar que fazendo essas alterações será necessário alterar as configurações do MySQL/MariaDB para permitir uma maior número de conexões.<br />
Ex carga de cerca de 1000 Access-Request por segundo:</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/radiusd.conf</pre>
<pre class="remontti-code">
#...
thread pool {
    start_servers = 256
    max_servers = 512
    min_spare_servers = 256
    max_spare_servers = 512
    max_queue_size = 1048576
    max_requests_per_server = 0
    auto_limit_acct = no
}
#...</pre>
<p>Para conhecer os atributos que você pode usar em sua base recomendo a leitura do tutorial: "ALIMENTANDO NOSSA BASE DE DADOS" em diante.<br />
<strong><a href="https://blog.remontti.com.br/1651">Servidor FreeRadius com integração MySQL + Autenticação PPPoE & Hotspot VS Mikrotik + Ubiquiti EAP/PSK</a></strong></p>
<p>Sugestões ou criticas envie para Telegram: @remontti</p>
<p>Espero ter ajudado!  <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3>ARQUIVOS EDITADOS:</h3>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/default |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code">
server default {
listen {
        type = auth
        ipaddr = *
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipaddr = *
        port = 0
        type = acct
        limit {
        }
}
listen {
        type = auth
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipv6addr = ::
        port = 0
        type = acct
        limit {
        }
}
authorize {
        filter_username
        preprocess
        chap
        mschap
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        mschap
        eap
}
preacct {
        preprocess
        acct_unique
}
accounting {
        detail
        sql
        sqlippool
}
session {
        sql
}
post-auth {
        update {
                &amp;reply: += &amp;session-state:
        }
        sql
        sqlippool
        remove_reply_message_if_eap
}
pre-proxy {
}
post-proxy {
        eap
}
}
</pre>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/inner-tunnel |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code">
server inner-tunnel {
listen {
       ipaddr = 127.0.0.1
       port = 18120
       type = auth
}
authorize {
        filter_username
        chap
        mschap
        update control {
                &amp;Proxy-To-Realm := LOCAL
        }
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        mschap
        eap
}
session {
        sql
}
post-auth {
        sql
}
pre-proxy {
}
post-proxy {
        eap
}
</pre>
<pre class="remontti-code"># cat /etc/freeradius/3.0/mods-enabled/sql |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code">
sql {
        driver = &quot;rlm_sql_mysql&quot;
        dialect = &quot;mysql&quot;
        server = &quot;localhost&quot;
        port = 3306
        login = &quot;radius&quot;
        password = &quot;SENHA-USUARIO-RADIUS&quot;
        radius_db = &quot;radius&quot;
        acct_table1 = &quot;radacct&quot;
        acct_table2 = &quot;radacct&quot;
        postauth_table = &quot;radpostauth&quot;
        authcheck_table = &quot;radcheck&quot;
        groupcheck_table = &quot;radgroupcheck&quot;
        authreply_table = &quot;radreply&quot;
        groupreply_table = &quot;radgroupreply&quot;
        usergroup_table = &quot;radusergroup&quot;
        delete_stale_sessions = yes
        pool {
                start = ${thread[pool].start_servers}
                min = ${thread[pool].min_spare_servers}
                max = ${thread[pool].max_servers}
                spare = ${thread[pool].max_spare_servers}
                uses = 0
                retry_delay = 30
                lifetime = 0
                idle_timeout = 60
        }
        read_clients = yes
        client_table = &quot;nas&quot;
        group_attribute = &quot;SQL-Group&quot;
        $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}
</pre>
<pre class="remontti-code"># cat /etc/freeradius/3.0/mods-enabled/sqlippool |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code">
sqlippool {
        sql_module_instance = &quot;sql&quot;
        dialect = &quot;mysql&quot;
        ippool_table = &quot;radippool&quot;
        lease_duration = 3600
        pool_key = &quot;%{Calling-Station-Id}&quot;
        messages {
                exists = &quot;Existing IP: %{reply:Framed-IP-Address} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
                success = &quot;Allocated IP: %{reply:Framed-IP-Address} from %{control:Pool-Name} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
                clear = &quot;Released IP %{Framed-IP-Address} (did %{Called-Station-Id} cli %{Calling-Station-Id} user %{User-Name})&quot;
                failed = &quot;IP Allocation FAILED from %{control:Pool-Name} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
                nopool = &quot;No Pool-Name defined (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
        }
        $INCLUDE ${modconfdir}/sql/ippool/${dialect}/queries.conf
}
</pre>
<pre class="remontti-code"># cat /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code">
allocate_clear = &quot;\
        UPDATE ${ippool_table} \
        SET \
                nasipaddress = &#039;&#039;, \
                pool_key = 0, \
                callingstationid = &#039;&#039;, \
                username = &#039;&#039;, \
                expiry_time = NULL \
        WHERE expiry_time &lt;= NOW() - INTERVAL 1 SECOND \
        AND nasipaddress = &#039;%{Nas-IP-Address}&#039;&quot;
allocate_find = &quot;\
        SELECT framedipaddress FROM ${ippool_table} \
        WHERE pool_name = &#039;%{control:Pool-Name}&#039; \
        AND expiry_time IS NULL \
        ORDER BY \
                RAND() \
        LIMIT 1 \
        FOR UPDATE&quot;
pool_check = &quot;\
        SELECT id \
        FROM ${ippool_table} \
        WHERE pool_name=&#039;%{control:Pool-Name}&#039; \
        LIMIT 1&quot;
allocate_update = &quot;\
        UPDATE ${ippool_table} \
        SET \
                nasipaddress = &#039;%{NAS-IP-Address}&#039;, pool_key = &#039;${pool_key}&#039;, \
                callingstationid = &#039;%{Calling-Station-Id}&#039;, \
                username = &#039;%{User-Name}&#039;, expiry_time = NOW() + INTERVAL ${lease_duration} SECOND \
        WHERE framedipaddress = &#039;%I&#039; \
        AND expiry_time IS NULL&quot;
start_update = &quot;\
        UPDATE ${ippool_table} \
        SET \
                expiry_time = NOW() + INTERVAL ${lease_duration} SECOND \
        WHERE nasipaddress = &#039;%{NAS-IP-Address}&#039; \
        AND pool_key = &#039;${pool_key}&#039; \
        AND username = &#039;%{User-Name}&#039; \
        AND callingstationid = &#039;%{Calling-Station-Id}&#039; \
        AND framedipaddress = &#039;%{Framed-IP-Address}&#039;&quot;
stop_clear = &quot;\
        UPDATE ${ippool_table} \
        SET \
                nasipaddress = &#039;&#039;, \
                pool_key = 0, \
                callingstationid = &#039;&#039;, \
                username = &#039;&#039;, \
                expiry_time = NULL \
        WHERE nasipaddress = &#039;%{Nas-IP-Address}&#039; \
        AND pool_key = &#039;${pool_key}&#039; \
        AND username = &#039;%{User-Name}&#039; \
        AND callingstationid = &#039;%{Calling-Station-Id}&#039; \
        AND framedipaddress = &#039;%{Framed-IP-Address}&#039;&quot;
alive_update = &quot;\
        UPDATE ${ippool_table} \
        SET \
                expiry_time = NOW() + INTERVAL ${lease_duration} SECOND \
        WHERE nasipaddress = &#039;%{Nas-IP-Address}&#039; \
        AND pool_key = &#039;${pool_key}&#039; \
        AND username = &#039;%{User-Name}&#039; \
        AND callingstationid = &#039;%{Calling-Station-Id}&#039; \
        AND framedipaddress = &#039;%{Framed-IP-Address}&#039;&quot;
on_clear = &quot;\
        UPDATE ${ippool_table} \
        SET \
                nasipaddress = &#039;&#039;, \
                pool_key = 0, \
                callingstationid = &#039;&#039;, \
                username = &#039;&#039;, \
                expiry_time = NULL \
        WHERE nasipaddress = &#039;%{Nas-IP-Address}&#039;&quot;
off_clear = &quot;\
        UPDATE ${ippool_table} \
        SET \
                nasipaddress = &#039;&#039;, \
                pool_key = 0, \
                callingstationid = &#039;&#039;, \
                username = &#039;&#039;, \
                expiry_time = NULL \
        WHERE nasipaddress = &#039;%{Nas-IP-Address}&#039;&quot;
</pre>
<p>O post <a href="https://blog.remontti.com.br/2066">Instalando FreeRadius 3.0.X com integração MySQL ou MariaDB no Debian 9 Stretch</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/2066/feed</wfw:commentRss>
			<slash:comments>60</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar o MySQL Server (Oracle) no Debian 9 Stretch</title>
		<link>https://blog.remontti.com.br/2054</link>
					<comments>https://blog.remontti.com.br/2054#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 29 Jun 2017 19:27:11 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[jessie]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql-5.7]]></category>
		<category><![CDATA[mysql-primary]]></category>
		<category><![CDATA[mysql-server]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Stretch]]></category>
		<category><![CDATA[upgrade]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=2054</guid>

					<description><![CDATA[<p>Recentemente tivemos o lançamento do Debian 9, e se você solicitar a instalação do mysql-server, você irá se deparar com a instalação do mariadb automaticamente, sem nenhuma maneira (fácil) de instalar o MySQL da&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2054">Como instalar o MySQL Server (Oracle) no Debian 9 Stretch</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/mysql.jpg" alt="" width="900" height="428" class="alignnone size-full wp-image-2061" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/mysql.jpg 900w, https://blog.remontti.com.br/wp-content/uploads/2017/06/mysql-300x143.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/mysql-768x365.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p>
<p>Recentemente tivemos o lançamento do Debian 9, e se você solicitar a instalação do mysql-server, você irá se deparar com a instalação do mariadb automaticamente, sem nenhuma maneira (fácil) de instalar o MySQL da Oracle. Qualquer migração importante de base de dados deve ser feita com cuidado, Migrar o MySQL 5.5 para o MariaDB 10.1 pode causar dores de cabeça. </p>
<p>Adicione o Repositórios da Oracle</p>
<p>A equipe do MySQL Release Engineering fornece repositórios apt para usar com a maioria do software, incluindo o servidor e muitos de seus utilitários. Vou optar por instalar o MySQL 5.7, porém 5.6 e 8.0 também estão disponíveis para o Debian stable. Vamos criar o arquivo /etc/apt/sources.list.d/mysql.list.</p>
<pre class="remontti-code"># echo -e &quot;deb http://repo.mysql.com/apt/debian/ stretch mysql-5.7\ndeb-src http://repo.mysql.com/apt/debian/ stretch mysql-5.7&quot; &gt; /etc/apt/sources.list.d/mysql.list</pre>
<p>Antes de atualizar nosso repositório você deve adicionar a chave pública como confiável:</p>
<pre class="remontti-code"># wget -O /tmp/RPM-GPG-KEY-mysql https://repo.mysql.com/RPM-GPG-KEY-mysql --no-check-certificate
# apt-key add /tmp/RPM-GPG-KEY-mysql</pre>
<p>Já pode instale mysql-sever da Oracle</p>
<pre class="remontti-code"># apt update
# apt install mysql-server</pre>
<p>Defina senha para o usuário root do MySQL.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/senha-mysql-root.png" alt="" width="989" height="579" class="alignnone size-full wp-image-2113" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/senha-mysql-root.png 989w, https://blog.remontti.com.br/wp-content/uploads/2017/06/senha-mysql-root-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/senha-mysql-root-768x450.png 768w" sizes="auto, (max-width: 989px) 100vw, 989px" /></p>
<p>Verifique se o mesmo esta rodando:</p>
<pre class="remontti-code">systemctl status mysql</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151538.png" alt="" width="944" height="253" class="alignnone size-full wp-image-2056" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151538.png 944w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151538-300x80.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151538-768x206.png 768w" sizes="auto, (max-width: 944px) 100vw, 944px" /></p>
<p>Já pode fazer a conexão ao seu banco!</p>
<pre class="remontti-code">mysql -p</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151808.png" alt="" width="802" height="420" class="alignnone size-full wp-image-2057" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151808.png 802w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151808-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170629_151808-768x402.png 768w" sizes="auto, (max-width: 802px) 100vw, 802px" /></p>
<p>Sugestões ou criticas envie para Telegram: <a href="https://t.me/remontti">@remontti</a></p>
<p>Espero ter ajudado!  <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>O post <a href="https://blog.remontti.com.br/2054">Como instalar o MySQL Server (Oracle) no Debian 9 Stretch</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/2054/feed</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>Passo-a-passo como criar um servidor web Apache2, PHP 7.0, MariaDB, PHPMyAdmin &#8220;LAMP&#8221; no Debian 9 Stretch</title>
		<link>https://blog.remontti.com.br/2024</link>
					<comments>https://blog.remontti.com.br/2024#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 19 Jun 2017 18:55:38 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[Debian 9]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP 7.0]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[Stretch]]></category>
		<category><![CDATA[webserver]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=2024</guid>

					<description><![CDATA[<p>Distribuição utilizada: Debian 9 Stretch / Instalação Limpa Com o lançamento do Debian 9 alguns pacotes foram substituído como: PHP5 -> PHP7.0 Mysql -> MariaDB (MariaDB é um banco de dados que surgiu como&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2024">Passo-a-passo como criar um servidor web Apache2, PHP 7.0, MariaDB, PHPMyAdmin &#8220;LAMP&#8221; no Debian 9 Stretch</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/webdev-debian9.jpg" alt="" width="800" height="376" class="alignnone size-full wp-image-2046" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/webdev-debian9.jpg 800w, https://blog.remontti.com.br/wp-content/uploads/2017/06/webdev-debian9-300x141.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/webdev-debian9-768x361.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/webdev-debian9-520x245.jpg 520w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Distribuição utilizada: Debian 9 Stretch / <a href="https://blog.remontti.com.br/1152">Instalação Limpa</a></p>
<p>Com o lançamento do Debian 9 alguns pacotes foram substituído como:<br />
<strong>PHP5 -> PHP7.0</strong><br />
<strong>Mysql -> <a href="https://pt.wikipedia.org/wiki/MariaDB" target="_blank" rel="noopener noreferrer">MariaDB</a></strong> (<em>MariaDB é um banco de dados que surgiu como fork do MySQL, criado pelo próprio fundador do projeto após sua aquisição pela Oracle.</em>)</p>
<p>Vamos a instalação</p>
<pre class="remontti-code"># apt update
# apt upgrade
# apt install apache2 libapache2-mod-php7.0 php7.0 mariadb-client mariadb-server phpmyadmin</pre>
<p>Instale todos os pacotes dependentes. (S)</p>
<p><em>OBS: Se você instalar o pacote <strong>mysql-server</strong> ele vai estar instalando o mariadb-client mariadb-server.</em></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143240.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143240-300x199.png" alt="" width="300" height="199" class="alignnone size-medium wp-image-2028" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143240-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143240-768x509.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143240-1024x679.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143240.png 1192w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Na próxima tela selecione a opção apache2.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143756.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143756-300x199.png" alt="" width="300" height="199" class="alignnone size-medium wp-image-2029" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143756-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143756-768x509.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143756-1024x679.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_143756.png 1192w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Configurando o banco do phpmyadmin:<br />
Responda Sim.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144016.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144016-300x199.png" alt="" width="300" height="199" class="alignnone size-medium wp-image-2030" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144016-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144016-768x509.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144016-1024x679.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144016.png 1192w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Defina uma senha para a base do phpmyadmin:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144112.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144112-300x199.png" alt="" width="300" height="199" class="alignnone size-medium wp-image-2031" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144112-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144112-768x509.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144112-1024x679.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144112.png 1192w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Repita a senha:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144154.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144154-300x199.png" alt="" width="300" height="199" class="alignnone size-medium wp-image-2032" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144154-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144154-768x509.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144154-1024x679.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144154.png 1192w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Instalação concluída!<br />
Acesse <strong>http://ip-do-seu-servidor/</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150403.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150403-300x158.png" alt="" width="300" height="158" class="alignnone size-medium wp-image-2039" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150403-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150403-768x403.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150403-1024x538.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150403.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Não sentiu que faltou algo nessa instalação?</strong><br />
<strong>Sim!</strong> No MySQL você definia uma senha para para o usuário root do mysql na instalação, com o MariaDB isso não acontece pois ele vem sem senha de root! Como usuário root não tem senha você não vai conseguir logar com ele no PHPMyAdmin.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144650.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144650-202x300.png" alt="" width="202" height="300" class="alignnone size-medium wp-image-2034" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144650-202x300.png 202w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_144650.png 432w" sizes="auto, (max-width: 202px) 100vw, 202px" /></a></p>
<p>Para alterar a senha do usuário root do MariaDB faça:</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SUA-SENHA&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Mas não se assuste! MariaDB é praticamente o seu velho MySQL. Para saber mais acesse: <a href="https://mariadb.com/kb/pt-br/mariadb-versus-mysql-compatibility/" target="_blank" rel="noopener noreferrer">MariaDB versus MySQL &#8211; Compatibilidade</a>. Veja pelo lado bom, não permitindo login com root temos mais segurança!<br />
O que fazer então? Simples crie uma base de dados e um usuário para acessa-la. Eu sempre recomendei usar para cada aplicação um usuário com a sua base, assim numa falha você  não deixa exposto o que não deveria!<br />
Acesse via linha de comando nosso o mariadb (o comando mysql -p funciona também) </p>
<pre class="remontti-code"># mariadb -p</pre>
<p>Por padrão vem sem senha.</p>
<pre class="remontti-code">CREATE DATABASE minhabase;
GRANT ALL PRIVILEGES ON minhabase.* TO &#039;meuusuario&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;minhasenha&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_145812.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_145812-300x106.png" alt="" width="300" height="106" class="alignnone size-medium wp-image-2035" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_145812-300x106.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_145812-768x271.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_145812-1024x362.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_145812.png 1157w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Agora pode acessar seu PHPMyAdmin com seu seu usuário e senha. <strong>http://ip-do-seu-servidor/phpmyadmin</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-300x157.png" alt="" width="300" height="157" class="alignnone size-medium wp-image-2036" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-768x402.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017-1024x536.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150017.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150027.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150027-300x158.png" alt="" width="300" height="158" class="alignnone size-medium wp-image-2037" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150027-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150027-768x404.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150027-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150027.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Agora vamos habilitar o <a href="http://httpd.apache.org/docs/current/mod/mod_rewrite.html">mod_rewrite</a> do Apache que é muito utilizado. Este é um módulo do Apache que utiliza um mecanismo baseado em regras de reescrita.</p>
<p>Diretório de configurações do Apache fica em <strong>/etc/apache2/</strong></p>
<p>Vamos ao comando para habilita-lo:</p>
<pre class="remontti-code"># a2enmod rewrite</pre>
<p>A página que vimos ao abri o ip do nosso servidor no navegador fica no diretório /var/www/html, isso está sendo informado no arquivo default do apache que fica em <em>/etc/apache2/sites-enabled/000-default.conf</em>, e para que nosso <a href="http://httpd.apache.org/docs/current/mod/mod_rewrite.html">mod_rewrite</a> funcione corretamente será necessário adicionar alguma linhas.</p>
<p>Edite o arquivo /etc/apache2/sites-enabled/000-default.conf (vou usar o editor vim, que não vem instalado por padrão no sistema, mas se você pode usar qualquer edito ex o nano)</p>
<pre class="remontti-code"># vim /etc/apache2/sites-enabled/000-default.conf</pre>
<p>Adicione abaixo de &#8220;<span style="color: #000080;"><strong>DocumentRoot /var/www/html</strong>&#8220;</span> o seguinte:</p>
<pre class="remontti-code">	
	&lt;Directory /var/www/html/&gt;
    		Options FollowSymLinks
    		AllowOverride All
	&lt;/Directory&gt;
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150942.png" data-rel="lightbox-gallery-e8BL5HqQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150942-300x172.png" alt="" width="300" height="172" class="alignnone size-medium wp-image-2042" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150942-300x172.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150942-768x441.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150942-1024x588.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/06/Screenshot_20170619_150942.png 1192w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Por segurança recomendo remover a assinatura do servidor, evitando os &#8220;espertinhos&#8221;</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<p>Agora precisamos restartar o apache para que tenha efeito nossas alterações.</p>
<pre class="remontti-code"># /etc/init.d/apache2 restart</pre>
<p>Ou</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Parabéns seu servidor está &#8220;Pronto&#8221;!</p>
<p>O post <a href="https://blog.remontti.com.br/2024">Passo-a-passo como criar um servidor web Apache2, PHP 7.0, MariaDB, PHPMyAdmin &#8220;LAMP&#8221; no Debian 9 Stretch</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/2024/feed</wfw:commentRss>
			<slash:comments>47</slash:comments>
		
		
			</item>
		<item>
		<title>Criando uma maquina virtual com linux (Debian) para Desenvolvedores Web (LDAMPS)</title>
		<link>https://blog.remontti.com.br/1730</link>
					<comments>https://blog.remontti.com.br/1730#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 20 Feb 2017 02:08:28 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xamp]]></category>
		<category><![CDATA[xampp]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1730</guid>

					<description><![CDATA[<p>LDAMPS (Linux / DNS / Apache / MySQL / PHP / SFTP) A ideia deste tutorial é criar um cenário mais legal que um simples &#8220;xampp/easyphp&#8221;, e sim criar nosso próprio &#8220;servidor de hospedagem&#8221;&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1730">Criando uma maquina virtual com linux (Debian) para Desenvolvedores Web (LDAMPS)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong></strong><strong>LDAMPS</strong> (Linux / DNS / Apache / MySQL / PHP / SFTP)</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/web-dev-icon.jpg" alt="" width="800" height="510" class="alignnone size-full wp-image-1764" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/web-dev-icon.jpg 800w, https://blog.remontti.com.br/wp-content/uploads/2017/02/web-dev-icon-300x191.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/web-dev-icon-768x490.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>A ideia deste tutorial é criar um cenário mais legal que um simples &#8220;xampp/easyphp&#8221;, e sim criar nosso próprio &#8220;servidor de hospedagem&#8221; onde vamos criar domínios virtuais quais poderemos acessá-los para fazer simulações em cima de ambientes mais reais. </p>
<p>Para crianção da maquina virtual no VirtualBox e a Instalação do Debian siga os tutoriais abaixo.</p>
<p><a href="https://blog.remontti.com.br/1134" target="_blank" rel="noopener">Criando uma máquina virtual no Virtual Box</a></p>
<p>Na instalação, na parte da configuração não é necessário fixar um IP, pode recebe-lo automaticamente via DHCP, assim se você sair da sua rede pode levar a experiência para outras redes, porém será necessário alterar o endereço IP nas configurações do bind cada vez que seu servidor receber um novo IP, falarei disso nas configurações do BIND (é apenas um arquivo nada d+).</p>
<p><a href="https://blog.remontti.com.br/1152" target="_blank" rel="noopener">Instalação do Debian 8 Jessie Limpa passo-a-passo</a></p>
<p>Após instalação do Debina, instalaremos o SSH para acessamos remotamente via Terminal ou com Putty (Windows). Vou ainda instalar o editor vim, que é meu preferido, mas você pode usar nano, pico entre outros.</p>
<pre class="remontti-code"># apt install ssh vim</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_46_54.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_46_54-300x167.png" alt="" width="300" height="167" class="alignnone size-medium wp-image-1735" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_46_54-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_46_54.png 720w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Lembre-se que no processo da criação da maquina virtual nossa placa de rede ficou em modo bridge, ou seja isso faz com que a comunicação existente em sua rede seja de ponto-a-ponto entre todos que nela estão conectados.</p>
<p>Sempre que iniciar sua máquina virtual será necessário verificar qual IP recebeu. </p>
<pre class="remontti-code"># ifconfig </pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_52_46.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_52_46-300x167.png" alt="" width="300" height="167" class="alignnone size-medium wp-image-1736" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_52_46-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/VirtualBox_Debian-Dev-Web_19_02_2017_15_52_46.png 720w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
No meu caso minha maquina está com o IP 10.0.0.109. Agora vamos acessar nosso servidor por SSH, se você já utiliza linux abra em seu terminal e digite $ ssh seuusuario@ip-do-seu-servidor ou abra o Putty e informe o IP do seu servidor.<br />
Entre com sua senha, e após vire administrador (root) com o comando #su<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_155718.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_155718-300x201.png" alt="" width="300" height="201" class="alignnone size-medium wp-image-1737" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_155718-300x201.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_155718-768x515.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_155718.png 842w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Tem duas coisar que sempre faço após instalar um debian, faça se desejar.<br />
A primeira é colorir o bash.</p>
<pre class="remontti-code"># vim /root/.bashrc</pre>
<p>Descomente </p>
<pre class="remontti-code">
export LS_OPTIONS=&#039;--color=auto&#039;
eval &quot;`dircolors`&quot;
alias ls=&#039;ls $LS_OPTIONS&#039;
alias ll=&#039;ls $LS_OPTIONS -l&#039;
alias l=&#039;ls $LS_OPTIONS -lha&#039;
</pre>
<p>Insira ao final:</p>
<pre class="remontti-code">
PS1=&#039;${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[00m\]@\[\033[01;36m\]\h\[\033[00m\]:\[\033[01;37m\]\w\[\033[01;32m\]\$\[\033[00m\] &#039;
</pre>
<p>Deslogue do root <em>(# exit)</em>, e logue novamente <em>(# su)</em><br />
Pronto nosso bash está com &#8220;mais vida&#8221; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Você encontra mais detalhes em: <a href="https://blog.remontti.com.br/141" target="_blank" rel="noopener">Colorindo seu Bash</a></p>
<p>A segunda é melhorar o autocomplete:<br />
<a href="https://blog.remontti.com.br/1318" target="_blank" rel="noopener">Bash com autocomplete “turbinado” no Debian</a></p>
<p>Precisamos instalar nosso servidor web, para isso siga o tutorial abaixo.</p>
<p><a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener">Passo-a-passo como criar um servidor web Apache2, PHP5, MySQL, PHPMyAdmin “LAMP” no Debian 8</a></p>
<p>Agora vem a parte legal!! Configurar nosso servidor para resolver nomes (Sevidor DNS) e nele configurar alguns domínios &#8220;fake&#8221; quais poderemos acessar.<br />
<font color="red"><br />
<i>Vale lembrar que você não deve fazer isso em uma máquina com IP válido, caso fizer isso vai estar deixando consultas recursivas aberta para o mundo &#8220;escravizar-lo&#8221;, não vou entrar em detalhes das configurações avançadas do bind, o intuito aqui é ensinar pessoas a ter um cenário para programação web, em um ambiente local. Se deseja saber como configurar um servidor DNS acesse:</font> <a href="https://blog.remontti.com.br/1397">Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6)</a>. </i></p>
<p>No exemplo vou inventar dois domínios fake:<br />
dominio1.com.br<br />
dominio2.com.br</p>
<p>Instalaremos o <a href="https://pt.wikipedia.org/wiki/BIND" target="_blank" rel="noopener">BIND</a> </p>
<pre class="remontti-code"># apt install bind9</pre>
<p>Altere o DNS do seus servidor para ele mesmo</p>
<pre class="remontti-code"># echo &#039;nameserver 127.0.0.1&#039; &gt; /etc/resolv.conf
</pre>
<p>Para prevenir que o DHCP não mude novamente seu DNS vamos alterar um configuração no arquivo de configuração do DHCP Cliente. Assim sempre vamos receber o 127.0.0.1</p>
<pre class="remontti-code"># sed -i &quot;s/#prepend domain-name-servers/prepend domain-name-servers/g&quot; /etc/dhcp/dhclient.conf</pre>
<p>Se quiser garantia que irá receber o 127.0.0.1 de um reboot em sua VM, e após reiniciar de um cat /etc/resolv.conf e veja se  <em>nameserver 127.0.0.1</em> se encontra no arquivo.</p>
<pre class="remontti-code"># reboot</pre>
<p>Vamos criar nossa zona fake, que fará com que todos os domínios que adicionaremos nela o servidor faça responder que o domínios é o seu próprio servidor. </p>
<pre class="remontti-code"># echo &#039;include &quot;/etc/bind/fakes.zone&quot;;&#039; &gt;&gt; /etc/bind/named.conf.local

# echo &#039;zone &quot;web.local&quot; IN { type master; file &quot;/etc/bind/db.web.local&quot;; };&#039; &gt;&gt; /etc/bind/named.conf.local</pre>
<pre class="remontti-code"># vim /etc/bind/db.web.local </pre>
<p><font color="red">Lembrando que 10.0.0.109 é o IP que estou recebendo via DHCP, SEMPRE que sua interface receber um novo IP será necessário altera-lo, e  restartar o serviço bind9.</font></p>
<pre class="remontti-code">
$ORIGIN .
$TTL 86400
web.local         IN SOA  ns1.web.local. ns2.web.local. (
                        2017021901 ; serial
                        28800      ; refresh (8 hours)
                        1800       ; retry (30 minutes)
                        2419200    ; expire (4 weeks)
                        10800      ; minimum (3 hours)
                        )
                        NS web.local
                        A 10.0.0.109
</pre>
<p>Vou ensinar como fazer script (shell script) que fará com que sempre fique o IP recebido via DHCP.<br />
Insira no final do arquivo /etc/rc.local as linhas abaixo, o rc.local é carregado na inicialização.</p>
<pre class="remontti-code"># vim /etc/rc.local</pre>
<p>Insira antes de exit 0</p>
<pre class="remontti-code">
pegaip=$(ifconfig eth0 | grep &quot;inet end&quot; | awk &#039;{print $3}&#039;)
sed -i &quot;s/ A .*/ A $pegaip/g&quot; /etc/bind/db.web.local
/etc/init.d/bind9  restart
</pre>
<p>Criaremos nosso arquivo fakes.zone quais adicionaremos os domínios fake.</p>
<p># vim /etc/bind/fakes.zone</p>
<pre class="remontti-code">
zone &quot;fakes.zone&quot; {
        type master;
        file &quot;/etc/bind/db.fakes.zone&quot;;
        allow-query {none;};
};
</pre>
<pre class="remontti-code"># vim /etc/bind/db.fakes.zone</pre>
<pre class="remontti-code">
$TTL 1H
@       IN      SOA LOCALHOST. NS.LOCALHOST (
                        2017021900      ; Serial  
                        1h              ; Refresh
                        15m             ; Retry
                        30d             ; Expire 
                        2h              ; Negative Cache TTL
                )
                NS  LOCALHOST.

*.dominio1.com.br       IN CNAME .
dominio1.com.br         IN CNAME .

*.dominio2.com.br       IN CNAME .
dominio2.com.br         IN CNAME .

</pre>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Insira no arquivo antes de fechar a chave options.</p>
<pre class="remontti-code">response-policy {
	zone &quot;fakes.zone&quot; policy CNAME web.local;
};</pre>
<p>Ficando assim:</p>
<pre class="remontti-code">
options {
        directory &quot;/var/cache/bind&quot;;

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0 s placeholder.

        // forwarders {
        //      0.0.0.0;
        // };


        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };

        response-policy {
                zone &quot;fakes.zone&quot; policy CNAME web.local;
        };
};
</pre>
<p>Restarte o bind toda vez que fizer alguma alteração (ex adicionar um novo domínio)</p>
<pre class="remontti-code"># /etc/init.d/bind9  restart</pre>
<p>Ping para seus domínios e veja se responde o IP do seu servidor.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_180743.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_180743-300x201.png" alt="" width="300" height="201" class="alignnone size-medium wp-image-1734" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_180743-300x201.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_180743-768x515.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_180743.png 842w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Altere os DNS de seu computador para o IP do seu servidor &#8220;no meu caso 10.0.0.109&#8221;. Seu computador vai fazer as consultas DNS em seu servidor, qual responde como autoritativo pelos domínios fakes. Agora Acesse seus domínios em seu navegador.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_183202.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_183202-300x213.png" alt="" width="300" height="213" class="alignnone size-medium wp-image-1745" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_183202-300x213.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_183202-768x544.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_183202-1024x726.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_183202.png 1043w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Recebemos a tela padrão, que esta é o arquivo que está em /var/www/html/index.html<br />
Como padrão então já sabemos que o diretório padrão do apaches (www-data) é /var/www/html/. Bom precisamos fazer nosso apache interpretar que cada site fique em um diretório diferente. Então vamos criar esses diretórios.</p>
<pre class="remontti-code"># mkdir -p /var/www/dom_fakes/dominio1.com.br
# mkdir /var/www/dom_fakes/dominio2.com.br</pre>
<p>Agora criamos nossos 2 arquivos de configurações em /etc/apache2/sites-enabled/ para cada domínio.</p>
<p><strong>dominio1.com.br</strong></p>
<pre class="remontti-code"># vim /etc/apache2/sites-enabled/dominio1.com.br.conf</pre>
<pre class="remontti-code">&lt;VirtualHost *:80&gt;
	ServerName dominio1.com.br
	ServerAlias www.dominio1.com.br

        ServerAdmin seu@email.com.br
        DocumentRoot /var/www/dom_fakes/dominio1.com.br
	&lt;Directory /var/www/dom_fakes/dominio1.com.br/&gt;
    		Options Indexes FollowSymLinks
    		AllowOverride All
	&lt;/Directory&gt;

	LogLevel warn

        ErrorLog ${APACHE_LOG_DIR}/dominio1.com.br_error.log
        CustomLog ${APACHE_LOG_DIR}/dominio1.com.br_access.log combined

&lt;/VirtualHost&gt;</pre>
<p><strong>dominio2.com.br</strong></p>
<pre class="remontti-code"># vim /etc/apache2/sites-enabled/dominio2.com.br.conf</pre>
<pre class="remontti-code">&lt;VirtualHost *:80&gt;
	ServerName dominio2.com.br
	ServerAlias www.dominio2.com.br
        ServerAdmin seu@email.com.br
        DocumentRoot /var/www/dom_fakes/dominio2.com.br

	&lt;Directory /var/www/dom_fakes/dominio2.com.br/&gt;
    		Options Indexes FollowSymLinks
    		AllowOverride All
	&lt;/Directory&gt;

	LogLevel warn

        ErrorLog ${APACHE_LOG_DIR}/dominio2.com.br_error.log
        CustomLog ${APACHE_LOG_DIR}/dominio2.com.br_access.log combined

&lt;/VirtualHost&gt;</pre>
<p>Criamos um arquivo em cada diretório para que possamos visualizar que estamos acessando o domínio corretamente.</p>
<pre class="remontti-code"># echo &gt; /var/www/dom_fakes/dominio1.com.br/d1.html
# echo &gt; /var/www/dom_fakes/dominio2.com.br/d2.html</pre>
<p>Agora restart o apache.</p>
<pre class="remontti-code"># /etc/init.d/apache2 restart</pre>
<p>Bingo!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184336.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184336-300x230.png" alt="" width="300" height="230" class="alignnone size-medium wp-image-1747" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184336-300x230.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184336.png 750w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184339.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184339-300x230.png" alt="" width="300" height="230" class="alignnone size-medium wp-image-1748" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184339-300x230.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_184339.png 750w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Vamos remover o /var/www/html/index.html e criar um link dos domínios fakes em /var/www/html/ assim quando você não quiser trocar o IP para resolver nomes, você pode acessar o http://IP/dominiofake&#8230;. </p>
<pre class="remontti-code"># rm /var/www/html/index.html 
# ln -s /var/www/dom_fakes/ /var/www/html/</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133530.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133530-300x203.png" alt="" width="300" height="203" class="alignnone size-medium wp-image-1800" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133530-300x203.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133530-768x520.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133530.png 912w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133757.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133757-300x203.png" alt="" width="300" height="203" class="alignnone size-medium wp-image-1804" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133757-300x203.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133757-768x520.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170221_133757.png 912w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Para enviarmos os arquivos podemos usar um cliente SFTP como o FileZilla, Winscp entre outros. Mas para logar no nosso cliente SFTP vamos ter que fazer alguns ajustes no usuário www-data (usuário do apache), primeiramente ele não vem com permissão para logar, vale lembrar que eu não recomendo faze isso em servidores convencionais, este é um ambiente de &#8220;local&#8221; para estudos&#8230; </p>
<pre class="remontti-code"># usermod -s /bin/bash www-data</pre>
<p>Sete uma senha para o usuário www-data com o comando. (Vamos usar ela para logar posteriormente no FileZilla)</p>
<pre class="remontti-code"># passwd www-data</pre>
<p>Altere as permissões do diretório/subdir em /var/www para seu usuário www-data</p>
<pre class="remontti-code"># chown  www-data. /var/www/ -R</pre>
<p>Agora basta você conectar-se para enviar os arquivos: (ex. FileZilla)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223559.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223559-300x242.png" alt="" width="300" height="242" class="alignnone size-medium wp-image-1757" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223559-300x242.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223559-768x619.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223559.png 789w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223836.png" data-rel="lightbox-gallery-HhE8QCyG" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223836-300x236.png" alt="" width="300" height="236" class="alignnone size-medium wp-image-1761" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223836-300x236.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223836-768x604.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223836-1024x805.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2017/02/Screenshot_20170219_223836.png 1164w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Se você deseja arriscar e elevar o nível e criar um servidor FTP você pode seguir o tutorial: <a href="https://blog.remontti.com.br/136" target="_blank" rel="noopener">Servidor FTP com usuários no banco de dados MySQL</a></p>
<p>Como está criando um ambiente para programar é interessante receber os erros do PHP, então edite as configurações do php.ini ele fica em <strong>/etc/php5/apache2/php.ini</strong><br />
Procure por <strong>display_errors</strong> e altere para <strong>On</strong> </p>
<pre class="remontti-code">display_errors = On</pre>
<p>O padrão para upload de arquivos no PHP é de 2M. Você este valor procurando por <strong>upload_max_filesize</strong> e colocando o valor que achar melhor.</p>
<pre class="remontti-code">upload_max_filesize = 20M</pre>
<p>A cada alteração feita no php.ini deve ser restartado o apache.</p>
<pre class="remontti-code"># /etc/init.d/apache2 restart</pre>
<p>Se precisar ver os logs você encontra em <strong>/var/log/apache2/</strong>. Se você reparar vai ver que la na configuração do domínio no apache temos o valor <em>[ErrorLog ${APACHE_LOG_DIR}/dominio2.com.br_error.log]</em>.<br />
Ex de comando para  visualizar:</p>
<pre class="remontti-code"># tail -f /var/log/apache2/dominio1.com.br_error.log </pre>
<p>Agora cada vez que deseja criar um domínio fake:<br />
<strong>1 &#8211;</strong> Crie um arquivo/etc/apache2/sites-enabled/dominiofake.com.conf  (sempre terminando em .conf)</p>
<pre class="remontti-code">Conforme modelos acima.</pre>
<p><strong>2 &#8211;</strong> Insira no /etc/bind/db.fakes.zone seu dominofake.com </p>
<pre class="remontti-code">*.dominiofake.com       IN CNAME .
dominiofake.com         IN CNAME .</pre>
<p><strong>3 &#8211; </strong> Restart o apcache e o Bind</p>
<pre class="remontti-code">/etc/init.d/bind9  restart
/etc/init.d/apache2 restart</pre>
<p>Você pode criar também um usuário MySQL para cada aplicação sua, para separar as bases de dados, segue um ex. onde criamos a base de dados dominio1 com o usuario dominio1 e SENHA:</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<p>Você pode usar o phpmyadmin também.</p>
<pre class="remontti-code">CREATE DATABASE dominio1;
GRANT ALL PRIVILEGES ON dominio1.* TO &#039;dominio1&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA-SENHA-DOM1&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p><strong>Pensando em facilitar sua vida, vou criar dois shell script. Uma para adicionar um domínio com apenas um comando, e outro para remover.</strong></p>
<pre class="remontti-code">vim /bin/adddominio</pre>
<pre class="remontti-code">#!/bin/bash

DOMINIO=$1

if [ -z $DOMINIO ];then
        echo
        echo &quot;Comando imcompleto!&quot;
        echo &quot; Use ex.: adddominio dominio.tld&quot;
        echo
else
        EXITE=`ls -lh /etc/apache2/sites-enabled/ |grep ${DOMINIO} |wc -l`
        echo
        if [ $EXITE = 1 ]; then
                        printf &quot;\033[1;31m ${DOMINIO} \033[0m já cadastrado! \n&quot;
        else

                mkdir /var/www/dom_fakes/${DOMINIO}

                cat &lt;&lt;&lt; &quot;
                &lt;VirtualHost *:80&gt;
                        ServerName ${DOMINIO}
                        ServerAlias www.${DOMINIO}

                        ServerAdmin seu@email.com.br
                        DocumentRoot /var/www/dom_fakes/${DOMINIO}
                        &lt;Directory /var/www/dom_fakes/${DOMINIO}/&gt;
                                Options Indexes FollowSymLinks
                                AllowOverride All
                        &lt;/Directory&gt;

                        LogLevel warn

                        ErrorLog ${APACHE_LOG_DIR}/${DOMINIO}_error.log
                        CustomLog ${APACHE_LOG_DIR}/${DOMINIO}_access.log combined
                &lt;/VirtualHost&gt;
                &quot; &gt; /etc/apache2/sites-enabled/${DOMINIO}.conf

                echo &quot;*.${DOMINIO}       IN CNAME .&quot; &gt;&gt; /etc/bind/db.fakes.zone
                echo &quot;${DOMINIO}         IN CNAME .&quot; &gt;&gt; /etc/bind/db.fakes.zone

                chown  www-data. /var/www/dom_fakes/${DOMINIO}

                /etc/init.d/bind9 restart
                /etc/init.d/apache2 restart

                echo

                printf &quot;\033[1;32m$DOMINIO \033[0m configurado com sucesso! \n&quot;
        fi
        echo
fi</pre>
<pre class="remontti-code">vim /bin/deldominio</pre>
<pre class="remontti-code">#!/bin/bash

DOMINIO=$1

if [ -z $DOMINIO ];then
        echo
        echo &quot;Comando imcompleto!&quot;
        echo &quot; Use ex.: deldominio dominio.tld&quot;
        echo
else
        EXITE=`ls -lh /etc/apache2/sites-enabled/ |grep ${DOMINIO} |wc -l`
        echo
        if [ $EXITE = 0 ]; then
                        printf &quot;\033[1;31m ${DOMINIO} \033[0m não encontrado! \n&quot;
        else
                rm -rf /var/www/dom_fakes/${DOMINIO}

                rm -f /etc/apache2/sites-enabled/${DOMINIO}.conf

                sed -i &quot;/${DOMINIO}/d&quot; /etc/bind/db.fakes.zone

                /etc/init.d/bind9 restart
                /etc/init.d/apache2 restart
                echo
                printf &quot;\033[1;32m$DOMINIO \033[0m removido com sucesso! \n&quot;
        fi
        echo
fi
</pre>
<p>Altere as permissões.</p>
<pre class="remontti-code"># chmod +x /bin/adddominio
# chmod +x /bin/deldominio</pre>
<p>Pronto agora bastar você usar o comando adddominio para adicionar todas as configurações automaticamente e deldominio para remove-las.<br />
Adicionando:</p>
<pre class="remontti-code">adddominio dominio3.com</pre>
<p>Removendo:</p>
<pre class="remontti-code">deldominio dominio3.com</pre>
<p>Parabéns! Você montou um servidor próprio! </p>
<p>Agora se você quer dar uma de preguiçoso vou deixar aqui o link para você importar a VM em seu virtual box.<br />
<strong><a href="https://mega.nz/#!FtYhCLLY!3Hyjmp2u0fNVXmLe0RUi18NEb8oJv08ZxrPgXeFMN_A" target="_blank" rel="noopener">Dev Web Server.ova</a> 765MB (64bits)</strong><br />
Abra seu Virtual Box vá em: Arquivo &#8211;>  Importar Amppliance e selecione o arquivo.</p>
<pre class="remontti-code">Usuários / Senhas
SSH:
webdev / remontti
root / remontti
www-data / remontti (SFTP)

MySQL
root / remontti
phpmyadmin / remontti</pre>
<p>Se gostou, ficou com dúvida deixe seu comentário.</p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/1730">Criando uma maquina virtual com linux (Debian) para Desenvolvedores Web (LDAMPS)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1730/feed</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor FreeRadius com integração MySQL + Autenticação PPPoE &#038; Hotspot VS Mikrotik + Ubiquiti EAP/PSK [Descontinuado]</title>
		<link>https://blog.remontti.com.br/1651</link>
					<comments>https://blog.remontti.com.br/1651#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 14 Feb 2017 01:28:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[counter]]></category>
		<category><![CDATA[eap]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[ippool]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[psk]]></category>
		<category><![CDATA[radius]]></category>
		<category><![CDATA[ubiquiti]]></category>
		<category><![CDATA[ubnt]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1651</guid>

					<description><![CDATA[<p>Versão mais atual deste tutorial: https://blog.remontti.com.br/4063 https://blog.remontti.com.br/4085 (Descontinuado) Neste tutorial vamos configurar o FreeRadius de forma simples em um servidor linux (Debina 8), armazenando nossos usuários e atributos de configurações em uma base de&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1651">Servidor FreeRadius com integração MySQL + Autenticação PPPoE &#038; Hotspot VS Mikrotik + Ubiquiti EAP/PSK [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><font color="red"><strong>Versão mais atual deste tutorial: </strong></font></h1>
<p><a href="https://blog.remontti.com.br/4063" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4063</a><br />
<a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a></p>
<hr>
<p>(Descontinuado)</p>
<hr>
<p align="justify">
Neste tutorial vamos configurar o <a href="https://pt.wikipedia.org/wiki/FreeRADIUS" target="_blank" rel="noopener noreferrer">FreeRadius </a>de forma simples em um servidor linux (Debina 8), armazenando nossos usuários e atributos de configurações em uma base de dados MySQL, qual será utilizada para autenticações PPPoE ou Hotspot, no RouterOS (<a href="http://wiki.mikrotik.com/wiki/Main_Page" target="_blank" rel="noopener noreferrer">Mikrotik</a>). Vamos tratar ainda do módulos IPPOOL para armazenar nossa pool de IPs no banco de dados e o módulo COUNTER muito usado em configurações de Hotspot para controle de tempo da conexão. E por fim um extra de como configurar seu Access Point (AP)/ Station (Clientes/<a href="https://pt.wikipedia.org/wiki/Customer_Premises_Equipment" target="_blank" rel="noopener noreferrer">CPE</a>) para fazer autenticação Wireless (PSK / EAP) em seus equipamentos <a href="https://www.ubnt.com/" target="_blank" rel="noopener noreferrer">Ubiquiti</a>/Mikrotik entre outros. </p>
<p>Resumindo é um dos cenário mais encontrado em provedores de internet. Se você gostou do tutorial ou tem dúvidas deixe seu comentário. Se precisar de alguma consultoria ou trocar uma ideia pode me chamar lá no <a href="https://telegram.org/" target="_blank" rel="noopener noreferrer">Telegram</a> <a href="https://telegram.me/Remontti" target="_blank" rel="noopener noreferrer">@remontti</a> <em>(Não garanto que irei responder rápido, mas sempre tiver um tempinho&#8230;)</em>
</p>
<p><strong>REQUISITOS</strong><br />
1 – Debian 8 Jessie recomendo uma instalação limpa do Debian (<a href="https://blog.remontti.com.br/1152" target="_blank" rel="noopener noreferrer">Debian 8 Jessie / Instalação Limpa</a>)<br />
2 – Serviço Web Rodando (<a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener noreferrer">Passo-a-passo como criar um servidor web Apache2, PHP5, MySQL, PHPMyAdmin “LAMP” no Debian 8</a>)<br />
3 – Servidor Atualizado: </p>
<pre class="remontti-code"># apt update &amp;&amp; apt upgrade</pre>
<p><strong>INSTALAÇÃO</strong></p>
<pre class="remontti-code"># apt install freeradius freeradius-mysql freeradius-utils</pre>
<p><strong>Integração com MySQL</strong></p>
<p>Após instalação vamos criar nossa base de dados chamada de &#8220;radius&#8221;, e após criar nosso usuário que também se chamara &#8220;radius&#8221; para ter acesso a mesma.</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<p>informe a senha do seus usuário root do MySQL.</p>
<pre class="remontti-code">CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO &#039;radius&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA-SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Importamos as tabelas para nosso banco de dados, a cado comando será solicitado senha so usuário mysql radius (SUA-SENHA).</p>
<pre class="remontti-code"># mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/schema.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/nas.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/ippool.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/cui.sql
# mysql -u radius -p radius &lt; /etc/freeradius/sql/mysql/wimax.sql</pre>
<p>Entramos no diretório onde o FreeRadius tem seus arquivos de configuração.</p>
<pre class="remontti-code"># cd /etc/freeradius</pre>
<p>Antes de editar o radiusd.conf crie um backup do mesmo, farei o mesmo em todos os arquivos que irei editar, assim temos um backup caso cometer algum erro.</p>
<pre class="remontti-code"># cp radiusd.conf radiusd.conf.orig
# vim radiusd.conf</pre>
<p><strong>Descomente</strong></p>
<pre class="remontti-code">
[...]
  &lt;font color=&quot;blue&quot;&gt;ipv6addr = ::&lt;/font&gt;
[...]
  &lt;font color=&quot;blue&quot;&gt;$INCLUDE sql.conf&lt;/font&gt;
[...]
  &lt;font color=&quot;blue&quot;&gt;$INCLUDE sqlippool.conf&lt;/font&gt;
[...]</pre>
<p>Se deseja ter logs mais detalhados altere os valores abaixo para yes.</p>
<pre class="remontti-code">[...]
log {
    [...]
        stripped_names = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
        auth = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
        auth_badpass = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
        auth_goodpass = &lt;font color=&quot;blue&quot;&gt;yes&lt;/font&gt;
    [...]
}
[...]
</pre>
<pre class="remontti-code"> # cat radiusd.conf |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>radius.conf </strong> ficará assim:</p>
<pre class="remontti-code">prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct
name = freeradius
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}
libdir = /usr/lib/freeradius
pidfile = ${run_dir}/${name}.pid
user = freerad
group = freerad
max_request_time = 30
cleanup_delay = 5
max_requests = 1024
listen {
        type = auth
        ipaddr = *
        port = 0
}
listen {
        ipaddr = *
        port = 0
        type = acct
}
hostname_lookups = no
allow_core_dumps = no
regular_expressions     = yes
extended_expressions    = yes
log {
        destination = files
        file = ${logdir}/radius.log
        syslog_facility = daemon
        stripped_names = yes
        auth = yes
        auth_badpass = yes
        auth_goodpass = yes
}
checkrad = ${sbindir}/checkrad
security {
        max_attributes = 200
        reject_delay = 1
        status_server = yes
        allow_vulnerable_openssl = no
}
proxy_requests  = yes
$INCLUDE proxy.conf
$INCLUDE clients.conf
thread pool {
        start_servers = 5
        max_servers = 32
        min_spare_servers = 3
        max_spare_servers = 10
        max_requests_per_server = 0
}
modules {
        $INCLUDE ${confdir}/modules/
        $INCLUDE eap.conf
        $INCLUDE sql.conf
        $INCLUDE sqlippool.conf
}
instantiate {
        exec
        expr
        expiration
        logintime
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/</pre>
<pre class="remontti-code"># cp sql.conf sql.conf.orig
# vim sql.conf</pre>
<p><strong>Alterar</strong><br />
<font color="blue"><em>password =</em> <strong>"SUA-SENHA"</strong></font></p>
<p><strong>Descomente</strong><br />
<font color="blue"><em>readclients = yes</em></font></p>
<pre class="remontti-code"># cat sql.conf |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>sql.conf</strong> ficará assim:</p>
<pre class="remontti-code">
sql {
        database = &quot;mysql&quot;
        driver = &quot;rlm_sql_${database}&quot;
        server = &quot;localhost&quot;
        login = &quot;radius&quot;
        password = &quot;MINHA-SENHA&quot;
        radius_db = &quot;radius&quot;
        acct_table1 = &quot;radacct&quot;
        acct_table2 = &quot;radacct&quot;
        postauth_table = &quot;radpostauth&quot;
        authcheck_table = &quot;radcheck&quot;
        authreply_table = &quot;radreply&quot;
        groupcheck_table = &quot;radgroupcheck&quot;
        groupreply_table = &quot;radgroupreply&quot;
        usergroup_table = &quot;radusergroup&quot;
        deletestalesessions = yes
        sqltrace = no
        sqltracefile = ${logdir}/sqltrace.sql
        num_sql_socks = ${thread[pool].max_servers}
        connect_failure_retry_delay = 60
        lifetime = 0
        max_queries = 0
        readclients = yes
        nas_table = &quot;nas&quot;
        $INCLUDE sql/${database}/dialup.conf
}</pre>
<pre class="remontti-code"># cd /etc/freeradius/sites-available
# cp inner-tunnel  inner-tunnel.orig
# vim inner-tunnel</pre>
<p><strong>Descomente os sql encontrado em authorize/session/post-auth </strong></p>
<pre class="remontti-code">&lt;em&gt;authorize {
        [...]
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
        [...]
}
[...]
session {
         &lt;font color=&quot;red&quot;&gt;#radutmp&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}
post-auth {
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}&lt;/em&gt;</pre>
<p><strong>Comente</strong></p>
<pre class="remontti-code">&lt;em&gt;&lt;font color=&quot;red&quot;&gt;#       Post-Auth-Type REJECT {
#               # log failed authentications in SQL, too.
##              sql
#               attr_filter.access_reject
#       }&lt;/em&gt;&lt;/font&gt;</pre>
<pre class="remontti-code"># cat /etc/freeradius/sites-available/inner-tunnel  |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>inner-tunne</strong> ficará assim:</p>
<pre class="remontti-code">
server inner-tunnel {
listen {
       ipaddr = 127.0.0.1
       port = 18120
       type = auth
}
authorize {
        chap
        mschap
        suffix
        update control {
               Proxy-To-Realm := LOCAL
        }
        eap {
                ok = return
        }
        files
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        unix
        eap
}
session {
        sql
}
post-auth {
        sql
}
pre-proxy {
}
post-proxy {
        eap
}
</pre>
<pre class="remontti-code"># cp default default.orig
# vim default</pre>
<p><strong>Comente / Descomente</strong></p>
<pre class="remontti-code">&lt;em&gt;authorize {
	&lt;font color=&quot;red&quot;&gt;#digest
	#suffix
	#files&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}</pre>
<p><strong>Comente:</strong></p>
<pre class="remontti-code">authenticate {
        &lt;font color=&quot;red&quot;&gt;#digest
        #unix&lt;/font&gt;
}
preacct {
        &lt;font color=&quot;red&quot;&gt;#suffix
        #files&lt;/font&gt;
}&lt;/em&gt;</pre>
<p><strong>Comente / Descomente / inclua abaixo de sql sqlippool</strong></p>
<pre class="remontti-code">&lt;em&gt;accounting {
        &lt;font color=&quot;red&quot;&gt;#detail&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql 
        &lt;b&gt;sqlippool&lt;/b&gt;&lt;/font&gt;
        &lt;font color=&quot;red&quot;&gt;#exec
        #attr_filter.accounting_response&lt;/font&gt;
}
session {
	&lt;font color=&quot;red&quot;&gt;#radutmp&lt;/font&gt;
        &lt;font color=&quot;blue&quot;&gt;sql&lt;/font&gt;
}

post-auth {
        &lt;font color=&quot;blue&quot;&gt;sql 
        sqlippool&lt;/font&gt;
&lt;font color=&quot;red&quot;&gt;
        #exec
#       Post-Auth-Type REJECT {
#               # log failed authentications in SQL, too.
##              sql
#               attr_filter.access_reject
#       }&lt;/font&gt;
}&lt;/em&gt;</pre>
<pre class="remontti-code"># cat /etc/freeradius/sites-available/default  |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>default </strong>ficará assim:</p>
<pre class="remontti-code">
authorize {
        preprocess
        chap
        mschap
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        eap
}
preacct {
        preprocess
        acct_unique
}
accounting {
        sql
        sqlippool
}
session {
        sql
}
post-auth {
        sql
        sqlippool
}
pre-proxy {
}
post-proxy {
        eap
}</pre>
<p>Habilite o control-socket</p>
<pre class="remontti-code"># cd /etc/freeradius/sites-enabled
# ln -s ../sites-available/control-socket</pre>
<p><strong>SQLIPOOL</strong><br />
https://wiki.freeradius.org/modules/Rlm_sqlippool</p>
<p>Como dito este é um cenário bem tipico de provedores, então vou usar o modulo sqlipool para deixar meus blocos de IPs diretamente no banco de dados, assim temos um aproveitamento de 100% dos IPs, ainda mais com o esgotamenteo de IPv4 no mundo.<br />
IMPORTANTE: Esse formato pode gerar problemas, um deles é a duplicidade de IPs em sua rede, isso acontece se você tiver varios Servidores PPPoE/Hotspot (se bem que em hotspot eu não usaria), espalhados na sua rede, caso haja alguma interrupção entre seu PPPoE Server e o Freeradius, o Freeradius poderá liberar o IP da da tabela radippool, e assim algum outro PPPoE Sever acabar alocando o mesmo. Então tome cuidado. Eu particularmente usei um script que em caso o Servidor PPPoE perder comunicação com o Servidor Freeradius ele desconecta todos os usuários conectados, assim quando voltar a comunicação seja feito uma nova conexão aos clientes. </p>
<pre class="remontti-code"># vim /etc/freeradius/sqlippool.conf</pre>
<p>Altere<br />
<font color="red">$INCLUDE sql/postgresql/ippool.conf</font><br />
Por<br />
<font color="blue">$INCLUDE sql/mysql/ippool.conf</font></p>
<p>Este é um valor que você pode trabalhar caso tenha algum problema (eu uso o padrão)<br />
<font color="blue">## IP lease duration. (Leases expire even if Acct Stop packet is lost)<br />
lease-duration = 3600</font></p>
<p>Para evitar duplicidade uso o MAC com key (Pois as NAS-port pode se repetir quando se tem mais de um PPPoE Serv)<br />
Comente:<br />
<font color="red">#pool-key = "%{NAS-Port}"</font><br />
Descomente:<br />
<font color="blue">pool-key = "%{Calling-Station-Id}"</font></p>
<p>Como é bem possível que seu servidor não autentique apenas usuários pppoe ou hotspot, para não termos cada vez que por exemplo um autenticação wireless psk/eap aparece o log que não foi definido uma pool, eu comentei:<br />
<font color="red">#sqlippool_log_nopool = "No Pool-Name defined \<br />
# (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"</font></p>
<pre class="remontti-code"># cat sqlippool.conf |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<p><strong>sqlippool.conf</strong> ficará assim:</p>
<pre class="remontti-code">sqlippool {
 sql-instance-name = &quot;sql&quot;
 ippool_table = &quot;radippool&quot;
 lease-duration = 3600
 pool-key = &quot;%{Calling-Station-Id}&quot;
$INCLUDE sql/mysql/ippool.conf
 sqlippool_log_exists = &quot;Existing IP: %{reply:Framed-IP-Address} \
  (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
 sqlippool_log_success = &quot;Allocated IP: %{reply:Framed-IP-Address} from %{control:Pool-Name} \
  (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
 sqlippool_log_clear = &quot;Released IP %{Framed-IP-Address}\
 (did %{Called-Station-Id} cli %{Calling-Station-Id} user %{User-Name})&quot;
 sqlippool_log_failed = &quot;IP Allocation FAILED from %{control:Pool-Name} \
  (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
 #sqlippool_log_nopool = &quot;No Pool-Name defined \
 # (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})&quot;
}</pre>
<p>Umas das alterações que acho interessante alterar no ippool, é para que a cada nova alocação de IP ela seja randômica, isso pode solucionar alguns problemas como o daqueles clientes que jogam online, que fazem download, que estão sendo atacados, que ao reiniciar seu equipamento o mesmo irá receber um novo IP. Para isso vamos  editar o /etc/freeradius/sql/mysql/ippool.conf</p>
<pre class="remontti-code"># vim /etc/freeradius/sql/mysql/ippool.conf</pre>
<p>Comente</p>
<pre class="remontti-code">
### The ORDER BY clause of this query tries to allocate the same IP-address
### which user had last session...
&lt;font color=&quot;red&quot;&gt;#allocate-find = &quot;SELECT framedipaddress FROM ${ippool_table} \
# WHERE pool_name = &#039;%{control:Pool-Name}&#039; AND (expiry_time &lt; NOW() OR expiry_time IS NULL) \
# ORDER BY (username &lt;&gt; &#039;%{User-Name}&#039;), \
# (callingstationid &lt;&gt; &#039;%{Calling-Station-Id}&#039;), \
# expiry_time \
# LIMIT 1 \
# FOR UPDATE&quot;&lt;/font&gt;</pre>
<p>Descomente</p>
<pre class="remontti-code">### If you prefer to allocate a random IP address every time, i
### use this query instead
&lt;font color=&quot;blue&quot;&gt;allocate-find = &quot;SELECT framedipaddress FROM ${ippool_table} \
 WHERE pool_name = &#039;%{control:Pool-Name}&#039; \
 AND expiry_time IS NULL \
 ORDER BY RAND() \
 LIMIT 1 \
 FOR UPDATE&quot;&lt;/font&gt;</pre>
<p><strong>COUNTER</strong></p>
<p>Modulo counter é legal para criar alguns cenários de hotspot, ode você deseja limitar o tempo de conexão. Exemplo limitar que um usuário tenha acesso apenas durante 2h por dia/mês/único... E com um pouco de trabalho e personalização no /etc/freeradius/sql/mysql/counter.conf você consegue personalizar para contabilizar até mesmo tráfego de dados. </p>
<p>Caso você deseje habilitar-lo faça o seguinte:</p>
<pre class="remontti-code"># vim radius.conf</pre>
<p><strong>Descomenta </strong></p>
<pre class="remontti-code">modules {
[...]
       &lt;font color=&quot;blue&quot;&gt;$INCLUDE sql/mysql/counter.conf&lt;/font&gt;
[...]
}</pre>
<p><strong>Adicione</strong></p>
<pre class="remontti-code">instantiate {
[...]&lt;font color=&quot;blue&quot;&gt;
        # Habilite o mesmo no inner-tunnel
        # Modulos em  /etc/freeradius/sql/mysql/counter.conf
        dailycounter
        monthlycounter
        noresetcounter&lt;/font&gt;
[...]
}</pre>
<pre class="remontti-code"># vim /etc/freeradius/sites-available/inner-tunnel</pre>
<p><strong>Adicione abaixo de sql</strong></p>
<pre class="remontti-code">
authorize {
[...]
        sql
&lt;font color=&quot;blue&quot;&gt;
        #Mod Counter
        noresetcounter
        dailycounter
        monthlycounter&lt;/font&gt;
[...]
}</pre>
<pre class="remontti-code"># vim /etc/freeradius/sites-available/default</pre>
<p><strong>Adicione abaixo de sql</strong></p>
<pre class="remontti-code">authorize {
[...]
        sql
&lt;font color=&quot;blue&quot;&gt;
        noresetcounter
        dailycounter
        monthlycounter&lt;/font&gt;
[...]
}</pre>
<p>Corrigindo um bug. Acerte o nome da tabela (AcctSessionTime ==> acctsessiontime)</p>
<pre class="remontti-code"># vim /etc/freeradius/sql/mysql/counter.conf</pre>
<pre class="remontti-code">&lt;strong&gt;Altere&lt;/strong&gt;
&lt;font color=&quot;red&quot;&gt;query = &quot;SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName=&#039;%{%k}&#039;&quot;&lt;/font&gt;
&lt;strong&gt;Para&lt;/strong&gt;
&lt;font color=&quot;blue&quot;&gt;query = &quot;SELECT IFNULL(SUM(&lt;strong&gt;acctsessiontime&lt;/strong&gt;),0) FROM radacct WHERE username=&#039;%{%k}&#039;&quot;&lt;/font&gt;</pre>
<p><strong>ALIMENTANDO NOSSA BASE DE DADOS </strong></p>
<p>Inicialmente eu particularmente não gosto da ideia da radusergroup não ter uma ID então para alterar isso faça. (Se desejar)</p>
<pre class="remontti-code"># mysql -u radius -p</pre>
<p>Entre com SUA-SENHA do radius no MySQL.</p>
<pre class="remontti-code">
USE radius;
ALTER TABLE `radusergroup` ADD `id` INT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;
ALTER TABLE `radusergroup` ADD UNIQUE(`id`);
</pre>
<p>Agora vamos inserir alguns valores na nossa base de dados com alguns exemplos que explicarei no decorrer.<br />
Se você preferir pode usar os comando mysql direto no PHPMyAdmin.</p>
<p>Primeiramente precisamos de um cenário de rede para montar nossas configurações.<br />
<strong>FreeRadius:</strong> 250.250.0.10<br />
<strong>RB/RouterOS HotSpot:</strong> 250.250.1.2<br />
<strong>RB/RouterOS PPPoE:</strong> 250.250.1.3 / 10.10.0.1<br />
<strong>UBNT AP:</strong> 10.10.0.2</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto.png" alt="" width="884" height="575" class="alignnone size-full wp-image-1713" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto.png 884w, https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/remontti-freeradius-tuto-768x500.png 768w" sizes="auto, (max-width: 884px) 100vw, 884px" /></p>
<p>Note que nosso UBNT não está na mesma classe de IPs do FreeRadius, então possivelmente sua rede deve ter configurado algum tipo roteamento como OSPF / iBGP, que faça com que seu AP vs FreeRadius consiga comunicação. Caso exista um NAT para seu AP explicarei o que munda em seguida.</p>
<p><strong>TABELAS</strong></p>
<p><strong>• nas</strong><br />
A tabela NAS contém dados sobre (radius clientes) e é uma "substituição" para o arquivo clients.conf. É muito mais fácil manter os clientes no banco de dados do que dentro do arquivo de configuração. Ou seja, sua RB/RouterOS e seu UBNT AP são clientes, são eles que irão fazer consultas em nosso servidor. Para devemos autorizá-los inserindo na tabela nas:</p>
<pre class="remontti-code">
INSERT INTO `nas` (`nasname`, `shortname`, `type`, `ports`, `secret`, `server`, `community`, `description`) VALUES
(&#039;250.250.1.2&#039;, &#039;RB-RouterOS-PPPoE&#039;, &#039;other&#039;, NULL, &#039;SEU-SECRET&#039;, NULL, NULL, &#039;RouterOS PPPoE&#039;),
(&#039;250.250.1.3&#039;, &#039;RB-RouterOS-HotSpot&#039;, &#039;other&#039;, NULL, &#039;SEU-SECRET&#039;, NULL, NULL, &#039;RouterOS HotSpot&#039;),
(&#039;10.10.0.2&#039;, &#039;UBNT-AP&#039;, &#039;other&#039;, NULL, &#039;SEU-SECRET&#039;, NULL, NULL, &#039;POP1&#039;);
</pre>
<p>Depois de adicionar, editar ou apagar dados da tabela nas é necessário reiniciar o serviço FreeRadius para atualizar os dados.</p>
<pre class="remontti-code"># /etc/init.d/freeradius restart</pre>
<p><strong>• radcheck </strong>- Armazena os registo de cada utilizador com os respectivos atributos associados;<br />
<strong>• radgroupcheck</strong> – Associa atributos a um determinado grupo de utilizadores;<br />
<strong>• radgroupreply</strong> – Armazena os atributos que são devolvidos a todos os utilizadores de um grupo;<br />
<strong>• radusergroup</strong> - Associa um utilizador a um grupo de utilizadores;<br />
<strong>• radreply</strong> – Contém lista de atributos enviados ao utilizador;<br />
<strong>• radpostauth</strong> – Armazena informações acerca das respostas enviadas para os utilizadores;<br />
<strong>• radacct</strong> - Se encontra toda a informação de contabilização (extrato);</p>
<p>Vamos criar algumas configurações padrões, "nossos planos". Lembre-se que os atributos especificados não são necessariamente os mesmos, dependendo do seu cenário, uma boa alternativa é você rodar o freeradius em modo debug (# freeradius -X), e visualizar quais os valores estão vindo, assim você pode observar o que cada autenticação esta lhe trazendo e assim configurando seu grupo de forma segura. Fique atento pois se você cadastrar apenas um atributo poderá estar deixando grandes falhas de segurança.</p>
<pre class="remontti-code">
INSERT INTO `radgroupcheck` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_1&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;), /* Definimos o nome da pool de IPs*/
(&#039;PLANO_1&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;), /* Permitimos apenas uma autenticação simultânea */
(&#039;PLANO_1&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;), /* Apenas protocolo PPP então isso não server para Hotspot */
(&#039;PLANO_1&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;), /* Tipo de serviço  */
(&#039;PLANO_2&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;),
(&#039;PLANO_2&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;PLANO_2&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;PLANO_2&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;),
(&#039;AVISO&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;avisoPool&#039;),
(&#039;AVISO&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;AVISO&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;AVISO&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;),
(&#039;BLOQUEIO&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;bloqPool&#039;),
(&#039;BLOQUEIO&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;BLOQUEIO&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;BLOQUEIO&#039;, &#039;Service-Type&#039;, &#039;:=&#039;, &#039;Framed-User&#039;),
(&#039;PLANO_HOT&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;PLANO_HOT(naonecessariamente)&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;poolHot&#039;),
(&#039;PLANO_HOT&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;30MIN-DIA&#039;, &#039;Max-Daily-Session&#039;, &#039;:=&#039;, &#039;1800&#039;), /* Modulo counter */
(&#039;30MIN-DIA&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;30MIN-DIA&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;2h-UNICO&#039;, &#039;Max-All-Session&#039;, &#039;:=&#039;, &#039;7200&#039;),
(&#039;2h-UNICO&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;2h-UNICO&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;7.5h-MES&#039;, &#039;Max-Monthly-Session&#039;, &#039;:=&#039;, &#039;27000&#039;),
(&#039;7.5h-MES&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;),
(&#039;7.5h-MES&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;);

INSERT INTO `radgroupreply` (`groupname`, `attribute`, `op`, `value`) VALUES
(&#039;PLANO_1&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;), /* Intervalo em seg que a radcct será atualizada */
(&#039;PLANO_1&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024k/2048k&#039;), /* Velocidade da queues */
(&#039;PLANO_2&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;512k/1024k 1024k/2048k 512k/1024k 600/600&#039;), /* Velocidade com Burst */
(&#039;PLANO_2&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;AVISO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;AVISO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;999K/999K&#039;),
(&#039;BLOQUEIO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;999K/999K&#039;),
(&#039;BLOQUEIO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;PLANO_HOT&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;PLANO_HOT&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;),
(&#039;30MIN-DIA&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;30MIN-DIA&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;),
(&#039;2h-UNICO&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;2h-UNICO&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;),
(&#039;7.5h-MES&#039;, &#039;Acct-Interim-Interval&#039;, &#039;:=&#039;, &#039;300&#039;),
(&#039;7.5h-MES&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;1024K/1024K&#039;);
</pre>
<p>Criamos alguns planos para atribuir aos nossos usuários PPPoE e Hotspot. Vamos aos nossos usuários:</p>
<pre class="remontti-code">
INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
/*Autenticacao de um cliente CPE UBNT WIFI WPA2 EAP */
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;senha&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Calling-Station-Id&#039;, &#039;==&#039;, &#039;00:11:22:33:44:55&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Framed-User&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;),
(&#039;cliente5.8@dominio.com.br&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;001122334455&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;minhasenha&#039;),
(&#039;001122334455&#039;, &#039;Auth-Type&#039;, &#039;==&#039;, &#039;EAP&#039;),

/*Autenticacao de um cliente CPE UBNT 2.4 vs WIFI WPA/WPA2 PSK RouterOS */
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Cleartext-Password&#039;, &#039;:=&#039;, &#039;senha&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Calling-Station-Id&#039;, &#039;==&#039;, &#039;55:44:33:22:11:00&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Service-Type&#039;, &#039;==&#039;, &#039;Framed-User&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Simultaneous-Use&#039;, &#039;:=&#039;, &#039;1&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Pool-Name&#039;, &#039;:=&#039;, &#039;minhapool&#039;),
(&#039;cliente2.4@dominio.com.br&#039;, &#039;Framed-Protocol&#039;, &#039;:=&#039;, &#039;PPP&#039;),
(&#039;55:44:33:22:11:00&#039;, &#039;Auth-Type&#039;, &#039;:=&#039;, &#039;Accept&#039;),
(&#039;55:44:33:22:11:00&#039;, &#039;NAS-Port-Type&#039;, &#039;==&#039;, &#039;Wireless-802.11&#039;);

INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;55:44:33:22:11:00&#039;, &#039;Mikrotik-Wireless-PSK&#039;, &#039;:=&#039;, &#039;senha-psk&#039;);
/* A senha PSK fica na radreply */
</pre>
<p>E por fim vamos alimentar nossa tabela de ippool, como nossos IPs que serão entregue. No cenário fiz 3 pool, <strong>minhapool </strong>ounde vão ficar os IPs válidos, <strong>avisoPool </strong>que receberão um bloco de ips diferenciado, por ex. para direcionar os clientes para algum tipo de aviso. E <strong>bloqPool </strong>para clientes que ficarão bloqueado. </p>
<pre class="remontti-code">
INSERT INTO `radippool` (`pool_name`, `framedipaddress`, `nasipaddress`, `calledstationid`, 
`callingstationid`, `expiry_time`, `username`, `pool_key`) VALUES
(&#039;minhapool&#039;, &#039;100.64.0.1&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;minhapool&#039;, &#039;100.64.0.2&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;minhapool&#039;, &#039;100.64.0.3&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;minhapool&#039;, &#039;100.64.0.4&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.1&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.2&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.3&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;bloqPool&#039;, &#039;172.16.0.4&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.1&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.2&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.3&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;),
(&#039;avisoPool&#039;, &#039;172.16.1.4&#039;, &#039;&#039;, &#039;&#039;, &#039;&#039;, NULL, &#039;&#039;, &#039;0&#039;);
</pre>
<p>Ainda pode fixar algumas configurações especificadamente ao usuário, vamos a alguns exemplos.</p>
<pre class="remontti-code">
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`) VALUES
(&#039;usuario@dominio.com.br&#039;, &#039;Mikrotik-Rate-Limit&#039;, &#039;:=&#039;, &#039;2000k/4000k&#039;), /* Setando velocidade */
(&#039;usuario@dominio.com.br&#039;, &#039;Framed-IP-Address&#039;, &#039;:=&#039;, &#039;250.250.0.150&#039;), /* Setando IP Fixo */
(&#039;usuario@dominio.com.br&#039;, &#039;Framed-IPv6-Prefix&#039;, &#039;:=&#039;, &#039;2001:db8:A:B::/64&#039;), /* IPv6 &quot;Wan&quot; */
(&#039;usuario@dominio.com.br&#039;, &#039;Mikrotik-Delegated-IPv6-Pool&#039;, &#039;:=&#039;, &#039;2001:db8:C::/56&#039;); /* IPv6 &quot;Lan&quot; */
</pre>
<p><strong>Configuração Simples do PPPoE Server no RouterOS (Mikrotik)</strong></p>
<pre class="remontti-code">
/interface pppoe-server server
add authentication=pap,chap disabled=no interface=ether1 keepalive-timeout=30 max-mru=1480 \
 max-mtu=1480 one-session-per-host=yes service-name=PPPoE-Server

/ppp profile
set *0 change-tcp-mss=default dns-server=250.250.0.2,250.250.0.3 local-address=250.250.0.10 

/ppp aaa
set interim-update=5m use-radius=yes

/radius
add address=250.250.250.2 secret=&quot;SEU-SECRET&quot; service=ppp,hotspot,wireless

####################
### Wireless PSK ###
####################
/interface wireless security-profiles
add authentication-types=wpa2-psk management-protection=allowed mode=dynamic-keys name=WPA2 \ 
 radius-mac-authentication=yes wpa2-pre-shared-key=3n20oXOPjohONpEK

/interface wireless
set [ find default-name=wlan1 ] security-profile=WPA2
</pre>
<p><strong>Configuração UBNT AP</strong> (10.10.0.2)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt.png" data-rel="lightbox-gallery-L7qqgLKa" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt-300x266.png" alt="" width="300" height="266" class="alignnone size-medium wp-image-1715" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt-300x266.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt-768x680.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/ap-ubnt.png 811w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Configuração UBNT Cliente EAP</strong> 5.8Mhz<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2.png" data-rel="lightbox-gallery-L7qqgLKa" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2-300x248.png" alt="" width="300" height="248" class="alignnone size-medium wp-image-1716" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2-300x248.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2-768x634.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt2.png 808w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt.png" data-rel="lightbox-gallery-L7qqgLKa" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt-300x294.png" alt="" width="300" height="294" class="alignnone size-medium wp-image-1717" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt-300x294.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt-768x752.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt.png 804w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Configuração UBNT Cliente PSK</strong> 2.4Mhz Conectando no Cartão do MK<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3.png" data-rel="lightbox-gallery-L7qqgLKa" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3-300x218.png" alt="" width="300" height="218" class="alignnone size-medium wp-image-1720" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3-300x218.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3-768x558.png 768w, https://blog.remontti.com.br/wp-content/uploads/2017/02/cliente-ubnt3.png 810w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Fontes:</strong><br />
<em>https://wiki.freeradius.org/guide/SQL-HOWTO<br />
https://wiki.freeradius.org/modules/Rlm_sql<br />
https://wiki.freeradius.org/modules/Rlm_sqlippool<br />
https://wiki.freeradius.org/modules/Rlm_sqlcounter</em><br />
https://www.draw.io/ (Gráficos)</p>
<p>O post <a href="https://blog.remontti.com.br/1651">Servidor FreeRadius com integração MySQL + Autenticação PPPoE &#038; Hotspot VS Mikrotik + Ubiquiti EAP/PSK [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1651/feed</wfw:commentRss>
			<slash:comments>30</slash:comments>
		
		
			</item>
		<item>
		<title>Montando um servidor de E-mail Completo com Postfix+Dovecot+PostfixAdmin+SpamAssassin+SPF+RoundCubeMail+IPv4/IPv6 (Desatualizado)</title>
		<link>https://blog.remontti.com.br/1485</link>
					<comments>https://blog.remontti.com.br/1485#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 30 Jan 2017 20:35:21 +0000</pubDate>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[debian jessie]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[PostfixAdmin]]></category>
		<category><![CDATA[Quota]]></category>
		<category><![CDATA[Roudcube Webmail]]></category>
		<category><![CDATA[RoundCubeMail]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[SPF]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1485</guid>

					<description><![CDATA[<p>Um novo tutorial mais atualizado em: https://blog.remontti.com.br/3744 Neste tutorial vou ensinar como configurar um servidor de e-mail com domínios virtuais com integração dos usuários/domínios no banco de dados MySQL. &#8211; Postfix para nosso MTA.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1485">Montando um servidor de E-mail Completo com Postfix+Dovecot+PostfixAdmin+SpamAssassin+SPF+RoundCubeMail+IPv4/IPv6 (Desatualizado)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-1024x486.jpg" alt="post-emails" width="1024" height="486" class="alignnone size-large wp-image-1487" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-1024x486.jpg 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/post-emails.jpg 1054w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h1><a href="https://blog.remontti.com.br/3744"><font color=red>Um novo tutorial mais atualizado em: https://blog.remontti.com.br/3744</font></a></h1>
<p>Neste tutorial vou ensinar como configurar um servidor de e-mail com domínios virtuais com integração dos usuários/domínios no banco de dados MySQL.<br />
&#8211; Postfix para nosso MTA.<br />
&#8211; Dovecot como servidor Imap e Pop.<br />
&#8211; Postfixadmin para o gerenciamento de contas de Emails e domínios<br />
&#8211; Spamassassin, Clamav e o Amavis para controle de Anti-Spam e Anti-Vírus<br />
&#8211; RoundCubeMail para Webmail</p>
<p>OBS: Não vou entrar em muitos detalhes, pois o tuto já ficou bem longo. E desculpe pelos erros de portuga, mas vou fazendo na corrida.</p>
<h4>CENÁRIOS</h4>
<p>IP: 250.250.0.6 / 2000:fff:250:250:0::6<br />
Reverso sobre os IPS 250.250.0.6 / 2000:fff:250:250:0::6: mail.dominiorev.com.br<br />
Domínios virtuais: remontti.com.br / dominiorev.com.br / você pode ter diversos</p>
<h4>REQUISITOS</h4>
<p>1 &#8211; Ter configurado <a href="https://blog.remontti.com.br/1397" target="_blank" rel="noopener noreferrer">DNS Autoritativo e Reverso sobre seus IPS</a>. (Não necessariamente no mesmo servidor)<br />
2 &#8211; Debian 8 Jessie recomendo uma <a href="https://blog.remontti.com.br/1152" target="_blank" rel="noopener noreferrer">instalação limpa do Debian</a><br />
3 &#8211; <a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener noreferrer">Serviço Web Rodando</a><br />
4 &#8211; Servidor Atualizado: # apt update &#038;&#038; apt upgrade</p>
<h4>AJUSTES</h4>
<p>Ajuste o nome do servidor alterando alguns parâmetros do sistema.</p>
<pre class="remontti-code"># vim /etc/hosts</pre>
<pre class="remontti-code">
127.0.0.1       localhost
250.250.250.6     mail.dominiorev.com.br    mail
{...}
</pre>
<pre class="remontti-code"># vim /etc/hostname</pre>
<pre class="remontti-code">
mail
</pre>
<p>Configure sua interface de rede. Vou deixar um modelo, onde o bloco de IPv4 é um /28 (255.255.255.240) e um /64 para IPv6. Estou usando IPs com base no cenário apresentado no tutorial [<a href="https://blog.remontti.com.br/1397" target="_blank" rel="noopener noreferrer">Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6)</a>]</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<pre class="remontti-code">
auto eth0
iface eth0 inet static
        address 250.250.0.6
        netmask 255.255.255.240
        network 250.250.0.0
        broadcast 250.250.0.15
        gateway 250.250.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 250.250.0.2
        dns-search ns1.dominiorev.com.br

#v6
iface eth0 inet6 static
        pre-up modprobe ipv6
        address 2000:fff:250:250:0::6
        netmask 64
        gateway 2000:fff:250:250:0::1
</pre>
<p>Reinicie seu servidor</p>
<pre class="remontti-code"> # reboot</pre>
<p>OBS: Lembrando que a rota default é entregue via route advertise, então se você não estiver entregando desta forma será necessários criar uma rota estática, no Debian você pode adicionar o seguinte parâmetro em /etc/rc.local ( <b>ip -6 route add ::/0 via 2000:fff:250:250:0::1</b> ) assim toda vez que o sistema inicializar sua rota default (gateway) IPv6 é configurada é configurado.</p>
<h4>POSTFIX / DOVECOTE</h4>
<p>O Postfix é um agente de transferência de emails (MTA = Message Transfer Agent), um software livre para envio e entrega de emails. Rápido e fácil de administrar, muito utilizado em servidores UNIX.<br />
Algumas vantagens:<br />
&#8211; Suporte a Ipv6<br />
&#8211; Suporte a MIME<br />
&#8211; Autenticação SASL<br />
&#8211; Canal seguro utilizando TLS<br />
&#8211; Suporte a banco de dados(MySQL,PostgreSQL,LDAP,entre outros)<br />
&#8211; Verificação a listas RBL<br />
&#8211; Extenso suporte a filtros<br />
&#8211; Suporte a expressão-regular<br />
&#8211; Verificação de cabeçalho<br />
&#8211; Verificação no corpo da mensagem<br />
&#8211; Suporte a Greylisting e SPF através de plugins.</p>
<p>Dovecot é um servidor de IMAP e POP3 open source para sistemas Linux e UNIX, escrito primariamente com segurança em mente, tem o objetivo primário de ser um servidor de email leve, rápido e de fácil configuração. Dovecot suporta mbox, Maildir e seu próprio formato nativo de alta performance, Dbox. É 100% compatível com clientes de emails acessando as caixas de correio diretamente. Também inclui um agente de entrega de emails com suporte opcional a filtros Sieve, o que acho muito legal!</p>
<p>Vamos a instalação, não esqueça de antes ter instalado <a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener noreferrer">Serviço Web</a> </p>
<pre class="remontti-code"># apt update &amp;&amp; apt upgrade
# apt install dovecot-common dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd postfix postfix-mysql openssl php5-imap dovecot-sieve dovecot-managesieved</pre>
<p>Responda:<br />
<strong>Site da Internet</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-300x157.png" alt="screenshot_20161017_125641" width="300" height="157" class="alignnone size-medium wp-image-1489" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-768x403.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641-1024x537.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125641.png 1190w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Se seu DNS reverso estiver ok ele virá já com o domínio reverso de seu IP, mas isso não é necessariamente ser o nome do ip rever, mas eu recomendo que tenha confurado o reverso para o seu servidor de e-mail.<br />
<strong>mail.dominiorev.com.br</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-300x157.png" alt="screenshot_20161017_125730" width="300" height="157" class="alignnone size-medium wp-image-1490" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-768x402.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730-1024x536.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_125730.png 1189w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Verifique o arquivo /etc/mailname e sertifique-se que seja seu domínio.</p>
<pre class="remontti-code"># vim /etc/mailname</pre>
<pre class="remontti-code">mail.dominiorev.com.br</pre>
<p>Restarte o apache pois instalamos o pacote php5-imap</p>
<pre class="remontti-code"># /etc/init.d/apache2 restart</pre>
<p>Adicione um e-mail para seu usuário root do Linux</p>
<pre class="remontti-code"># vim /etc/aliases</pre>
<pre class="remontti-code">root: postmaster@dominiorev.com.br</pre>
<pre class="remontti-code"># newaliases</pre>
<h4>POSTFIXADMIN</h4>
<p>Instalaremos nosso PostfixAdmin para gerenciar nossos dominios e e-mail.<br />
Inicialmente vamos criar nosso banco de dados MySQL.<br />
<strong>Não esqueça de alterar a SENHA.</strong></p>
<pre class="remontti-code"># mysql -uroot -p -e &quot;CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO &#039;postfix&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;&lt;strong&gt;SENHA&lt;/strong&gt;&#039;;&quot;</pre>
<p>Será solicitado a senha do usuários root do mysql.</p>
<p>Vamos baixar o PostfixAdmin, hoje (Jan 2017) o projeto está em sua versão 3.0 <a href="https://sourceforge.net/projects/postfixadmin/" target="_blank" rel="noopener noreferrer">https://sourceforge.net/projects/postfixadmin/</a>. Vou baixa-lo no diretório padrão do Apache2, faça de acordo com o seu cenário. Após vou extrai-lo, renomeá-lo e setar as permissões necessárias.</p>
<pre class="remontti-code"># cd /var/www/html/
# wget --no-check-certificate --content-disposition http://sourceforge.net/projects/postfixadmin/files/latest/download?source=files
# tar xfvz postfixadmin-*.tar.gz
# mv postfixadmin*/ postfixadmin
# chown www-data:www-data -R postfixadmin
# cd postfixadmin
# cp config.inc.php config.inc.php.orig
</pre>
<p>Editamos o config.inc.php para fazer algumas alterações e conectar com nosso banco de dados.</p>
<pre class="remontti-code"># vim config.inc.php</pre>
<p>Procure pelas seguintes linhas e altere conforme a baixo.</p>
<pre class="remontti-code">
$CONF[&#039;configured&#039;] = true;
$CONF[&#039;default_language&#039;] = &#039;pt-br&#039;;

$CONF[&#039;database_type&#039;] = &#039;mysql&#039;;
$CONF[&#039;database_host&#039;] = &#039;localhost&#039;;
$CONF[&#039;database_user&#039;] = &#039;postfix&#039;;
$CONF[&#039;database_password&#039;] = &#039;SENHA&#039;;
$CONF[&#039;database_name&#039;] = &#039;postfix&#039;;

# Defina o tipo de criptografia para as senhas salvas no BD.
$CONF[&#039;encrypt&#039;] = &#039;md5&#039;;
</pre>
<pre class="remontti-code"># cp config.inc.php config.local.php</pre>
<p>Como existe varias alterações <i>&#8220;change-this-to-your.domain.tld&#8221;</i> vou usar o comando sed para alterar todas de uma única vez. <strong>Não esqueça de substituir pelo seu dominio.</strong></p>
<pre class="remontti-code"># sed -i &#039;s/change-this-to-your.domain.tld/dominiorev.com.br/&#039; config.inc.php</pre>
<p>Acesse:<br />
<strong>http://SEU-DOMINO/postfixadmin/setup.php</strong></p>
<p>No primeiro acesso suas tabelas já serão criadas no seu bd, você deve ter todas as dependências <strong>OK</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-201x300.png" alt="screenshot_20161017_132809" width="201" height="300" class="alignnone size-medium wp-image-1492" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-201x300.png 201w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-768x1147.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809-686x1024.png 686w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_132809.png 1100w" sizes="auto, (max-width: 201px) 100vw, 201px" /></a></p>
<p>Se deparar com o erro: <em><font color="blue">&#8220;ERROR: the templates_c directory doesn&#8217;t exist or isn&#8217;t writeable for the webserver&#8221;</em></font> crie o diretório templates_c com <strong># mkdir templates_c &#038;&#038; chown www-data. templates_c</strong></p>
<p>Bem no final temos: <strong>Change setup password</strong><br />
Preencha os campos Setup password com uma senha e repita (Essa senha será necessária pra criar administradores do PostfixAdmin) e clique em <strong>Generate password hash</strong></p>
<p>Voce vai receber uma mensagem parecida com essa:<br />
<font color="red"><i>If you want to use the password you entered as setup password, edit config.inc.php or config.local.php and set<br />
$CONF[&#8216;setup_password&#8217;] = &#8216;ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5&#8217;; </i></font><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-300x58.png" alt="screenshot_20161017_134710" width="300" height="58" class="alignnone size-medium wp-image-1497" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-300x58.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-768x148.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710.png 786w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Esta senha criptografada, será necessários informar no arquivo config.inc.php antes de prosseguir. Então vamos a edição.</p>
<pre class="remontti-code"># vim  config.inc.php</pre>
<p>Localize:</p>
<pre class="remontti-code">$CONF[&#039;setup_password&#039;] = &#039;changeme&#039;;</pre>
<p>Altere para:</p>
<pre class="remontti-code">$CONF[&#039;setup_password&#039;] = &#039;ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5&#039;;</pre>
<p>Salve se arquivo e volte para seu navegador. Em <strong>Create superadmin account</strong> vamos criar nosso usuário administrador do PostfixAdmin.</p>
<p>Nos campos:<br />
<strong>Setup password</strong> = Informe a senha q você gerou no passo anterior.<br />
<strong>Administrador:</strong> = um endereço email que será o seu login (postmaster@dominiorev.com.br)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-300x161.png" alt="screenshot_20161017_134743" width="300" height="161" class="alignnone size-medium wp-image-1498" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-768x413.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743.png 779w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Clique em <strong>Criar administrador</strong></p>
<p>Deve retornar a mensagem:</p>
<pre class="remontti-code">
	Administrador criado! (postmaster@dominiorev.com.br)
	You are done with your basic setup.

	You can now login to PostfixAdmin using the account you just created.
</pre>
<p>Agora por segurança vamos acessar nosso diretório do postfixadmin (/var/www/html/postfixadmin) e renomear o arquivo setup.php</p>
<pre class="remontti-code"># mv setup.php QLQRNOME_setup.php</pre>
<p>Acesse: http://SEU-DOMINO/postfixadmin/</p>
<p>Já é possível acessa-lo com nosso usuários administrador, e adicionar seus domínios e contas de e-mails.<br />
Domínios => Criar  Domínio<br />
Virtual => Criar conta de Email</p>
<p>Dado continuidade criaremos nosso usuários vmail que será o &#8220;cara&#8221; responsável pelo trabalho.</p>
<pre class="remontti-code"># groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /var/vmail
# mkdir /var/vmail
# chown vmail:vmail /var/vmail</pre>
<p>Edite o arquivo /etc/postfix/main.cf</p>
<pre class="remontti-code"># cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
# vim /etc/postfix/main.cf</pre>
<p>Altere e adicione como descrito abaixo.</p>
<pre class="remontti-code">
#--------ALTERE--------#
smtpd_banner = $myhostname
myorigin = $myhostname
mydestination = localhost

#--------COMENTE--------#
#relayhost =
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
#mailbox_size_limit = 0

#--------ADD AO FINAL--------#

# Authentification
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf
broken_sasl_auth_clients = yes

# Virtual mailboxes
local_transport = virtual
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 104
virtual_transport = virtual
#virtual_transport = dovecot ????????/ ql ?
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
dovecot_destination_recipient_limit = 1

###### EXTRAS COMENTADO #######
# Tamanho maximo do anexo (21 MB)
# No webmail php deve permitir upar esse tamanho
message_size_limit = 22020096

# Um pouco mais de  protecao contra spam
disable_vrfy_command = yes

# A RFC 821 basicamente exige que os enderecos sejam envelopados ou contidos por &lt;&gt;.
# Seguir esta regra faz com que se use essa notacao na sessao SMTP. Isso ajuda a barrar alguns Mailers.
strict_rfc821_envelopes = yes

# Caixa postal inexistente devolver aosender o erro 500,
# desta forma daqui alguns minutos voce nao precisara processar novamente o mesmo spam.
unknown_local_recipient_reject_code = 500

# E rejeitar com erro 554 enderecos desconhecidos
unknown_address_reject_code = 554

# Tambem com o erro 554 podemos rejeitar as conexoes que venham de hostnames desconhecidos
unknown_hostname_reject_code = 554

# Os cliente desconhecidos tambem rejeitaremos com o mesmo erro
unknown_client_reject_code = 554

# Vamos definir que o servidores remotos podem fazer no maximo 10
# conexõsimultaneas (e um valor que trabalho, editem conforme a necessidade).
# Um spammer faz mais de 20
smtp_destination_recipient_limit = 10

# Vamos definir que a conexao so pode cometer 3 erros de codigos 500
# (erros definitivos), apos isto sera desconectado
smtpd_hard_error_limit = 3

# Para erros de codigo 400 (erros temporarios), podemos desconecta-los na primeira
smtpd_soft_error_limit = 1

# Bom, claro que o spammer tambem pode ser desconectado e depois se reconectar,
# entao vamos nos prevenir destes espertinhos definindo quantas conexoes ele pode fazer por minuto.
smtpd_client_connection_count_limit = 10

# Nestas conexoes vamos limitar quantas mensagens ele pode mandar por minuto,
# no meu caso uso 25. Se algum usuario seu reclamar deste limite,
# classifique-o como ninja ou na pior hipotese, um mail maniaco.
smtpd_client_message_rate_limit = 25

# Deixar um spammer maluco e faze-lo perder tempo. Dificilmente um servidor conectado
# ao seu servidor vai cometer erros, os spammer cometem muitos erros, pois eles ficam tentando.
# Para irrita-los e quem sabe um dia desistirem de mim, eu travo eles dentro do meu servidor a cada erro.
# No meu caso, a cada erro eu os travo por 20 segundos. Ate que diminuiu o numero de spammers no meu servidor,
# devo estar na blacklist deles.rs
smtpd_error_sleep_time = 20

# Para este tipo de problema, os spammers podem resetar os erros deles.
# Para evitar que eles facam isto e sejam desconetados, podemos dizer se eles podem ou nao fazer isto.
# Como colher de cha, vamos deixar fazer isto apenas uma vez (ate porque servidores as vezes usam este comando).
# Permitir a maquina remota dar o comando RSET apenas 1 vez.
smtpd_junk_command_limit = 1


# Defina tambem o numero maximo de destinatarios em uma unica mensagem.
# Utilize o numero que melhor lhe convir, entreviste pessoas chaves se necessarios.
smtpd_recipient_limit = 50

# Os spammers nao se preocupam muito com isto,
# entao uma otima pratica para bloquear spams eh
# tornar a identificacao por HELO/EHLO obrigatoria.
smtpd_helo_required = yes

# Um pouco mais sobre o HELO/EHLO eh definir um tempo
# limite para o servidor fazer a identificacao, um
# servidor serio nao tem porque ficar enrolando.
# Vai diminuindo o tempo e observando os resultados.
# Vamos comecar com 60 segundos
smtp_helo_timeout = 60s

smtpd_helo_restrictions =	permit_mynetworks,
				permit_sasl_authenticated,
				reject_invalid_helo_hostname,
				reject_non_fqdn_helo_hostname,
				reject_unknown_helo_hostname,
				reject_unauth_pipelining

smtpd_sender_restrictions =	reject_non_fqdn_sender,
				reject_unknown_sender_domain,
				reject_unlisted_sender,
				reject_authenticated_sender_login_mismatch,
				permit_sasl_authenticated,
				permit_mynetworks

smtpd_recipient_restrictions =  permit_sasl_authenticated,
                                permit_mynetworks,
                                reject_unauth_destination,
                                reject_unknown_reverse_client_hostname,
                                reject_invalid_hostname,
                                reject_non_fqdn_hostname,
                                reject_non_fqdn_sender,
                                reject_non_fqdn_recipient,
                                reject_unknown_sender_domain,
                                reject_unknown_recipient_domain,
                                reject_unauth_pipelining,
                                reject_rbl_client zen.spamhaus.org,
                                reject_rbl_client bl.spamcop.net,
                                reject_rbl_client dnsbl.sorbs.net,
                                permit
</pre>
<p><strong>OBS RBLs</strong>: zen.spamhaus.org, bl.spamcop.net, dnsbl.sorbs.net<br />
Caso não queira utilizar remova os campos <i>reject_rbl_client</i> ou se desejar adicionar outras&#8230; </p>
<p>Mais informações você encontra em:<br />
http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox</p>
<p>Precisamos criar 4 arquivos que farão a conexão com o BD, pra facilitar criamos nossa variável MINHASENHA</p>
<p>Vamos criar uma variável com o valor da senha que foi criada para o usuarios postfix do mysql, assim ira facilitar.</p>
<pre class="remontti-code"># MINHASENHA=&#039;sua-senha-do-usuario-postifix-do-mysql&#039;</pre>
<p>Não use $ ou # em sua senha</p>
<p><strong>mysql_virtual_alias_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT goto FROM alias WHERE address=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_alias_maps.cf</pre>
<p><strong>mysql_virtual_mailbox_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_mailbox_maps.cf</pre>
<p><strong>mysql_sender_login_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT username AS allowedUser FROM mailbox WHERE username=&#039;%s&#039; AND active = 1 UNION SELECT goto FROM alias WHERE address=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_sender_login_maps.cf</pre>
<p><strong>mysql_virtual_domains_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfix
password = $MINHASENHA
dbname = postfix
query = SELECT domain FROM domain WHERE domain=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_domains_maps.cf</pre>
<p>Acesse o diretório de instalação e verifique se os arquivos com as iniciais mysql_* foram criados. Depois altere as permissões e grupos.</p>
<pre class="remontti-code"># cd /etc/postfix
# ls -lh mysql_*
# chmod o-rwx,g+r mysql_*
# chgrp postfix mysql_*</pre>
<p>Vamos as alterações no master.cf.</p>
<p>Faça um backup do arquivo original antes e adicione no final:</p>
<pre class="remontti-code"># cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
# vim /etc/postfix/master.cf</pre>
<p>Adicione ao final:</p>
<pre class="remontti-code">
# Dovecot
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
</pre>
<p>Localize as seguintes linhas e descomente-as:</p>
<pre class="remontti-code">
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_sasl_auth_enable=yes

smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
</pre>
<p>Em altere os valores de smtpd_client_restrictions, os originais são diferentes. (veja na imagem abaixo como fica)</p>
<pre class="remontti-code">
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
[...]
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502-254x300.png" alt="screenshot_20161017_143502" width="254" height="300" class="alignnone size-medium wp-image-1500" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502-254x300.png 254w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502.png 694w" sizes="auto, (max-width: 254px) 100vw, 254px" /></a></p>
<p><strong>Configurando o Dovecot</strong></p>
<p>Vou usar o comando sed para fazer as alterações necessárias em vez de ficarmos abrindo arquivo e editando.</p>
<pre class="remontti-code"># cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
# sed -i -e &#039;s/#listen/listen/&#039; /etc/dovecot/dovecot.conf

# cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
# sed -i -e &#039;s/#driver =/driver = mysql/&#039; /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Se voce ainda não reiniciou a maquina sua variavel $MINHASENHA ainda está carregando sua senha, voce pode executar # echo $MINHASENHA ve se retorna ela. se não repita o comando</p>
<pre class="remontti-code">
# MINHASENHA=&#039;sua-senha-do-usuario-postifix-do-mysql&#039;

# sed -i -e &quot;s/#connect =/connect = host=localhost dbname=postfix user=postfix password=$MINHASENHA/&quot; /etc/dovecot/dovecot-sql.conf.ext
# sed -i -e &#039;s/#default_pass_scheme/default_pass_scheme/&#039; /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Vamos inserir algumas linhas ao final de dovecot-sql.conf.ext.</p>
<pre class="remontti-code">
# echo &quot;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;user_query = SELECT concat(&#039;/var/vmail/&#039;, maildir) as home, concat(&#039;maildir:/var/vmail/&#039;, maildir) as mail, 5000 AS uid, 5000 AS gid, concat(&#039;*:bytes=&#039;, (quota)) AS quota_rule FROM mailbox WHERE username = &#039;%u&#039; AND active = &#039;1&#039;;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;password_query = SELECT username as user, password, concat(&#039;/var/vmail/&#039;, maildir) as userdb_home, concat(&#039;maildir:/var/vmail/&#039;, maildir) as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid, concat(&#039;*:bytes=&#039;, (quota)) AS userdb_quota_rule FROM mailbox WHERE username = &#039;%u&#039; AND active = &#039;1&#039;;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
</pre>
<p>Alterações dos arquivos 10-auth.conf / 10-logging.conf / 10-ssl.conf</p>
<pre class="remontti-code">
# cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
# sed -i -e &#039;s/#disable_plaintext_auth = yes/disable_plaintext_auth = no/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/#auth_mechanisms = plain/auth_mechanisms = plain login/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/!include auth-system.conf.ext/#!include auth-system.conf.ext/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/#!include auth-sql.conf.ext/!include auth-sql.conf.ext/&#039; /etc/dovecot/conf.d/10-auth.conf

# cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.orig
# sed -i -e &#039;s/#log_path/log_path/&#039; /etc/dovecot/conf.d/10-logging.conf
# sed -i -e &#039;s/#log_timestamp = &quot;%b %d %H:%M:%S &quot;/log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;/&#039; /etc/dovecot/conf.d/10-logging.conf

# cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig
# sed -i -e &#039;s/ssl = no/#ssl = no/&#039; /etc/dovecot/conf.d/10-ssl.conf
# sed -i -e &#039;s/#ssl_cert =/ssl_cert =/&#039; /etc/dovecot/conf.d/10-ssl.conf
# sed -i -e &#039;s/#ssl_key =/ssl_key =/&#039; /etc/dovecot/conf.d/10-ssl.conf</pre>
<p>Criamos os certificados para o dovecot</p>
<pre class="remontti-code"># openssl req -new -x509 -days 3650 -nodes -out &quot;/etc/dovecot/dovecot.pem&quot; -keyout &quot;/etc/dovecot/private/dovecot.pem&quot;</pre>
<p>Em 10-master.conf ficou complicado fazer alteração com sed então vamos no braço.</p>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
# vim /etc/dovecot/conf.d/10-master.conf</pre>
<p>em :service auth {<br />
COMENTE tudo de unix_listener auth-userdb</p>
<pre class="remontti-code">
service auth {

#unix_listener auth-userdb {
 #mode = 0666
 #user =
 #group =
#}

#descomente
 unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }

#add
  unix_listener auth-master {
    mode = 0666
  }

  #Descomente
  user = $default_internal_user
}</pre>
<p>Vamos criar um filtro para que todas as mensagens marcada com spam sejam movida para o diretórios SPAM.</p>
<pre class="remontti-code">
# mkdir /var/lib/dovecot/sieve/
# cp /etc/dovecot/conf.d/90-sieve.conf /etc/dovecot/conf.d/90-sieve.conf.orig
# sed -i -e &#039;s/#sieve_default =/sieve_default =/&#039; /etc/dovecot/conf.d/90-sieve.conf
# sed -i -e &#039;s/#sieve_global_dir =/sieve_global_dir = \/var\/lib\/dovecot\/sieve\/ /&#039; /etc/dovecot/conf.d/90-sieve.conf

# echo &#039;require [&quot;fileinto&quot;];&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;# rule:[Spam]&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;        fileinto &quot;Junk&quot;;&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;}&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve

# sievec /var/lib/dovecot/sieve/default.sieve
# chown -R vmail:vmail /var/lib/dovecot

# cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
# sed -i -e &#039;s/mail_location = mbox:~\/mail:INBOX=\/var\/mail\/%u/mail_location = mbox:~\/mail:INBOX=\/var\/vmail\/%u/&#039; /etc/dovecot/conf.d/10-mail.conf
</pre>
<p>!Exatamente nessa ordem!</p>
<pre class="remontti-code">
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Junk /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Junk { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Sent /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Sent { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Drafts /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Drafts { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Trash /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  mailbox Trash { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/#mail_plugins =/mail_plugins = quota/&#039; /etc/dovecot/conf.d/10-mail.conf
</pre>
<pre class="remontti-code">
# cp /etc/dovecot/conf.d/20-managesieve.conf  /etc/dovecot/conf.d/20-managesieve.conf.orig
# vim /etc/dovecot/conf.d/20-managesieve.conf</pre>
<p>Descomente:</p>
<pre class="remontti-code">
# Uncomment to enable managesieve protocol:
protocols = $protocols sieve

service managesieve-login {
}
service managesieve {
}
protocol sieve {
}</pre>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/15-lda.conf /etc/dovecot/conf.d/15-lda.conf.orig</pre>
<p>Altere nos comandos (dominiorev.com.br) para seu domínio</p>
<pre class="remontti-code">
!# sed -i -e &#039;s/#mail_plugins = $mail_plugins/#mail_plugins = $mail_plugins\n  postmaster_address = postmaster@dominiorev.com.br/&#039; /etc/dovecot/conf.d/15-lda.conf
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/#mail_plugins = $mail_plugins\n  auth_socket_path = \/var\/run\/dovecot\/auth-master/&#039; /etc/dovecot/conf.d/15-lda.conf
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins sieve/&#039; /etc/dovecot/conf.d/15-lda.conf

# cp /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/20-imap.conf.orig
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota imap_quota/&#039; /etc/dovecot/conf.d/20-imap.conf

# cp /etc/dovecot/conf.d/20-pop3.conf /etc/dovecot/conf.d/20-pop3.conf.orig
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota/&#039; /etc/dovecot/conf.d/20-pop3.conf

# cp /etc/dovecot/conf.d/90-quota.conf /etc/dovecot/conf.d/90-quota.conf.orig
# sed -i -e &#039;s/#quota = maildir/quota = maildir/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_rule =/quota_rule =/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_rule2 =/quota_rule2 =/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_warning/quota_warning/&#039; /etc/dovecot/conf.d/90-quota.conf
</pre>
<pre class="remontti-code"># vim /etc/dovecot/conf.d/90-quota.conf</pre>
<p>Descomente</p>
<pre class="remontti-code">
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = dovecot
  unix_listener quota-warning {
    user = vmail
  }
}</pre>
<pre class="remontti-code"># vim /usr/local/bin/quota-warning.sh</pre>
<pre class="remontti-code">
#!/bin/sh
PERCENT=$1
USER=$2
cat &lt;&lt; EOF | /usr/lib/dovecot/deliver -d $USER -o &quot;plugin/quota=maildir:User quota:noenforcing&quot;
From: postmaster@mail.dominiorev.com.br
Subject: Quota Aviso

AVISO
Usando $PERCENT% do tamanho da caixa postal.

Remontti
(55) 9999-9999
EOF
</pre>
<pre class="remontti-code"># chmod +x /usr/local/bin/quota-warning.sh
# /etc/init.d/dovecot restart
# /etc/init.d/postfix restart </pre>
<p><i>Comando para ver cota</i></p>
<pre class="remontti-code"># doveadm quota get -u usuario@dominio.com.br</pre>
<h4>WEBMAIL ROUNDCUBE</h4>
<pre class="remontti-code"># apt install php5-intl php-pear
# sed -i -e &quot;s/^;date\.timezone =.*$/date\.timezone = &#039;America\/Sao_Paulo&#039;/&quot; /etc/php5/apache2/php.ini
# /etc/init.d/apache2 restart
# cd /var/www/html</pre>
<p>Acesse e baixe a versao mais recente<br />
https://roundcube.net/download/</p>
<p>Hoje 1.2.4 - Complete</p>
<pre class="remontti-code"># wget --no-check-certificate https://github.com/roundcube/roundcubemail/releases/download/1.2.4/roundcubemail-1.2.4-complete.tar.gz

# tar -vxzf roundcubemail*
# mv roundcubemail-1.2.4 webmail
# chown  www-data. -R webmail</pre>
<p>Criaremos nosso banco de dados para o roundcubemail.</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<p>Será solicitado a senha root do mysql, entre com a senha.</p>
<pre class="remontti-code">
CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY &#039;SUA-SENHA-BD-ROUND&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Acesse:<br />
http://SEU-DOMINIO/webmail/installer/</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-227x300.png" alt="screenshot_20161017_152350" width="227" height="300" class="alignnone size-medium wp-image-1503" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-227x300.png 227w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-768x1016.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350-774x1024.png 774w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_152350.png 875w" sizes="auto, (max-width: 227px) 100vw, 227px" /></a></p>
<p>Clique em <strong>Next</strong></p>
<p>Principais itens a ser alterado ou de seu gosto o que não citei deixei padrão</p>
<p><strong>== General configuration ==</strong><br />
product_name: Nome do Webmail<br />
Check client IP in session authorization: MARQUE</p>
<p><strong>== Logging & Debugging ==</strong><br />
log_driver: syslog</p>
<p><strong>== Database setup ==</strong><br />
Database type: MYSQL<br />
Database server: localhost<br />
Database name: roundcubemail<br />
Database user name: roundcube<br />
Database password: SUA-SENHA-BD-ROUND<br />
db_prefix:</p>
<p><strong>== IMAP Settings ==</strong><br />
username_domain: mail.dominiorev.com.br</p>
<p><strong>== SMTP Settings ==</strong><br />
smtp_server: tls://mail.dominiorev.com.br<br />
smtp_port: 25</p>
<p><strong>== Display settings & user prefs ==</strong><br />
language *: pt_BR<br />
If preview pane is enabled: Marque<br />
Compose HTML formatted messages: always</p>
<p><strong>== Plugins ==</strong><br />
"De acordo com suas necessidades! Porém vou configurar os seguintes.<br />
- emoticons<br />
- managesieve<br />
- markasjunk<br />
- newmail_notifier<br />
- password<br />
- zipdownload</p>
<p>Agora clique em <strong>[CREAT CONFIG]</strong><br />
Vai retornar uma mensagem:<br />
<i>The config file was saved successfully into RCMAIL_CONFIG_DIR directory of your Roundcube installation.</i></p>
<p>Isso significa que nosso arquivo de configuração do roundcube foi criado (config/config.inc.php)</p>
<p>Agora clique em: <strong>[CONTINUE]</strong><br />
Agora em: <strong>[Inicialize database]</strong></p>
<p>Irá retornar:<i><br />
Check DB config<br />
DSN (write):  OK<br />
DB Schema:  OK<br />
DB Write:  OK<br />
DB Time:  OK</i></p>
<p>Se você já criou uma conta de email você pode testa-la [Check login]</p>
<p>Como recomendações, mova o diretório <strong>installer</strong> para outro nome ou remova.</p>
<p><i>After completing the installation and the final tests please remove the whole installer folder from the document root of the webserver or make sure that enable_installer option in config.inc.php is disabled.</p>
<p>Depois de completar a instalação e os testes finais remova toda a pasta de instalação da raiz de documentos do servidor web ou certifique-se de que enable_installer opção no config.inc.php está desativado.</i></p>
<pre class="remontti-code"># mv installer/ installer_XYZ_12345</pre>
<p>Acesse o diretório dos plugins do roundcube.</p>
<pre class="remontti-code"># cd /var/www/html/webmail/plugins/</pre>
<p><strong>== newmail_notifier ==</strong></p>
<pre class="remontti-code"># cd newmail_notifier
# cp config.inc.php.dist config.inc.php
# sed -i -e &#039;s/= false/= true/&#039; config.inc.php</pre>
<p><strong>== zipdownload ==</strong></p>
<pre class="remontti-code"># cd ../zipdownload
# cp config.inc.php.dist config.inc.php
# sed -i -e &#039;s/= false/= true/&#039; config.inc.php</pre>
<p><strong>== markasjunk ==</strong><br />
(Sem configuração)</p>
<p><strong>= managesieve =</strong><br />
Faz emails identificado com spam cair na pasta spam.</p>
<pre class="remontti-code"># cd ../managesieve
# cp config.inc.php.dist  config.inc.php
# vim config.inc.php</pre>
<p>Altere: (atençao para o caminho)</p>
<pre class="remontti-code">
$config[&#039;managesieve_default&#039;] = &#039;/var/www/html/webmail/plugins/managesieve/default.sieve&#039;;
$config[&#039;managesieve_script_name&#039;] = &#039;Filtros&#039;;</pre>
<p>Crie o arquivo default.sieve</p>
<pre class="remontti-code"># vim /var/www/html/webmail/plugins/managesieve/default.sieve</pre>
<pre class="remontti-code">
require [&quot;fileinto&quot;];
# rule:[Spam]
if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot;
{
        fileinto &quot;Junk&quot;;
        stop;
}</pre>
<p><strong>== password ==</strong><br />
Permite usuário alterar sua senha.</p>
<pre class="remontti-code"># cd ../password
# cp config.inc.php.dist  config.inc.php
# vim config.inc.php</pre>
<p>Altere:</p>
<pre class="remontti-code">
//Define o uma quantidade minima de caracteres
$config[&#039;password_minimum_length&#039;] = 8;

$config[&#039;password_require_nonalpha&#039;] = false;

$config[&#039;password_db_dsn&#039;] = &#039;mysql://postfix:SENHA-POSTFIX-MYSQL@localhost/postfix&#039;;
$config[&#039;password_query&#039;] = &quot;UPDATE  mailbox SET  password=MD5(%p) WHERE username=%u AND password=MD5(%o)&quot;;
</pre>
<p><strong>Plugins extra (http://plugins.roundcube.net/)</strong></p>
<p># cd /var/www/html/webmail/plugins/</p>
<p><strong>== contextmenu ==</strong><br />
Cria menus ao clicar com o direito. (# apt install git)</p>
<pre class="remontti-code"># git clone --recursive https://github.com/JohnDoh/Roundcube-Plugin-Context-Menu.git
# mv Roundcube-Plugin-Context-Menu contextmenu</pre>
<p><strong>== persistent_login ==</strong><br />
Permite deixar salvo a sessão.</p>
<pre class="remontti-code"># git clone --recursive https://github.com/mfreiholz/Roundcube-Persistent-Login-Plugin.git
# mv Roundcube-Persistent-Login-Plugin persistent_login
# cd persistent_login/
# cp config.inc.php.dist  config.inc.php
# sed -i -e &#039;s/= false/= true/&#039; config.inc.php</pre>
<p>Precisa fazer umas alterações em nossas tabelas do bd roundcubemail, para isso use:</p>
<pre class="remontti-code"># mysql -u roundcube -pSENHA-USER-MYSQL-ROUNDCUBE roundcubemail &lt; sql/mysql.sql</pre>
<p>A tradução ao meu ver ficou estranha, e vamos adicionar um aviso. </p>
<pre class="remontti-code"># vim localization/pt_BR.inc</pre>
<p>Altere para:</p>
<pre class="remontti-code">
&lt;?php
$labels[&#039;ifpl_rememberme&#039;] = &#039;Salvar login&#039;;
$labels[&#039;ifpl_rememberme_hint&#039;] = &#039;N&atilde;o salve seu login em computadores p&uacute;blicos por raz&otilde;es de seguran&ccedil;a.&#039;;
?&gt;</pre>
<p><strong>== dovecot_ident ==</strong><br />
Como webmail é um acesso localhost, nos logs de acesso IMAP não queremos isso e sim o IP do usuário que esta acessando, para isso:</p>
<pre class="remontti-code"># cd /var/www/html/webmail/plugins
# git clone --recursive https://github.com/corbosman/dovecot_ident.git
# vim /etc/dovecot/dovecot.conf</pre>
<p>Decomente incluindo o valor (127.0.0.1 ::1)</p>
<pre class="remontti-code">login_trusted_networks = 127.0.0.1 ::1 IP-DO-SEU-SERVIDOR</pre>
<p>ex:</p>
<pre class="remontti-code">login_trusted_networks = 127.0.0.1 ::1 250.250.0.6 2000:fff:250:250:0::6</pre>
<pre class="remontti-code"># /etc/init.d/dovecot  restart
# /etc/init.d/postfix  restart</pre>
<p>Agora precisamos adicionar nossos plugins extrar nas configurações do Round.</p>
<pre class="remontti-code"># vim /var/www/html/webmail/config/config.inc.php</pre>
<p>Procure por:</p>
<pre class="remontti-code">
$config[&#039;plugins&#039;]
Inclua os plugins contextmenu, persistent_login e dovecot_ident ficando:
$config[&#039;plugins&#039;] = array(&#039;emoticons&#039;, &#039;managesieve&#039;, &#039;markasjunk&#039;, &#039;newmail_notifier&#039;, &#039;password&#039;, &#039;zipdownload&#039;,&#039;contextmenu&#039;, &#039;persistent_login&#039;, &#039;dovecot_ident&#039;);

//Eu particularmente gosto de fazer ainda algumas mudanças, se desejar inclua ao final do arquivo:
$config[&#039;show_images&#039;] = 2;
$config[&#039;prefer_html&#039;] = true;
$config[&#039;check_all_folders&#039;] = true;
$config[&#039;message_show_email&#039;] = true;
$config[&#039;draft_autosave&#039;] = 180;
$config[&#039;quota_zero_as_unlimited&#039;] = true;
$config[&#039;list_cols&#039;] = array(&#039;flag&#039;, &#039;status&#039;, &#039;fromto&#039;, &#039;subject&#039;, &#039;date&#039;, &#039;size&#039;, &#039;attachment&#039;, &#039;priority&#039;);
//Se desejar cadastrar um domino qual não precisa informar o @dominio...
$config[&#039;username_domain&#039;] = &#039;dominiorev.com.br&#039;;
</pre>
<pre class="remontti-code"># chown  www-data. -R /var/www/html/webmail/</pre>
<p>Seu servidor de e-mail já está funcionado, logue em seu webmail, envie algum e-mails.<br />
Acesse: http://SEU-DOMINIO/webmail/</p>
<h4>PEGANDO A ULTIMA VEZ QUE USUÁRIO LOGOU E O IP</h4>
<p>Se você é administrador de um servidor de e-mail certamente vai querer isso!<br />
Primeiramente vamos adicionar alguns campos extrar nassa tabela mailbox (last_login_date last_login_ip last_login_proto)</p>
<pre class="remontti-code"># mysql -u root -p</pre>
<pre class="remontti-code">
use postfix;
ALTER TABLE `mailbox` ADD `last_login_date` DATETIME NULL COMMENT &#039;last login date&#039;,ADD `last_login_ip` VARCHAR( 39 ) NULL COMMENT &#039;last login ip&#039;,ADD `last_login_proto` CHAR( 5 ) NULL ;
quit;</pre>
<p>Vamos ensinar o dovecot a alimentar esses campos.<br />
<strong>10-master.conf</strong></p>
<pre class="remontti-code"># sed -i -e &#039;s/service imap {/service imap {\n  executable = imap imap-postlogin/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service imap {/service imap {\n  # Post-login action/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service pop3 {/service pop3 {\n  executable = pop3 pop3-postlogin/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service pop3 {/service pop3 {\n  # Post-login action/&#039; /etc/dovecot/conf.d/10-master.conf
# echo &#039;&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;# Post login scripting POP3&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;service pop3-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  executable = script-login /usr/local/bin/postlogin-pop.sh&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  user = $default_internal_user&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  unix_listener pop3-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  }&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;}&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;# Post login scripting IMAP&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;service imap-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  executable = script-login /usr/local/bin/postlogin-imap.sh&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  user = $default_internal_user&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  unix_listener imap-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  }&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;}&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf</pre>
<p>Crie o arquivo postlogin-imap.sh</p>
<pre class="remontti-code"># vim /usr/local/bin/postlogin-imap.sh</pre>
<p>Atenção para SENHA.</p>
<pre class="remontti-code">
#!/bin/sh
MYSQL_USER=&#039;postfix&#039;
PASSWD=&#039;SENHA&#039;
DB_NAME=&#039;postfix&#039;
if [ X&quot;${USER}&quot; != X&quot;dump-capability&quot; ]; then
mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} &gt;/dev/null 2&gt;&amp;1 &lt;&lt;EOF
UPDATE mailbox SET \
last_login_ip=&quot;$IP&quot;, \
last_login_date=NOW(), \
last_login_proto=&quot;IMAP&quot; \
WHERE username=&#039;$USER&#039;;
EOF
fi
exec &quot;$@&quot;</pre>
<p>Crie o arquivo postlogin-pop.sh</p>
<pre class="remontti-code"># vim /usr/local/bin/postlogin-pop.sh</pre>
<p>Atenção para SENHA.</p>
<pre class="remontti-code">
#!/bin/sh
MYSQL_USER=&#039;postfix&#039;
PASSWD=&#039;SENHA&#039;
DB_NAME=&#039;postfix&#039;
if [ X&quot;${USER}&quot; != X&quot;dump-capability&quot; ]; then
mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} &gt;/dev/null 2&gt;&amp;1 &lt;&lt;EOF
UPDATE mailbox SET \
last_login_ip=&quot;$IP&quot;, \
last_login_date=NOW(), \
last_login_proto=&quot;POP3&quot; \
WHERE username=&#039;$USER&#039;;
EOF
fi
exec &quot;$@&quot;</pre>
<pre class="remontti-code"># chmod +x /usr/local/bin/postlogin-*
# /etc/init.d/dovecot  restart</pre>
<p>Acesse sua conta de email e apois consulte a tabela mailbox (SELECT * FROM `mailbox`)</p>
<p>Até este ponto nosso servidor está 100%, agora falta apenas um Anti-Spam e um Anti-Vírus para ficar perfeito, Então vamos nessa <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h4>SPAMASSASSIN</h4>
<p>Vamos começar pelo SpamAssassin</p>
<pre class="remontti-code"># apt install spamc spamassassin</pre>
<p>Alguns ajustes</p>
<pre class="remontti-code"># sed -i -e &#039;s/ENABLED=0/ENABLED=1/&#039; /etc/default/spamassassin
# sed -i -e &#039;s/CRON=0/CRON=1/&#039; /etc/default/spamassassin
# sed -i -e &#039;s/# report_safe 1/report_safe 0/&#039; /etc/spamassassin/local.cf
????# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# systemctl enable spamassassin</pre>
<pre class="remontti-code"># vim /etc/postfix/master.cf</pre>
<p>Adicione ==> <strong>-o content_filter=spamassassin</strong></p>
<pre class="remontti-code">
smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
   {..}
submission inet n       -       -       -       -       smtpd
  -o content_filter=spamassassin
   {..}
smtps     inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
  {..}
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239.png" data-rel="lightbox-gallery-V5hh335G" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239-300x242.png" alt="" width="300" height="242" class="alignnone size-medium wp-image-1633" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239-300x242.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239.png 619w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>E no final do arquivo:</p>
<pre class="remontti-code">
# SpamAssassin
spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
</pre>
<p>Vamos instalar o Razor Pyzor para ajudar no bloquei dos Spam.</p>
<pre class="remontti-code"># apt install razor pyzor</pre>
<pre class="remontti-code"># vim /etc/spamassassin/local.cf</pre>
<p>Inclua antes da ultima linha (endif # Mail::SpamAssassin::Plugin::Shortcircuit)</p>
<pre class="remontti-code">
# razor2
use_razor2 1
score RAZOR2_CHECK 2.500

# pyzor
use_pyzor 1
score PYZOR_CHECK 2.500
</pre>
<pre class="remontti-code"># su - debian-spamd -c &#039;razor-admin -d --create&#039;
# su - debian-spamd -c &#039;razor-admin -register&#039;
# su - debian-spamd -c &#039;razor-admin -discover&#039;
# su - debian-spamd -c &#039;pyzor discover&#039;</pre>
<h4>ANTIVIRUS AMAVIS / CLAMAV</h4>
<p>Você precisa ter nos repositórios os pacotes <strong>non-free</strong></p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>(exemplo)</p>
<pre class="remontti-code">
deb http://ftp.br.debian.org/debian/ jessie main contrib non-free</pre>
<pre class="remontti-code"># apt update
# apt install amavisd-new clamav clamav-freshclam  clamav-daemon arj bzip2 cabextract nomarch pax rar unrar unzip zip zoo lhasa libmail-dkim-perl libnet-ldap-perl libsnmp-perl libzeromq-perl lzop p7zip rpm
# adduser clamav amavis
# /etc/init.d/clamav-freshclam stop
# freshclam
# su - amavis -c &#039;razor-admin -d --create&#039;
# su - amavis -c &#039;razor-admin -register&#039;
# su - amavis -c &#039;razor-admin -discover&#039;
# su - amavis -c &#039;pyzor discover&#039; </pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/15-content_filter_mode</pre>
<p>#(Descomente)</p>
<pre class="remontti-code">
@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/50-user</pre>
<p>Adicionar !! Atenção para SENHA</p>
<pre class="remontti-code">
#
@lookup_sql_dsn = (
    [&#039;DBI:mysql:database=postfix;host=127.0.0.1;port=3306&#039;,
     &#039;postfix&#039;,
     &#039;SENHA-BD-POSTFIX&#039;]);
$sql_select_policy = &#039;SELECT &quot;Y&quot; as local FROM alias WHERE address IN (%k)&#039;;

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return
</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/05-node_id</pre>
<p> Altere: </p>
<pre class="remontti-code">$myhostname = &quot;mail.dominiorev.com.br&quot;;</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/01-debian</pre>
<p>Comente:</p>
<pre class="remontti-code">#$unarj      = [&#039;arj&#039;, &#039;unarj&#039;];</pre>
<p>Descomente:</p>
<pre class="remontti-code">$unrar      = [&#039;rar&#039;, &#039;unrar&#039;]; #disabled (non-free, no security support)</pre>
<h4>Personalização Amavis</h4>
<pre class="remontti-code"># vim /etc/amavis/conf.d/20-debian_defaults</pre>
<p>Eu comento sa_spam_subject_tag, assim as mensagens que forem spam não terão o assunto trocado, pois elas já irão cair na caixa de spam.</p>
<pre class="remontti-code">#$sa_spam_subject_tag = &#039;***SPAM*** &#039;;</pre>
<p>Comente se não desejar receber as menssagens de erro.</p>
<pre class="remontti-code">
#$final_virus_destiny      = D_DISCARD;  # (data not lost, see virus quarantine)
#$final_banned_destiny     = D_BOUNCE;   # D_REJECT when front-end MTA
#$final_spam_destiny       = D_BOUNCE;
$final_bad_header_destiny = D_PASS;     # False-positive prone (for spam)</pre>
<p>Não comente final_bad_header_destiny (se não os spam não serão entregues)</p>
<p>Se não quiser que seu email postmaster receba um email com todos os emails q ele discartou, comente:</p>
<pre class="remontti-code">#$virus_admin = &quot;postmaster\@$mydomain&quot;; # due to D_DISCARD default</pre>
<p>Habilitar o amavis no postfix</p>
<pre class="remontti-code"># postconf -e &quot;content_filter = smtp-amavis:[127.0.0.1]:10024&quot;</pre>
<pre class="remontti-code"># vim /etc/postfix/master.cf</pre>
<p>Adicionar ao final</p>
<pre class="remontti-code">
smtp-amavis       unix  -       -       -       -       2       smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20
  -o smtp_generic_maps=

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
  -o mynetworks=127.0.0.0/8
  -o content_filter=
  -o local_recipient_maps=
  -o local_header_rewrite_clients=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
  -o strict_rfc821_envelopes=yes
</pre>
<p>Restarte todos os serviços</p>
<pre class="remontti-code"># /etc/init.d/clamav-daemon restart
# /etc/init.d/clamav-freshclam restart
# /etc/init.d/spamassassin restart
# /etc/init.d/amavis restart
# /etc/init.d/dovecot restart
# /etc/init.d/postfix restart </pre>
<p>Gostou? Ficou com alguma dúvida?<br />
Deixe seu comentário!</p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/1485">Montando um servidor de E-mail Completo com Postfix+Dovecot+PostfixAdmin+SpamAssassin+SPF+RoundCubeMail+IPv4/IPv6 (Desatualizado)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1485/feed</wfw:commentRss>
			<slash:comments>40</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Zabbix 3.0.x/3.2.x/3.4 no Debian 8 Jessie</title>
		<link>https://blog.remontti.com.br/1227</link>
					<comments>https://blog.remontti.com.br/1227#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 10 Sep 2016 22:37:15 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian 8]]></category>
		<category><![CDATA[debian jessie]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[zabbix]]></category>
		<category><![CDATA[zabbix-frontend-php]]></category>
		<category><![CDATA[zabbix-server-mysql]]></category>
		<category><![CDATA[zabbix3]]></category>
		<guid isPermaLink="false">http://blog.remontti.com.br/?p=1227</guid>

					<description><![CDATA[<p>Tutorial mais atualizado em: Instalação do Zabbix 4.0 / 3.4 / 3.0 no Debian 9 Stretch com banco de dados MariaBD O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1227">Instalação do Zabbix 3.0.x/3.2.x/3.4 no Debian 8 Jessie</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong><font color="red">Tutorial mais atualizado em:</strong> <strong><a href="https://blog.remontti.com.br/2126">Instalação do Zabbix 4.0 / 3.4 / 3.0 no Debian 9 Stretch com banco de dados MariaBD</a></strong></font></p>
<p>O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível de notificação que permite configurar alertas por e-mail entre outros como Telegram, para praticamente qualquer evento. As notificações permitem que se reaja rapidamente à problemas no ambiente. O Zabbix oferece excelentes recursos de relatórios e visualização de dados armazenados. Isso faz com que o Zabbix seja a ferramenta ideal para planejamento de capacidade.</p>
<p>Distribuição utilizada: Debian 8 (Jessie) / Instalação Limpa <a href="https://blog.remontti.com.br/1152" target="_blank">(Tutorial de instalação aqui)</a></p>
<p>Vamos a instalação do pacote que irá atualizar nosso repositório com as fontes do Zabbix assim vai ficar fácil atualizar posteriormente.<br />
<strong>Versão 3.4.X</strong></p>
<pre class="remontti-code"># wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+jessie_all.deb
# dpkg -i zabbix-release_3.4-1+jessie_all.deb</pre>
<p><strong>Versão 3.2.X</strong></p>
<pre class="remontti-code"># wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix-release/zabbix-release_3.2-1+jessie_all.deb
# dpkg -i zabbix-release_3.2-1+jessie_all.deb</pre>
<p><strong>Versão 3.0.X</strong></p>
<pre class="remontti-code"># wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/zabbix-release_3.0-1+jessie_all.deb
# dpkg -i zabbix-release_3.0-1+jessie_all.deb</pre>
<p>Atualize o repositório:</p>
<pre class="remontti-code"># apt update</pre>
<p>Instalando os pacotes do Zabbix Server com banco de dados MySQL e interface web Apache.</p>
<pre class="remontti-code"># apt install zabbix-server-mysql zabbix-frontend-php</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191607.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1230" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191607-300x190.png" alt="screenshot_20160910_191607" width="300" height="190" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191607-300x190.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191607-768x487.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191607-1024x649.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191607.png 1172w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Serão instalados diversos pacotes entre eles o apache e mysql-server.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191808.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1231" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191808-300x190.png" alt="screenshot_20160910_191808" width="300" height="190" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191808-300x190.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191808-768x487.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191808-1024x649.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191808.png 1172w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Será solicitado a senha do usuário root do MySQL, após repita.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191819.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1232" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191819-300x190.png" alt="screenshot_20160910_191819" width="300" height="190" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191819-300x190.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191819-768x487.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191819-1024x649.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_191819.png 1172w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Vamos intalar nosso agente também.</p>
<pre class="remontti-code"># apt install zabbix-agent</pre>
<p>Vamos criar uma base de dados chamada zabbix e um usuário também chamado de zabbix no MySQL.</p>
<pre class="remontti-code"># mysql -uroot -p</pre>
<pre class="remontti-code">create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by &#039;SENHA&#039;;
quit;</pre>
<p>Importe o esquema de tabelas e dados padrões.</p>
<pre class="remontti-code"># cd /usr/share/doc/zabbix-server-mysql
# zcat create.sql.gz | mysql -u root zabbix -p</pre>
<p>Digite a senha de seu usuário <strong>zabbix</strong> criada no passo anterior para importar as tabelas.</p>
<p>Agora vamos editar o arquivo zabbix_server.conf para informar os dados para conexão com o MySQL.</p>
<pre class="remontti-code"># vim /etc/zabbix/zabbix_server.conf</pre>
<pre class="remontti-code">DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=SENHA</pre>
<p>Iniciando o Zabbix Server e o Agente.</p>
<pre class="remontti-code"># /etc/init.d/zabbix-server start
# /etc/init.d/zabbix-agent start</pre>
<p>Editando a configuração do PHP para a interface web do Zabbix</p>
<p>A configuração do Apache para a interface web do Zabbix está localizada em /etc/apache2/conf-enabled/zabbix.conf. Algumas das configurações do PHP já estão definidas, para alterar edite:</p>
<pre class="remontti-code"># vim /etc/apache2/conf-enabled/zabbix.conf</pre>
<pre class="remontti-code">php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone America/Sao_Paulo</pre>
<p>É necessário que se remova o comentário na linha do parâmetro “date.timezone” e que se defina o timezone apropriado (America/Sao_Paulo para a maioria dos estados brasileiros). Após a alteração do arquivo de configuração será necessário o reinicio do processo do servidor web (Apache).</p>
<pre class="remontti-code"># /etc/init.d/apache2 restart</pre>
<p>A interface web do Zabbix estará disponível em http://SEU-IP/zabbix através do seu navegador.<br />
O usuário e senha padrões são: Admin/zabbix</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_193954.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1240" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_193954-300x211.png" alt="screenshot_20160910_193954" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_193954-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_193954-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_193954-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_193954.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>[Next step]</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194002.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1241" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194002-300x211.png" alt="screenshot_20160910_194002" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194002-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194002-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194002-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194002.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Tudo deve estar <span style="color: #339966;">ok</span><strong> [Next step]</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194011.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1242" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194011-300x211.png" alt="screenshot_20160910_194011" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194011-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194011-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194011-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194011.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Informe sua senha de conexão ao MySQL. <strong>[Next step]</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194018.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1243" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194018-300x211.png" alt="screenshot_20160910_194018" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194018-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194018-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194018-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194018.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>[Next step]</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194024.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1244" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194024-300x211.png" alt="screenshot_20160910_194024" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194024-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194024-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194024-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194024.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>[Next step]</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194028.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1245" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194028-300x211.png" alt="screenshot_20160910_194028" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194028-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194028-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194028-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194028.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>[Finish]</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194043.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1247" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194043-300x211.png" alt="screenshot_20160910_194043" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194043-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194043-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194043-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194043.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Usuário: Admin Senha: zabbix</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194105.png" data-rel="lightbox-gallery-YOAXOZkp" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1248" src="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194105-300x211.png" alt="screenshot_20160910_194105" width="300" height="211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194105-300x211.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194105-768x540.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194105-1024x720.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/09/Screenshot_20160910_194105.png 1196w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Zabbix instalado! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Gostou? Deixe seu comentário ficarei feliz em saber que lhe ajudei, e se tiver qualquer pergunta deixe-a também, se preferir acesse o menu <a href="http://blog.remontti.net.br/meucontato">Contato</a> lá você encontra meios de falar comigo!</p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/1227">Instalação do Zabbix 3.0.x/3.2.x/3.4 no Debian 8 Jessie</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1227/feed</wfw:commentRss>
			<slash:comments>23</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor FTP com usuários no banco de dados MySQL</title>
		<link>https://blog.remontti.com.br/136</link>
					<comments>https://blog.remontti.com.br/136#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 10 Sep 2016 02:00:38 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<guid isPermaLink="false">http://www.remontti.com.br/blog/?p=136</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. Distribuição utilizada: Debian&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/136">Servidor FTP com usuários no banco de dados MySQL</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2009/04/pure-ftpd-with-mysql-300x155.png" alt="pure-ftpd-with-mysql" width="300" height="155" class="alignnone size-medium wp-image-986" srcset="https://blog.remontti.com.br/wp-content/uploads/2009/04/pure-ftpd-with-mysql-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2009/04/pure-ftpd-with-mysql.png 390w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<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-136"></span><br />
Distribuição utilizada: <strong>Debian 9</strong> (Stretch ) / Instalação Limpa (<a href="https://blog.remontti.com.br/1152" rel="noopener" target="_blank">Tutorial de instalação aqui</a>)</p>
<p><strong><font color="red">Requisitos:</font></strong><br />
<a href="https://blog.remontti.com.br/2024" rel="noopener" target="_blank">Servidor web Apache2, PHP 7.0, MariaDB, PHPMyAdmin “LAMP” no Debian 9 Stretch</a></p>
<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>
<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"># mysql -u root -p</pre>
<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;

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>Antes vamos criar um backup do /etc/pure-ftpd/db/mysql.conf e montar este arquivo com nossas configuração para fazera conexão ao mysql.</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
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword SENHA_FTP_USER
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
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_MYSQL_FPTd&#8217;</p>
<p>Seguindo com as configurações</p>
<pre class="remontti-code"># echo yes &gt; /etc/pure-ftpd/conf/ChrootEveryone
# echo yes &gt; /etc/pure-ftpd/conf/CreateHomeDir</pre>
<p>ChrootEveryone &#8211; Prender por padrão os usuários FTP em seu diretório;<br />
CreateHomeDir &#8211; Criar o home do usuário automaticamente;</p>
<pre class="remontti-code"># /etc/init.d/pure-ftpd-mysql restart</pre>
<p>Vamos criar agora um usuário, no exemplo abaixo meu usuário será dono do /var/www/html (diretório padrão do apache/debian 8)</p>
<pre class="remontti-code"># mysql -u root -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;usuario&#039;, &#039;1&#039;, MD5(&#039;senha&#039;), &#039;2001&#039;, &#039;2001&#039;, &#039;/var/www/html&#039;, &#039;100&#039;, &#039;100&#039;, &#039;&#039;, &#039;*&#039;, &#039;50&#039;, &#039;0&#039;);
quit; </pre>
<p>Sempre que você queira criar um novo usá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>
<p>Alterando as permissões do /var/www/html isso vai ser relativo ao diretório que você definido ao usuário criado.</p>
<pre class="remontti-code"># chown ftpuser. -R /var/www/html/</pre>
<address style="text-align: left;">Fontes:</address>
<address style="text-align: left;">http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL</address>
<p>O post <a href="https://blog.remontti.com.br/136">Servidor FTP com usuários no banco de dados MySQL</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/136/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>FreeBSD v8.0 +  Apache + Mysql + PHP “FAMP”</title>
		<link>https://blog.remontti.com.br/648</link>
					<comments>https://blog.remontti.com.br/648#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 04 Jan 2010 19:23:42 +0000</pubDate>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache22]]></category>
		<category><![CDATA[famp]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.remontti.com.br/blog/?p=648</guid>

					<description><![CDATA[<p>Primeiramente vamos instalar o mysql, para não ficarmos com dependências&#8230; para os amigos de primeira viagem no freebsd usamos os ports para instalação de pacotes, vamos suporte que eu esteja querendo instalar algum pacote&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/648">FreeBSD v8.0 +  Apache + Mysql + PHP “FAMP”</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.remontti.com.br/blog/wp-content/uploads/2010/01/postcard2.gif" data-rel="lightbox-gallery-IER7NtN5" data-rl_title="" data-rl_caption=""><img loading="lazy" decoding="async" class="size-full wp-image-655 alignleft" title="" src="https://www.remontti.com.br/blog/wp-content/uploads/2010/01/postcard2.gif" alt="" width="260" height="328" srcset="https://blog.remontti.com.br/wp-content/uploads/2010/01/postcard2.gif 260w, https://blog.remontti.com.br/wp-content/uploads/2010/01/postcard2-237x300.gif 237w" sizes="auto, (max-width: 260px) 100vw, 260px" /></a>Primeiramente vamos instalar o mysql, para não ficarmos com dependências&#8230; para os amigos de primeira viagem no freebsd usamos os ports para instalação de pacotes, vamos suporte que eu esteja querendo instalar algum pacote e não sei seu diretório, entre em http://www.freshports.org/ e em search faça sua busca, não vou entrar em detalhes. Vamos à instalação:</p>
<p><span id="more-648"></span></p>
<h2><strong>ATUALIZANDO PORTS</strong></h2>
<p><span style="color: #ff6600;"># portsnap fetch<br />
# portsnap extract<br />
# portsnap update</span></p>
<h2><strong>MYSQL </strong></h2>
<p><span style="color: #ff6600;"># cd /usr/ports/databases/mysql51-server/<br />
# make install clean</span></p>
<p>Options for libiconv (padrão)</p>
<p>O processo de compilação pode demorar vários minutos&#8230;</p>
<p>Agora vamos ativa-lo, após starta-lo e reiniciar nosso server para verificar se tudo esta ok.</p>
<p><span style="color: #ff6600;"># echo &#8216;mysql_enable=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf<br />
# /usr/local/etc/rc.d/mysql-server start<br />
# reboot<br />
Adicionando uma senha a seu usuário root<br />
# mysqladmin -u root password SUA_SENHA<br />
# history -c</span></p>
<h2><strong>APACHE</strong></h2>
<p><span style="color: #ff6600;"># cd /usr/ports/www/apache22/<br />
# make config </span></p>
<p>Quando for solicitado marque apenas as opções a baixo:</p>
<pre class="remontti-code">Apache2 Options

[X] THREADS               Enable threads support in APR
[X] MYSQL                 Enable MySQL support for apr-dbd
[X] IPV6                  Enable IPv6 support
[X] BDB                   Enable BerkeleyDB dbm
[X] AUTH_BASIC            Enable mod_auth_basic
[X] AUTH_DIGEST           Enable mod_auth_digest
[X] AUTHN_FILE            Enable mod_authn_file
[X] AUTHN_DBD             Enable mod_authn_dbd
[X] AUTHN_DBM             Enable mod_authn_dbm
[X] AUTHN_ANON            Enable mod_authn_anon
[X] AUTHN_DEFAULT         Enable mod_authn_default
[X] AUTHN_ALIAS           Enable mod_authn_alias
[X] AUTHZ_HOST            Enable mod_authz_host
[X] AUTHZ_GROUPFILE       Enable mod_authz_groupfile
[X] AUTHZ_USER            Enable mod_authz_user
[X] AUTHZ_DBM             Enable mod_authz_dbm
[X] AUTHZ_OWNER           Enable mod_authz_owner
[X] AUTHZ_DEFAULT         Enable mod_authz_default
[X] CACHE                 Enable mod_cache
[X] DISK_CACHE            Enable mod_disk_cache
[X] FILE_CACHE            Enable mod_file_cache
[X] DAV                   Enable mod_dav
[X] DAV_FS                Enable mod_dav_fs
[X] ACTIONS               Enable mod_actions
[X] ALIAS                 Enable mod_alias
[X] ASIS                  Enable mod_asis
[X] AUTOINDEX             Enable mod_autoindex
[X] CERN_META             Enable mod_cern_meta
[X] CHARSET_LITE          Enable mod_charset_lite
[Y] DBD                   Enable mod_dbd
[X] DEFLATE               Enable mod_deflate
[X] DIR                   Enable mod_dir
[X] DUMPIO                Enable mod_dumpio
[X] ENV                   Enable mod_env
[X] EXPIRES               Enable mod_expires
[X] HEADERS               Enable mod_headers
[X] IMAGEMAP              Enable mod_imagemap
[X] INCLUDE               Enable mod_include
[X] INFO                  Enable mod_info
[X] LOG_CONFIG            Enable mod_log_config
[X] LOGIO                 Enable mod_logio
[X] MIME                  Enable mod_mime
[X] MIME_MAGIC            Enable mod_mime_magic
[X] NEGOTIATION           Enable mod_negotiation
[X] REWRITE               Enable mod_rewrite
[X] SETENVIF              Enable mod_setenvif
[X] SPELING               Enable mod_speling
[X] STATUS                Enable mod_status
[X] UNIQUE_ID             Enable mod_unique_id
[X] USERDIR               Enable mod_userdir
[X] USERTRACK             Enable mod_usertrack
[X] VHOST_ALIAS           Enable mod_vhost_alias
[X] FILTER                Enable mod_filter
[X] VERSION               Enable mod_version
[X] PROXY                 Enable mod_proxy
[X] SSL                   Enable mod_ssl
[X] SUEXEC                Enable mod_suexec
</pre>
<pre class="remontti-code">Options for perl 5.8

[X] PERL_MALLOC    Use Perl malloc
[X] PERL_64BITINT  Use 64 bit integers (on i386)
[X] USE_PERL       Rewrite links in /usr/bin
</pre>
<pre class="remontti-code">Options for m4 (não marque nada)
[ ] LIBSIGSEGV  Use libsigsegv for better diagnostics</pre>
<p><span style="color: #ff6600;"># make install clean clean-depends</span></p>
<p>Uma vez que o Apache está instalado corretamente, você deve configurar seu servidor. Primeiro, ativar o suporte a SSL e criar o certificado e arquivos fundamentais.</p>
<p><span style="color: #ff6600;"># echo &#8216;apache22_enable=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf</span></p>
<p><span style="color: #ff6600;"># echo &#8216;apache22ssl_enable=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf<br />
# echo &#8216;accf_http_ready=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf<br />
# kldload accf_http</span></p>
<p><span style="color: #ff6600;"># /usr/local/etc/rc.d/apache22 start</span></p>
<p><span style="color: #ff6600;"># cd /usr/local/etc/apache22/<br />
# openssl genrsa -des3 -out server.key 1024</span><br />
Generating RSA private key, 1024 bit long modulus<br />
.++++++<br />
&#8230;&#8230;&#8230;&#8230;&#8230;++++++<br />
e is 65537 (0x10001)<br />
Enter pass phrase for server.key:<strong> SUA_SENHA</strong><br />
Verifying &#8211; Enter pass phrase for server.key: <strong>SUA_SENHA</strong></p>
<p><span style="color: #ff6600;"># openssl req -new -key server.key -out server.csr</span><br />
Enter pass phrase for server.key: <strong>SUA_SENHA</strong><br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter &#8216;.&#8217;, the field will be left blank.<br />
&#8212;&#8211;<br />
Country Name (2 letter code) [AU]:BR<br />
State or Province Name (full name) [Some-State]:Rio Grande do Sul<br />
Locality Name (eg, city) []:Fred. West.<br />
Organization Name (eg, company) [Internet Widgits Pty Ltd]:remontti<br />
Organizational Unit Name (eg, section) []:<br />
Common Name (eg, YOUR name) []:<br />
Email Address []:</p>
<p>Please enter the following &#8216;extra&#8217; attributes<br />
to be sent with your certificate request<br />
A challenge password []:<br />
An optional company name []:</p>
<p><span style="color: #ff6600;"># openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt</span><br />
Signature ok<br />
subject=/C=BR/ST=Rio Grande do Sul/L=Fred. West./O=remontti<br />
Getting Private key<br />
Enter pass phrase for server.key: <strong>SUA_SENHA</strong></p>
<p><span style="color: #ff6600;"># chmod 0400 server.key server.crt<br />
# cd /usr/local/www/apache22/<br />
# mkdir ssl<br />
# cd /usr/local/etc/apache22/<br />
# vi httpd.conf</span></p>
<p>Comente as seguintes linhas:<br />
<span style="color: #3366ff;"><em>#LoadModule authz_owner_module libexec/apache22/mod_authz_owner.so<br />
#LoadModule file_cache_module libexec/apache22/mod_file_cache.so<br />
#LoadModule cache_module libexec/apache22/mod_cache.so<br />
#LoadModule disk_cache_module libexec/apache22/mod_disk_cache.so<br />
#ScriptAlias /cgi-bin/ &#8220;/usr/local/www/apache22/cgi-bin/&#8221;</em></span></p>
<p>Descomente:<br />
<span style="color: #3366ff;">Include etc/apache22/extra/httpd-ssl.conf </span> #(Fazendo isso quando vc reiniciar o serviço ou o Server será solicitado senha)<br />
<span style="color: #3366ff;">AddType text/html .shtml<br />
AddOutputFilter INCLUDES .shtml<br />
MIMEMagicFile etc/apache22/magic </span></p>
<p>Altere:<br />
<span style="color: #3366ff;">ServerAdmin seu@email.com<br />
DirectoryIndex index.html index.htm</span></p>
<p>Adicione:<br />
<span style="color: #3366ff;">ServerSignature Off</span></p>
<p># vi /usr/local/etc/apache22/extra/httpd-ssl.conf<br />
Se vc desejar trocar o diretório do DocumentRoot para o seu diretório entre outras de acordo com suas necessidades.<br />
DocumentRoot &#8220;/usr/local/www/apache22/XXXX&#8221;</p>
<p><span style="color: #ff9900;"># /usr/local/etc/rc.d/apache22 restart</span><br />
Enter pass phrase: <strong>SUA_SENHA do ssl</strong></p>
<h2><strong>PHP5 </strong></h2>
<p><span style="color: #ff6600;"># cd /usr/ports/lang/php5<br />
# make config </span></p>
<pre class="remontti-code">Options for php5 5.2.12   

[X] CLI        Build CLI version
[X] CGI        Build CGI version
[X] APACHE     Build Apache module
[X] DEBUG      Enable debug
[X] SUHOSIN    Enable Suhosin protection system (not for jails)
[X] MULTIBYTE  Enable zend multibyte support
[X] IPV6       Enable ipv6 support
[X] MAILHEAD   Enable mail header patch
[X] REDIRECT   Enable force-cgi-redirect support (CGI only)
[X] DISCARD    Enable discard-path support (CGI only)
[X] FASTCGI    Enable fastcgi support (CGI only)
[X] PATHINFO   Enable path-info-check support (CGI only)</pre>
<p><span style="color: #ff6600;"># make install clean<br />
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini<br />
# echo &#8216;#CONFIGURACAO PHP5&#8217; &gt;&gt; /usr/local/etc/apache22/httpd.conf<br />
# echo &#8216;AddType application/x-httpd-php .php&#8217; &gt;&gt; /usr/local/etc/apache22/httpd.conf<br />
# echo &#8216;AddType application/x-httpd-php-source .phps&#8217; &gt;&gt; /usr/local/etc/apache22/httpd.conf<br />
# vi /usr/local/etc/apache22/httpd.conf</span></p>
<p>Adicione ao DirectoryIndex deixando assim:<br />
<span style="color: #3366ff;">DirectoryIndex index.html index.htm <strong>index.php</strong></span></p>
<p><span style="color: #ff6600;"># vi /usr/local/etc/php.ini</span><br />
<span style="color: #3366ff;">Altere: short_open_tag = On</span></p>
<h2>PHP5-Extensions</h2>
<p><span style="color: #ff6600;"># cd /usr/ports/lang/php5-extensions<br />
# make install clean</span></p>
<pre class="remontti-code">PHP5-Extensions Options
[X] BZ2         bzip2 library support
[X] CTYPE       ctype functions
[X] CURL        CURL support
[X] DBA         dba support
[X] DOM         DOM support
[X] FILEINFO    fileinfo support
[X] FILTER      input filter support
[X] FTP         FTP support
[X] GD          GD library support
[X] HASH        HASH Message Digest Framework
[X] ICONV       iconv support
[X] IMAP        IMAP support
[X] JSON        JavaScript Object Serialization support
[X] MCRYPT      Encryption support
[X] MHASH       Crypto-hashing support
[X] MYSQL       MySQL database support
[X] PDO         PHP Data Objects Interface (PDO)
[X] PDO_SQLITE  PDO sqlite driver
[X] POSIX       POSIX-like functions
[X] SESSION     session support
[X] SHMOP       shmop support
[X] SIMPLEXML   simplexml support
[X] SOAP        SOAP support
[X] SOCKETS     sockets support
[X] SPL         Standard PHP Library
[X] SQLITE      sqlite support
[X] TOKENIZER   tokenizer support
[X] XML         XML support
[X] XMLREADER   XMLReader support
[X] XMLRPC      XMLRPC-EPI support
[X] XMLWRITER   XMLWriter support
[X] ZIP         ZIP support</pre>
<p>Deixe marcado o que esta por padrão para todas as próximas opções</p>
<p><span style="color: #ff6600;"># /usr/local/etc/rc.d/apache22 restart</span></p>
<h2>PhpMyAdmin</h2>
<p><span style="color: #ff6600;"># cd /usr/ports/databases/phpmyadmin211/</span></p>
<p><span style="color: #ff6600;"># make install clean</span></p>
<pre class="remontti-code">Options for phpMyAdmin211 2.11.9.6

[ ] SUPHP     suPHP support
[X] BZ2       bzip2 library support
[X] GDGD 	  library support
[X] OPENSSL   OpenSSL support
[X] PDF       PDFlib support (implies GD)
[X] ZLIB      ZLIB support
[X] MCRYPT    MCrypt library support
[X] MBSTRING  Multi-byte character-set string support</pre>
<p><span style="color: #ff6600;"># cp /usr/local/www/phpMyAdmin211/libraries/config.default.php /usr/local/www/phpMyAdmin211/config.inc.php</span></p>
<p><span style="color: #ff6600;"># vim /usr/local/www/phpMyAdmin211/config.inc.php</span><br />
Altere: <span style="color: #3366ff;">$cfg[&#8216;Servers&#8217;][$i][&#8216;auth_type&#8217;] = &#8216;config&#8217;;</span><br />
para: <span style="color: #3366ff;">$cfg[&#8216;Servers&#8217;][$i][&#8216;auth_type&#8217;] = &#8216;<strong>http</strong>&#8216;;</span></p>
<p>Adicione no httpd.conf<br />
<span style="color: #ff6600;"># /usr/local/etc/apache22/httpd.conf</span></p>
<pre class="remontti-code">Alias /phpmyadmin &quot;/usr/local/www/phpMyAdmin211/&quot;

&lt;Directory &quot;/usr/local/www/phpMyAdmin211/&quot;&gt;
    Options none
    AllowOverride Limit

    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1 ip_da_sua_rede


</pre>
<p>Isso ai galera, abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/648">FreeBSD v8.0 +  Apache + Mysql + PHP “FAMP”</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/648/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
