본문으로 바로가기

[D+14] 리눅스 보안

category 해킹&보안/Linux 2017. 2. 25. 21:36
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

13. 리눅스 보안


1) Firewall


▣ Firewall (방화벽) 이란?

- 기업이나 조직의 모든 정보가 컴퓨터에 저장되면서, 컴퓨터의 정보보안을 위해

  외부에서 내부(해킹), 내부에서 외부(정보유출)의 정보통신망에 불법으로 접근하는 것을 차단하는 시스템.

☞ 제어 : 차단 or 허용



2) TCP Wrapper



▣ TCP Wrapper의 의미

- 데몬 한정용 방화벽

- 특정 호스트가 해당 호스트의 데몬 서비스 접근시 제어

- TCP Wrapper 설정 파일 (vi 로 수정가능)

☞ 차단 목록파일 : /etc/hosts.deny

☞ 허용 목록파일 : /etc/hosts.allow

☞ # 은 주석줄.

☞ 데몬이름 : 차단할 IP

- 블랙리스트 vs 화이트리스트

☞ 블랙리스트 : 모두 허용, 일부만 차단

☞ 화이트리스트 : 모두 차단, 일부만 허용

- 예시

☞ hosts.deny -> all : all   = 모든 데몬에 대해 모두를 차단 (화이트리스트)

☞ hosts.allow -> all : all  = 모든 데몬에 대해 모두를 허용 (블랙리스트)

☞ 위 두줄을 동시에 적어놓으면 우선순위가 allow > deny 이므로 allow의 설정을 따라감 (허용)


3) Iptables


▣ 방화벽의 종류

- 호스트 기반 : 백신의 개념, 컴퓨터에 직접 설치하여 사용

- 네트워크 기반 : 보안서버의 개념, 장비를 통하여 한번 걸려주는 것.

- Iptables는 호스트 기반 방화벽임.


▣ 방화벽의 읨

- 특정 호스트가 해당 호스트에 접근하는 것을 제어 (허용 또는 차단)


[참고]

- NAT : 네트워크 주소 변환 서비스

☞ SNAT : 내부 -> 외부

☞ DNAT : 외부 -> 내부


▣ Chain (체인)

- Iptables 패킷 필터링을 이용하기 위한 룰(정책)

- 컴퓨터로 들어가는 모든 패킷은 INPUT chain을 통과

- 컴퓨터에서 나가는 모든 패킷은 OUTPUT chain을 통과

- 컴퓨터를 지나가는 모든 패킷은 FORWARD chain을 통과

- 방화벽에서 차단하려는 패킷 조건을 rule 형태로 지정, 각 chain별로 rule을 등록


▣ Iptables Command (대문자 옵션)


 인자 값

의미 

-A

  새로운 한가지 정책을 설정 (--append)

-D

  기존 한가지 정책을 삭제 (--delete)

-L

  설정되어 있는 정책 목록을 조회 (--list)

-F

  설정되어 있는 모든 정책을 삭제 (--flush) == 방화벽해지


▣ Iptables Command (소문자 옵션)


 인자 값

의미 

-s

  source address (보내는 사람의 IP주소)

-d

  destination address (받는 사람의 IP주소)

-p

  protocol name

-i

  input interface (INPUT, FORWARD chain에서 사용 가능)

-o

  output interface (OUTPUT chain에서 사용 가능)

-j [Option]

  ACCEPT : 패킷을 허용

  DROP : 패킷을 허용하지 않으며, 허용하지 않는 메시지를 보내지 않음.

  REJECT : 패킷을 허용하지 않으며, 허용하지 않는 메시지를 보냄.

--dport

  destination port

--sport

  source port


- source address와 destination을 따로 설정해주지 않으면 anywhere가 됨.

- -j REJECT 옵션은 사용하지 않음. 패킷이 안 들어간것을 아는데 메시지까지 다시 보내줄 필요는 없음. 


▣ Iptables 예

- ICMP 방어

☞ ICMP : 목적지의 가용성 확인을 위한 PING 메시지에 사용되는 프로토콜

☞ iptables -A INPUT -p icmp -j DROP

= ICMP를 사용하면서 외부에서 나한테 접근하는 패킷은 차단할거임.

= 즉, ping으로 내 IP주소 치면 안 받아줄거임.


☞ 적용 전



☞ 적용 후

- iptables -A INPUT -p tcp --dport 7070 -j DROP

☞ INPUT 체인에 들어오는 패킷 중에

☞ protocol은 TCP

destination port는 7070인 패킷을 (= 내 컴퓨터의 7070 포트로 들어오는 패킷)

DROP한다


- iptables -A OUTPUT -p udp --sport 6060 -j DROP

OUTPUT 체인에 나가는 패킷 중에

☞ protocol은 UDP

☞ source port는 6060인 패킷을 (= 내 컴퓨터에서 6060 포트로 나가는 패킷)

☞ DROP한다


- 지난 수업 때 APM으로 생성한 홈페이지에 하나의 IP만 허가하고 나머지 IP를 차단하라.

◎ Host OS : 내 호스트 OS인 WIN7에서만 접속 허용. (windows에서 ip주소 보기 명령어 = ipconfig)

◎ Protocol : TCP

◎ PORT : 80 (http : 홈페이지 포트)

◎ 적는 순대로 적용하기 때문에 허용부터 적고 나머지를 전부 차단


☞ iptables -A INPUT -p tcp --dport 80 -s (내 호스트 IP) -j ACCEPT

☞ iptables -A INPUT -p tcp --dport 80 -j DROP







i2sec 대구지점 23기 수료생.

'해킹&보안 > Linux' 카테고리의 다른 글

[D+13] System Log & APM  (0) 2017.02.23
[D+12] Package Install & Daemon  (0) 2017.02.22
[D+11] Vi editor  (0) 2017.02.21
[D+10] Link  (0) 2017.02.20
[D+9] Process Management  (0) 2017.02.17