'Server/CentOS'에 해당하는 글 66건

tomcat 80 port

Server/CentOS 2016. 6. 9. 00:49

톰캣의 8080 포트를 80 포트로 변경하는 방법들은 운영체제별로, 배포판 별로 조금씩 다르다.

레드햇 계열에서는 다음의 방법들이 있다.

  1. apache 연동
  2. authbind
  3. iptables


이 중에서 아무 설치없이 바로 사용할 수 있는 iptables 를 사용해 봤다.


# vi /etc/init.d/iptables
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
 
# /etc/init.d/iptables save
# /etc/init.d/iptables restart
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080
cs


엄밀히 말하자면 tomcat 의 기본 포트를 변경한 것이 아니라,

서버로 들어오는 80 포트를 8080 포트로 리다이렉트 시킨 것이다. ^^




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Linux 에는 OpenJDK 가 기본적으로 깔려 있다.

일반적으로 개발PC 등에서 JAVA 개발을 할 경우 대부분(?) OracleJDK 를 사용할 것이다.

배포 서버에 Spring 작업물을 업로드 하고 나니, 역시나 오류가 발생했다.

처음엔 톰캣이 잘못된줄 알았다. 패키지로 새로 깔았다가 바이너리로 다시 깔았다가... 문제는 OpenJDK 버전이었다.


오픈소스 프로젝트라 그런가 리눅스 패키지에는 OpenJDK 만 사용하는 것 같다.

최신 OpenJDK 를 설치해도 되지만 로컬과 동일하게 OracleJDK 1.8.0 을 바이너리 설치하고 시스템에서 OpenJDK 대신 OracleJDK 를 사용하도록 설정하였다.

Tomcat 을 패키지 설치하면 디펜던시 패키지로 OpenJDK 1.7.0 을 설치하므로 버전체크도 해보고 OracleJDK 로 바꿀 필요가 있는 경우 변경 작업이 필요하다.



1. OracleJDK 바이너리 설치


# java -version
java version "1.7.0_101"
OpenJDK Runtime Environment (amzn-2.6.6.1.67.amzn1-x86_64 u101-b00)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
 
# cd /usr/local/src
# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz
# tar zxvf jdk-8u92-linux-x64.tar.gz
# mv jdk1.8.0_92 /usr/local/
# ln -s /usr/local/jdk1.8.0_92 /usr/local/java
cs



2. 환경 변수 설정


# vi /etc/profile
JAVA_HOME=/usr/local/java
PATH=$PATH:/usr/local/java/bin:/usr/local/java/jre/bin
export PATH
 
# source /etc/profile
cs



3. 시스템에서 사용할 java 지정


# alternatives --install /usr/bin/java java /usr/local/java/bin/java 100
# alternatives --config java
 
There are 2 programs which provide 'java'.
 
  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/local/java/bin/java
 
Enter to keep the current selection[+], or type selection number: 2
 
# java -version
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
cs



4. 톰캣 설치


# yum install tomcat8
# /etc/init.d/tomcat8 start
cs



5. 브라우저 확인


http://ip:8080




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

fail2ban

Server/CentOS 2014. 5. 29. 13:01

# secure log
May 28 11:18:28 oops4u saslauthd[31802]: pam_unix(smtp:auth): check pass; user unknown
May 28 11:18:28 oops4u saslauthd[31802]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
May 28 11:18:28 oops4u saslauthd[31802]: pam_succeed_if(smtp:auth): error retrieving information about user library

 

# message log
May 28 13:03:11 oops4u saslauthd[31804]: do_auth         : auth failure: [user=sale] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
May 28 13:03:16 oops4u saslauthd[31802]: do_auth         : auth failure: [user=sale] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
May 28 13:03:21 oops4u saslauthd[31801]: do_auth         : auth failure: [user=sale] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]

 

# mail log
May 28 12:04:50 oops4u sendmail[4749]: s4P34kTF004749: wvps46-163-109-6.dedicated.hosteurope.de [46.163.109.6] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
May 28 12:05:34 oops4u sendmail[4827]: s4P35UXD004827: www.igbce-og-agv.de [46.163.109.83] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
May 28 12:06:14 oops4u sendmail[4836]: s4P36B47004836: wvps46-163-109-86.dedicated.hosteurope.de [46.163.109.86] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA

 

정말 지긋지긋하게 보아온 로그.
맘고생했던 기간에 비해 아주 간단하게 해결됐습니다.

 

 

fail2ban

 

username/password 무차별 침입 시도(Brute-force, dictionary attack)를 방지하기 위한 툴.
log 파일에서 흔히 볼 수 있는 패턴들에 대하여 방화벽에 새로운 규칙(ip 차단 등)을 추가할 수 있습니다.
상세한 설치 메뉴얼은 fail2ban 홈페이지를 참조합니다.
site : http://www.fail2ban.org/

 

 

설치

 

# wget https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.8.13
# tar zxvf 0.8.13
# cd fail2ban-0.8.13
# ./setup.py install

 

 

자신의 배포판에 맞는 스크립트 복사 & 모드(755) 확인 & 부팅시 자동 실행 설정

 

# cd files
# cp redhat-initd /etc/init.d/fail2ban
# chkconfig --add fail2ban

 

 

logrotate 추가

 

# vi /etc/logrotate.d/fail2ban
/var/log/fail2ban.log {
     weekly
     rotate 4
     missingok
     compress
     postrotate
       /usr/local/bin/fail2ban-client set logtarget /var/log/fail2ban.log >/dev/null
     endscript
}

 

 

설정 (Sendmail)

 

# cd /etc/fail2ban
# vi filter.d/sendmail.conf

 

# Fail2Ban configuration file
#
# Source: http://www.the-art-of-web.com/system/fail2ban-sendmail/
# Contibutors: Gutza, the SASL regex
#
# $Revision: 0 $
#

 

[Definition]

 

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

 

failregex = \[<HOST>\] .*to MTA
            \[<HOST>\] \(may be forged\)
            \[<HOST>\], reject.*\.\.\. Relaying denied
            (User unknown)\n* \[<HOST>\]
            badlogin: .* \[<HOST>\] plaintext .* SASL

 

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

 

# vi jail.conf

 

[sendmail]
enabled  = true
filter   = sendmail
action   = iptables-multiport[name=sendmail, port="pop3,imap,smtp,pop3s,imaps,smtps", protocol=tcp]
           sendmail-whois[name=sendmail, dest=you@example.com]
logpath  = /var/log/maillog

 

dest 부분에는 내용을 전달받을 내 이메일 주소를 입력합니다.

 

이 같은 설정 방식으로 다른 서비스들도(ssh, smtp...) 필요하다면 fail2ban 홈페이지를 참조하여 추가합니다.
jail.conf 파일에서 bantime도 설정합니다. (기본 10분 차단으로 되어 있습니다.)
차단된 로그는 /var/log/fail2ban.log 나 전달된 메일에서 확인할 수 있습니다.

 

 

데몬 시작

 

# /etc/init.d/fail2ban start

 

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Nexus

Server/CentOS 2013. 5. 11. 00:03

Maven 의 사내 저장소로 사용할 Nexus 구성.

 

 

Installing Nexus

 

# cd /usr/local/src
# wget http://www.sonatype.org/downloads/nexus-latest-bundle.zip
# unzip nexus-2.4.0-09-bundle.zip
# mv nexus-2.4.0-09 /usr/local
# mv sonatype-work /usr/local
# cd /usr/local
# ln -s nexus-2.4.0-09 nexus

 

 

Starting Nexus

 

# cd /usr/local/nexus
# ./bin/nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.

 

nexus를 root 권한으로 실행하지 않기를 추천하고 있습니다.
실행하기를 원하는 user 로 소유자를 변경합니다.
이 user 는 JAVA_HOME 과 JAVA_HOME/bin 이 path에 추가되어 있어야 합니다.

 

# cd /usr/local
# chown -R ggamzzak: nexus-2.4.0-09/ sonatype-work/
# su - ggamzzak

 

$ cd /usr/local/nexus
$ ./bin/nexus start
Starting Nexus OSS...
Started Nexus OSS.

 

$ ./bin/nexus status
Nexus OSS is running (23518).

 

$ ./bin/nexus stop
Stopping Nexus OSS...
Stopped Nexus OSS.

 

 

Running as a Service

 

서버 재부팅시 자동 실행하기 위해 서비스에 등록하겠습니다.
부팅시에 root로 서비스가 시작되므로 RUN_AS_USER 변수에 실제 실행될 user 입력이 필요합니다.
동시에 상대경로로 설정되어 있는 NEXUS_HOME 변수도 절대경로로 변경해 줍니다.

 

# cp /usr/local/nexus/bin/nexus /etc/init.d
# cd /etc/init.d/
# vi nexus
NEXUS_HOME="/usr/local/nexus"
RUN_AS_USER=ggamzzak

 

# chkconfig --add nexus
# chkconfig --levels 35 nexus on
# ./nexus start
Starting Nexus OSS...
Started Nexus OSS.

 

서비스가 정상적으로 시작되었으면 웹 브라우저에서 확인합니다.
https://domain:8081/nexus (id: admin / pw: admin123)

 

 

기본 포트는 8081이며, 방화벽 설정을 확인합니다.
다른 포트로 변경을 원할 경우 <NEXUS_HOME>/conf/nexus.properties 파일에서 가능합니다.
nexus에 대한 로그는 <NEXUS_HOME>/logs/wrapper.log 파일입니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Git ssh public key

Server/CentOS 2013. 3. 15. 00:08

git 서버의 SSH 프로토콜 주소로 인증하고자 할 때 필요한 SSH 공개키를 만들어 보겠습니다.

 

$ git clone git@github.com:ggamzzak/test.git
Cloning into 'test'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

 

↑ SSH 공개키가 없다는 이유로 저장소 복사를 거부했습니다.

 

 

공개키 생성

 

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ggamzzak/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ggamzzak/.ssh/id_rsa.
Your public key has been saved in /home/ggamzzak/.ssh/id_rsa.pub.
The key fingerprint is:
11:91:21:d1:61:11:de:0a:8c:43:44:2f:58:63:48:d3 oops@oops4u.com

 

 

생성된 키들은 기본적으로 계정 홈디렉토리의 .ssh 디렉토리에 생성됩니다.
다음은 공개키의 내용을 복사하여 git 서버 관리자에게 메일을 보내든, 자신이 관리자라면 알아서 설정합니다;

 

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuZISHmxa8FaESJvCK4G2ty1ZNgggFQZWSGIjnk+ZIW/Ho2PmpZhvfGVuK7ahKdcSimoBv4+dXptPnPELAdcHpgyfnsxl623qUEKvAF0MJ2LpaXx7BAoK3IqJyC3VVTz8ZJGLriAbZT04Er8U01B8SZil7yyo+asdfR9ipclUjl+winoWD5smX2yDWInrY1fqis5etEYZLydrzeG19raHwV7JwGrJHMQ0BOQlZs/RXOYQMWyAJmhfBXp4Jiq+SnW3snb3d9f0SOLZJeeyWVmHePvmjRdk/bSfjRRhiQTcbMnREgBZfiWgQGnJqfbyFWvYeoXID3de1eDnoFh7q5jNLw== oops@oops4u.com

 

 

 

 

git 저장소로부터  복사 재시도 ↓

 

$ git clone git@github.com:ggamzzak/test.git
Cloning into 'test'...
Enter passphrase for key '/home/ggamzzak/.ssh/id_rsa':
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (7/7), done.
remote: Total 7 (delta 0), reused 5 (delta 0)


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret