Server

= Dicas para o SEU SERVIDOR Darkeden =

Tópico 1 - Segurança; Capítulo 1.1 - Alterando senha do sistema; Capítulo 1.2 - Configurando seu mysql; Capítulo 1.3 - Configurando seu SSH; Tópico 2 - Configurando um servidor básico; Capítulo 2.1 - Alterando os arquivos de configuração; Capítulo 2.2 - Dando permissões ao usuário elcastle no mysql; Capítulo 2.3 - Configurando os arquivos de conf; Tópico 3 - Configurando algumas traduções; Capítulo 3.1 - Alterando o nome dos monstros; Capítulo 3.2 - Alterando o nome dos pilares das bíblias; Capítulo 3.3 - Traduzindo as MSG's do server; Tópico 4 - Configurando algumas coisas LEGAIS; Capítulo 4.1 - Colocando apenas 1 server; Capítulo 4.2 - Adicionando vários servers; Capítulo 4.3 - Alterando opções DEFAULT dos items; Tópico 1 - Segurança Em primeiro lugar vamos alterar as senhas e colocar um pouco mais de segurança no nosso servidor. Estou levando em consideração o 1º binário que foi liberado, do qual o usuário e a senha são respectivamente root e 12356. Capítulo 1.1 - Alterando senha do sistema; Já logado na Shell faça como na imagem: Changing password for root Enter the new password (minimum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password: xxxxxx Re-enter new password: xxxxxx Password changed. A senha xxxxxx foi mostrada com o intuito apenas de aprendizagem, mas a mesma não aparece ao ser digitada para alteração. Capítulo 1.2 - Configurando seu mysql; Próxima etapa será alterar a senha de root do mysql, dando mais segurança e setando privilégios para alterar a senha dos outros users, criar novos users, etc. Para isso vamos usar o "mysql_secure_installation" que diz o seguinte em sua descrição: This program enables you to improve the security of your MySQL installation in the following ways: - You can set a password for root accounts. - You can remove root accounts that are accessible from outside the local host. - You can remove anonymous-user accounts. - You can remove the test database, which by default can be accessed by anonymous users. Invoke mysql_secure_installation without arguments: shell> mysql_secure_installation The script will prompt you to determine which actions to perform. Logados na shell vamos fazer de acordo com a imagem: Vamos receber as seguintes informação. Vamos respondendo tudo de acordo como está em negrito: NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALLMySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we’ll need the current password for the root user. If you’ve just installed MySQL, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.Enter current password for root (enter for none):como nao colocamos senha apenas dê um enter OK, successfully used password, moving on…Setting the root password ensures that nobody can log into the MySQL root user without the proper authorization.Set root password? [Y/n] [Y]Y New password: (Digite aqui aquela que será a sua senha) Re-enter new password: (Redigite a senha) Password updated successfully!Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y … Success! Esses comandos de segurança, alterar senha e configuração final do mysql já demonstrei a um tempo atrás no meu wordpress PowerGuide. Após ter feito isso, poderemos então alterar a senha do nosso usuário padrão para o darkeden (elcastle) e/ou criar um novo usuário. Para alterar a senha do usuário faça na shell: (Coloque a senha do root do mysql) mysql> update user set password=password('senha_desejada') where user='elcastle'; mysql> FLUSH PRIVILEGES; mysql> quit; Obs1:. Deixei a shell do mysql em negrito, informando assim que essa parte "mysql>" não deve ser digitada, isso é apenas para demonstrar que estamos na shell do mysql. Obs2:. Para que as alterações referentes ao acesso a banco de dados e ao servidor como um todo tenham efeito, é necessário que ao final de toda rotina seja digitado o comando FLUSH PRIVILEGES, responsável por validar as atualizações no MySQL. Obs3:. Cuidado com o parâmetro "--skip-grant-tables". Este parâmetro tem a finalidade de remover as permissões dos bancos para todos os usuários. Isso é uma faca de 2 gumes, onde apenas o root tem tal parâmetro para poder acessar todos os bancos, os demais usuários devem usar "flush privileges" para setar as permissões (devem = não é obrigatório, mas se torna essencial). Capítulo 1.3 - Configurando seu SSH; Agora vamos mudar toda nossa segurança no SSH. Iremos criar um usuário para acessar o SSH, retirar o acesso direto como root, alterar porta do SSH também. Para isso vamos 1º criar nosso usuário com os seguintes passos: Changing password for apocalipse Enter the new password (minimum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password: xxxxxx Re-enter new password: xxxxxx Password changed. Agora vamos editar o nosso sshd_config: Procure pela linha Port e pela linha PermitRootLogin e altere para o seguinte: Port 2222 PermitRootLogin no Em port você poderá colocar qualquer porta acima de 1024. Abaixo da porta 1024 temos algumas que são FIXAS como serviços, exemplo disso é a porta 80 de http, porta 23 telnet, 21 ftp, 22 ssh (antiga porta do nosso SSH), por isso usamos de preferências as portas acima de 1024. Fazendo essas alterações já conseguimos mais segurança no SSH quando alteramos o mesmo para outra porta, conseguimos mais segurança proibindo o acesso direto do root e poderíamos ter mais ainda segurança dizendo que só 1 user teria acesso ao SSH, assim como setar uma chave criptografada em SSL para o mesmo. Mas o intuito aqui é melhorar a segurança e não dar uma aula completa de linux ou segurança. Após logar no SSH como usuário comum, você poderá finalmente logar como root digitando o seguinte comando: Password: xxxxxx Tópico 2 - Configurando um servidor básico; Capítulo 2.1 - Alterando os arquivos de configuração; Antes de começarmos com todas as configurações, vou primeiro dar umas dicas simples sobre o "vi" (Visual Interface) que nada mais é do que um editor em modo texto. i ou Insert = Libera o texto para edição no caractere atual; : %s/palavra1/palavra2 = Substitui a palavra1 pela palavra2; : q = sair do editor; : q! = sair do editor sem salvar; : wq = salvar e sair do editor; : delete = deleta a linha atual; O comando :%s/palavra1/palavra2 é muito util para alterar uma palavra por outra, como por exemplo alterar a senha elca110 por elca220 você faria: : %s/elca110/elca220 Fazendo isso toda palavra do texto que seja elca110 irá ser mudada para elca220, economizando assim muito tempo na alteração de várias palavras, inclusive do ip. Depois dessa rápida demonstração de como usar o VI, vamos agora começar a configurar nossa rede. Para isso vamos usar um IP como modelo: IP = 123.123.123.124 GW = 123.123.123.121 DNS Primário = 123.123.123.122 DNS Secundário = 123.123.123.123 Com esses dados (apenas para nosso exemplo), podemos configurar os 2 principais arquivos de nossa rede, que são: resolv.conf e ifcfg-eth0 No resolv.conf como o nome já diz é para "resolver" algo, nesse caso nosso endereços, do qual chamamos de DNS e em ifcfg-eth0 vamos configurar nossa "config iface" que é nada mais é que a configuração da nossa interface network e dizemos que a interface é a eth0. Editando o resolv.conf: vi /etc/resolv.conf Coloque os dados dentro (seguindo nosso exemplo): nameserver 123.123.123.122 nameserver 123.123.123.123 Para salvar e sair clique em ESC e depois digite :wq seguido de enter. Editando o ifcfg-eth0: vi /etc/sysconfig/network-scripts/ifcfg-eth0 Faça semelhante ao modelo: DEVICE=eth0 BOOTPROTO=static BROADCAST=123.123.123.255 IPADDR=123.123.123.124 NETMASK=255.255.255.0 NETWORK=123.123.123.0 GATEWAY=123.123.123.121 ONBOOT=yes Para salvar e sair clique em ESC e depois digite :wq seguido de enter. Com esse simples passos acabamos de configurar toda nossa rede. A baixo segue mais algumas formas de configurar uma rede: ifconfig eth0 123.123.123.124 netmask 255.255.255.0 route add default gw 123.123.123.121 O único problema desses passos é perder a configuração ONBOOT, para resolver isso podemos jogar tudo no rc.local (/etc/rc.local). Na sheel faça: echo "ifconfig eth0 123.123.123.124 netmask 255.255.255.0" > /etc/rc.local echo "route add default gw 123.123.123.121" >> /etc/rc.local echo "nameserver 123.123.123.122" > /etc/resolv.conf echo "nameserver 123.123.123.123" >> /etc/resolv.conf Vejam que usei o "echo" para inserir nos arquivos rc.local e resolv.conf, mas poderiamos abrir os 2 arquivos com o vi e edita-los normalmente como antes. Para explicar também o uso do ">" e do ">>". Caso você use ">", irá inserir uma palavra ou frase no arquivo escolhido, mas irá apagar tudo que já existir no arquivo. Por esse motivo ao inserir a 2 linha eu usei ">>", que irá inserir sem apagar todo o resto. Por isso sempre use ">>", para evitar apagar dados importante de um documento. Capítulo 2.2 - Dando permissões ao usuário elcastle no mysql; Como nosso mysql já possui segurança adequada, senha no root e permissões certinhas, poderemos então alterar a senha do elcastle sem "bugar" o usuário, que é o que acontece ao mudar sua senha sem um sistema de banco de dados 100% configurado. Vamos criar o nosso usuário elcastle e colocar a senha 123456: insert into user (Host, User, Password) values ('123.123.123.124', 'elcastle', PASSWORD('elca110')); insert into user (Host, User, Password) values ('localhost.localdomain', 'elcastle', PASSWORD('elca110')); grant all on DARKEDEN.* to 'elcastle'@'123.123.123.124'; grant all on USERINFO.* to 'elcastle'@'123.123.123.124'; grant all on DARKEDEN.* to 'elcastle'@'localhost.localdomain'; grant all on USERINFO.* to 'elcastle'@'localhost.localdomain'; flush privileges; quit; Agora caso queira alterar a senha do elcastle, podemos fazer isso no Navicat ou diretamente na shell do mysql. Para isso acesse a shell do mysql como root e o banco mysql: mysql -u root -p mysql Enter password: 123456 Fazendo isso estaremos logados no mysql dentro do banco mysql (que é o banco responsável por todos os logins, senhas, permissões, etc). Agora mudar a senha do usuário elcastle: mysql> UPDATE user SET Password=PASSWORD('nova_senha') WHERE User='elcastle'; mysql> FLUSH PRIVILEGES; Já sabendo como adicionar um usuário, como alterar a senha de um usuário e como proteger seu banco, poderemos agora configurar o banco DARKEDEN com os IP's corretos e usuários: mysql -u root -p DARKEDEN Enter password: 123456 update GameServerInfo set IP='123.123.123.124'; update WorldDBInfo set Host='123.123.123.124'; Obs:. Se você alterou a senha do elcastle, terá que alterar aqui também; mysql -u root -p DARKEDEN Enter password: 123456 update WorldDBInfo set Password='nova_senha_elcastle'; Caso você queira um novo usuário, poderá fazer: GRANT ALL PRIVILEGES ON DARKEDEN.* TO 'cleison'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON DARKEDEN.* TO 'cleison'@'localhost.localdomain' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON DARKEDEN.* TO 'cleison'@'123.123.123.124' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON USERINFO.* TO 'cleison'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON USERINFO.* TO 'cleison'@'localhost.localdomain' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON USERINFO.* TO 'cleison'@'123.123.123.124' IDENTIFIED BY '123456'; E depois alterar o nosso WorldDBInfo: mysql -u root -p DARKEDEN Enter password: 123456 update WorldDBInfo set User='cleison'; Obs:. Exemplo usado com o nome cleison e senha 123456; Se depois de tudo feito você encontrar a mensagem remota de negado ou permission denied (usando Navicat ou outro gerenciador qualquer), você poderá setar o host do qual quer acessar o banco. Vamos supor que estou usando o ip 123.123.123.125 e quero acessar nosso servidor 123.123.123.124, logo faremos: GRANT ALL PRIVILEGES ON DARKEDEN.* TO 'cleison'@'123.123.123.125' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON USERINFO.* TO 'cleison'@'123.123.123.125' IDENTIFIED BY '123456'; Isso dará permissão de acesso garantido ao computador com ip 123.123.123.125 Capítulo 2.3 - Configurando os arquivos de conf; Não irei explicar muito afundo aqui, pois o intuito inicial é fazer um servidor básico. Com as informações de segurança, mysql e vi, podemos agora montar um servidor básico com segurança. Editando o 1º arquivo: vi /home/darkeden/vs/conf/excel96-gameserver.conf Já dentro do arquivo, vamos alterar o IP da seguinte forma: : %s/192.168.1.123/123.123.123.124 Caso queira alterar o usuário, faça: : %s/elcastle/cleison Caso queira alterar a senha, faça: : %s/elca110/123456 Após isso podemos subir o nosso servidor com o comando: ./start Isso se você estiver dentro do diretório /root Tópico 3 - Configurando algumas traduções; Capítulo 3.1 - Alterando o nome dos monstros; Essa parte é muito simples. Aqui vou apenas dar um exemplo de como alterar todos os monstros para o nome "teste". Sabendo como alterar, você pode ir alterando todos para o nome que quiser, um por um: mysql -u root -p DARKEDEN Enter password: 123456 update LastNameInfo set Name='teste'; Capítulo 3.2 - Alterando o nome dos pilares das bíblias; Outra parte super simples é alterar o nome dos pilares das bíblias dentro de cada castle. Sem a tradução temos que ver o símbolo no pilar e comparar com o símbolo da bíblia, assim descobrindo o pilar correto. Agora tudo fica mais fácil com o nome certinho. Segue a table completa ou apenas o update: Table Completa Citação: INSERT INTO `ShrineInfo` VALUES ('0', 'Armega', '0', '1201', '56', '61', '526', '1204', '64', '61', '526', '1205', '64', '61', '526', '72', '116', '85', '538', '0'); INSERT INTO `ShrineInfo` VALUES ('1', 'Mihole', '1', '1201', '61', '78', '527', '1204', '67', '74', '527', '1205', '67', '74', '527', '72', '172', '143', '539', '0'); INSERT INTO `ShrineInfo` VALUES ('2', 'Kiro', '2', '1201', '71', '68', '528', '1204', '55', '70', '528', '1205', '55', '70', '528', '72', '73', '130', '540', '0'); INSERT INTO `ShrineInfo` VALUES ('3', 'Ini', '3', '1203', '76', '52', '529', '1202', '85', '61', '529', '1206', '85', '61', '529', '72', '173', '116', '541', '0'); INSERT INTO `ShrineInfo` VALUES ('4', 'Gregori', '4', '1203', '80', '55', '530', '1202', '78', '48', '530', '1206', '78', '48', '530', '72', '116', '173', '542', '0'); INSERT INTO `ShrineInfo` VALUES ('5', 'Concilia', '5', '1203', '84', '61', '531', '1202', '86', '56', '531', '1206', '86', '56', '531', '72', '129', '72', '543', '0'); INSERT INTO `ShrineInfo` VALUES ('6', 'Legios', '6', '1203', '91', '43', '532', '1202', '81', '60', '532', '1206', '81', '60', '532', '72', '129', '186', '544', '0'); INSERT INTO `ShrineInfo` VALUES ('7', 'Hillel', '7', '1203', '92', '50', '533', '1202', '76', '55', '533', '1206', '76', '55', '533', '72', '142', '85', '545', '0'); INSERT INTO `ShrineInfo` VALUES ('8', 'Jave', '8', '1203', '84', '43', '534', '1202', '75', '51', '534', '1206', '75', '51', '534', '72', '86', '143', '546', '0'); INSERT INTO `ShrineInfo` VALUES ('9', 'Nema', '9', '1201', '68', '75', '535', '1204', '57', '63', '535', '1205', '57', '63', '535', '72', '185', '130', '547', '0'); INSERT INTO `ShrineInfo` VALUES ('10', 'Arosa', '10', '1201', '64', '59', '536', '1204', '60', '76', '536', '1205', '60', '76', '536', '72', '86', '117', '548', '0'); INSERT INTO `ShrineInfo` VALUES ('11', 'Chaspa', '11', '1201', '54', '69', '537', '1204', '69', '67', '537', '1205', '69', '67', '537', '72', '142', '173', '549', '0'); Update da table Citação: update ShrineInfo set Name='Armega' where ID='0'; update ShrineInfo set Name='Mihole' where ID='1'; update ShrineInfo set Name='Kiro' where ID='2'; update ShrineInfo set Name='Ini' where ID='3'; update ShrineInfo set Name='Gregori' where ID='4'; update ShrineInfo set Name='Concilia' where ID='5'; update ShrineInfo set Name='Legios' where ID='6'; update ShrineInfo set Name='Hillel' where ID='7'; update ShrineInfo set Name='Jave' where ID='8'; update ShrineInfo set Name='Nema' where ID='9'; update ShrineInfo set Name='Arosa' where ID='10'; update ShrineInfo set Name='Chaspa' where ID='11'; Capítulo 3.3 - Traduzindo as MSG's do server; Nesse capitulo irei apenas dizer onde traduzir as msg's do server. Como o arquivo tem 379 linhas e todas em KOREANO, não terei tempo de traduzir 1 por 1, teria sim condições de traduzir todas com amigos, quem sabe em alguns dias. Como isso está meio que inviável agora, direi apenas qual tabela modificar. Boa sorte ao edita-la, apresento a vocês a table GSStringPool Com essa tradução, você terá por exemplo a msg: Ghost ON ou Ghost Off Também receberá a msg em inglês de Caligo e não mais em KR. As msg's de lair, GDR, etc... Todas em inglês, assim como tudo que GDR fala virá em inglês. Bom divertimento na tradução Tópico 4 - Configurando algumas coisas LEGAIS; Capítulo 4.1 - Colocando apenas 1 server; Mais uma coisa simples de fazer é tirar o server 2 do seu Private Server. Iremos apenas mudar um número em um dos arquivos conf e alterar 2 tables. Temos por exemplo as table GameServerGroupInfo e GameServerInfo, nas duas iremos apenas remover as 2 últimas linhas de cada: Citação: GameServerGroupInfo 0 1 Eternity 1 1 1 1 Eternity 2 0 Citação: GameServerInfo 1 game1 123.123.123.124 9998 9997 1 0 0 1 game2 123.123.123.124 9998 9997 1 1 0 Ficando assim: Citação: GameServerGroupInfo 0 1 Eternity 1 1 Citação: 1 game1 123.123.123.124 9998 9997 1 0 0 Após fazer isso iremos editar nosso excel96-gameserver.conf e alterar "ServerID = 1" para "ServerID = 0" Bingo... Agora temos apenas 1 server funcional, sem aquele 2 channel bugado. Capítulo 4.2 - Adicionando vários canais (channel's) no seu servidor; O que iremos fazer aqui é diferente do que foi feito no Capítulo 4.1. Lá tiramos o canal 2 bugado, aqui vamos deixa-lo 100% funcionando Primeiro precisamos saber no que vamos mecher para efetuar tal façanha. Para isso vamos alterar 2 tabelas no Banco de dados (ou deixar caso já exista o 2 canal), vamos ter mais 1 gameserver e mais 1 conf. Além disso teremos que ter cuidado com Portas, pois não podemos usar a mesma porta para 2 servers (gameserver's) no mesmo Servidor. Vamos criar 3 novos arquivos e edita-los agora: Citação: cd /home/darkeden/vs/bin cp gameserver gameserver2 cp game1 game2 vi game2 E altere a linha dentro para: Citação: ./daemonctl ./gameserver2 -f ../conf/excel96-gameserver2.conf & Agora vamos criar nossa nova conf: Citação: cd /home/darkeden/vs/conf cp excel96-gameserver.conf excel96-gameserver2.conf vi gameserver2.conf Agora encontre a seguinte parte: Citação: TCPPort : 9998 MonitorClientIP1 : 123.123.123.124 MonitorClient1UDPORT : 9876 MonitorClientIP2 : 192.168.5.2 MonitorClient2UDPORT : 9876 LoginServerIP: 123.123.123.124 LoginServerUDPPort : 9996 LoginServerBaseUDPPort : 9800 LoginServerUDPPortNum : 1 GameServerUDPPort : 9997 E altere a parte vermelha para a parte "azul" do exemplo a seguir: Citação: TCPPort : 9996 MonitorClientIP1 : 123.123.123.124 MonitorClient1UDPORT : 9876 MonitorClientIP2 : 192.168.5.2 MonitorClient2UDPORT : 9876 LoginServerIP: 123.123.123.124 LoginServerUDPPort : 9996 LoginServerBaseUDPPort : 9800 LoginServerUDPPortNum : 1 GameServerUDPPort : 9997 Altere também: Citação: ServerCount : 1 para ServerCount : 2 ServerID : 1 para ServerID : 1 Agora vamos editar o excel96-gameserver.conf e alterar o ServerCount: Citação: ServerCount : 1 para ServerCount : 2 Após essas modificações adicione no banco de dados: Citação: INSERT INTO `GameServerGroupInfo` VALUES ('1', '1', 'Canal 2', '0'); INSERT INTO `GameServerInfo` VALUES ('1', 'game2', '123.123.123.124', '[red]9996[/red]', '[red]9995[/red]', '1', '1', '0'); Veja que coloquei as portas em vermelho para facilitar o entendimento. Agora vamos modificar o nosso start. Para isso vamos só adicionar uma entrada para o game2, no final do arquivo faça: Citação: sleep 1 ./game2 SIG
 * 1) passwd root
 * 1) mysql_secure_installation
 * 1) mysql -u root mysql -p
 * 1) useradd apocalipse
 * 2) passwd apocalipse
 * 1) vim /etc/ssh/sshd_config
 * 1) su -

G