=================================================== FREEBSD =================================================== SEGURANCA NA MANIPULACAO DE ARQUIVOS ==================================== Editar ~/.cshrc e acrescentar alias cp cp -i alias mv mv -i alias rm rm -i ACENTOS NO XTERM E AMBIENTE GRAFICO =================================== Editar arquivo ~/.cshrc e acrescentar setenv LANG pt_BR.ISO8859-1 setenv MM_CHARSET pt_BR.ISO8859-1 setenv LC_ALL pt_BR.ISO8859-1 Editar arquivo ~/.xinitrc e acrescentar setxkbmap -model abnt2 -layout br -variant abnt2 exec startxfce4 ATUALIZACAO DE TODO O SISTEMA OPERACIONAL ========================================= (algumas tarefas so precisam ser feitas na primeira vez) cd /usr/ports/net/csup make install clean rehash Criar arquivo /usr/local/etc/src-supfile com o conteudo: #------------ inicio do arquivo ----------------- *default host=cvsup2.br.freebsd.org *default base=/var/db *default prefix=/usr *default release=cvs tag=RELENG_6 *default delete use-rel-suffix *default compress src-all #----------- final do arquivo ------------------- cd /usr/ports/sysutils/fastest_cvsup && make install clean executar fastest_cvsup -c br para descobrir qual o mirror mais rapido. Alterar o mirror (host) no arquivo citado anteriormente. csup -g -L 2 /usr/local/etc/src-supfile (esta linha pode ser colocada no cron do root) Com isso faz-se o download do novo codigo fonte do FreeBSD. Para recompilar o SO e o Kernel faca o seguinte: ------------------------------------------------ cd /usr/src make -j4 buildworld (esse demora bastante) make buildkernel KERNCONF=GENERIC make installkernel KERNCONF=GENERIC mergemaster -p (esse cria os novos usuarios e grupos necessarios para a nova versao) make TMPDIR=/var/tmp installworld mergemaster -Pi (esse entra numa interface para checar arquivos de configuracao novos e velhos, substituir ou nao, etc) reboot Agora deve ser feita uma limpeza no sistema: cd /usr/src make check-old Faca um backup de todos os arquivos que o make check-old retornar make delete-old make delete-old-libs Para atualizar os ports: ------------------------ portsnap fetch extract (baixa a nova arvore de ports) (da segunda vez em diante faca portsnap fetch update) Leia o arquivo /usr/ports/UPDATING para ver recomendacoes dos novos ports. Para garantir a seguranca dos produtos que serao instalados: cd /usr/ports/security/portaudit make install clean rehash portaudit -Fa (o poraudit sera incorporado ao /etc/periodic) cd /usr/ports/sysutils/portupgrade && make install clean portversion -vL= (mostra quais ports precisam ser atualizados) Opcoes para atualizacao: portupgrade -a (atualiza tudo) portupgrade pacote1 pacote2 pacote3 (atualiza somente os pacotes especificados) portupgrade -Pa (atualiza tudo usando pacotes pre-compilados, se possivel) portupgrade -PPa (usa somente pacotes pre-compilados) O portupgrade, ao tentar atualizar, faz um backup da versao anterior e a restaura, caso a instalacao do novo pacote der errado. Importante: Se for atualizar o Perl para nova versao, entao de os comandos abaixo para atualizar as libs dentro da nova versao do perl: portupgrade perl perl-after-upgrade -f DICAS DE SEGURANCA =================== Edite /etc/ttys e altere os terminais de secure para insecure (isso fara com que seja pedida senha de root quando se tentar entrar no modo single-user, login direto de root via telnet ou rlogin) Edite /etc/ssh/sshd_config e coloque as clausulas: PermitRootLogin no AllowGroups grupo1 grupo2 ... AllowUsers user1 user2 ... Coloque no /etc/group , no grupo wheel somente os usuarios que poderao se tornar root com o comando su. Edite arquivo /etc/hosts.allow Comente a linha #ALL : ALL : allow De permissao somente para servicos e IPs necessarios IPs que ficarem tentando entrar no ssh (ver /var/log/messages), coloque sshd : : deny No final do arquivo coloque ALL : ALL : deny PARA GERENCIAR PACOTES INSTALADOS ================================= Via compilacao -------------- Para localizar dados do pacote (nome, caminho, etc.) cd /usr/ports make search name=pacote (key tambem busca mais ao inves do name) Para instalar/desinstalar: -------------------------- Se for a 1a. vez: entrar no diretorio e dar os comandos make install clean ou make deinstall clean (para desinstalar) Se for da 2a. vez em diante: entrar no diretorio e dar os comandos make deinstall, make rmconfig e depois make reinstall clean As vezes ao tentar compilar, da mensagem de erro falando para desinstalar e reinstalar determinado pacote. Estando no mesmo diretorio de o comando (exemplo): (cd /usr/ports/pacotexyz && make deinstall && make reinstall) Depois continue com make reinstall no pacote que estava tentando instalar. Via pacote binario ------------------ pkg_info | grep nome_do_pacote para saber o que esta instalado pkg_add -r nome_do_pacote instala o pacote pkg_delete nome_do_pacote desinstala o pacote pkg_info -L nome_completo_do_pacote mostra os arquivos dele INSTALAR DRIVERS ========================================== Os drivers a serem carregados pelo kernel fica em /boot/kernel Exemplo: /boot/kernel/if_myk.ko Porem, e' preciso haver uma referencia a ele no arquivo /boot/loader.conf semelhante aos padroes do /boot/defaults/loader.conf Exemplo:if_myk_load="YES" Para carregar na hora o driver: kldload if_myk.ko POSTGRESQL =========================================== Apos instalar o ports via compilacao, adicionar a linha no rc.conf postgresql_enable="YES" Depois entrar como usuario pgsql (su -l pgsql) e dar o comando initdb -D data --encoding=LATIN1 --locale=pt_BR Para iniciar o servico, entre como root e de o comando /usr/local/etc/rc.d/postgresql start (se for preciso reler o arquivo pg_hba.conf use /usr/local/etc/rc.d/postgresql reload) Obs.: Nao altere as configuracoes do shell do usuario pgsql. Criar arquivo ~pgsql/.pgpass contendo *:*:*:pgsql:senha Editar ~pgsql/data/postgresql.conf e alterar: listen_addresses = '*' Editar ~pgsql/data/pg_hba.conf e alterar: # Acesso Local local all pgsql md5 host all pgsql 127.0.0.1/32 md5 host cht cht 127.0.0.1/32 md5 host chtdev cht 127.0.0.1/32 md5 host cirp-telefonia utelefonia 127.0.0.1/32 md5 host cirp-orcam upadrao 127.0.0.1/32 md5 host cirp-cursos usercurso 127.0.0.1/32 md5 host cirp_paradas ucirp 127.0.0.1/32 md5 host cirp_glossario daniel 127.0.0.1/32 md5 # Acesso Remoto host cirp-orcam upadrao 143.107.200.0/24 md5 host cirp-telefonia utelefonia 143.107.200.0/24 md5 host cirp_glossario daniel 143.107.200.30/32 md5 host cirp_glossario daniel 143.107.200.64/32 md5 host cirp-cursos pgsql 143.107.200.59/32 md5 APACHE COM SSL ============================== cd /usr/ports/security/openssl make install clean cd /usr/ports/www/apache13-modssl make make certificate TYPE=custom ( Responder na ordem: R, BR, Sao Paulo, Ribeirao Preto, USP, CIRP, CIRP, alf@cirp.usp.br, 3650, 3 ---> serao criados: ca.key, ca.csr e ca.crt) ( Responder na ordem: BR, Sao Paulo, Ribeirao Preto, USP, CIRP, 143.107.200.111 (ou o nome no DNS), alf@cirp.usp.br, 3650, 3 ---> serao criados: server.key, server.csr e server.crt) n n (com os 2 n acima a pass phrase nao sera criada, o que e melhor para startar o servico automaticamente) make install apachectl startssl Editar /usr/local/etc/apache/httpd.conf e checar as diretivas: ServerAdmin alf@cirp.usp.br ServerName coral.cirp.usp.br #DocumentRoot "/usr/local/www/data" ---> comentar DocumentRoot "/home/sistemas/sistemas" UseCanonicalName On ServerSignature Off (dentro do ): Alias /sistemas "/home/sistemas/sistemas/" Alias /scripts "/home/sistemas/sistemas/" Alias /henrique/ "/home/henrique/web/" Alias /glossario "/home/daniel/paginasphp/" Ir na sessao VirtualHost _default_:443 e mudar: DocumentRoot "/home/sistemas/sistemas" ServerName coral.cirp.usp.br ServerAdmin alf@cirp.usp.br PHP ========================== cd /usr/ports/lang/php5 make install clean cd /usr/ports/lang/php5-extensions (escolher os pacotes necessarios e postgres) make install clean Acrescentar no /usr/local/etc/apache/httpsd.conf nas respectivas sessoes: LoadModule php5_module libexec/apache/libphp5.so AddModule mod_php5.c AddType application/x-httpd-php .php .phtml Acrescentar a linha a seguir na sessao DirectoryIndex index.html index.php Ver se existe o arquivo /usr/local/libexec/apache/libphp5.so Editar o /usr/local/etc/php.ini e checar as diretivas : engine = On short_open_tab = On disable_functions = phpinfo expose_php = Off error_reporting = E_ALL & ~E_NOTICE display_errors = On track_error = On register_globals = Off magic_quotes_gpc = On magic_quotes_runtime = Off include_path = ".:/php/includes:/home/sistemas/sistemas/includes:/home/sistemas/sistemas/classes:/usr/local/share/pear" (se for usar upload): file_uploads = On /// upload_tmp_dir = /usr/local/www/uploads /// upload_max_filesize = 5M session.save_handler = files session.save_path = /usr/local/www/sess session.use_cookies = 1 session.use_only_cookies = 1 session.name = SCIRP session.gc_probability = 100 session.gc_divisor = 100 session.gc_maxlifetime = 900 ;15 minutos session.cache_expire = 15 session.use_trans_sid = 0 Reiniciar Apache ATENCAO: criar os diretorios /usr/local/www/sess e /usr/local/www/uploads e dar os comandos cd /usr/local/www chown -R root sess chgrp -R www sess chmod -R 770 sess Colocar configuracao de seguranca do PHP e acrescentar as tags abaixo no httpd.conf php_flag display_errors On OBS.: Se ao tentar usar o postgres pelo php der uma mensagem de erro "...host ::1", edite o arquivo /etc/hosts e tire a linha ::1, que e´ so para IPV6 PEAR ======================== Verifique se no php.ini, a clausula open_basedir esta vazia (liberada). Se nao tiver nao da para instalar o pear. cd /usr/ports/devel/pear make install clean pear list pear install Mail pear install Mail_Mime pear install Mail_Queue pear install Net_SMTP Acrescentar no /usr/local/etc/php.ini o Path: /usr/local/share/pear PREPARANDO O AMBIENTE DE DESENVOLVIMENTO ========================================== Criar usuario sistemas, com grupo sistemas. No grupo sistemas, acrescentar o usuario pgsql. No grupo www, acrescentar o usuario sistemas. Editar ~sistemas/.cshrc e acrescentar ou comentar: alias rm rm -i alias cp cp -i alias mv mv -i umask 27 #setenv DISPLAY `echo $REMOTEHOST`:0 #fortune -e murphy set prompt="`whoami`@`hostname -s`> " setenv LANG pt_BR.ISO8859-1 setenv MM_CHARSET pt_BR.ISO8859-1 setenv LC_ALL pt_BR.ISO8859-1 (dica: de o comando locale -a para saber quais linguagens tem disponivel no so) cd ~sistemas chown -R sistemas sistemas chgrp -R www sistemas chmod 750 sistemas Criar arquivo de inicializacao do VI ~sistemas/.exrc contendo: set tabstop=4 set ic ESQUEMATIZANDO BACKUPS ========================== cd /usr/ports/shells/bash make install Criar arquivo ~sistemas/.nsmbrc contendo: [default] username=alf nbns=143.107.200.92 [CALCEDONIA] addr=143.107.200.92 [CALCEDONIA:ALF] password=$$12f51462c3f6f43 (o password e' gerado pelo comando smbutil crypt asenha) Verificar arquivos do servidor de aplicacoes em ~sistemas : /home/sistemas/sistemas/mailAvisos.php (envia e-mails com avisos passados por parametro) /home/sistemas/checaselect.sh (verifica se os precos dos softwares select mudaram e avisa via e-mail) /home/sistemas/bkpsistemas.sh (faz backup dos sistemas em php para a calcedonia via compartilhamento samba) Usar cron para agendar os backups do banco de dados e o vaccum, exemplo: 0 0 * * * vacuumdb -a -f 0 3,7,10,14,19,23 * * * /usr/local/pgsql/bkppgsql.sh 0 2,5,9,13,17,21 * * * /usr/local/pgsql/bkppglog.sh 0 12 * * * vacuumdb -a -z HORARIO DE VERAO ================= #vi /usr/share/zoneinfo/verao2006.zic Rule Brazil 2006 only - Nov 05 00:00 1 D Rule Brazil 2007 only - Feb 25 00:00 0 S Zone hv2006 -3:00 Brazil BR%sT #cd /usr/share/zoneinfo #zic verao2006.zic #mv /etc/localtime /etc/localtime.old #ln -s /usr/share/zoneinfo/hv2006 /etc/localtime Obs.: ntpdate ntp.cais.rnp.br (para sincronizar o relógio com o CAIS) ntpdate ntp.usp.br (sincronizar o relógio com RNP.USP.BR) CONFIGURACAO DO CUPS ===================== Cups configs no /etc/rc.conf cupsd_enable="YES" lpd_enable="YES" lpd_program="/usr/local/sbin/cupsd" lpd_flags="-c /usr/local/etc/cups/cupsd.conf" Para imprimir: /usr/local/bin/lpr -Plexmark $> more ~alf/.xpdfrc : psPaperSize A4 psDuplex no psLevel level2 psEmbedType1Fonts yes psEmbedTrueTypeFonts yes psFile "| /usr/local/bin/lpr -Plexmark" ====================================================================== Instalações típicas para um Servidor de E-Mails, com Postfix Os pacotes básicos instalados são: - Openwebmail - Qpopper - Postgrey - Pflogsumm - Apache + Openssl - cyrus-sasl - cyrus-sasl-saslauthd - Compilar o Kernel Outros pacotes recomendados: - lsof - nmap - lynx - mutt - Pftop - unzip Configurar as proteções do SSH: Controlar as conexões externas de SSH e demais serviços. Arquivo : /etc/ssh/sshd_config Compilar o Kernel e habilitar um Firewall PF Configurar o PF no arquivo /etc/rc.conf e no /etc/pf.conf Configurar as regras do PF de modo a liberar SMTP e POP3 para as máquinas internas e externas. Bloquear serviços internos a hosts não autorizados. ====================================================================== Arquivos exemplo de configuração do Postfix: http://granito2.cirp.usp.br/Postfix Tutorial Postfix + Antivirus + AntiSPAM http://granito2.cirp.usp.br/Tutorial.Postfix.CIRP.pdf Material didático dos cursos do CIRP: http://granito2.cirp.usp.br ======================================================================