저는 때때로 iptables 구성에서 규칙을 자동으로 추가하고 제거해야 하는 CentOS 제품을 사용하고 있습니다. 예를 들어 업데이트 중에 업데이트가 완료될 때까지 인바운드 서비스 트래픽을 명시적으로 거부하려고 합니다. 현재 업데이트 코드에 사용되는 접근 방식은 sed
기타 텍스트 처리 유틸리티를 사용하여 구성 파일의 관련 줄을 주석 처리하고 iptables
새 구성 파일로 서비스를 다시 시작한 다음 업데이트가 끝나면 프로세스를 되돌리는 것입니다. , 서비스를 다시 한 번 다시 시작하십시오.
iptables -D table rule-specification
더 나은 접근 방식은 프로세스 시작 시 명령을 사용한 다음 iptables -A table rule-specification
업데이트가 끝날 때 사용하는 것 같습니다 .
구성 파일을 자동으로 조작할 때 내가 본 가장 큰 문제는 취약성입니다. 구성 파일을 다시 작성하고 매개변수 등의 순서를 변경하여 텍스트 구문 분석을 깨뜨릴 수 있는 시스템 도구가 있습니다( service iptables save
예).
코드 내에서 이와 같이 시스템 구성을 변경하는 데 권장되는 접근 방식은 무엇이며 그 이유는 무엇입니까?
답변1
이런 상황에 처한 대부분의 사람들은 추상화를 통해 이를 처리합니다.
예를 들어. 규칙 세트가 포함된 단일 파일을 갖는 대신 규칙이 포함된 파일 세트를 만들고 함께 연결하는 것이 좋습니다.
예를 들어 다음과 같은 이름의 파일에 개별 규칙을 추가할 수 있습니다.
/etc/iptables-rules/00_flush_drop
/etc/iptables-rules/20_permitotherstuff
/etc/iptables-rules/10_permitssh
/etc/iptables-rules/99_drop
그런 다음 으로 규칙 세트를 실행하십시오 run-parts /etc/iptables-rules
. 다른 규칙 세트를 추가해야 하는 경우 임시로 추가 파일을 삽입하면 됩니다. 그런 다음 필요에 따라 제거합니다.
또한 구성에서 체인을 설정하고 사용하는 방법을 강력히 검토해야 합니다. 체인은 일종의 서브루틴과 같습니다. 예를 들어 방화벽 맨 위에 규칙을 추가하여 체인으로 이동할 수 있습니다. 체인의 기본 정책은 RETURN입니다. 따라서 임시 규칙을 추가해야 할 경우 해당 체인에 삽입하기만 하면 됩니다. 더 이상 필요하면 특정 체인을 플러시하면 됩니다.