Information Security
38 iptables 본문
iptables
-일반적으로 외부와 연결된 네트워크는 안전하지 않으며 언제든지 악의적인 목적을 가지고 있는 사용자로부터 공격을 받을 수 있다. 이러한 공격으로부터 리눅스 서버를 보호하기 위하여 패킷 필터링을 통해 기본적인 방화벽을 구성할 수 있으며, 커널의 IP 패킷 필터링 기능을 하는 Netfilter에 규칙을 설정하고 관리하는 도구가 iptables이다.
-체인(Chain)이라고 불리는 방향성을 가진 규칙(Rule)을 연결한 테이블이다.
패킷 필터링(Packet Filtering)
-네트워크를 통과하는 모든 패킷들은 패킷 헤더에 출발지와 목적지, 어떤 프로토콜을 이용하는지에 관한 정보를 담고 있다.
-이러한 패킷의 헤더 정보를 보고 호스트로 들어오는(INPUT) 패킷과 나가는(OUTPUT) 패킷, 통과하는(FORWARD) 패킷 등을 검사하여 불필요한 패킷이나 잘못된 패킷을 폐기(DROP)하고 규칙과 일치하는 패킷만 허용(ACCEPT)시키는 기능을 한다.
체인(Chain)
체인에 필터링 규칙을 추가하면 패킷이 각각의 경로를 통과할 때 검사할 수 있다.
INPUT 체인 |
호스트에 들어온 패킷이 통과하는 곳 |
OUTPUT 체인 |
나가는 패킷이 통과하는 곳 |
FORWARD 체인 |
다른 호스트로 전달되는 패킷이 통과하는 곳 |
패킷 필터링 설정 순서
체인의 기본 동작 설정
-> 패킷을 검사할 규칙(Rule)을 체인에 추가
대상(Target)
필터링 규칙에 맞는 패킷에 대한 처리
-ACCEPT(허용)
-DROP(파기)
-REJECT(거부)
-LOG(로그 출력)
iptables 옵션
-A 지정한 체인의 마지막에 규칙을 추가
-D 지정한 체인에서 규칙을 삭제
-P 지정한 체인의 정책을 변경
-L 규칙 리스트 출력
-I 번호를 지정하여 규칙 삽입
-F 지정한 체인 내 규칙 모두 제거
규칙
-s 출발지 |
출발지 IP 주소 |
-d 목적지 |
목적지 IP 주소 |
--sport 포트 번호 |
출발지 포트 번호 |
--dport 포트 번호 |
목적지 포트 번호 |
-j 대상 |
사용할 대상 |
-p 프로토콜 |
프로토콜(tcp, udp, icmp, all 등) |
-i 인터페이스 |
입력 인터페이스(eth0, ppp0 등) |
-o 인터페이스 |
출력 인터페이스(eth0, ppp0 등) |
-m state --state 상태 |
패킷 상태(ESTABLISHED, NEW, RELATED, INVALID) |
iptables 데몬 활성화
부팅 시 활성화
규칙 확인
현재 설정되어 있는 규칙 확인
-nL 내용을 문자 대신에 숫자로 표현
--line-numbers num 필드 추가. 각 규칙에 번호 출력
-> 규칙 삭제 시 유용
-> 이 명령어는 자주 사용할 것이므로 alias 설정하기
~/.bashrc 파일에 추가하면 부팅 시 자동으로 alias 설정이 된다.
규칙 삭제
#iptables -D INPUT 2
규칙을 삭제할 때는 번호를 기준으로 한다.
※ 규칙 삭제 주의사항
#iptables -nL --line-numbers
1 aaa
2 bbb
3 ccc
4 ddd
규칙 bbb, ccc를 삭제
-> #iptables -D INPUT 2
->
1 aaa
2 ccc
3 ddd
2번 규칙을 삭제 했으므로 위와 같이 변경된다.
-> #iptables -D INPUT 2
->
1 aaa
2 ddd
#iptables -F
-현재 설정된 규칙을 모두 지운다.
-> SSH 서버에 접속하기 위한 규칙이 지워졌기 때문에 기본 정책 INPUT DROP으로 인하여 Xshell 연결이 해제된다.
체인에 설정된 규칙 출력
-iptables 명령어로 규칙을 추가했으면 #service iptables save로 저장한 후 #service iptables restart로 적용을 해야한다.
save를 하지 않고 restart를 하면 규칙이 기존의 설정으로 초기화 된다.
-저장한 규칙은 /etc/sysconfig/iptables 파일에 기록된다.
-/etc/sysconfig/iptables 파일에 직접 규칙을 추가하면 #service iptables save를 하지 않아도 된다.
기본 정책 설정
기본 정책 설정
※ INPUT을 DROP으로 설정하는 이유
INPUT ACCEPT
-들어오는 모든 IP를 허용하므로 악의적인 사용자가 접근한 후에 차단을 하게 된다.
INPUT DROP
-일단 모두 차단하고 신뢰할 수 있는 IP만 추가해 놓으면 악의적 사용자의 접근을 막을 수 있다.
현재 규칙을 해당 파일에 저장
기존에 저장해 놓은 규칙으로 다시 적용
'Linux' 카테고리의 다른 글
37-4 Webhard (0) | 2017.11.06 |
---|---|
37-3 XE(Xpress Engine) (0) | 2017.11.06 |
37-2 APM(Apache + Php + Mysql) (0) | 2017.11.06 |
37-1 Apache 인증 (0) | 2017.11.04 |
36-2 PHP(Hypertext Preprocessor) (0) | 2017.11.03 |