[WebSphere] TLS 1.2 ์ „ํ™˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: ๋ฒ„์ „๋ณ„ ์ง€์› ํ˜„ํ™ฉ ๋ฐ WAS/IHS/Plugin ํ•„์ˆ˜ ์„ค์ •

WebSphere Application Server v7.0, v8.0, v8.5 ํ™˜๊ฒฝ์—์„œ TLS 1.2 ํ”„๋กœํ† ์ฝœ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์š”๊ตฌ ์‚ฌํ•ญ(Fix Pack, JDK)์„ ํ™•์ธํ•˜๊ณ , WAS, IHS, Plugin ๊ฐ ๊ณ„์ธต๋ณ„ ํ•„์ˆ˜ ์„ค์ • ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—ฐ๊ฒฐ ์‹œ ๋ฐœ์ƒํ•˜๋Š” GSK_ERROR_SOCKET_CLOSED ์—๋Ÿฌ ํ•ด๊ฒฐ๋ฒ•์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฒ„์ „๋ณ„ TLS 1.2 ์ง€์› ํ˜„ํ™ฉ (Prerequisites)

TLS 1.2๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด WAS ๋ฒ„์ „์— ๋”ฐ๋ฅธ ์ตœ์†Œ ํ”ฝ์ŠคํŒฉ(Fix Pack)๊ณผ JDK ๋ฒ„์ „์ด ์ถฉ์กฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

WAS Version Minimum Fix Pack Required SDK Version
v7.0 7.0.0.23 ์ด์ƒ SDK 6 SR10 FP1 ์ด์ƒ
v8.0 8.0.0.3 ์ด์ƒ SDK 6.0.1 (J9 2.6) SR1 FP1 ์ด์ƒ
v8.5 8.5.0.0 (๊ธฐ๋ณธ ์ง€์›) SDK 6.0.1 (J9 2.6) SR2 ์ด์ƒ
์ฃผ์˜ (v7.0 ์ œํ•œ์‚ฌํ•ญ):
WAS v7.0์€ Java ๋ ˆ๋ฒจ์—์„œ๋Š” TLS 1.2๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” Web Server Plugin(GSKit V7 ์‚ฌ์šฉ)์€ TLS 1.2๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ v7.0 ํ™˜๊ฒฝ์—์„œ ์›น ์„œ๋ฒ„ ์—ฐ๋™ ๊ตฌ๊ฐ„๊นŒ์ง€ TLS 1.2๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด Plugin ๋ชจ๋“ˆ ์—…๊ทธ๋ ˆ์ด๋“œ ํ˜น์€ ์•„ํ‚คํ…์ฒ˜ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. WAS ์„ค์ • (Application Server)

๊ด€๋ฆฌ ์ฝ˜์†”์—์„œ SSL ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๊ณ , ๊ด€๋ฆฌ ๋ช…๋ น(stop/sync) ์ˆ˜ํ–‰์„ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ์„ค์ • ํŒŒ์ผ๋„ ํ•จ๊ป˜ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1) ๊ด€๋ฆฌ ์ฝ˜์†” ์„ค์ • (QoP)

Security > SSL certificate and key management > SSL configurations ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. CellDefaultSSLSettings, NodeDefaultSSLSettings ๋“ฑ ์‚ฌ์šฉ ์ค‘์ธ ๋ชจ๋“  ์„ค์ •์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ์„ค์ • ์ด๋ฆ„ ํด๋ฆญ (์˜ˆ: CellDefaultSSLSettings)
  2. ์šฐ์ธก์˜ Quality of protection (QoP) settings ํด๋ฆญ
  3. Protocol ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ TLSv1.2 ์„ ํƒ
  4. ์ €์žฅ (Save)

2) ssl.client.props ์ˆ˜์ • (์ค‘์š”)

์ด ์„ค์ •์„ ํ•˜์ง€ ์•Š์œผ๋ฉด WAS๊ฐ€ TLS 1.2๋กœ ์ „ํ™˜๋œ ํ›„, stopNode๋‚˜ syncNode ๊ฐ™์€ ๊ด€๋ฆฌ ๋ช…๋ น์–ด๊ฐ€ ๊ตฌํ˜• ํ”„๋กœํ† ์ฝœ๋กœ ํ†ต์‹ ์„ ์‹œ๋„ํ•˜์—ฌ ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋Œ€์ƒ ํŒŒ์ผ:
    • [PROFILE_HOME]/properties/ssl.client.props
# ํŒŒ์ผ ๋‚ด ํ•ด๋‹น ๋ผ์ธ ์ˆ˜์ •
com.ibm.ssl.protocol=TLSv1.2

3) ์žฌ๊ธฐ๋™ ๋ฐ ๋™๊ธฐํ™”

์„ค์ • ์ ์šฉ์„ ์œ„ํ•ด DMGR๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์žฌ๊ธฐ๋™ํ•ฉ๋‹ˆ๋‹ค.

# 1. ๋…ธ๋“œ ๋ฐ DMGR ์ค‘์ง€
./stopNode.sh
./stopManager.sh

# 2. DMGR ๊ธฐ๋™
./startManager.sh

# 3. ๋…ธ๋“œ ๋™๊ธฐํ™” (์ˆ˜๋™ ๋™๊ธฐํ™” ๊ถŒ์žฅ)
./syncNode.sh [Dmgr_Host] [Dmgr_SOAP_Port] -username [ID] -password [PW]

# 4. ๋…ธ๋“œ ๊ธฐ๋™
./startNode.sh

3. Web Server (IHS) ์„ค์ •

IBM HTTP Server์˜ httpd.conf ํŒŒ์ผ์—์„œ SSL ์„ค์ •์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

<VirtualHost *:443>
    SSLEnable
    
    # TLS 1.2 ํ™œ์„ฑํ™”
    SSLProtocolEnable TLSv12
    
    # ์ทจ์•ฝํ•œ ํ•˜์œ„ ํ”„๋กœํ† ์ฝœ ๋น„ํ™œ์„ฑํ™”
    SSLProtocolDisable SSLv2 SSLv3 TLSv10 TLSv11
</VirtualHost>

4. Plugin ์„ค์ • (Troubleshooting)

WAS์™€ IHS๋ฅผ ๋ชจ๋‘ TLS 1.2๋กœ ์„ค์ •ํ–ˆ๋Š”๋ฐ๋„ http_plugin.log์— GSK_ERROR_SOCKET_CLOSED (gsk rc = 420) ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ์—ฐ๊ฒฐ์ด ์•ˆ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ ์ˆ˜์ค€์„ ์—„๊ฒฉํ•˜๊ฒŒ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: StrictSecurity ์ ์šฉ

plugin-cfg.xml ํŒŒ์ผ์˜ ์ตœ์ƒ๋‹จ Config ํƒœ๊ทธ์— ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<Config StrictSecurity="true">
    <Log LogLevel="Error" Name="..." />
    ...
</Config>
Tip: StrictSecurity="true" ์„ค์ •์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด WAS์™€ ํ†ต์‹ ํ•  ๋•Œ TLS ํ”„๋กœํ† ์ฝœ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ค€์ˆ˜ํ•˜๋„๋ก ๊ฐ•์ œํ•˜์—ฌ, TLS 1.2 ํ•ธ๋“œ์‰์ดํฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

5. ๊ฒ€์ฆ (Verification)

openssl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ TLS 1.2๋งŒ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

# TLS 1.2 ์ ‘์† ์„ฑ๊ณต ํ™•์ธ
openssl s_client -connect [Host]:9443 -tls1_2

# TLS 1.0 ์ ‘์† ์‹คํŒจ ํ™•์ธ (ํ•ธ๋“œ์‰์ดํฌ ์—๋Ÿฌ๊ฐ€ ๋‚˜์•ผ ์ •์ƒ)
openssl s_client -connect [Host]:9443 -tls1

[WebSphere Liberty] installUtility ์‚ฌ์šฉ๋ฒ• ์™„๋ฒฝ ๊ฐ€์ด๋“œ: Feature ๊ฒ€์ƒ‰, ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋กœ์ปฌ ์ €์žฅ์†Œ ๊ตฌ์„ฑ

WebSphere Liberty์˜ ๊ธฐ๋Šฅ(Feature)์„ ๊ด€๋ฆฌํ•˜๋Š” ์ปค๋งจ๋“œ ๋ผ์ธ ๋„๊ตฌ์ธ installUtility์˜ ํ•ต์‹ฌ ์‚ฌ์šฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์˜จ๋ผ์ธ IBM ์ €์žฅ์†Œ์—์„œ ๊ธฐ๋Šฅ์„ ๊ฒ€์ƒ‰/๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ, ์‚ฌ๋‚ด ํ์‡„๋ง ํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋กœ์ปฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(Local Repository) ์„ค์ • ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7.2
  • Middleware: IBM Liberty Core 20.0.0.6
  • Tool: installUtility (Located in $WLP_HOME/bin)

1. Feature ๊ฒ€์ƒ‰ ๋ฐ ๋‹ค์šด๋กœ๋“œ (Basic Usage)

IBM์˜ ๊ณต์ธ ์ €์žฅ์†Œ(IBM WebSphere Liberty Repository)์— ์—ฐ๊ฒฐํ•˜์—ฌ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ฐพ๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๊ฒ€์ƒ‰ (Find)

์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์˜ ์ •ํ™•ํ•œ ์ด๋ฆ„์„ ๋ชจ๋ฅผ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

# ๊ตฌ๋ฌธ: installUtility find [๊ฒ€์ƒ‰์–ด]
installUtility find jsp --type=feature

๊ธฐ๋Šฅ ๋‹ค์šด๋กœ๋“œ (Download)

์„œ๋ฒ„์— ๋ฐ”๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ , ํŒŒ์ผ(ESA) ํ˜•ํƒœ๋กœ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ๋“ค์€ ๋‚˜์ค‘์— ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

# ๊ตฌ๋ฌธ: installUtility download [๊ธฐ๋Šฅ๋ช…] --location=[๊ฒฝ๋กœ]
installUtility download jsp-2.3 --location=/SW/img/LibertyUtility --acceptLicense

2. ๋กœ์ปฌ ์ €์žฅ์†Œ ๊ตฌ์„ฑ (Repository Configuration)

์ธํ„ฐ๋„ท์ด ์ฐจ๋‹จ๋œ ์„œ๋ฒ„๋‚˜, ์‚ฌ๋‚ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ €์žฅ์†Œ๋กœ ๋“ฑ๋กํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ํŒŒ์ผ ์œ„์น˜

Liberty ์„ค์น˜ ๊ฒฝ๋กœ ๋‚ด์˜ etc ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์ • ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์œ„์น˜: ${wlp.install.dir}/etc/repositories.properties

์„ค์ • ๋‚ด์šฉ (repositories.properties)

๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„๋‘” Feature ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•œ ๊ฒฝ๋กœ๋ฅผ url๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

# Local Repository Path Configuration
# ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ ๋˜๋Š” ์‚ฌ๋‚ด ์›น ์„œ๋ฒ„ URL ์ง€์ • ๊ฐ€๋Šฅ
local-rep.url=/SW/img/LibertyUtility
Tip: useDefaultRepository=false ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด IBM ๊ณต์ธ ์ €์žฅ์†Œ ์ ‘์†์„ ์ฐจ๋‹จํ•˜๊ณ  ๋กœ์ปฌ ์ €์žฅ์†Œ๋งŒ ๋ฐ”๋ผ๋ณด๊ฒŒ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์„ค์ • ๊ฒ€์ฆ (Verification)

์ž‘์„ฑํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์„ค์ •์ด ์ •์ƒ์ ์œผ๋กœ ์ธ์‹๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ํ™•์ธ (viewSettings)

ํ˜„์žฌ ์ ์šฉ๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ชฉ๋ก๊ณผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

installUtility viewSettings

(์ถœ๋ ฅ ๊ฒฐ๊ณผ์—์„œ local-rep.url์ด ๋ชฉ๋ก์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ)

์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ (testConnection)

์ง€์ •ํ•œ ๊ฒฝ๋กœ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ์ง€ ์ตœ์ข… ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

# ํŠน์ • ์ €์žฅ์†Œ ํ…Œ์ŠคํŠธ
installUtility testConnection local-rep

# ๋˜๋Š” ์ „์ฒด ํ…Œ์ŠคํŠธ
installUtility testConnection --all

4. ์ฐธ๊ณ  ์ž๋ฃŒ (References)

  • IBM Knowledge Center: installUtility command reference
  • IBM Fix Central: Download Liberty Features (Offline)
    (Fix Central์—์„œ wlp-featureRepo ํŒจํ‚ค์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ์ „์ฒด ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ํ•œ ๋ฒˆ์— ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

Next Step:
๋กœ์ปฌ ์ €์žฅ์†Œ ๊ตฌ์„ฑ์ด ๋๋‚ฌ๋‹ค๋ฉด, installUtility install [๊ธฐ๋Šฅ๋ช…] ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์—†์ด๋„ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์„œ๋ฒ„์— ์ฆ‰์‹œ ์„ค์น˜ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

[WebSphere] WAS v9.0 CLI ์„ค์น˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: IM, WAS, IHS, Plugin ๋ฐ JDK 8 ๋™์‹œ ์„ค์น˜

CentOS 7 ํ™˜๊ฒฝ์—์„œ GUI ์—†์ด imcl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WebSphere v9.0.5.1์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. v9.0๋ถ€ํ„ฐ ๋ณ€๊ฒฝ๋œ ์ •์ฑ…์— ๋”ฐ๋ผ JDK 8์„ ๋ฐ˜๋“œ์‹œ ํ•จ๊ป˜ ์„ค์น˜ํ•ด์•ผ ํ•จ์„ ๊ฐ•์กฐํ•˜๋ฉฐ, WAS, IHS, Plugin ์„ค์น˜ ๋ฐ ํŒจ์น˜ ์ ์šฉ ๋ช…๋ น์–ด๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • Installer: IBM Installation Manager (IM) 1.8.x ์ด์ƒ
  • Target Version: WebSphere Application Server 9.0.5.1

1. Installation Manager (IM) ์„ค์น˜

IBM ์ œํ’ˆ๊ตฐ์„ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ธ IM์„ ๋จผ์ € ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. -repositories์—๋Š” repository.config ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๋ช…๋ น์–ด

# ์„ค์น˜ ๊ฒฝ๋กœ๋กœ ์ด๋™
cd /sw/img/im

# IM ์„ค์น˜ ์‹คํ–‰
./imcl install com.ibm.cic.agent \
-repositories "/sw/img/im/repository.config" \
-installationDirectory "/sw/IBM/InstallationManager/eclipse" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-showProgress -sP
Tip (ํŒจํ‚ค์ง€ ID ํ™•์ธ):
์„ค์น˜ํ•˜๋ ค๋Š” ์ œํ’ˆ์˜ ์ •ํ™•ํ•œ ID(์˜ˆ: com.ibm.websphere...)๋ฅผ ๋ชจ๋ฅธ๋‹ค๋ฉด ์„ค์น˜ ๋ฏธ๋””์–ด ๋‚ด์˜ Offerings ํด๋”๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ./imcl listAvailablePackages -repositories [๊ฒฝ๋กœ] ๋ช…๋ น์–ด๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. WebSphere Application Server (WAS) ์„ค์น˜

์ค‘์š”: WAS v9.0์€ ๊ธฐ๋ณธ JDK๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ com.ibm.websphere.BASE... ํŒจํ‚ค์ง€์™€ com.ibm.java.jdk.v8... ํŒจํ‚ค์ง€๋ฅผ ๋™์‹œ์— ์ง€์ •ํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๋ช…๋ น์–ด (Base + JDK 8)

์„ค์น˜ ๋„๊ตฌ(tools) ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

cd /sw/IBM/InstallationManager/eclipse/tools

# WAS ๋ฐ JDK ๋™์‹œ ์„ค์น˜
./imcl install com.ibm.websphere.BASE.v90_9.0.5001.20190828_0616 \
com.ibm.java.jdk.v8_8.0.5041.20190924_1031 \
-repositories "/sw/img/base","/sw/img/sdk" \
-installationDirectory "/sw/was/AppServer9" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-properties cic.selector.nl=ko \
-showProgress -sP

Fix Pack ์—…๋ฐ์ดํŠธ (Optional)

์„ค์น˜ ํ›„ ํŠน์ • ํ”ฝ์ŠคํŒฉ(์˜ˆ: 9.0.5.3)์œผ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

./imcl install com.ibm.websphere.BASE.v90_9.0.5003.20200226_0941 \
-repositories "/sw/img/fixwas" \
-installationDirectory "/sw/was/AppServer9" \
-acceptLicense -sP

3. IBM HTTP Server (IHS) ์„ค์น˜

์›น ์„œ๋ฒ„์ธ IHS๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ JDK ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. user.ihs.httpPort ์†์„ฑ์œผ๋กœ ๊ธฐ๋ณธ ํฌํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# IHS ๋ฐ JDK ๋™์‹œ ์„ค์น˜
./imcl install com.ibm.websphere.IHS.v90_9.0.5001.20190828_0616 \
com.ibm.java.jdk.v8_8.0.5041.20190924_1031 \
-repositories "/sw/img/ihs","/sw/img/sdk" \
-installationDirectory "/sw/web/IHS9" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-properties user.ihs.httpPort="80" \
-showProgress -sP

4. Web Server Plugin (PLG) ์„ค์น˜

WAS์™€ ์›น ์„œ๋ฒ„๋ฅผ ์—ฐ๋™ํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.

# Plugin ๋ฐ JDK ๋™์‹œ ์„ค์น˜
./imcl install com.ibm.websphere.PLG.v90_9.0.5001.20190828_0616 \
com.ibm.java.jdk.v8_8.0.5041.20190924_1031 \
-repositories "/sw/img/plg","/sw/img/sdk" \
-installationDirectory "/sw/web/Plugins9" \
-sharedResourcesDirectory "/sw/IBM/IMShared" \
-acceptLicense \
-showProgress -sP

5. ์„ค์น˜ ๊ฒ€์ฆ (Verification)

๋ชจ๋“  ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก๊ณผ ์ƒ์„ธ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ํ™•์ธ

# IM ๋ช…๋ น์–ด๋กœ ํ™•์ธ
./imcl listInstalledPackages

์ƒ์„ธ ๋ฒ„์ „ ๋ฆฌํฌํŠธ ํ™•์ธ

WAS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ ์ƒ์„ธ ๋ฆฌํฌํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

# WAS ํ™ˆ์˜ bin ๋””๋ ‰ํ† ๋ฆฌ
/sw/was/AppServer9/bin/versionInfo.sh

Next Step:
์—”์ง„ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ manageprofiles.sh ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ๋™ํ•  ํ”„๋กœํŒŒ์ผ(Profile)์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[Windows 10] Microsoft Edge ๊ธฐ๋ณธ ๊ฒ€์ƒ‰ ์—”์ง„ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ• (Bing -> Google/Naver)

Windows 10 Edge ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์—์„œ ๊ฒ€์ƒ‰ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„(Bing)์„ Google, Naver, Daum ๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ๋ฉ”๋‰ด ๊นŠ์ˆ™์ด ๋“ค์–ด๊ฐˆ ํ•„์š” ์—†์ด ๋‹จ์ถ• URL๋กœ ํ•œ ๋ฒˆ์— ์ด๋™ํ•˜๋Š” ํŒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: Windows 10
  • Browser: Microsoft Edge (Chromium ๊ธฐ๋ฐ˜ ์ตœ์‹  ๋ฒ„์ „)

Method A: ๋‹จ์ถ• URL๋กœ ํ•œ ๋ฒˆ์— ์ด๋™ (์ถ”์ฒœ)

๋ณต์žกํ•œ ๋ฉ”๋‰ด๋ฅผ ์ฐพ์•„๋“ค์–ด๊ฐˆ ํ•„์š” ์—†์ด, ์ฃผ์†Œ์ฐฝ์— ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์„ค์ • ํ™”๋ฉด์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

Tip: ์•„๋ž˜ ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ Edge ์ฃผ์†Œ์ฐฝ์— ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”.
edge://settings/search

Method B: ์„ค์ • ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ์ด๋™

๋‹จ์ถ• URL์ด ๊ธฐ์–ต๋‚˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ •์„์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

1. ์„ค์ • ๋ฉ”๋‰ด ์ง„์ž…

  1. Edge ๋ธŒ๋ผ์šฐ์ € ์šฐ์ธก ์ƒ๋‹จ์˜ ์  ์„ธ ๊ฐœ(...) ๋ฒ„ํŠผ ํด๋ฆญ
  2. ์„ค์ •(Settings) ํด๋ฆญ

2. ๊ฐœ์ธ ์ •๋ณด ๋ฐ ์„œ๋น„์Šค ์„ค์ •

  1. ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ '๊ฐœ์ธ ์ •๋ณด, ๊ฒ€์ƒ‰ ๋ฐ ์„œ๋น„์Šค(Privacy, search, and services)' ์„ ํƒ
  2. ์Šคํฌ๋กค์„ ๋งจ ์•„๋ž˜๋กœ ๋‚ด๋ ค '์ฃผ์†Œ ํ‘œ์‹œ์ค„ ๋ฐ ๊ฒ€์ƒ‰(Address bar and search)' ํด๋ฆญ
Edge Privacy Settings

3. ๊ฒ€์ƒ‰ ์—”์ง„ ๋ณ€๊ฒฝ (Change Engine)

์„ค์ • ํ™”๋ฉด์— ์ง„์ž…ํ–ˆ๋‹ค๋ฉด, ์›ํ•˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ์†Œ ํ‘œ์‹œ์ค„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„: ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ Google, Naver ๋“ฑ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ ํƒญ์—์„œ์˜ ๊ฒ€์ƒ‰ ์ƒ์ž ๋“ฑ...: '๊ฒ€์ƒ‰ ์ƒ์ž(๊ถŒ์žฅ)' ๋Œ€์‹  '์ฃผ์†Œ ํ‘œ์‹œ์ค„'์„ ์„ ํƒํ•˜๋ฉด ์ƒˆ ํƒญ์—์„œ๋„ ๋ณ€๊ฒฝํ•œ ์—”์ง„์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
Change Search Engine
์ฐธ๊ณ : ๋งŒ์•ฝ ๋ชฉ๋ก์— ์›ํ•˜๋Š” ๊ฒ€์ƒ‰ ์—”์ง„(์˜ˆ: Naver)์ด ์—†๋‹ค๋ฉด, '๊ฒ€์ƒ‰ ์—”์ง„ ๊ด€๋ฆฌ' ๋ฉ”๋‰ด๋กœ ๋“ค์–ด๊ฐ€์„œ ํ•ด๋‹น ์‚ฌ์ดํŠธ(naver.com)๋ฅผ ํ•œ ๋ฒˆ ๋ฐฉ๋ฌธํ•œ ๋’ค ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Linux] ๋ณด์•ˆ ์กฐ์น˜: ํŠน์ • ํ™•์žฅ์ž ํŒŒ์ผ ๊ถŒํ•œ ์ผ๊ด„ ๋ณ€๊ฒฝ (find + chmod ์กฐํ•ฉ)

๋ณด์•ˆ ์ทจ์•ฝ์  ์กฐ์น˜๋ฅผ ์œ„ํ•ด ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์˜ ํŒŒ์ผ ๊ถŒํ•œ์„ ์ผ๊ด„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. chmod -R๋กœ ๊ธฐ๋ณธ ๊ถŒํ•œ์„ ์žก๊ณ , find ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์„ค์ • ํŒŒ์ผ(xml, properties)์ด๋‚˜ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์‹คํ–‰ ๊ถŒํ•œ์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค (Context)

์ผ๋ฐ˜์ ์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(WAS) ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณด์•ˆ ๊ถŒ์žฅ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋””๋ ‰ํ† ๋ฆฌ: 750 (์†Œ์œ ์ž: rwx, ๊ทธ๋ฃน: r-x, ๊ธฐํƒ€: ---) - ์ด๋™(x) ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • ํŒŒ์ผ: 640 (์†Œ์œ ์ž: rw-, ๊ทธ๋ฃน: r--, ๊ธฐํƒ€: ---) - ์‹คํ–‰(x) ๊ถŒํ•œ ์ œ๊ฑฐ

๋‹จ์ˆœํžˆ chmod -R 750์„ ํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ์— ์‹คํ–‰ ๊ถŒํ•œ์ด ๋ถ™์–ด๋ฒ„๋ฆฌ๋ฏ€๋กœ, ํŠน์ • ํ™•์žฅ์ž ํŒŒ์ผ๋“ค์„ ์ฐพ์•„ 640์œผ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)

1. 1๋‹จ๊ณ„: ์†Œ์œ ๊ถŒ ๋ฐ ๊ธฐ๋ณธ ๊ถŒํ•œ ์„ค์ •

๋จผ์ € ๋Œ€์ƒ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์˜ ๋ชจ๋“  ํŒŒ์ผ/ํด๋”์˜ ์†Œ์œ ๊ถŒ์„ ๋งž์ถ”๊ณ , ๋””๋ ‰ํ† ๋ฆฌ ๊ธฐ์ค€ ๊ถŒํ•œ(750)์„ ์ผ๊ด„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

# 1. ์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ (ํ•˜์œ„ ํฌํ•จ)
chown -R wasadm:wasadm ./*

# 2. ๊ธฐ๋ณธ ๊ถŒํ•œ ์„ค์ • (์ผ๋‹จ ๋ชจ๋‘ 750์œผ๋กœ ์„ค์ •)
# ์ฃผ์˜: ์ด ์ƒํƒœ์—์„œ๋Š” ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋„ ์‹คํ–‰ ๊ถŒํ•œ(x)์„ ๊ฐ–๊ฒŒ ๋จ
chmod -R 750 ./*

2. 2๋‹จ๊ณ„: ํŠน์ • ํ™•์žฅ์ž ๊ถŒํ•œ ๊ฐ•ํ™” (์‹คํ–‰ ๊ถŒํ•œ ์ œ๊ฑฐ)

find ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ • ํŒŒ์ผ์ด๋‚˜ ๋กœ๊ทธ ํŒŒ์ผ ๋“ฑ ์‹คํ–‰๋  ํ•„์š”๊ฐ€ ์—†๋Š” ํŒŒ์ผ๋“ค์„ ์ฐพ์•„ ๊ถŒํ•œ์„ 640์œผ๋กœ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ๊ตฌ๋ฌธ

# ๊ตฌ๋ฌธ: find [๊ฒฝ๋กœ] -name "[ํŒจํ„ด]" -exec chmod [๊ถŒํ•œ] {} \;

# XML ์„ค์ • ํŒŒ์ผ
find . -name "*.xml" -exec chmod 640 {} \;

# ๋กœ๊ทธ ํŒŒ์ผ
find . -name "*.log" -exec chmod 640 {} \;

# ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ
find . -name "*.properties" -exec chmod 640 {} \;

# ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ œ์™ธํ•œ ๋ชจ๋“  ์ผ๋ฐ˜ ํŒŒ์ผ (๊ณ ๊ธ‰)
# find . -type f ! -name "*.sh" -exec chmod 640 {} \;
์ฃผ์˜ (Quotation):
*.xml๊ณผ ๊ฐ™์ด ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ(" ")๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— xml ํŒŒ์ผ์ด ๋งŽ์„ ๊ฒฝ์šฐ ์‰˜์ด ๋จผ์ € ํ•ด์„ํ•ด๋ฒ„๋ ค "paths must precede expression" ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. Tip: ๋Œ€๋Ÿ‰ ํŒŒ์ผ ์ฒ˜๋ฆฌ ์‹œ ์„ฑ๋Šฅ ์ตœ์ ํ™”

ํŒŒ์ผ์ด ์ˆ˜๋งŒ ๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ -exec ... \; ๋ฐฉ์‹์€ ํŒŒ์ผ ํ•˜๋‚˜๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋А๋ฆฝ๋‹ˆ๋‹ค. xargs๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

# xargs๋ฅผ ์ด์šฉํ•œ ๊ณ ์† ์ฒ˜๋ฆฌ ๋ฐฉ์‹
find . -name "*.log" -print0 | xargs -0 chmod 640

4. ๊ฒ€์ฆ (Verification)

์ž‘์—… ์™„๋ฃŒ ํ›„ ls -l ๋ช…๋ น์–ด๋กœ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ์˜ ๊ถŒํ•œ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

drwxr-x---  2 wasadm wasadm 4096 ...  logs/       (750, ๋””๋ ‰ํ† ๋ฆฌ)
-rw-r-----  1 wasadm wasadm 1024 ...  server.xml  (640, ํŒŒ์ผ)
-rwxr-x---  1 wasadm wasadm  512 ...  start.sh    (750, ์Šคํฌ๋ฆฝํŠธ)

[WebSphere/IHS] ๋ณด์•ˆ ์ทจ์•ฝ์  ์กฐ์น˜: Server ํ—ค๋” ์ˆจ๊ธฐ๊ธฐ ๋ฐ ๋ฒ„์ „ ์ •๋ณด ๋…ธ์ถœ ๋ฐฉ์ง€ ์ „๋žต

HTTP ์‘๋‹ต ํ—ค๋”์˜ Server ํ•„๋“œ(์˜ˆ: Apache/2.4, WebSphere Application Server/8.5)๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์ข…๋ฅ˜์™€ ๋ฒ„์ „์ด ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์•ž๋‹จ์˜ IBM HTTP Server(IHS)์™€ ๋’ท๋‹จ์˜ WebSphere(WAS) ์–‘์ชฝ ๋ชจ๋‘์˜ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ๋ฐ ์›์ธ (Context)

์„œ๋ฒ„์˜ ๊ตฌ์ฒด์ ์ธ ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜๋ฉด, ํ•ด์ปค๋Š” ํ•ด๋‹น ๋ฒ„์ „์— ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ (CVE)์„ ์ฐพ์•„ ๋งž์ถคํ˜• ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€(Best Practice)์—์„œ๋Š” ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ์ตœ์†Œํ™”ํ•  ๊ฒƒ์„ ๊ถŒ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7.2
  • Web Server: IBM HTTP Server (Apache ๊ธฐ๋ฐ˜)
  • WAS: WebSphere Application Server v8.5

1. IBM HTTP Server (Web Server) ์„ค์ •

๊ฐ€์žฅ ์•ž๋‹จ์—์„œ ์š”์ฒญ์„ ๋ฐ›๋Š” ์›น ์„œ๋ฒ„์˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. httpd.conf ํŒŒ์ผ์— ์•„๋ž˜ ์ง€์‹œ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๋‚ด์šฉ (httpd.conf)

# 1. ์„œ๋ฒ„ ์ •๋ณด ์ตœ์†Œํ™” (Apache/x.y.z -> Apache)
ServerTokens Prod

# 2. ์—๋Ÿฌ ํŽ˜์ด์ง€ ํ•˜๋‹จ(Footer)์— ์„œ๋ฒ„ ์ •๋ณด ์ˆจ๊น€
ServerSignature Off

# 3. Server ํ—ค๋” ์ž์ฒด๋ฅผ ์‘๋‹ต์—์„œ ์ œ๊ฑฐ (IHS ์ „์šฉ ๊ธฐ๋Šฅ, ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ๊ถŒ์žฅ)
AddServerHeader Off
Tip: AddServerHeader Off๋Š” ํ‘œ์ค€ Apache์—๋Š” ์—†๊ณ  IBM HTTP Server์—๋งŒ ์กด์žฌํ•˜๋Š” ์ง€์‹œ์–ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์šฉ ํ›„ Syntax Error๊ฐ€ ๋‚œ๋‹ค๋ฉด ServerTokens Prod๊นŒ์ง€๋งŒ ์ ์šฉํ•˜์‹ญ์‹œ์˜ค.

2. WebSphere (WAS) ์„ค์ •

WAS๊ฐ€ ์ง์ ‘ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ์ค„ ๋•Œ ๋ถ™๋Š” ํ—ค๋”๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. WAS v8.5.0.2 ์ด์ƒ๋ถ€ํ„ฐ๋Š” ๊ธฐ๋ณธ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋‚˜, ๋ช…์‹œ์ ์œผ๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด HTTP ์ „์†ก ์ฑ„๋„(Transport Channel) ์„ค์ •์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฒฝ๋กœ

์„œ๋ฒ„ > WebSphere Application Server > [์„œ๋ฒ„๋ช…] > ์›น ์ปจํ…Œ์ด๋„ˆ ์„ค์ • > ์›น ์ปจํ…Œ์ด๋„ˆ ์ „์†ก ์ฒด์ธ > WCInboundDefault > HTTP ์ธ๋ฐ”์šด๋“œ ์ฑ„๋„ (HTTP_2) > ์‚ฌ์šฉ์ž ์ •์˜ ํŠน์„ฑ (Custom properties)

์ฃผ์š” ์†์„ฑ (ํƒ 1)

์ƒํ™ฉ์— ๋งž์ถฐ ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ์†์„ฑ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์ด๋ฆ„ (Name) ์„ค๋ช… ๋ฐ ๊ถŒ์žฅ ๊ฐ’
RemoveServerHeader ๊ฐ’: true
Server ํ—ค๋” ์ž์ฒด๋ฅผ ์•„์˜ˆ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ์„ค์ •์ž…๋‹ˆ๋‹ค.
ServerHeaderValue ๊ฐ’: (์ž„์˜์˜ ๋ฌธ์ž์—ด)
๊ธฐ๋ณธ๊ฐ’์ธ "WebSphere Application Server..." ๋Œ€์‹  ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋ฌธ์ž์—ด(์˜ˆ: "AppServer")๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ  (WebContainer ์†์„ฑ):
์ „์†ก ์ฑ„๋„ ์„ค์ • ์™ธ์—๋„, ์›น ์ปจํ…Œ์ด๋„ˆ > ์‚ฌ์šฉ์ž ์ •์˜ ํŠน์„ฑ์—์„œ com.ibm.ws.webcontainer.disableServerHeader ๊ฐ’์„ true๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. (์ตœ์‹  ๋ฒ„์ „์—์„œ ๊ถŒ์žฅ)

3. ๊ฒ€์ฆ (Verification)

IHS์™€ WAS๋ฅผ ๋ชจ๋‘ ์žฌ๊ธฐ๋™ํ•œ ํ›„, curl ๋ช…๋ น์–ด๋กœ ์‘๋‹ต ํ—ค๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

# ํ—ค๋” ํ™•์ธ
curl -I http://localhost/

# [Before]
HTTP/1.1 200 OK
Server: IBM_HTTP_Server/8.5 ...
...

# [After] 
HTTP/1.1 200 OK
# Server ํ—ค๋”๊ฐ€ ์•„์˜ˆ ์—†๊ฑฐ๋‚˜ "Apache" ๋˜๋Š” ์ง€์ •ํ•œ ๊ฐ’์œผ๋กœ ํ‘œ์‹œ๋จ
...

Next Step:
ํ—ค๋” ์ˆจ๊น€ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ๋Š” HTTP ๋ฉ”์†Œ๋“œ(PUT, DELETE, TRACE) ์ฐจ๋‹จ ์„ค์ •์„ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ ๋ง‰๋Š” ์›น ์„œ๋ฒ„ ๊ฐ•ํ™” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

[WebSphere] ๋ณด์•ˆ ์ทจ์•ฝ์  ์กฐ์น˜: X-Powered-By ๋ฐ Server ํ—ค๋” ์ˆจ๊ธฐ๊ธฐ ์„ค์ •

์›น ์„œ๋ฒ„ ์‘๋‹ต ํ—ค๋”์— ํฌํ•จ๋œ X-Powered-By ์ •๋ณด(์˜ˆ: Servlet/3.1)๋Š” ๋ถˆํ•„์š”ํ•œ ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•˜์—ฌ ๋ณด์•ˆ ์ทจ์•ฝ์ ์œผ๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค. IBM WebSphere Application Server(WAS) v8.5 ์ด์ƒ์—์„œ ์›น ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ํ†ตํ•ด ์ด ํ—ค๋”๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ๋ฐ ์›์ธ (Context)

๊ธฐ๋ณธ์ ์œผ๋กœ WAS๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ, ์ž์‹ ์ด ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ  ์Šคํƒ์„ ํ—ค๋”์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • X-Powered-By: ๊ตฌํ˜„ ๊ธฐ์ˆ  ์ •๋ณด (์˜ˆ: Servlet/3.0, JSP/2.2)
  • Server: ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด ์ •๋ณด (์˜ˆ: WebSphere Application Server/8.5)

๊ณต๊ฒฉ์ž๋Š” ์ด ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŠน์ • ๋ฒ„์ „์— ์กด์žฌํ•˜๋Š” ์•Œ๋ ค์ง„ ์ทจ์•ฝ์ (CVE)์„ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ˆจ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7.2
  • WAS: WebSphere Application Server v8.5.5

1. X-Powered-By ํ—ค๋” ์ œ๊ฑฐ ์„ค์ •

WAS ๊ด€๋ฆฌ ์ฝ˜์†”(Admin Console)์—์„œ ์›น ์ปจํ…Œ์ด๋„ˆ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฒฝ๋กœ

์„œ๋ฒ„(Servers) > ์„œ๋ฒ„ ์œ ํ˜•(Server Types) > WebSphere application servers > [์„œ๋ฒ„๋ช…] > ์›น ์ปจํ…Œ์ด๋„ˆ ์„ค์ •(Web Container Settings) > ์›น ์ปจํ…Œ์ด๋„ˆ(Web container) > ์‚ฌ์šฉ์ž ์ •์˜ ํŠน์„ฑ(Custom properties)

์†์„ฑ ์ถ”๊ฐ€ (New)

์ด๋ฆ„ (Name) ๊ฐ’ (Value)
com.ibm.ws.webcontainer.disablexPoweredBy true
Tip (Server ํ—ค๋”๋„ ๊ฐ™์ด ์ˆจ๊ธฐ๊ธฐ):
๋ณด์•ˆ ๊ฐ•๋„๋ฅผ ๋” ๋†’์ด๋ ค๋ฉด com.ibm.ws.webcontainer.disableServerHeader ์†์„ฑ๋„ true๋กœ ์„ค์ •ํ•˜์—ฌ WAS ๋ฒ„์ „ ์ •๋ณด๊นŒ์ง€ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

2. ๊ฒ€์ฆ (Verification)

์„ค์ • ์ €์žฅ ํ›„ ์„œ๋ฒ„๋ฅผ ๋ฐ˜๋“œ์‹œ ์žฌ๊ธฐ๋™ํ•ด์•ผ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. curl ๋ช…๋ น์–ด๋‚˜ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(F12)๋ฅผ ํ†ตํ•ด ์‘๋‹ต ํ—ค๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ํ™•์ธ (Linux)

# -I ์˜ต์…˜์œผ๋กœ ํ—ค๋”๋งŒ ์กฐํšŒ
curl -I http://localhost:9080/

# ์ ์šฉ ์ „ (๋…ธ์ถœ๋จ)
HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0
Content-Type: text/html
...

# ์ ์šฉ ํ›„ (์‚ฌ๋ผ์ง)
HTTP/1.1 200 OK
Content-Type: text/html
...

๋ธŒ๋ผ์šฐ์ € ํ™•์ธ

Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ > Network ํƒญ > ์•„๋ฌด ์š”์ฒญ ํด๋ฆญ > Response Headers ์„น์…˜์—์„œ ํ•ด๋‹น ํ•ญ๋ชฉ์ด ์‚ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


Next Step:
WAS ์„ค์ •๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ž๋‹จ์˜ ์›น ์„œ๋ฒ„(IHS/Apache)์—์„œ๋„ ServerTokens Prod ์„ค์ •์„ ํ†ตํ•ด Apache ๋ฒ„์ „ ์ •๋ณด ๋…ธ์ถœ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ์™„๋ฒฝํ•œ ๋ณด์•ˆ ์กฐ์น˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

[Linux/AIX] ์œˆ๋„์šฐ ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐœํ–‰ ๋ฌธ์ž(^M) ์ œ๊ฑฐ ๋ฐฉ๋ฒ• (Perl, vi, sed)

Windows(CRLF)์—์„œ ์ž‘์„ฑํ•œ ํŒŒ์ผ์„ Unix/Linux(LF) ๊ณ„์—ด ์„œ๋ฒ„๋กœ ์—…๋กœ๋“œํ•˜๋ฉด, ๋ผ์ธ ๋์— ^M ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ๋ถ™์–ด ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์—๋Ÿฌ(bad interpreter)๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. AIX ํ™˜๊ฒฝ์—์„œ๋„ ํ™•์‹คํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” Perl ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ ์ผ๊ด„ ์ œ๊ฑฐ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. ์›์ธ ๋ฐ ์ฆ์ƒ (Context)

์šด์˜์ฒด์ œ๋งˆ๋‹ค ์ค„๋ฐ”๊ฟˆ(New Line)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • Windows: CR(Carriage Return, \r) + LF(Line Feed, \n)
  • Unix/Linux/AIX: LF(\n)

FTP ์ „์†ก ์‹œ ASCII ๋ชจ๋“œ๊ฐ€ ์•„๋‹Œ Binary ๋ชจ๋“œ๋กœ ์ „์†กํ•˜๊ฑฐ๋‚˜, ๋‹จ์ˆœ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•  ๊ฒฝ์šฐ Windows์˜ CR(\r) ๋ฌธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ vi ์—๋””ํ„ฐ์—์„œ ^M์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: AIX (๋˜๋Š” Linux)
  • Shell: sh, ksh, bash

1. ๋ฌธ์ œ ํ™•์ธ (Issue Identification)

์‰˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, vi๋กœ ํŒŒ์ผ์„ ์—ด์—ˆ์„ ๋•Œ ๋ผ์ธ ๋๋งˆ๋‹ค ^M์ด ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

vi ์—๋””ํ„ฐ ํ™”๋ฉด

#!/bin/sh^M
#./startServer.sh server_name^M
#./stopServer.sh server_name -username username -password password^M

2. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• A: Perl ๋ช…๋ น์–ด ์‚ฌ์šฉ (๊ถŒ์žฅ)

AIX์˜ ๊ธฐ๋ณธ sed ๋ช…๋ น์–ด๋Š” -i(ํŒŒ์ผ ์ง์ ‘ ์ˆ˜์ •) ์˜ต์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Perl์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ˜ธํ™˜์„ฑ์ด ์ข‹๊ณ  ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ๊ตฌ๋ฌธ

^M์„ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฏ€๋กœ, 8์ง„์ˆ˜ ์ฝ”๋“œ์ธ \015๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

# ๊ตฌ๋ฌธ: perl -pi -e 's/์ฐพ์„๋ฌธ์ž/๋ฐ”๊ฟ€๋ฌธ์ž/g' [ํŒŒ์ผ๋ช…]
perl -pi -e 's/\015//g' stopWasAll.sh

๋‹ค์ค‘ ํŒŒ์ผ ์ผ๊ด„ ์ฒ˜๋ฆฌ

์™€์ผ๋“œ์นด๋“œ(*)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ํ˜„์žฌ ๊ฒฝ๋กœ์˜ ๋ชจ๋“  .sh ํŒŒ์ผ์—์„œ CR ์ œ๊ฑฐ
perl -pi -e 's/\015//g' *.sh

3. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• B: vi ์—๋””ํ„ฐ ๋‚ด๋ถ€ ์น˜ํ™˜

ํŒŒ์ผ์„ ์—ด์–ด๋†“์€ ์ƒํƒœ์—์„œ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. vi๋กœ ํŒŒ์ผ ์—ด๊ธฐ
  2. ๋ช…๋ น ๋ชจ๋“œ(ESC)์—์„œ ์น˜ํ™˜ ๋ช…๋ น์–ด ์ž…๋ ฅ
:%s/^M//g
Tip: ์œ„ ๋ช…๋ น์–ด์˜ ^M์€ Shift + 6, M์„ ํƒ€์ดํ•‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
๋ฐ˜๋“œ์‹œ Ctrl + V๋ฅผ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ Ctrl + M์„ ๋ˆŒ๋Ÿฌ์•ผ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.

4. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• C: dos2unix ์œ ํ‹ธ๋ฆฌํ‹ฐ

๋ฆฌ๋ˆ…์Šค(CentOS/Ubuntu) ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์ „์šฉ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฝ์Šต๋‹ˆ๋‹ค.

# ์„ค์น˜ (CentOS)
yum install -y dos2unix

# ๋ณ€ํ™˜
dos2unix stopWasAll.sh

5. ๊ฒ€์ฆ (Verification)

๋ณ€ํ™˜ ํ›„ ๋‹ค์‹œ vi๋กœ ํŒŒ์ผ์„ ์—ด์–ด ^M ๋ฌธ์ž๊ฐ€ ์‚ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

test1 root [/was8/bin]# vi stopWasAll.sh

#!/bin/sh
#./startServer.sh server_name
#./stopServer.sh server_name -username username -password password
#PropFilePasswordEncoder.sh
#export LANG=en_us.utf8

๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Apache] CentOS 7 ์†Œ์Šค ์ปดํŒŒ์ผ ์„ค์น˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: ์˜์กด์„ฑ(APR, PCRE, OpenSSL) ํฌํ•จ

CentOS 7 ํ™˜๊ฒฝ์—์„œ Apache HTTP Server 2.4๋ฅผ ์†Œ์Šค ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. APR, APR-Util, PCRE, OpenSSL ๋“ฑ ํ•„์ˆ˜ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ๋ณ„๋„ ๊ฒฝ๋กœ(Custom Path)์— ์„ค์น˜ํ•˜๊ณ  ์ด๋ฅผ Apache์™€ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ค‘์ ์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

0. ์‚ฌ์ „ ์ค€๋น„ (Prerequisites)

์†Œ์Šค ์ปดํŒŒ์ผ์„ ์œ„ํ•ด ํ•„์š”ํ•œ C ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

OS ๋ฐ ์ปดํŒŒ์ผ ๋„๊ตฌ ํ™•์ธ

  • OS: CentOS 7 (Kernel 3.10.0)
  • ํŒจํ‚ค์ง€ ์„ค์น˜: yum -y install gcc make gcc-c++ pcre-devel expat-devel

1. ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ (Dependencies)

Apache 2.4 ๊ตฌ๋™์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ /SW/web/tools ํ•˜์œ„์— ๊ฒฉ๋ฆฌํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

1) APR (Apache Portable Runtime)

OS ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ถ”์ƒํ™”ํ•ด ์ฃผ๋Š” ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

# ๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ•ด์ œ ํ›„ ์ด๋™
./configure --prefix=/SW/web/tools/apr
make && make install

2) APR-Util

APR์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ™•์žฅํŒ์ด๋ฉฐ, ๋ฐ˜๋“œ์‹œ APR์ด ๋จผ์ € ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# --with-apr ์˜ต์…˜์œผ๋กœ ์œ„์—์„œ ์„ค์น˜ํ•œ ๊ฒฝ๋กœ ์ง€์ • ํ•„์ˆ˜
./configure --prefix=/SW/web/tools/apr-util --with-apr=/SW/web/tools/apr
make && make install

3) PCRE (Perl Compatible Regular Expressions)

URL ์žฌ์ž‘์„ฑ(Rewrite) ๋ชจ๋“ˆ ๋“ฑ ์ •๊ทœ ํ‘œํ˜„์‹ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

./configure --prefix=/SW/web/tools/pcre
make && make install

4) OpenSSL (HTTPS ์ง€์›)

๋ณด์•ˆ ํ†ต์‹ (SSL/TLS)์„ ์œ„ํ•ด OpenSSL ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

# config ๋ช…๋ น์–ด๋กœ ๊ฒฝ๋กœ ์„ค์ •
./config --prefix=/SW/web/tools/openssl --openssldir=/SW/web/tools/openssl

make && make install

2. Apache (HTTPD) ์ปดํŒŒ์ผ ๋ฐ ์„ค์น˜

๋ชจ๋“  ์˜์กด์„ฑ์ด ์ค€๋น„๋˜์—ˆ์œผ๋ฏ€๋กœ Apache๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. configure ๋‹จ๊ณ„์—์„œ ์•ž์„œ ์„ค์น˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ๊ฒฝ๋กœ๋ฅผ ์ •ํ™•ํžˆ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

Configure ์‹คํ–‰

tar -zxvf httpd-2.4.41.tar.gz
cd httpd-2.4.41

# ์„ค์ • (ํ•œ ์ค„๋กœ ์ž…๋ ฅ)
./configure \
--prefix=/SW/web/httpd24 \
--enable-so \
--enable-rewrite \
--enable-proxy \
--enable-ssl \
--enable-mods-shared=all \
--enable-modules=shared \
--enable-mpms-shared=all \
--with-mpm=worker \
--with-apr=/SW/web/tools/apr \
--with-apr-util=/SW/web/tools/apr-util \
--with-pcre=/SW/web/tools/pcre \
--with-ssl=/SW/web/tools/openssl \
--enable-unique-id

์ฃผ์š” ์˜ต์…˜ ์„ค๋ช…

  • --enable-so: DSO(Dynamic Shared Object) ๋ชจ๋“ˆ ์ ์žฌ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™” (ํ•„์ˆ˜)
  • --enable-mods-shared=all: ๋ชจ๋“  ๋ชจ๋“ˆ์„ ๋™์  ๋ชจ๋“ˆ๋กœ ์ปดํŒŒ์ผ
  • --with-mpm=worker: ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋ชจ๋“ˆ(MPM)์„ Worker ๋ฐฉ์‹์œผ๋กœ ์ง€์ • (์„ฑ๋Šฅ ์œ ๋ฆฌ)
  • --with-[lib]: ์•ž์„œ ์„ค์น˜ํ•œ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ ์—ฐ๊ฒฐ

์ปดํŒŒ์ผ ๋ฐ ์„ค์น˜

make && make install

3. ๊ตฌ๋™ ๋ฐ ๊ฒ€์ฆ (Verification)

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์„œ๋น„์Šค๋ฅผ ๊ธฐ๋™ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์ ‘์†์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ธฐ๋™

# Apache ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰
/SW/web/httpd24/bin/apachectl start

# ํ”„๋กœ์„ธ์Šค ํ™•์ธ
ps -ef | grep httpd
netstat -anotp | grep :80

๋ฐฉํ™”๋ฒฝ ์„ค์ • (CentOS 7)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋–  ์žˆ์–ด๋„ ๋ฐฉํ™”๋ฒฝ์ด ๋ง‰ํ˜€์žˆ์œผ๋ฉด ์ ‘์†์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. 80 ํฌํŠธ๋ฅผ ์—ด์–ด์ค๋‹ˆ๋‹ค.

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload

์ ‘์† ํ™•์ธ

๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— ์„œ๋ฒ„ IP๋ฅผ ์ž…๋ ฅํ•˜์—ฌ "It works!" ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Apache It Works Page

[๊ทธ๋ฆผ] ์„ค์น˜ ์„ฑ๊ณต ์‹œ ํ™•์ธ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ํŽ˜์ด์ง€


Next Step:
๊ธฐ๋ณธ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šด์˜ ํ™˜๊ฒฝ์— ๋งž์ถฐ httpd.conf์—์„œ ServerName ๊ฒฝ๊ณ ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , httpd-mpm.conf์—์„œ Worker ํ”„๋กœ์„ธ์Šค ํŠœ๋‹์„ ์ง„ํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค.

[Linux] find ๋ช…๋ น์–ด ์‹ค๋ฌด ํŒจํ„ด 3๊ฐ€์ง€: ํŒŒ์ผ๋ช…, ์ˆ˜์ • ์‹œ๊ฐ„, ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰(grep) ํ™œ์šฉ

๋ฆฌ๋ˆ…์Šค(CentOS 7) ํ™˜๊ฒฝ์—์„œ ์›ํ•˜๋Š” ํŒŒ์ผ์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ find ๋ช…๋ น์–ด์˜ ํ•„์ˆ˜ ์˜ต์…˜์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” ๊ฒ€์ƒ‰, ์ตœ๊ทผ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ํƒ์ƒ‰, ๊ทธ๋ฆฌ๊ณ  xargs๋ฅผ ์กฐํ•ฉํ•œ ํŒŒ์ผ ๋‚ด์šฉ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • Shell: Bash

1. ํŒŒ์ผ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰ (By Name)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์ž…๋‹ˆ๋‹ค. -name ์˜ต์…˜์€ ์ •ํ™•ํ•œ ์ด๋ฆ„์„, -iname ์˜ต์…˜์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ฒ€์ƒ‰

# ์ „์ฒด ๊ฒฝ๋กœ(/)์—์„œ Mem.sh ํŒŒ์ผ ์ฐพ๊ธฐ
find /sw -name "Mem.sh"

# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(.)์—์„œ ์ฐพ๊ธฐ
find . -name "Mem.sh"

๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ ๊ฒ€์ƒ‰ (Insensitive)

ํŒŒ์ผ๋ช…์˜ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

# Mem.sh, MEM.sh ๋ชจ๋‘ ๊ฒ€์ƒ‰๋จ
find /sw -iname "Mem.sh"
Tip (์—๋Ÿฌ ์ˆจ๊ธฐ๊ธฐ):
๊ฒ€์ƒ‰ ๋„์ค‘ Permission denied ๋ฉ”์‹œ์ง€๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ๋œฌ๋‹ค๋ฉด ๋ช…๋ น์–ด ๋’ค์— 2>/dev/null์„ ๋ถ™์—ฌ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ: find / -name "test" 2>/dev/null

2. ์ˆ˜์ • ์‹œ๊ฐ„์œผ๋กœ ๊ฒ€์ƒ‰ (By Time)

์žฅ์•  ๋ฐœ์ƒ ์‹œ์ ์ด๋‚˜ ๋กœ๊ทธ ๋ถ„์„ ์‹œ, ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์ฐพ์„ ๋•Œ -mtime(Modification Time) ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

# ์ตœ๊ทผ 1์ผ(24์‹œ๊ฐ„) ์ด๋‚ด์— ์ˆ˜์ •๋œ .sh ํŒŒ์ผ ๊ฒ€์ƒ‰
find /sw -name "*.sh" -mtime -1

์˜ต์…˜ ์ƒ์„ธ ์„ค๋ช…

  • -mtime -n: ์ตœ๊ทผ n์ผ ์ด๋‚ด์— ๋ณ€๊ฒฝ๋จ (Today)
  • -mtime +n: n์ผ ์ด์ „์— ๋ณ€๊ฒฝ๋จ (Old files)
  • -mtime n: ์ •ํ™•ํžˆ n์ผ ์ „์— ๋ณ€๊ฒฝ๋จ

3. ํŒŒ์ผ ๋‚ด์šฉ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ (With Grep)

find๋กœ ์ฐพ์€ ํŒŒ์ผ๋“ค์˜ ๋‚ด์šฉ(Content)์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ํŒŒ์ดํ”„(|)์™€ xargs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ grep์œผ๋กœ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ํŒŒ์ดํ”„๋ผ์ธ

[ํŒŒ์ผ ์ฐพ๊ธฐ][๋ชฉ๋ก ์ „๋‹ฌ][๋‚ด์šฉ ๊ฒ€์ƒ‰]์˜ ํ๋ฆ„์ž…๋‹ˆ๋‹ค.

# 1์ผ ์ด๋‚ด ์ˆ˜์ •๋œ sh ํŒŒ์ผ๋“ค ์ค‘์—์„œ "Mem"์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ํฌํ•จ๋œ ๋ผ์ธ ์ถœ๋ ฅ
find /sw -name "*.sh" -mtime -1 | xargs grep "Mem"

์‹คํ–‰ ๊ฒฐ๊ณผ ํ•ด์„

/sw/Mem.sh:MEMINFO=`cat /proc/meminfo...`  <-- ํŒŒ์ผ๋ช…:๋‚ด์šฉ
/sw/Mem1.sh: TOTAL=`free | grep ^Mem...`
/sw/Mem1.sh: USED=`free | grep ^Mem...`

grep์ด find๊ฐ€ ์ฐพ์•„๋‚ธ ํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜์”ฉ ์—ด์–ด์„œ "Mem" ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ๋ผ์ธ์„ ํŒŒ์ผ๋ช…๊ณผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•ด ์ค๋‹ˆ๋‹ค.


Next Step:
ํŒŒ์ผ์„ ๋‹จ์ˆœํžˆ ์ฐพ๋Š” ๊ฒƒ์„ ๋„˜์–ด, -exec ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰๋œ ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ ์ผ๊ด„ ๋ณ€๊ฒฝ(chmod)ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ(rm)ํ•˜๋Š” ๋“ฑ์˜ ๊ณ ๊ธ‰ ํ™œ์šฉ๋ฒ•์„ ์ตํ˜€๋ณด์„ธ์š”.