์ ๋ณด ๋ณดํธ ๋ณด์
์ ๋ณด ๋ณดํธ ๋ณด์์ ๊ฐ๋
์ ๋ณด์ ์์ง, ๊ฐ๊ณต, ์ ์ฅ, ๊ฒ์, ์ก์ ์ค์ ์ ๋ณด์ ํผ์, ๋ณ์กฐ, ์ ์ถ ๋ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ด๋ฆฌ์ , ๊ธฐ์ ์ ์๋จ ๋๋ ๊ทธ๋ฌํ ์๋จ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ํ์
๊ธฐ์ ์์ ์ ๋ณด ๋ณดํธ์ ๋์
โ ์ถ์ ํ๋ ๋ชจ๋ ์ฌ๋ + ์ ๋ฌดํ์ ์ ๋ณด ์์ฐ
์ ๋ณด ๋ณดํธ ๋์ฑ
- ๊ด๋ฆฌ์ ๋ณดํธ ๋์ฑ : ์ ๋, ๋ณด์ ๊ต์ก, ํ๋ จ, ๋ณด์ ์ง๋ฌด
- ๋ฌผ๋ฆฌ์ ๋ณดํธ ๋์ฑ : ์ถ์ ํต์ , ์ฌ๋ ๋ฐฉ์ง
- ๊ธฐ์ ์ ๋ณดํธ ๋์ฑ : ๋คํธ์ํฌ ์ ๊ทผ ํต์ , ๋ณด์ ์ํํธ์จ์ด, ๋ฐฉํ๋ฒฝ
์ฌ์ดํธ ๋ณด์
โ ํ์ผ ์ ๋ก๋ ์ทจ์ฝ์
โ XSS (Cross Site Scripting)
โ SQL Injection
ํ์ผ ์ ๋ก๋ ์ทจ์ฝ์
โ ๊ฒ์ํ ๋ฑ์ ์ฒจ๋ถ ํ์ผ ๊ธฐ๋ฅ์ ์ด์ฉํด ํ๊ฐ ๋์ง ์์ ํ์ผ๋ค์ ์น์๋ฒ๋ก ์ ๋ก๋ ํ ์ ์๋ ์ทจ์ฝ์ (php, jsp, asp, cji, ji, py ๋ฑ)
httpd.conf
<Directory "/usr/local/apache">
AllowOverride FileInfo
</Directory>
.htaccess
<FilesMatch "\.(ph|inc|lib)">
Order allow, deny
Deny from all
</FilesMatch>
AddType text/html html.htm.php .php3 -php4.phtml.phps in .c gใ
-pl .shtml-jsp
์๋ฐฉ
โ ํ์ผ ์ ๋ก๋ ๋๋ ํ ๋ฆฌ "์คํ"๊ถํ ์ ๊ฑฐ
โ ํ์ฉ๋์ง ์์ ํ์ฅ์ ์ ๋ก๋ ์ ํ
XSS
โ ๊ด๋ฆฌ์๊ฐ ์๋ ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์ ์ฑ ์คํฌ๋ฆฝํธ ์ฝ์
โ ํํ์ด์ง ์ ์์์ ๊ถํ ์ ๋ณด๋ฅผ ํ์ทจํ๊ฑฐ๋ ์ ์ฑ์ฝ๋ ๊ฐ์ผ์ ์ ๋ฐํ ์ ์๋ ์ทจ์ฝ์
์๋ฐฉ
โ XSS ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ESAPI
- Lucyxss filter
โ X-XSS-Protection ์๋ต ํค๋ ์ฌ์ฉ
โ ๋ฌธ์์ด ์นํ (<>&" ๋ฑ์ < > & " ๋ก ์นํ)
- ๋ณด์กฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ (๊ณต๊ฒฉ์๊ฐ ํด์ ๊ฐ๋ฅ)
SQL Injection
โ ๊ฒ์ํ, ํ์๊ฐ์ ์ฐฝ, URL ๋ฑ์ ํตํด ๋ถ์ ์ ํ ๊ฐ์ ์ฝ์ ํ์ฌ DB๋ฐ์ดํฐ๋ฅผ ๋นผ๋ด๊ฑฐ๋ ๋ก๊ทธ์ธ ์ ์ฐจ ์ฐํ ๋ฑ ๋น์ ์ ๋์์ ์ ๋ฐ
โ ๊ต์ฅํ ์ํํ๋ค
์๋ฐฉ
โ ์ํ์ด ์ฝ๋ฉ(' ; -- # /* */ ๋ฑ ์ ๋ ฅ๋ด์ฉ ํํฐ๋ง)
- PreparedStatement: ๊ฐ์ ๋ฐ์ธ๋ฉํ๋ ์์ ์์ ์ ๋ฌ๋ ํน์๋ฌธ์ ์ฟผ๋ฆฌ ๋ฑ์ ํํฐ๋งํ์ฌ sql injection ์๋ฐฉ
1 preparedStatement = "SELECT * FROM users WHERE name = ?";
2 preparedStatement.setString(1, userName);
3
4 # If someone puts
5' or '1'='1
6
7 # Result
8 SQL FIND name : ' or '1'='1
โ ์น ๋ฐฉํ๋ฒฝ ๊ตฌ์ถ
์น ์๋ฒ ๋ณด์
โ ๊ณ์ ๊ด๋ฆฌ
โ root ๊ณ์ ์ PATH ํ๊ฒฝ๋ณ์ ์ค์
โ ์๋น์ค ๊ด๋ฆฌ
๊ณ์ ๊ด๋ฆฌ
โ root ๊ณ์ ์๊ฒฉ ์ ์ ์ ํ
- root ๊ณ์ ๋ณด์์ด ํนํ ์ค์ํ๋ค!
- Telnet ์๊ฒฉ ์ ์ ์ฐจ๋จ
- SSH ์๊ฒฉ ์ ์ ์ฐจ๋จ
Telnet ์๊ฒฉ์ ์ ์ฐจ๋จ
1 vi /etc/securetty
2 pts/0~ pts/x ์ค์ ์ ๊ฑฐ
3
4 vi /etc/pam.d/login
5 # auth required /lib/security/pam_securetty.so #์ ๊ฑฐ(์ฃผ์์ ๊ฑฐ)
6 auth required/lib/security/pam_securetty.so
SSH ์๊ฒฉ์ ์ ์ฐจ๋จ
1 vi /etc/ssh/sshd_config
2 "PermitRootLogin no" ์ค์
โ ๋ก๊ทธ์ธ ์คํจ ์๊ณ๊ฐ ์ค์
โ ํจ์ค์๋ ๋ณต์ก๋ ์ค์
- public key
- two factor ๋ก๊ทธ์ธ ์ค์
root ๊ณ์ ์ PATH ํ๊ฒฝ๋ณ์ ์ค์
โ PATH์ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ณด๋ค "."(ํ์ฌ ๋๋ ํ ๋ฆฌ)๊ฐ ๋จผ์ ์ค๋ฉด, ๋ณ์กฐ๋ ๋ช ๋ น์ด ์ฝ์ ์ผ๋ก ์ ์์ ๊ธฐ๋ฅ์ด ์คํ๋ ์ ์์
์๋น์ค ๊ด๋ฆฌ
โ Apache, Nginx ๋ฑ ์๋ชป๋ ๋ณด์ ์ค์ ์ผ๋ก ๋ฐ์ํ ์ ์๋ ๋น์ธ๊ฐ์์ ์๊ฒฉ ์ ์, ์ ๋ณด ๋ ธ์ถ ๋ฑ์ ์ ํํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ค
โ Directory Listing: ์ค์ ๋ ๋ชจ๋ Directory ์ต์ ์ง์์์์ indexes ์ ๊ฑฐ
#Directory Listing
Index of /
Name Last modified Size Description
secret/ 2017-01-27 15:40
priv/ 2017-01-27 15:41
edit/ 2017-01-27 15:40
dirl/ 2017-01-27 15:40
config.php 2017-01-27 15:40 11K
Apache/2.4.23 (Wm64) PHP/5.6.25 Server at localhost Port 80
#httpd.conf
1 <Directory />
2 #Options Indexes
3 AllowOverride None
4 Order allow, deny
5 Allow from all
6</Directory>
7
์น ๋ฐฉํ๋ฒฝ(WAF)
โ L7(OSI 7 Layers)์์ ๋ณด์ ์ ์ง
โ SQL injection, XSS ๋ฑ ์น ๊ณต๊ฒฉ ํ์ง, ์ฐจ๋จ
โ DDOS, IP์ฐจ๋จ, Rate limit ๋ฑ ๊ท์น ์์ฑ
โ modsecurity
AWS ๋ณด์ ๊ฐ์ด๋
ํด๋ผ์ฐ๋์ ์ฅ์ ๊ณผ ๋ณด์
ํด๋ผ์ฐ๋์ ์ฅ์
โ ์ด๊ธฐ ์ ํฌ์ ๋น์ฉ x
โ ์ด์ ๋น์ฉ ์ ๊ฐ
- ์ฌ์ฉํ ๋งํผ๋ง ๋น์ฉ๋ง ๋ธ๋ค
- ๊ทธ๋ฌ๋ ํดํน ๋ฐ์ ์? -> ์ด๋ง์ด๋งํ ๋น์ฉ ๋ถ๊ณผ
โ ํ๋ ฅ์ ์ธ ์ด์ ๋ฐ ํ์ฅ
โ ์๋ ๋ฐ ๋ฏผ์ฒฉ์ฑ
- ์ ๋ถ๋ง์ ์ธํ๋ผ ๊ตฌ์ถ ๊ฐ๋ฅ
- ๋น ๋ฅด๊ฒ ๋ณํ์ ๋์
โ ๋น์ฆ๋์ค์๋ง ์ง์ค ๊ฐ๋ฅ
โ ๊ธ๋ก๋ฒ ํ์ฅ
โ ์ ๊ทผ์ฑ
์ฌ๊ณ ์ฌ๋ก
โ ๊ณ์ ํดํน
โ ๋ฐ์ดํฐ ์ ์ถ
โ ๋ณต๊ตฌ ์คํจ(๋์ฌ์จ์ด)
์์ฌ์
โ ๊ณ์ ๋ณด์์ ๋ํ ์ฑ ์์ ์ฌ์ฉ์ ๋ณธ์ธ์๊ฒ ์๋ค
โ ์๋ฐฉ
- MFA ํ์ฑํ
- AWS access key ๋ณดํธ
โ ๋ฆฌ์คํฌ ๊ด๋ฆฌ
- ROOT ์ฌ์ฉ์ ๋ณด์ ๊ฐํ
- IAM ์ฌ์ฉ์๋ฅผ ํตํ ๊ด๋ฆฌ
โ ๊ฐ์ง
- ๋น์ฉ ๊ด๋ จ ์๋ฆผ ์ค์
๋ชจ๋ฒ ์ฌ๋ก
MFA ํ์ฑํ
โ Multi Factor Authentication
โ ์ผ๋ฐ์ ์ผ๋ก Authentication App ์ฌ์ฉ
- google OTP, Twilio Authy, Microsoft Authenticator
aws ํ๊ฒฝ์์ ์ฌ์ฉํ๋ MFA์ ๋ชจ๋ ๊ฒ
AWS Access Key ๋ณดํธ
โ AWS CLI๋ API ์ฌ์ฉ์, ์ธ์ฆ์ ์ํด ์ฌ์ฉ๋๋ ์๊ฒฉ ์ฆ๋ช
โ access key id์ security access key๋ก ๊ตฌ์ฑ
โ ๊ฐ์ด๋
- ์ฃผ๊ธฐ์ ์ธ access key ๊ต์ฒด ๋ฐ ๋ฏธ์ฌ์ฉ key ์ ๊ฑฐ
- ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์ต์ ๊ถํ ์ ์ฉ
- github๋ฑ commit ์ ์ฃผ์
- git-secrets๋ฑ์ ํ์ฉํ access key ์ํธํ ๋ฐ ๋ณดํธ
AWS ์ก์ธ์ค ํค ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
ROOT ์ฌ์ฉ์ ๋ณด์ ๊ฐํ
โ ROOT ์ฌ์ฉ์
- AWS ๊ณ์ ์์ฑ ์ ์ฌ์ฉํ ์ด๋ฉ์ผ ์ฃผ์์ ํจ์ค์๋๋ก ์ธ์ฆํ๋ ๊ณ์
- ๋ชจ๋ ๊ถํ์ ์ง๋๊ณ ์์ผ๋ฉฐ, ๊ถํ ์ ์ฝ ์ค์ ์ด ๋ถ๊ฐ๋ฅ
- ํดํน ์ ํผํด๊ฐ ๋ง์ฌํ๋ค!
โ ๊ฐ์ด๋
- ํ์์์๋ ๋ฏธ์ฌ์ฉ
- Access Key ์์ฑ ๊ธ์ง
- ๋น๋ฐ๋ฒํธ ์ ์ฑ ๊ฐํ
- MFA ํ์ฑํ
IAM ์ฌ์ฉ์๋ฅผ ํตํ ๊ดธ๋ฆฌ
โ AWS identity and Access Management
- aws ๋ฆฌ์์ค์ ๋ํ ์์ธ์ค๋ฅผ ์์ ํ๊ฒ ์ ์ดํ ์ ์๋ ์๋น์ค
- ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน๋ณ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ํตํ์ฌ, AWS ๋ฆฌ์์ค์ ๋ํ ์์ธ์ค๋ฅผ ์์ ํ๊ฒ ์ ์ด
โ ๊ฐ์ด๋
- ๊ฐ๋ณ/์ฉ๋๋ณ ์ฌ์ฉ์ ์์ฑ
- ๊ทธ๋ฃน์ ํตํ ๊ถ๋ ๊ด๋ฆฌ
- ๋น๋ฐ๋ฒํธ ์ ์ฑ ๊ฐํ
๋น์ฉ ๊ด๋ จ ์๋ฆผ ์ค์
โ ์ด๋ฉ์ผ ์ ๋ณด ์ ๋ฐ์ดํธ
- ์์ฃผ ์ฐ๋ ์ด๋ฉ์ผ๋ก ์ค์ ๋ฐ ํ์ธ
โ Free Tier ํ๋ ์ด๊ณผ ๊ฒฝ๋ณด ์์ฑ
- ํ๋ ์ด๊ณผ ์ ๋ฉ์ผ์ด๋ SMS ์ค์
โ ์๋ณ/์ค์๊ฐ ์์ ์๊ธ ๊ฒฝ๊ณ ์ค์
- Amazon CloudWatch๋ฅผ ์ด์ฉํ ์๊ฐ ์์ AWS์๊ธ ์๋ฆผ ์ค์
- AWS chatbot์ ์ฌ์ฉํ slack์์ ์์ฐ ์๋ฆผ ์์
์์ AWS์๊ธ์ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ๊ฒฐ์ ๊ฒ ๋ณด ์์ฑ
AWS ํ๋ฆฌํฐ์ด ์ฌ์ฉ๋ ์ถ์
๊ณ์ ์นจํด ์ ํ์ ์กฐ์น
โ AWS support ์ผํฐ์ case ๋ฑ๋ก (์ต์ฐ์ !)
โ AWS ๊ฐ์ด๋์ ๋ฐ๋ผ ํ์ ์กฐ์น
- ๋ฌด๋จ์ผ๋ก ์์ฑ๋ ๋น์ ์ ๋ฆฌ์์ค ์ญ์
- ์ ์ฒด ์ฌ์ฉ์ (Root ๋ฐ IAM ์ฌ์ฉ์) ์ํธ ๋ณ๊ฒฝ
- ๋ชจ๋ AWS access key ๊ต์ฒด ๋ฐ ์ญ์
AWS ๊ณ์ ๋ณด์ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฐ ๊ผญ ์ง์ผ์ผ ํ๋ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก
๋๊ธ