|
|
|
ping의 응답을 막는 방법은 ICMP ECHO 를 on을 시키느냐 off 를 시키느냐에 따라 좌우된다. |
보통 ping 을 막는 방법으로 많이 나오는 방법은 kernel의 icmp_echo_ignore_all 값을 1로 만들어 주는 방법이 주로 알려져 |
실제로 ping을 이용한 DOS 공격은 broadcast와 multicast service의 패킷을 넘치게 하는 공격이다. |
즉, ping을 다 막을 필요가 없고 broadcast와 multicast 쪽의 ping만 막으면 기본적인 방어가 가능하다. |
|
모든 ICMP ECHO 요청을 커널이 무시하게 하거나, ICMP ECHO 요청 중 broadcast 와 multicast 주소에만 무시하게 할 때 1의 값은 무시, |
0의 값은 return 을 하게 된다. |
만약 boardcast/multicast 주소의 ICMP ECHO 요청을 수용하게 한다면, network 가 다른 호스트로 denial of service(DOS) packet flooding 공격을 하는데 이용될 수 있다. |
즉 이것은 icmp_echo_ignore_all 의 모든 값을 1로 할 필요는 없다는 뜻이다. |
ping 이라는 것은 내가 외부에서 나의 host 가 살아 있는지의 판단 여부도 되기 때문인데 |
|
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all |
|
을 이용하는 것보다는 |
|
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts |
|
를 이용하는 것이 더욱 효과적이다. 시스템 부팅시마다 적용할 경우에는 rc.local 에 위의 내용을 넣어 주면 된다. |
|
커널 2.2.16 버전 이상의 사용자들은 다음 설정도 적용이 가능하며 /etc/sysctl.conf 에 다음을 추가한다. |
|
net.ipv4.icmp_echo_ignore_broadcasts = 1 |
|
파일을 저장한 후에 sysctl -w 명령을 실행하고 나서 |
|
sysctl -a | grep ignore_boradcasts |
|
명령을 실행하면 값이 변경이 되었는지 확인할 수 있다. |
다음 부터는 부팅시 /etc/sysctl.conf 의 값이 적용된다. |
|
|
|
1) version 정보 숨기기 |
|
센드메일 버전은 간단히 설정화일 레벨에서 가능하다. |
간단히 포트에 접근해서 헤더를 읽으면 현재의 버전을 알 수 있다. |
|
[ /etc/sendmail.cf - 변경 전 ] |
|
# Configuration version number |
DZ8.11.3 |
|
# SMTP initial login message (old $e macro) |
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b |
|
[root@www /root]# telnet localhost 25 |
Trying 127.0.0.1... |
Connected to localhost. |
Escape character is '^]'. |
220 도메인 ESMTP Sendmail 8.11.3/8.11.3; Mon, 19 Aug 2002 05:42:22 |
+0900 |
|
다음과 같은 결과를 볼 수 있다. |
|
[ /etc/sendmail.cf - 변경 후 ] |
|
# Configuration version number |
DZ0.0.0 |
|
# SMTP initial login message (old $e macro) |
O SmtpGreetingMessage=$j Don't Cracking $Z; $b |
|
[root@www /root]# telnet localhost 25 |
Trying 127.0.0.1... |
Connected to localhost. |
Escape character is '^]'. |
220 ns.mydomain.co.kr ESMTP Don't Cracking 0.0.0; Mon, 19 Aug 2002 |
05:51:15 +0900 |
|
2) Relay |
특정 IP에서만 접근 가능하도록 설정한다. |
|
3) EXPN 과 VRFY 사용 금지 |
/etc/sendmail.cf에서 PrivacyOptions를 찾아서 아래와 같이 내용을 추가한다. |
|
O PrivacyOptions=authwarnings,noexpn,novrfy,restrictqrun |
|
이것은 스패머 또는 크래커가 EXPN과 VRFY 명령을 사용하지 못하도록 한다. 이는 서버에 접속해서 위 두개의 명령으로 사용자 계정을 알 수 있기 때문에 미연에 방지하는 것이다. |
|
4) SMTP daemon options 수정 |
|
외부에서 메일을 받고자 할 경우 반드시 설정해 주어야 한다. |
|
/etc/sendmail.cf에서 SMTP demon options 이란 항목을 찾아서 아래와 같이 127.0.0.1을 0.0.0.0 으로 바꿔준다.(혹은 Addr=127.0.0.1 항목을 제거) |
|
# SMTP daemon options |
O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA |
|
|
|
일반적인 리눅스에서, 프로그램이 휘두를 수 있는 권한은 그 프로그램을 실행한 사용자에 따라 달라진다. 일반 사용자 권한으로 프로그램을 실행하면 일반 사용자 권한 내에서만 |
움직일 수 있고, 관리자(root) 권한으로 프로그램을 실행하면 관리자 권한으로 동작한다. |
하지만 일단 프로그램이 권한을 획득하고 나면, 그 다음부터는 전적으로 프로그램의 재량에 맡겨지게 된다. 어떤 프로그램이 사용자 동의를 통하든 보안 버그를 이용하든, |
일단 관리자 권한을 얻은 후 시스템에 손상을 가할 경우 이를 막기란 거의 불가능하다. |
|
SELinux는 이렇게 권한이 남용되는 사태를 막기 위해 존재한다. SELinux는 사용자와 프로그램, 그리고 파일과 장치에 각각 다른 권한을 지정할 수 있다. |
어떤 프로그램에 모든 권한을 주는 대신, 그 프로그램이 수행되기에 충분한 권한만 부여할 수 있으며 이것으로 리눅스 시스템의 보안을 크게 높일 수 있다. |
|
예를 들어, 리눅스에서 1024 이하 포트는 원래 관리자(root)만 사용할 수 있다. 따라서 어떤 프로그램이 1024 이하 포트를 사용하게 하고 싶으면 어쩔 수 없이 관리자 권한을 줘야 |
하는데, 하지만 SELinux를 이용하면, 특정 프로그램에 관리자 권한을 부여하지 않고도 1024 이하 포트를 열게 할 수 있다. |
|
그러나 SELinux 적용에는 부작용도 따른다. 가장 큰 문제는 역시 '과민 반응' 이다. 이것은 SELinux가 지나치게 엄격한 기준을 적용해서 시스템 사용에 불편이 오는 것이다. |
이러한 기준을 '정책(policy)'이라고 하는데, 페도라의 경우 처음에 정책을 너무 엄격하게 설정했다가 나중에 기본값에서 제외한 적이 있다. |
또한 SELinux의 적용을 받는 모든 소프트웨어에 맞추어 정책을 섬세하게 설정하여야 하는데, 이것 또한 큰 노가다(?)가 필요한 작업이다. 게다가 사용 가능한 프로그램이 |
추가될 때마다 정책을 설정해야 하므로 관리자 입장에서는 매우 귀찮은 존재가 되기도 한다. |
그래서 이미 SELinux가 적용되어 있는 리눅스 배포판의 사용자 중 일부는 설치 후에 SELinux를 비활성화하기도 한다. |
|