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 |