Mod_security ๊ตฌ์ถํ๊ธฐ
๐ก๏ธ 1๋จ๊ณ: ModSecurity ์ฝ์ด ์์ง ๋ฐ ๋ชจ๋ ์ค์น
Apache ์น ์๋ฒ์ ModSecurity ๋ชจ๋์ ์ค์นํ๋ค.
- ํจํค์ง ๋ชฉ๋ก ์
๋ฐ์ดํธ:
sudo apt update - ModSecurity ํจํค์ง ์ค์น: Apache์ฉ ModSecurity ๋ชจ๋์ ์ค์นํ๋ค.
sudo apt install libapache2-mod-security2 - Apache ModSecurity ๋ชจ๋ ํ์ฑํ ํ์ธ: ์ค์น ์ ์๋์ผ๋ก ํ์ฑํ๋์ง๋ง, ํ ๋ฒ ๋ ํ์ธํ๋ค.
sudo a2enmod security2 - ์น ์๋ฒ ์ฌ์์: ๋ชจ๋ ์ ์ฉ์ ์ํด Apache๋ฅผ ์ฌ์์ํ๋ค.
sudo systemctl restart apache2
๐ก๏ธ 2๋จ๊ณ: ModSecurity ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ (Detection → Prevention ๋ชจ๋)
ModSecurity๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ง ๋ชจ๋(Detection Only) ๋ก ๋์ด ์์ด. ์ค์ ์ฐจ๋จ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ค์ ์ ๋ณ๊ฒฝํด์ผ ํ๋ค.
โ 2-1. ModSecurity ์ค์ ํ์ผ ๋ฐฑ์
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
โ 2-2. ModSecurity ์ค์ ์ด๊ธฐ
sudo nano /etc/modsecurity/modsecurity.conf
โ 2-3. ์ด ๋ถ๋ถ์ ์์
SecRuleEngine DetectionOnly
→ SecRuleEngine On ์ผ๋ก ๋ณ๊ฒฝ
์ด์ ์ค์ ๊ณต๊ฒฉ ์์ฒญ์ ์ฐจ๋จํ๊ฒ ๋จ.
๐ก๏ธ 3๋จ๊ณ: OWASP Core Rule Set(CRS) ์ค์น
ModSecurity๋ ์์ง์ผ ๋ฟ์ด๊ณ , ์ค์ ๋ณด์ ๊ท์น์ ๋ฐ๋ก ์ค์นํด์ผ ํ๋ค. ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊ท์น์ OWASP CRS์ด๋ค.
โ 3-1. CRS ๋ค์ด๋ก๋
cd /usr/share/modsecurity-crs/ sudo git clone https://github.com/coreruleset/coreruleset.git
* Ubuntu ๊ธฐ๋ณธ ์ค์น์ /usr/share/modsecurity-crs/ ๋๋ ํ ๋ฆฌ๊ฐ ์ด๋ฏธ ์์ ์๋ ์์ผ๋ ์๋ ๋ช ๋ น์ผ๋ก ํ์ธ:
ls /usr/share/
* ๋ง์ฝ ํด๋น ๋๋ ํ ๋ฆฌ๊ฐ ์๋ค๋ฉด:
sudo git clone https://github.com/coreruleset/coreruleset.git /usr/share/modsecurity-crs
โ 3-2. ์ค์ ์์น ํ์ธ
ls /usr/share/modsecurity-crs/coreruleset
์ด ๊ฒฝ๋ก ์์ crs-setup.conf.example๊ฐ ์๋์ง ํ์ธํ๋ค.
โ 3-3. ํ์ผ ๋ณต์ฌ
์ ๋ช ๋ น์์ ํ์ผ์ด ๋ณด์๋ค๋ฉด:
sudo cp /usr/share/modsecurity-crs/coreruleset/crs-setup.conf.example /usr/share/modsecurity-crs/coreruleset/crs-setup.conf
๐งฉ ์ฐธ๊ณ : CRS v4.x๋ ๊ตฌ์กฐ๊ฐ ๋ฐ๋
CRS 4.x์์๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์ด๋ ๊ฒ ์๊น:
coreruleset/ crs-setup.conf.example rules/
/usr/share/modsecurity-crs/์๋ ์ถ๊ฐ ํ์ผ๋ง ์์.
๐ก๏ธ 4๋จ๊ณ: Apache์ CRS Include ์ค์ ํ์ธ
security2.conf ํ์ผ์ ์ ํํ Include ๊ฒฝ๋ก๊ฐ ๋ค์ด๊ฐ๋์ง ๋ค์ ํ์ธํ๋ค.
sudo nano /etc/apache2/mods-enabled/security2.conf
๋งจ ์๋์ ๋ค์ ๋ ์ค์ด ์์ด์ผ ํ๋ค (๊ฒฝ๋ก๋ CRS v4 ๊ธฐ์ค):
IncludeOptional /usr/share/modsecurity-crs/coreruleset/crs-setup.conf
IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/*.conf
๋ค์๋ถ๋ถ์ ์ฃผ์ ์ฒ๋ฆฌํ๋ค.
# IncludeOptional /usr/share/modsecurity-crs/*.load
์ ์ฅ ํ ์ข ๋ฃ.
๐ก๏ธ 5๋จ๊ณ: Apache ์ค์ ๊ตฌ๋ฌธ ๊ฒ์ฌ
์คํ๋ ์๋ชป๋ ์ค์ ์ด ์์ผ๋ฉด ์ฌ๊ธฐ์ ์ก์๋ธ๋ค.
sudo apachectl configtest
์ ์์ด๋ผ๋ฉด:
Syntax OK
๐ก๏ธ 6๋จ๊ณ: Apache ์ฌ์์
๊ท์น ์ ์ฉ์ ์ํด ์น ์๋ฒ๋ฅผ ์ฌ์์ํ๋ค
sudo systemctl restart apache2
๐งช 7๋จ๊ณ: ๊ธฐ๋ณธ ํ ์คํธ
์๋ URL์ ํธ์ถํด๋ณด๋ฉด ModSecurity๊ฐ ์ฐจ๋จํ๋์ง ํ์ธํ ์ ์๋ค.
http://your-server/?test=../etc/passwd
→ ์ ์์ด๋ผ๋ฉด 403 Forbidden ๋๋ ModSecurity ์ฐจ๋จ ํ์ด์ง๊ฐ ๋ฌ๋ค.
๐ 8๋จ๊ณ: ๋ก๊ทธ ํ์ธ (๊ฐ์ฅ ์ค์)
ModSecurity๋ ๋ชจ๋ ์ฐจ๋จ ๊ธฐ๋ก์ /var/log/apache2/modsec_audit.log ์ ๊ธฐ๋กํ๋ค.
๋ก๊ทธ๊ฐ ๊ธฐ๋ก๋๋์ง ํ์ธ
sudo tail -f /var/log/apache2/modsec_audit.log
→ ์์์ ํ ์คํธํ ๊ณต๊ฒฉ ํจํด์ด ๋ก๊ทธ์ ๊ธฐ๋ก๋๋ฉด ModSecurity + CRS ์ ์ฉ ์๋ฃ.
์ปค์คํ ๋ฃฐ ์์ฑํ๊ธฐ
โ 1๋จ๊ณ: Audit ๋ก๊ทธ๊ฐ ํ์ฑํ๋์ด ์์ด์ผ ํจ
sudo nano /etc/modsecurity/modsecurity.conf
#๋ค์๊ณผ ๊ฐ์ด ์์
SecAuditEngine On
SecAuditLog /var/log/apache2/modsec_audit.log
SecAuditLogParts ABIJDEFHZ
sudo systemctl restart apache2
โ 2๋จ๊ณ: ์ปค์คํ ๋ฃฐ ํ์ผ ์์ฑ
sudo nano /etc/modsecurity/custom_rules.conf
๐ฏ 3๋จ๊ณ: “ํ์ง๋๋ฉด ๋ฌด์กฐ๊ฑด audit log์ ๋จ๋” ๋ฃฐ ์์ฑ
์๋ฅผ ๋ค์ด URL ํ๋ผ๋ฏธํฐ์ attack_test ๋ผ๋ ๊ฐ์ด ์ค๋ฉด ๋ฐ๋์ modsec_audit.log์ ๊ธฐ๋ก๋๋๋ก ํ ์ ์๋ค.
โ ์์ ๋ฃฐ
SecRule ARGS "attack_test" \ "id:100001, \ phase:2, \ t:none, \ log, \ auditlog, \ msg:'Custom test rule triggered', \ severity:2"
| auditlog | → ํญ์ modsec_audit.log์ ๊ธฐ๋ก๋จ (ํต์ฌ!) |
| log | → error.log์๋ ๊ธฐ๋ก๋จ |
| id:100001 | ๋ฃฐ ID (๊ฒน์น์ง ์๋๋ก 100k๋ ์ถ์ฒ) |
| phase:2 | ์์ฒญ ๋ณธ๋ฌธ/ํ๋ผ๋ฏธํฐ ๊ฒ์ฌ phase |
| msg | ๋ก๊ทธ์ ํ์๋ ๋ฉ์์ง |
๐ 4๋จ๊ณ: Apache์ ๋ฃฐ ํฌํจ์ํค๊ธฐ
sudo nano /etc/apache2/mods-enabled/security2.conf
๐ 5๋จ๊ณ: Apache ์ฌ์์
sudo systemctl restart apache2
๐งช 6๋จ๊ณ: ํ ์คํธ
attack_test๋ฅผ ๋ฃ์ด์ ๊ณต๊ฒฉ
http://your-ip/?test=attack_test
๊ทธ ๋ค์ audit ๋ก๊ทธ ํ์ธ
sudo tail -f /var/log/apache2/modsec_audit.log
์ฌ๊ธฐ์ ์๋์ ๋น์ทํ ๋ก๊ทธ๊ฐ ๋ณด์ฌ์ผ ํ๋ค.
Message: Custom test rule triggered RuleId: 100001
๐ ๊ฒฐ๊ณผ
์ด์ ModSecurity๋ ํน์ ํจํด์ ํ์งํ๋ฉด audit log์ ๋ฐ๋์ ๊ธฐ๋กํ๋๋ก ์๋ํ๊ฒ ๋จ.

